commit dc67ea1ee6191bc953bf8505a97b3f980cc02b89 Author: Rodrigo_Fernandes <55065897+MonoPT@users.noreply.github.com> Date: Thu Feb 12 00:06:39 2026 +0000 model search diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000..6c8a0c0 Binary files /dev/null and b/.github/workflows/CI.yml differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bf3b7fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/target +model.temp +__pycache__ +.env +/backend/target +/node_modules \ No newline at end of file diff --git a/ComfyUIFEExampleVueBasic.py b/ComfyUIFEExampleVueBasic.py new file mode 100644 index 0000000..56d7159 --- /dev/null +++ b/ComfyUIFEExampleVueBasic.py @@ -0,0 +1,40 @@ +import folder_paths +import nodes + +class ComfyUIFEExampleVueBasic: + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "custom_vue_component_basic": ("CUSTOM_VUE_COMPONENT_BASIC", {}), + }, + } + + RETURN_TYPES = ("IMAGE",) + RETURN_NAMES = ("image",) + + FUNCTION = "run" + + CATEGORY = "examples" + + def run(self, **kwargs): + print(kwargs["custom_vue_component_basic"]["image"]) + + image_path = folder_paths.get_annotated_filepath(kwargs["custom_vue_component_basic"]["image"]) + + load_image_node = nodes.LoadImage() + output_image, ignore_mask = load_image_node.load_image(image=image_path) + + return output_image, + +NODE_CLASS_MAPPINGS = { + "vue-basic": ComfyUIFEExampleVueBasic +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "vue-basic": "Vue Basic" +} + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e5f8fa1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Matteo Spinelli + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e6a7e5 --- /dev/null +++ b/README.md @@ -0,0 +1,78 @@ +# ComfyUI Frontend Vue Basic +(Important: Make sure to install this latest version of ComfyUI Frontend - **1.24.4**!!!) + +A demonstration custom node that showcases how to integrate Vue as a frontend framework within ComfyUI, complete with PrimeVue components and vue-i18n support. + +## Overview + +ComfyUI Frontend Vue Basic provides a working example of how to build interactive UI components for ComfyUI custom nodes using modern web technologies. It features a basic drawing board inside a custom node that outputs the created image as a result. +![image1](doc/img.png) + +## Technologies + +- **[Vue.js](https://vuejs.org/)** - Progressive JavaScript framework for building user interfaces +- **[PrimeVue](https://primevue.org/)** - Rich UI component library for Vue +- **[vue-i18n](https://vue-i18n.intlify.dev/)** - Internationalization plugin for Vue.js + +## Features + +- Interactive drawing board within a custom node +- Modern UI components with PrimeVue +- Multi-language support via vue-i18n +- Integration with ComfyUI's API system + +## Installation + +⚠️ **Important** ⚠️ + +This demonstration node is not designed to be installed directly via **git clone**. For proper functionality, please install through: + +- [ComfyUI Manager]() +- [ComfyUI Registry]() + +## Development Setup +If you want to learn how to develop this custom node or modify it, you can set up a local development environment. Follow these steps: +1. Clone the repository in your ComfyUI custom nodes directory: + ```bash + git clone https://github.com/jtydhr88/ComfyUI_frontend_vue_basic +2. Navigate to the project directory: + ```bash + cd ComfyUI_frontend_vue_basic + ``` +3. Install dependencies: + ```bash + npm install + ``` +4. Build the project: + ```bash + npm run build + ``` +5. Refresh ComfyUI to load. + +## Usage + +After installation: + +1. Add the "vue-basic" node under examples to your workflow +2. Use the drawing interface to create your image +3. Connect the output to compatible nodes (Preview Image, for example) that accept image inputs +4. Run your workflow to process the drawn image + +## Development + +For those interested in understanding how Vue can be integrated into ComfyUI custom nodes: + +1. Review the code structure to see how Vue components are mounted +2. Examine the ComfyUI API integration patterns +3. Note how PrimeVue components and i18n are initialized and used + +## Contributing + +Contributions are welcome! If you have ideas for improvements or have found bugs, feel free to: + +- Open an issue +- Submit a pull request with proposed changes + +## License + +[MIT License](LICENSE) diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..acd78e9 --- /dev/null +++ b/__init__.py @@ -0,0 +1,107 @@ +from .ComfyUIFEExampleVueBasic import NODE_CLASS_MAPPINGS +import os +import nodes +from comfy_config import config_parser + +from .manage_deps import ensure_dependency +from importlib.metadata import version + +custom_node_dir = os.path.dirname(os.path.realpath(__file__)) +print("==========================") + +# Install and update dependencies +ensure_dependency("rust_civit_comfy_bindings") + +project_config = config_parser.extract_node_configuration(custom_node_dir) + +print("##", project_config.project.name) +print("rust-civit-comfy-bindings version is: ", version("rust-civit-comfy-bindings")) + +js_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "js") + +nodes.EXTENSION_WEB_DIRS[project_config.project.name] = js_dir + +__all__ = ['NODE_CLASS_MAPPINGS'] + +from server import PromptServer +from aiohttp import web +import aiohttp + +routes = PromptServer.instance.routes + +import socketserver +import socket + +def is_port_free(port, host="127.0.0.1"): + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + return s.connect_ex((host, port)) != 0 + +with socketserver.TCPServer(("localhost", 0), None) as server: + port = server.server_address[1] + +from rust_civit_comfy_bindings import sum_as_string, start_server + +print(f"Civit backend server started on port {port}") + +def reverse_proxy(request, rest_of_path: str): + return web.json_response({"path": rest_of_path}) + +UPSTREAM = f"http://127.0.0.1:{port}" + +print(f"Upstream: {UPSTREAM}") + +@routes.get(r"/civit/{rest_of_path:.*}") +async def my_function(request: web.Request) -> web.StreamResponse: + upstream_url = f"{UPSTREAM}{request.rel_url}" + + #print(upstream_url) + + async with aiohttp.ClientSession() as session: + async with session.request( + method=request.method, + url=upstream_url, + headers={k: v for k, v in request.headers.items() + if k.lower() != "host"}, + data=await request.read(), + allow_redirects=False, + ) as resp: + + proxy_resp = web.StreamResponse( + status=resp.status, + headers=resp.headers + ) + + await proxy_resp.prepare(request) + + async for chunk in resp.content.iter_chunked(8192): + await proxy_resp.write(chunk) + + await proxy_resp.write_eof() + return proxy_resp + +@routes.get('/civit-comfy-port') +async def my_function(request): + return web.json_response({"port": port}) + +file_p = os.path.dirname(os.path.abspath(__file__)) + +import subprocess +import sys +from pathlib import Path + +static_dir = f"{file_p}/front-end/build" +comfy_path = str(Path(f"{file_p}../../../").resolve()) + +print(f"Static dir: {static_dir}") +print(f"Detected comfy path: {comfy_path}") + +print("==========================") + +subprocess.Popen( + [sys.executable, f"{file_p}/server.py", f"{port}", static_dir, comfy_path], + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + close_fds=True +) + diff --git a/backend/Cargo.lock b/backend/Cargo.lock new file mode 100644 index 0000000..ae019e2 --- /dev/null +++ b/backend/Cargo.lock @@ -0,0 +1,2643 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "app" +version = "0.2.12" +dependencies = [ + "axum", + "chrono", + "civit", + "futures", + "http-body-util", + "notify", + "rand 0.9.2", + "reqwest", + "serde", + "serde_json", + "serde_path_to_error", + "tokio", + "tower", + "tower-http", + "user_dirs", + "uuid", +] + +[[package]] +name = "async-compression" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d10e4f991a553474232bc0a31799f6d24b034a84c0971d80d2e2f78b2e576e40" +dependencies = [ + "compression-codecs", + "compression-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "axum" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +dependencies = [ + "axum-core", + "bytes", + "form_urlencoded", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "cc" +version = "1.2.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + +[[package]] +name = "civit" +version = "0.2.12" +dependencies = [ + "chrono", + "futures-util", + "regex", + "reqwest", + "scraper", + "serde", + "serde_json", + "serde_path_to_error", +] + +[[package]] +name = "compression-codecs" +version = "0.4.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00828ba6fd27b45a448e57dbfe84f1029d4c9f26b368157e9a448a5f49a2ec2a" +dependencies = [ + "brotli", + "compression-core", + "flate2", + "memchr", +] + +[[package]] +name = "compression-core" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eac901828f88a5241ee0600950ab981148a18f2f756900ffba1b125ca6a3ef9" +dependencies = [ + "cookie", + "document-features", + "idna", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "cssparser" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e901edd733a1472f944a45116df3f846f54d37e67e68640ac8bb69689aca2aa" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "dtoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "ego-tree" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2972feb8dffe7bc8c5463b1dacda1b0dfbed3710e50f977d965429692d74cd8" + +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + +[[package]] +name = "flate2" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "getopts" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "getrandom" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "home" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "html5ever" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55d958c2f74b664487a2035fe1dadb032c48718a03b63f3ab0b8537db8549ed4" +dependencies = [ + "log", + "markup5ever", + "match_token", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-util" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" +dependencies = [ + "base64", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indoc" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] + +[[package]] +name = "inotify" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +dependencies = [ + "bitflags 2.10.0", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "kqueue" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "markup5ever" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "311fe69c934650f8f19652b3946075f0fc41ad8757dbb68f1ca14e7900ecc1c3" +dependencies = [ + "log", + "tendril", + "web_atoms", +] + +[[package]] +name = "match_token" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac84fd3f360fcc43dc5f5d186f02a94192761a080e8bc58621ad4d12296a58cf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "notify" +version = "8.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" +dependencies = [ + "bitflags 2.10.0", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "notify-types", + "walkdir", + "windows-sys 0.60.2", +] + +[[package]] +name = "notify-types" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "portable-atomic" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "psl-types" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" + +[[package]] +name = "publicsuffix" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" +dependencies = [ + "idna", + "psl-types", +] + +[[package]] +name = "pyo3" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab53c047fcd1a1d2a8820fe84f05d6be69e9526be40cb03b73f86b6b03e6d87d" +dependencies = [ + "indoc", + "libc", + "memoffset", + "once_cell", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b455933107de8642b4487ed26d912c2d899dec6114884214a0b3bb3be9261ea6" +dependencies = [ + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c85c9cbfaddf651b1221594209aed57e9e5cff63c4d11d1feead529b872a089" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a5b10c9bf9888125d917fb4d2ca2d25c8df94c7ab5a52e13313a07e050a3b02" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b51720d314836e53327f5871d4c0cfb4fb37cc2c4a11cc71907a86342c40f9" +dependencies = [ + "heck", + "proc-macro2", + "pyo3-build-config", + "quote", + "syn", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" + +[[package]] +name = "reqwest" +version = "0.12.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a" +dependencies = [ + "base64", + "bytes", + "cookie", + "cookie_store", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rust_civit_comfy_bindings" +version = "0.2.12" +dependencies = [ + "app", + "axum", + "civit", + "pyo3", + "rand 0.9.2", + "reqwest", + "serde", + "serde_json", + "tokio", + "tower", + "tower-http", +] + +[[package]] +name = "rust_dev_server" +version = "0.2.12" +dependencies = [ + "app", + "civit", + "tokio", +] + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustls" +version = "0.23.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scraper" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5f3a24d916e78954af99281a455168d4a9515d65eca99a18da1b813689c4ad9" +dependencies = [ + "cssparser", + "ego-tree", + "getopts", + "html5ever", + "precomputed-hash", + "selectors", + "tendril", +] + +[[package]] +name = "selectors" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5685b6ae43bfcf7d2e7dfcfb5d8e8f61b46442c902531e41a32a9a8bf0ee0fb6" +dependencies = [ + "bitflags 2.10.0", + "cssparser", + "derive_more", + "fxhash", + "log", + "new_debug_unreachable", + "phf", + "phf_codegen", + "precomputed-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_core", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" +dependencies = [ + "itoa", + "serde", + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "servo_arc" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "target-lexicon" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba" + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9e442fc33d7fdb45aa9bfeb312c095964abdf596f7567261062b2a7107aaabd" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b36ee98fd31ec7426d599183e8fe26932a8dc1fb76ddb6214d05493377d34ca" + +[[package]] +name = "time-macros" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e552d1249bf61ac2a52db88179fd0673def1e1ad8243a00d9ec9ed71fee3dd" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "async-compression", + "bitflags 2.10.0", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "http-range-header", + "httpdate", + "iri-string", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "unindent" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "user_dirs" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e0d5bff51f431ac0e51881aa83a00d96561878caca262c04157857a4b02083" +dependencies = [ + "home", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web_atoms" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ffde1dc01240bdf9992e3205668b235e59421fd085e8a317ed98da0178d414" +dependencies = [ + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/backend/Cargo.toml b/backend/Cargo.toml new file mode 100644 index 0000000..3f7a051 --- /dev/null +++ b/backend/Cargo.toml @@ -0,0 +1,7 @@ +[workspace] +members = [ + "civit", + "app", + "civitComfyBindings" +, "rust_dev_server"] +resolver = "3" diff --git a/backend/app/.gitignore b/backend/app/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/backend/app/.gitignore @@ -0,0 +1 @@ +/target diff --git a/backend/app/Cargo.toml b/backend/app/Cargo.toml new file mode 100644 index 0000000..2ea667c --- /dev/null +++ b/backend/app/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "app" +version = "0.2.12" +edition = "2024" + +[dependencies] +axum = "0.8.7" +chrono = { version = "0.4.43", features = ["serde"] } +civit = { path = "../civit" } +futures = "0.3.31" +http-body-util = "0.1.3" +notify = "8.2.0" +rand = "0.9.2" +reqwest = { version = "0.12.25", default-features = false, features = ["brotli", "cookies", "deflate", "gzip", "json", "rustls-tls"] } +serde = { version = "1.0.228", features = ["derive"] } +serde_json = "1.0.145" +serde_path_to_error = "0.1.20" +tokio = { version = "1.48.0", features = ["full"] } +tower = "0.5.2" +tower-http = { version = "0.6.7", features = ["cors", "fs"] } +user_dirs = "0.2.0" +uuid = { version = "1.20.0", features = ["v4"] } diff --git a/backend/app/src/api/create_collection.rs b/backend/app/src/api/create_collection.rs new file mode 100644 index 0000000..65572f2 --- /dev/null +++ b/backend/app/src/api/create_collection.rs @@ -0,0 +1,35 @@ +use axum::{ + Json, Router, extract::Query, response::{IntoResponse, Response}, routing::get +}; + +use serde::{Deserialize}; + +use civit::{Civit, CollectionType}; + +pub fn route() -> Router { + Router::new() + .route("/create_collection", get(create_collection)) +} + +#[derive(Deserialize)] +pub struct DataReq { + token: String, + collection_name: String, + collection_type: CollectionType, + nsfw: bool, + description: Option +} + +/// Gets a list of collections with media item id +pub async fn create_collection(data: Query) -> Response { + let token = &data.token; + + let civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + let desc = data.description.clone().unwrap_or_default(); + let tp = data.collection_type.clone(); + + Json(civit.create_collection(&data.collection_name, tp, data.nsfw, &desc).await).into_response() +} diff --git a/backend/app/src/api/favorite_media.rs b/backend/app/src/api/favorite_media.rs new file mode 100644 index 0000000..1a4e4c0 --- /dev/null +++ b/backend/app/src/api/favorite_media.rs @@ -0,0 +1,110 @@ +use axum::{ + Router, extract::Query, http::StatusCode, response::{IntoResponse, Response}, routing::get, + extract::Path +}; + +use civit::CollectionType; +use serde::{Deserialize}; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/favorite_media/{media_id}", get(favorite_media)) + .route("/unfavorite_media/{media_id}", get(unfavorite_media)) +} + +#[derive(Deserialize)] +pub struct UserDataReq { + token: String, + collection_type: CollectionType +} + +const FAVORITE_COLLECTIONS_NAME: &str = "comfyui_civit_favorites"; +const FAVORITE_MODELS_NAME: &str = "Liked Models"; + +pub async fn favorite_media(data: Query, Path(media_id): Path) -> Response { + let token = &data.token; + + let mut civit = Civit::new() + .set_auth_token(token); + + let collections = civit.collections().await; + + let collection = match &data.collection_type { + CollectionType::Image => find_target_collection(CollectionType::Image, &collections, FAVORITE_COLLECTIONS_NAME, &civit).await, + CollectionType::Model => find_target_collection(CollectionType::Model, &collections, FAVORITE_MODELS_NAME, &civit).await, + _ => todo!() + }; + + let collection = match collection { + Ok(c) => c, + Err(e) => { + dbg!(&e); + return (StatusCode::INTERNAL_SERVER_ERROR, e).into_response(); + } + }; + + let res = civit.collection_save_item_by_id(&vec![collection], &vec![], media_id, data.collection_type.clone()).await; + (res).into_response() +} + +pub async fn unfavorite_media(data: Query, Path(media_id): Path) -> Response { + let token = &data.token; + + let mut civit = Civit::new() + .set_auth_token(token); + + let collections = civit.collections().await; + + let collection = match &data.collection_type { + CollectionType::Image => find_target_collection(CollectionType::Image, &collections, FAVORITE_COLLECTIONS_NAME, &civit).await, + CollectionType::Model => find_target_collection(CollectionType::Model, &collections, FAVORITE_MODELS_NAME, &civit).await, + _ => todo!() + }; + + let collection = match collection { + Ok(c) => c, + Err(e) => { + dbg!(&e); + return (StatusCode::INTERNAL_SERVER_ERROR, e).into_response(); + } + }; + + let res = civit.collection_save_item_by_id(&vec![], &vec![collection], media_id, data.collection_type.clone()).await; + (res).into_response() +} + +use civit::Collection; + +async fn find_target_collection(collection_type: CollectionType, collections: &Vec, name: &str, civit: &Civit) -> Result { + match collection_type { + CollectionType::Image => { + match collections.iter().find(|coll| coll.name == name) { + Some(coll) => Ok(coll.clone()), + None => { + let collection = civit.create_collection(name, CollectionType::Image, true, "My favorite media from ComfyUI - Civit explorer").await; + + match collection { + Some(c) => Ok(c), + None => return Err("Could not create collection".to_string()), + } + } + } + }, + CollectionType::Model => { + match collections.iter().find(|coll| coll.name == name) { + Some(coll) => Ok(coll.clone()), + None => { + let collection = civit.create_collection(name, CollectionType::Model, true, "My favorite models from ComfyUI - Civit explorer").await; + + match collection { + Some(c) => Ok(c), + None => Err("Could not create collection".to_string()), + } + } + } + } + _ => todo!() + } +} \ No newline at end of file diff --git a/backend/app/src/api/get_base_model_list.rs b/backend/app/src/api/get_base_model_list.rs new file mode 100644 index 0000000..a23bce7 --- /dev/null +++ b/backend/app/src/api/get_base_model_list.rs @@ -0,0 +1,70 @@ + +use axum::{ + Json, Router, extract::Query, http::StatusCode, response::{IntoResponse, Response}, routing::get +}; + +use serde::Deserialize; + +use civit::{Civit, ImagesInfiniteLoadOptions}; + +pub fn route() -> Router { + Router::new() + .route("/base_models_list", get(base_models_list)) +} + + +#[derive(Deserialize, Debug)] +pub struct DataReq { + token: String, +} + +/// Takes advantage of the error message to get a list of valid base models +pub async fn base_models_list(data: Query) -> Response { + let token = &data.token; + + let mut civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + let base_models = vec!["Some fucking this that is not valid".to_string()]; + + // Options + let mut options = ImagesInfiniteLoadOptions::default(); + options.cursor = None; + options.period = String::from("Month"); + options.types = vec![]; + options.sort = String::from("Most Collected"); + options.browsingLevel = 31; + options.base_models = base_models; + options.techniques = vec![]; + options.withMeta = false; + options.remixesOnly = false; + options.nonRemixesOnly = false; + options.fromPlatform = false; + options.tags = vec![]; + + // + let data = civit.load_infinite(options).await; + + match data { + Ok(_data) => { + return (StatusCode::INTERNAL_SERVER_ERROR, "500 Internal server error").into_response() + }, + Err(err_r) => { + let error_message = err_r.get("error").unwrap_or_default().get("json").unwrap_or_default().get("message").unwrap_or_default() + .to_string(); + + let mut parts = error_message.split("|").collect::>(); + + parts.remove(0); + + let base_models = parts.iter().map(|part| { + let p = part.replace("\\", "").replace("\"", "").replace("}n]", ""); + p.trim().to_string() + }).collect::>(); + + return (StatusCode::OK, Json(base_models)).into_response() + }, + + } +} diff --git a/backend/app/src/api/get_collection_with_media.rs b/backend/app/src/api/get_collection_with_media.rs new file mode 100644 index 0000000..f01826c --- /dev/null +++ b/backend/app/src/api/get_collection_with_media.rs @@ -0,0 +1,32 @@ +use axum::{ + Json, Router, extract::Query, response::{IntoResponse, Response}, routing::get, + extract::Path +}; + +use civit::CollectionType; +use serde::{Deserialize}; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/collection_with_media/{media_id}", get(collection_with_media)) +} + +#[derive(Deserialize)] +pub struct UserDataReq { + token: String, + collection_type: CollectionType +} + +/// Gets a list of collections with media item id +pub async fn collection_with_media(data: Query, Path(media_id): Path) -> Response { + let token = &data.token; + + let coll_type = &data.collection_type; + + let civit = Civit::new() + .set_auth_token(token); + + Json(civit.get_collection_with_item(media_id, coll_type).await).into_response() +} \ No newline at end of file diff --git a/backend/app/src/api/get_collections.rs b/backend/app/src/api/get_collections.rs new file mode 100644 index 0000000..10c6e3a --- /dev/null +++ b/backend/app/src/api/get_collections.rs @@ -0,0 +1,47 @@ +use axum::{ + Json, Router, extract::Query, response::{IntoResponse, Response}, routing::get +}; + +use serde::{Deserialize}; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/get_collections", get(get_collections)) + .route("/get_collections_by_media", get(get_collections_by_media_type)) +} + +#[derive(Deserialize)] +pub struct UserDataReq { + token: String, +} + +/// Gets a list of collections with media item id +pub async fn get_collections(data: Query) -> Response { + let token = &data.token; + + let mut civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + Json(civit.collections().await).into_response() +} + +#[derive(Deserialize)] +pub struct UserDataReq2 { + token: String, + media_type: civit::CollectionType +} + +/// Gets a list of collections with media item id +pub async fn get_collections_by_media_type(data: Query) -> Response { + let token = &data.token; + let media_type = &data.media_type; + + let civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + Json(civit.get_collection_by_media_type(media_type).await).into_response() +} \ No newline at end of file diff --git a/backend/app/src/api/get_generation_data.rs b/backend/app/src/api/get_generation_data.rs new file mode 100644 index 0000000..e2f831e --- /dev/null +++ b/backend/app/src/api/get_generation_data.rs @@ -0,0 +1,29 @@ +use axum::{ + Json, Router, extract::Query, response::{IntoResponse, Response}, routing::get, + extract::Path +}; + +use serde::{Deserialize}; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/get_generation_data/{media_id}", get(get_gen_data)) +} + +#[derive(Deserialize)] +pub struct DataReq { + token: String, +} + +/// Gets a list of collections with media item id +pub async fn get_gen_data(data: Query, Path(media_id): Path) -> Response { + let token = &data.token; + + let civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + Json(civit.generation_data(media_id).await).into_response() +} \ No newline at end of file diff --git a/backend/app/src/api/get_model.rs b/backend/app/src/api/get_model.rs new file mode 100644 index 0000000..87c54e7 --- /dev/null +++ b/backend/app/src/api/get_model.rs @@ -0,0 +1,29 @@ +use axum::{ + Json, Router, extract::Query, response::{IntoResponse, Response}, routing::get, + extract::Path +}; + +use serde::{Deserialize}; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/get_model/{model_id}", get(get_model)) +} + +#[derive(Deserialize)] +pub struct DataReq { + token: String, +} + +/// Gets a list of collections with media item id +pub async fn get_model(data: Query, Path(model_id): Path) -> Response { + let token = &data.token; + + let civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + Json(civit.model_by_id(model_id).await).into_response() +} diff --git a/backend/app/src/api/get_models.rs b/backend/app/src/api/get_models.rs new file mode 100644 index 0000000..7410b8e --- /dev/null +++ b/backend/app/src/api/get_models.rs @@ -0,0 +1,101 @@ + +use axum::{ + Json, Router, extract::Query, http::StatusCode, response::{IntoResponse, Response}, routing::get +}; + +use serde::Deserialize; + +use civit::{ + Civit, + ModelInfiniteLoadOptions, + CheckpointType +}; + +pub fn route() -> Router { + Router::new() + .route("/models", get(load_models_inf)) +} + + +#[derive(Deserialize, Debug)] +pub struct ModelInfiniteLoadDataReq { + token: String, + cursor: Option, + // + period: String, + sort: String, + #[serde(rename="browsingLevel")] + browsing_level: usize, + #[serde(rename="baseModel")] + base_models: String, + #[serde(rename="types")] + model_types: String, + #[serde(rename="earlyAccess")] + early_access: bool, + #[serde(rename="supportsGeneration")] + supports_generation: bool, + #[serde(rename="fromPlatform")] + from_platform: bool, + #[serde(rename="isFeatured")] + is_featured: bool, + #[serde(rename="checkpointType")] + checkpoint_type: String, + #[serde(rename="fileFormat")] + file_formats: String, +} + + +pub async fn load_models_inf(data: Query) -> Response { + let token = &data.token; + + let mut civit = Civit::new() + .set_auth_token(token); + + let cursor = match &data.cursor { + None => None, + Some(cursor) => match cursor.as_str() { + "null" => None, + _ => Some(cursor.to_owned()) + } + }; + + let base_models = data.base_models.split(",").collect::>().iter().filter(|s| s.trim().len() > 0).map(|f| f.trim().to_string()).collect::>(); + let model_types = data.model_types.split(",").collect::>().iter().filter(|s| s.trim().len() > 0).map(|f| f.trim().to_string()).collect::>(); + let file_formats = data.file_formats.split(",").collect::>().iter().filter(|s| s.trim().len() > 0).map(|f| f.trim().to_string()).collect::>(); + + + + let checkpoint_type = match data.checkpoint_type.as_str() { + "Trained" => Some(CheckpointType::Trained), + "Merge" => Some(CheckpointType::Merge), + _ => None + }; + + // Options + let mut options = ModelInfiniteLoadOptions::default(); + options.cursor = cursor; + options.period = data.period.clone(); + options.sort = data.sort.clone(); + options.browsing_level = data.browsing_level.clone(); + options.base_models = base_models; + options.model_types = model_types; + options.supports_generation = data.supports_generation; + options.early_access = data.early_access; + options.from_platform = data.from_platform; + options.is_featured = data.is_featured; + options.checkpoint_type = checkpoint_type; + options.file_formats = file_formats; + + // + let data = civit.load_model_infinite(options).await; + + match data { + Err(err_val) => { + dbg!(&err_val); + return (StatusCode::INTERNAL_SERVER_ERROR, "500 Internal server error").into_response() + }, + Ok(data) => { + return (StatusCode::OK, Json(data)).into_response() + } + } +} diff --git a/backend/app/src/api/get_techniques.rs b/backend/app/src/api/get_techniques.rs new file mode 100644 index 0000000..926a0bb --- /dev/null +++ b/backend/app/src/api/get_techniques.rs @@ -0,0 +1,28 @@ +use axum::{ + Json, Router, extract::Query, response::{IntoResponse, Response}, routing::get +}; + +use serde::{Deserialize}; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/get_techniques_list", get(get_techniques)) +} + +#[derive(Deserialize)] +pub struct DataReq { + token: String, +} + +/// Gets a list of collections with media item id +pub async fn get_techniques(data: Query) -> Response { + let token = &data.token; + + let civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + Json(civit.get_techniques_list().await).into_response() +} diff --git a/backend/app/src/api/get_tools.rs b/backend/app/src/api/get_tools.rs new file mode 100644 index 0000000..3285fd7 --- /dev/null +++ b/backend/app/src/api/get_tools.rs @@ -0,0 +1,28 @@ +use axum::{ + Json, Router, extract::Query, response::{IntoResponse, Response}, routing::get +}; + +use serde::{Deserialize}; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/get_tools_list", get(get_tools)) +} + +#[derive(Deserialize)] +pub struct DataReq { + token: String, +} + +/// Gets a list of collections with media item id +pub async fn get_tools(data: Query) -> Response { + let token = &data.token; + + let civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + Json(civit.get_tools_list().await).into_response() +} diff --git a/backend/app/src/api/mansonary.rs b/backend/app/src/api/mansonary.rs new file mode 100644 index 0000000..f7c2245 --- /dev/null +++ b/backend/app/src/api/mansonary.rs @@ -0,0 +1,105 @@ + +use axum::{ + Json, Router, extract::Query, http::StatusCode, response::{IntoResponse, Response}, routing::get +}; + +use serde::Deserialize; + +use civit::{Civit, ImagesInfiniteLoadOptions}; + +pub fn route() -> Router { + Router::new() + .route("/infinite_images", get(infinite_images)) +} + + +#[derive(Deserialize, Debug)] +pub struct InfiniteImagesDataReq { + token: String, + period: String, + sort: String, + #[serde(rename = "baseModel")] + base_model: String, + #[serde(rename = "mediaType")] + media_type: String, + cursor: String, + #[serde(rename = "browsingLevel")] + browsing_level: usize, + techniques: String, + tools: String, + #[serde(rename = "requiringMeta")] + requiring_meta: bool, + #[serde(rename = "madeOnsite")] + made_onsite: bool, + #[serde(rename = "originalsOnly")] + originals_only: bool, + #[serde(rename = "remixesOnly")] + remixes_only: bool, + tags: String, + #[serde(rename = "metadataOnly")] + with_meta: bool, + #[serde(rename = "modelVersionId")] + model_version_id: Option, + #[serde(rename = "prioritizedUserIds")] + prioritized_user_ids: Option +} + + +pub async fn infinite_images(data: Query) -> Response { + let token = &data.token; + + let mut civit = Civit::new() + .set_auth_token(token); + + let cursor = match data.cursor.as_str() { + "null" => None, + _ => Some(data.cursor.clone()) + }; + + let medias = data.media_type.split(",").collect::>().iter().filter(|s| s.trim().len() > 0).map(|f| f.trim().to_lowercase().to_string()).collect::>(); + let base_models = data.base_model.split(",").collect::>().iter().filter(|s| s.trim().len() > 0).map(|f| f.trim().to_string()).collect::>(); + let techniques = data.techniques.split(",").collect::>().iter().filter(|s| s.trim().len() > 0).map(|f| f.parse::().unwrap()).collect::>(); + let tags = data.tags.split(",").collect::>().iter().filter(|s| s.trim().len() > 0).map(|f| f.parse::().unwrap()).collect::>(); + let tools = data.tools.split(",").collect::>().iter().filter(|s| s.trim().len() > 0).map(|f| f.parse::().unwrap()).collect::>(); + + let prioritized_user_ids = data.prioritized_user_ids.clone().unwrap_or_default().split(",").collect::>().iter().filter(|s| s.trim().len() > 0).map(|f| f.parse::().unwrap()).collect::>(); + + let mvid = data.model_version_id.clone().unwrap_or_default(); + + let mut model_version_id = None; + + if mvid.trim().len() > 0 { + model_version_id = Some(mvid.parse::().unwrap_or_default()); + } + + // Options + let mut options = ImagesInfiniteLoadOptions::default(); + options.cursor = cursor; + options.period = data.period.clone(); + options.types = medias; + options.sort = data.sort.clone(); + options.browsingLevel = data.browsing_level; + options.base_models = base_models; + options.techniques = techniques; + options.tools = tools; + options.withMeta = data.with_meta; + options.requiringMeta = data.requiring_meta; + options.remixesOnly = data.remixes_only; + options.nonRemixesOnly = data.originals_only; + options.fromPlatform = data.made_onsite; + options.tags = tags; + options.model_version_id = model_version_id; + options.prioritized_user_ids = prioritized_user_ids; + // + let data = civit.load_infinite(options).await; + + match data { + Err(err_val) => { + dbg!(&err_val); + return (StatusCode::INTERNAL_SERVER_ERROR, "500 Internal server error").into_response() + }, + Ok(data) => { + return (StatusCode::OK, Json(data)).into_response() + } + } +} diff --git a/backend/app/src/api/mod.rs b/backend/app/src/api/mod.rs new file mode 100644 index 0000000..1d2cfa7 --- /dev/null +++ b/backend/app/src/api/mod.rs @@ -0,0 +1,16 @@ +pub mod user; +pub mod mansonary; +pub mod tags; +pub mod visualizer_data; +pub mod favorite_media; +pub mod get_collection_with_media; +pub mod get_collections; +pub mod update_collections; +pub mod get_base_model_list; +pub mod get_tools; +pub mod get_techniques; +pub mod get_model; +pub mod create_collection; +pub mod get_generation_data; +pub mod get_models; +pub mod search; \ No newline at end of file diff --git a/backend/app/src/api/search.rs b/backend/app/src/api/search.rs new file mode 100644 index 0000000..ba11c11 --- /dev/null +++ b/backend/app/src/api/search.rs @@ -0,0 +1,91 @@ +use axum::{ + Json, Router, extract::Query, response::{IntoResponse, Response}, routing::get +}; + +use serde::{Deserialize}; +use civit::Civit; +use civit::search::{SearchOptions, SearchType}; + +pub fn route() -> Router { + Router::new() + .route("/search", get(get_model)) +} + +#[derive(Deserialize)] +pub struct DataReq { + token: String, + search_type: SearchType, + query: String, + #[serde(default)] + tags: String, + // Models only + #[serde(default)] + categories: String, + #[serde(default, rename="checkpointType")] + checkpoint_type: String, + #[serde(default, rename="baseModel")] + base_model: String, + #[serde(default, rename="types")] + model_type: String, + #[serde(default, rename="fileFormat")] + file_formats: String, + // Assets only + #[serde(default)] + techniques: String, + #[serde(default)] + tool_names: String, + #[serde(default)] + aspect_ratio: String, +} + +/// Gets a list of collections with media item id +pub async fn get_model(data: Query) -> Response { + let search_api = "8c46eb2508e21db1e9828a97968d91ab1ca1caa5f70a00e88a2ba1e286603b61"; // This commes directly from civit.ai site and its the same for all users + + let mut civit = Civit::new() + .set_auth_token(&data.token); + + let user = civit.user_data().await.unwrap(); + + let mut checkpoint_type = data.checkpoint_type.trim(); + + if checkpoint_type.to_lowercase() == "all" { + checkpoint_type = "" + } + + let tags = string_to_vec(&data.tags); + let categories = string_to_vec(&data.categories); + let checkpoint_type = string_to_vec(checkpoint_type); + let base_model = string_to_vec(&data.base_model); + let model_type = string_to_vec(&data.model_type); + let file_formats = string_to_vec(&data.file_formats); + let techniques = string_to_vec(&data.techniques); + let tool_names = string_to_vec(&data.tool_names); + let aspect_ratio = string_to_vec(&data.aspect_ratio); + let media_type = string_to_vec(&data.model_type); + + + let options = SearchOptions { + api: search_api.to_string(), + search_type: data.search_type.clone(), + user_id: user.user_id, + username: user.username, + query: data.query.clone(), + tags, + categories, + checkpoint_type, + base_model, + model_type, + file_formats, + techniques, + tool_names, + aspect_ratio, + media_type + }; + + Json(civit.search(options).await).into_response() +} + +fn string_to_vec(str_v: &str) -> Vec { + str_v.to_string().trim().split(",").map(|t| t.to_string()).filter(|tag| tag.trim().len() > 0).collect::>() +} \ No newline at end of file diff --git a/backend/app/src/api/tags.rs b/backend/app/src/api/tags.rs new file mode 100644 index 0000000..bffac2c --- /dev/null +++ b/backend/app/src/api/tags.rs @@ -0,0 +1,49 @@ +use civit::{TagsOptions, TagsSort, TagsResponse, Civit}; +use std::collections::HashSet; + +use axum::{ + Json, Router, extract::Query, http::StatusCode, response::{IntoResponse, Response}, routing::get +}; + +use serde::Deserialize; + +#[derive(Deserialize, Debug)] +pub struct TagsRequest { + token: String +} + +pub fn route() -> Router { + Router::new() + .route("/tags_with_id", get(get_tags_list)) +} + +pub async fn get_tags_list(data: Query) -> Response { + let token = &data.token; + + let mut civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + + let mut sort = vec![]; + let mut tags: HashSet = HashSet::new(); + + sort.push(TagsSort::MostArticles); + sort.push(TagsSort::MostHidden); + sort.push(TagsSort::MostImages); + sort.push(TagsSort::MostModels); + sort.push(TagsSort::MostPosts); + + for sort in sort { + match civit.tags(TagsOptions::default().sort(sort)).await { + None => (), + Some(batch) => { + for tag in batch { + tags.insert(tag); + } + }, + } + } + + return (StatusCode::OK, Json(tags)).into_response() +} \ No newline at end of file diff --git a/backend/app/src/api/update_collections.rs b/backend/app/src/api/update_collections.rs new file mode 100644 index 0000000..eb2f493 --- /dev/null +++ b/backend/app/src/api/update_collections.rs @@ -0,0 +1,64 @@ +use axum::{ + Router, extract::Query, response::{IntoResponse, Response}, routing::get, + extract::Path +}; + +use civit::{Collection, CollectionType}; +use serde::Deserialize; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/update_collections/{media_id}", get(update_collections)) +} + +#[derive(Deserialize)] +pub struct UserDataReq { + token: String, + add: String, + remove: String, + collection_type: CollectionType +} + +pub async fn update_collections(data: Query, Path(media_id): Path) -> Response { + let token = &data.token; + + let mut civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + let collections = civit.collections().await; + + let add = if data.add.len() > 0 { + data.add.split(",").map(|n| n.parse::().unwrap()).collect::>() + } else { + vec![] + }; + + let remove = if data.remove.len() > 0 { + data.remove.split(",").map(|n| n.parse::().unwrap()).collect::>() + } else { + vec![] + }; + + let positive_collections = add.iter().map(|c| { + collections.iter().find(|c2| &c2.id == c).unwrap().clone() + }).collect::>(); + + let negative_collections = remove.iter().map(|c| { + collections.iter().find(|c2| &c2.id == c).unwrap().clone() + }).collect::>(); + + let coll_type = data.collection_type.clone(); + + let res = civit.collection_save_item_by_id(&positive_collections, &negative_collections, media_id, coll_type).await; + + match res { + Ok(_) => "ok".into_response(), + Err(e) => { + dbg!(e); + "err".into_response() + } + } +} \ No newline at end of file diff --git a/backend/app/src/api/user.rs b/backend/app/src/api/user.rs new file mode 100644 index 0000000..264cc55 --- /dev/null +++ b/backend/app/src/api/user.rs @@ -0,0 +1,59 @@ +use std::collections::HashSet; +use axum::{ + Json, Router, extract::Query, http::StatusCode, response::{IntoResponse, Response}, routing::get +}; + +use civit::{TagsResponse, TagsSort, TagsOptions}; + +use serde::Deserialize; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/user_data", get(get_user)) +} + +#[derive(Deserialize)] +pub struct UserDataReq { + token: String, +} + +pub async fn get_user(data: Query) -> Response { + let token = &data.token; + + let mut civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + let data = civit.user_data().await; + + match data { + Err(e) => return (StatusCode::BAD_REQUEST, e).into_response(), + Ok(mut data) => { + let mut tags: HashSet = HashSet::new(); + let mut sort = vec![]; + + sort.push(TagsSort::MostArticles); + sort.push(TagsSort::MostHidden); + sort.push(TagsSort::MostImages); + sort.push(TagsSort::MostModels); + sort.push(TagsSort::MostPosts); + + for sort in sort { + match civit.tags(TagsOptions::default().sort(sort)).await { + None => (), + Some(batch) => { + for tag in batch { + tags.insert(tag); + } + }, + } + } + + data.tags = tags; + + return (StatusCode::OK, Json(data)).into_response() + } + } +} \ No newline at end of file diff --git a/backend/app/src/api/visualizer_data.rs b/backend/app/src/api/visualizer_data.rs new file mode 100644 index 0000000..431d773 --- /dev/null +++ b/backend/app/src/api/visualizer_data.rs @@ -0,0 +1,54 @@ +use axum::{ + Json, Router, extract::Query, http::StatusCode, response::{IntoResponse, Response}, routing::get, + extract::Path +}; + +use civit::{Creator, VotableTagsResponse, GenerationData}; + +use serde::{Deserialize, Serialize}; + +use civit::Civit; + +pub fn route() -> Router { + Router::new() + .route("/media_data/{creator_id}/{media_id}", get(get_media_data)) +} + +#[derive(Deserialize)] +pub struct UserDataReq { + token: String, +} + +#[derive(Debug, Serialize)] +pub struct MediaDataResponse { + generation_data: GenerationData, + creator: Option, + votable_tags: Vec +} + +pub async fn get_media_data(data: Query, Path((creator_id, media_id)): Path<(u32, u32)>) -> Response { + let token = &data.token; + + let civit = Civit::new() + .update_api_key("api key") + .set_auth_token(token); + + let generation_data = match civit.generation_data(media_id).await { + Some(d) => d, + None => { + return(StatusCode::BAD_REQUEST, "Could not get generation data").into_response(); + } + }; + + let votable_tags = civit.votable_tags(media_id as usize).await; + let creator = civit.creator(creator_id).await; + + + return (StatusCode::OK, Json( + MediaDataResponse { + generation_data: generation_data, + creator: creator, + votable_tags: votable_tags + } + )).into_response() +} \ No newline at end of file diff --git a/backend/app/src/downloader/download_by_id.rs b/backend/app/src/downloader/download_by_id.rs new file mode 100644 index 0000000..6b69a5e --- /dev/null +++ b/backend/app/src/downloader/download_by_id.rs @@ -0,0 +1,80 @@ +use super::{DownloadJob, DownloadKind}; + +use axum::{extract::{Path, Query}, response::{IntoResponse, Response}, Extension}; +use std::sync::Arc; +use crate::AppState; +use serde::Deserialize; + +#[derive(Deserialize, Debug)] +pub struct ModelOptions { + format: Option, + size: Option, + fp: Option, + token: String, + model_type: String, + cover: String, + base_model: String, + model_name: String, + author_name: String, + published_at: String, + based_on_model: String, + file_name: String, + stats: String +} + +pub async fn download_by_id(Path(model_id): Path, state: Extension>, options: Query) -> Response { + let mut url_payload = format!("{model_id}?"); + + if options.format.is_some() { + url_payload = format!("{url_payload}&format={}", options.format.clone().unwrap()) + } + + if options.size.is_some() { + url_payload = format!("{url_payload}&size={}", options.size.clone().unwrap()) + } + + if options.fp.is_some() { + url_payload = format!("{url_payload}&fp={}", options.fp.clone().unwrap()) + } + + if url_payload.ends_with("?") { + url_payload = url_payload.replace("?", ""); + } + + let model_folder = match options.model_type.to_lowercase().as_str() { + "checkpoint" => "checkpoints", + "textualinversion" => "embeddings", + "hypernetwork" => "hypernetworks", + "aestheticgradient" => "aesthetics", + "lora" => "loras", + "controlnet" => "controlnet", + "poses" => "poses", + _ => &options.model_type + }.to_string(); + + let base_dir = std::path::Path::new(&state.comfy_path); + + let models_dir = base_dir.join("models"); + + let payload = DownloadJob { + payload: url_payload, + kind: DownloadKind::ModelId, + models_dir: models_dir, + model_type: model_folder, + user_token: options.token.clone(), + cover: options.cover.clone(), + base_model: options.base_model.clone(), + model_name: options.model_name.clone(), + author_name: options.author_name.clone(), + published_at: options.published_at.clone(), + based_on_model: options.based_on_model.clone(), + file_name: options.file_name.clone(), + stats: options.stats.clone() + }; + + println!("Downloading model to {}/{}", payload.models_dir.to_string_lossy(), payload.model_type); + + let _ = state.tx_downloader.send(payload).await; + + format!("Download Model with id {model_id}").into_response() +} \ No newline at end of file diff --git a/backend/app/src/downloader/mod.rs b/backend/app/src/downloader/mod.rs new file mode 100644 index 0000000..455bde9 --- /dev/null +++ b/backend/app/src/downloader/mod.rs @@ -0,0 +1,47 @@ +mod download_by_id; +mod worker; + +pub use worker::download_worker; + +use axum::{Router, routing::get}; + +use axum::{Extension, Json}; +use std::path::{Path, PathBuf}; +use std::sync::Arc; +use crate::{AppState, ModelDownloading}; + +pub fn route() -> Router { + Router::new() + .route("/download_by_id/{model_id}", get(download_by_id::download_by_id)) + .route("/downloads", get(list_downloads)) +} + +#[derive(Debug)] +pub struct DownloadJob { + payload: String, + kind: DownloadKind, + models_dir: PathBuf, + model_type: String, + user_token: String, + cover: String, + base_model: String, + model_name: String, + author_name: String, + published_at: String, + based_on_model: String, + file_name: String, + stats: String +} + +#[derive(Debug)] +pub enum DownloadKind { + ModelId +} + +pub async fn list_downloads(state: Extension>) -> Json> { + let status = state.downloads.lock().await; + + let status = status.to_vec(); + + Json(status) +} \ No newline at end of file diff --git a/backend/app/src/downloader/worker.rs b/backend/app/src/downloader/worker.rs new file mode 100644 index 0000000..e8a4a28 --- /dev/null +++ b/backend/app/src/downloader/worker.rs @@ -0,0 +1,396 @@ +use std::{error::Error, sync::Arc}; + +use super::{DownloadJob}; + +use tokio::sync::mpsc::Receiver; + +use tokio::sync::{Mutex, mpsc}; +use uuid::Uuid; + +use crate::{ModelDownloading}; + +use std::sync::{ + atomic::{AtomicU64, Ordering}, +}; +use futures::StreamExt; + +#[derive(Debug)] +pub struct ModelStatusMessage { + model_payload: String, + downloaded: u64, + total: u64, + download_speed: f64, + status: String, + file_name: String +} + +use tokio::{ + fs::OpenOptions, +}; + +const CONNECTIONS: u64 = 8; + +pub async fn download_worker(mut rx_downloader: Receiver, models_being_downloaded: Arc>>) { + let (tx_task, mut rx_task) = mpsc::channel::(100); + + let downloading_models = models_being_downloaded.clone(); + + // task that receives messages from all spawned jobs + tokio::spawn(async move { + let downloading_models = downloading_models.clone(); + + while let Some(msg) = rx_task.recv().await { + let downloading_models = downloading_models.clone(); + + let mut model = downloading_models.lock().await; + + let model = model.iter_mut().find(|model| model.model_payload == msg.model_payload); + + match model { + None => (), + Some(model) => { + model.downloaded = msg.downloaded; + model.total_size = msg.total; + model.download_speed = msg.download_speed; + model.status = msg.status; + + if model.file_name.len() < 1 { + model.file_name = msg.file_name; + } + + if msg.downloaded >= msg.total { + model.finished_at = Some(chrono::Utc::now()); + } + } + } + } + }); + + while let Some(job) = rx_downloader.recv().await { + { + let model = models_being_downloaded.clone(); + + let model = model.lock().await; + + let model = model.iter().find(|model| { + model.model_payload == job.payload + }); + + match model { + None => (), + Some(model) => { + if model.status == "downloading" { + println!("Model {} already being downloading. Skiping request", &job.payload); + continue; + } + + println!("Model {} already being downloading. Skiping request", &job.payload); + continue; + } + } + + } + + models_being_downloaded.clone().lock().await.push(ModelDownloading { + id: Uuid::new_v4().to_string(), + model_payload: job.payload.clone(), + downloaded: 0, + total_size: 0, + started_at: chrono::Utc::now(), + finished_at: None, + download_speed: 0.0, + status: String::from("downloading"), + file_name: job.file_name.clone(), + cover: job.cover.clone(), + base_model: job.base_model.clone(), + model_name: job.model_name.clone(), + author_name: job.author_name.clone(), + published_at: job.published_at.clone(), + based_on_model: job.based_on_model.clone(), + stats: job.stats.clone() + }); + + let tx_task = tx_task.clone(); + + tokio::spawn(async move { + process_job(job, tx_task).await; + }); + } +} + +async fn process_job( + job: DownloadJob, + tx: mpsc::Sender, +) { + let payload_name = job.payload.clone(); + + let models_dir = &job.models_dir; + + let _ = tokio::fs::create_dir_all(&models_dir).await; + + println!("Models dir {:?}", models_dir); + + if !models_dir.is_dir() { + println!("Invalid download path"); + return; + } + + let target_folder = models_dir.join(&job.model_type); + + let _ = tokio::fs::create_dir_all(&target_folder).await; + + if !std::path::Path::new(&target_folder).is_dir() { + + + println!("Could not create target folder"); + return; + } + + let download_url = format!("https://civitai.com/api/download/models/{}", job.payload); + + println!("{download_url}"); + + let token_value = job.user_token; + + let cookie_value = format!("__Secure-civitai-token={token_value}"); + + let cookie = HeaderValue::from_str(&cookie_value).unwrap(); + + let client = reqwest::Client::builder() + .gzip(false) + .brotli(false) + .deflate(false) + .build().unwrap(); + + let (size, file_name) = get_size(&client, &download_url, &cookie).await.unwrap(); + + let file_n_o = &file_name; + + let mut file_name = std::path::Path::new(&target_folder).join(file_n_o); + + if file_name.is_file() { // Creates file with diff name if model already exists + let f_name = format!("{}_{}", chrono::Utc::now().timestamp(), file_n_o); + file_name = std::path::Path::new(&target_folder).join(f_name); + } + + + let file = Arc::new(Mutex::new( + match OpenOptions::new() + .create(true) + .write(true) + .open(&file_name) + .await { + Ok(f) => f, + Err(e) => { + println!("{e}"); + let _ = tx.send(ModelStatusMessage { + model_payload: payload_name, + downloaded: 0, + total: size, + download_speed: 0.0, + status: "error".to_string(), + file_name: String::new() + }).await; + return; + } + } + )); + + { + let f = file.lock().await; + f.set_len(size).await.unwrap(); + } + + let chunk_size = std::cmp::max(1, size / CONNECTIONS); + + let downloaded = Arc::new(AtomicU64::new(0)); + + let handles = download_loop( + &client, + tx.clone(), + CONNECTIONS, + payload_name.clone(), + download_url.clone(), + &cookie, + Arc::clone(&file), + Arc::clone(&downloaded), + size, + chunk_size, + &file_n_o + ).await; + + let mut status = String::from("finished"); + let mut total_downloaded = downloaded.fetch_add(0, Ordering::Relaxed); + + match handles { + Err(_e) => { + status = String::from("error"); + }, + Ok(handles) => { + for h in handles { + match h.await { + Ok(_) => { + total_downloaded = size; + }, + Err(_join) => { + status = String::from("error"); + } + } + } + } + } + + let _ = tx.send(ModelStatusMessage { + model_payload: payload_name, + downloaded: total_downloaded, + total: size, + download_speed: 0.0, + status: status, + file_name: String::new() + }).await; +} + +use tokio::fs::File; +use tokio::io::{AsyncSeekExt, AsyncWriteExt}; +use tokio::task::JoinHandle; + +async fn download_loop( + client: &reqwest::Client, + tx: mpsc::Sender, + connections: u64, + payload_name: String, + download_url: String, + cookie: &HeaderValue, + file: Arc>, + downloaded: Arc, + size: u64, + chunk_size: u64, + file_name: &str +) -> Result>>>, ()> { + let mut handles = Vec::new(); + + for i in 0..connections { + let file_name = file_name.to_string(); + let tx = tx.clone(); + let payload_name = payload_name.clone(); + + let download_url = download_url.clone(); + let cookie = cookie.clone(); + + let client = client.clone(); + let file = Arc::clone(&file); + let downloaded = Arc::clone(&downloaded); + + let start = i * chunk_size; + let end = if i == connections - 1 { + size - 1 + } else { + (i + 1) * chunk_size - 1 + }; + + let handle = tokio::spawn(async move { + let tx = tx.clone(); + + let resp = client + .get(download_url) + .header(COOKIE, cookie.clone()) + .header(reqwest::header::RANGE, format!("bytes={}-{}", start, end)) + .send() + .await?; + + let mut stream = resp.bytes_stream(); + let mut offset = start; + + let start = std::time::Instant::now(); + + while let Some(chunk) = stream.next().await { + let file_name = file_name.clone(); + let chunk = chunk?; + let payload_name = payload_name.clone(); + + { + let mut file = file.lock().await; + file.seek(std::io::SeekFrom::Start(offset)).await?; + file.write_all(&chunk).await?; + } + + offset += chunk.len() as u64; + + let current = downloaded.fetch_add(chunk.len() as u64, Ordering::Relaxed) + + chunk.len() as u64; + + // Calculate download speed + let elapsed = start.elapsed().as_secs_f64(); // seconds as f64 + let download_speed = current as f64 / elapsed; // bytes per second + + let _ = tx.send(ModelStatusMessage { + model_payload: payload_name, + downloaded: current, + total: size, + download_speed: download_speed, + status: String::from("downloading"), + file_name: file_name + }).await; + } + + Ok::<(), Box>(()) + }); + + handles.push(handle); + } + + Ok(handles) +} + +use reqwest::header::{CONTENT_RANGE, ACCEPT_ENCODING, CONTENT_DISPOSITION}; +use reqwest::header::{COOKIE, HeaderValue}; +/// Gets the file total size +async fn get_size( + client: &reqwest::Client, + url: &str, + token_cookie: &HeaderValue +) -> Result<(u64, String), Box> { + // Fallback: ranged GET + let resp = client + .get(url) + .header(reqwest::header::RANGE, "bytes=0-0") + .header(ACCEPT_ENCODING, "identity") + .header(COOKIE, token_cookie) + .send() + .await?; + + if resp.status() != reqwest::StatusCode::PARTIAL_CONTENT { + return Err("Server does not support byte ranges".into()); + } + + let range = resp + .headers() + .get(CONTENT_RANGE) + .ok_or("Missing Content-Range")? + .to_str()?; + + let content_disp = resp.headers().get(CONTENT_DISPOSITION).ok_or("TODO_Random_String.model")? + .to_str()?; + + let file_name = content_disp + .rsplit('\\') + .next() + .ok_or("Invalid File Name")? + .parse::()? + .split("filename=\"").collect::>().iter_mut().map(|s| s.to_string()).collect::>(); + + let file_name = match file_name.get(1) { + Some(f) => f.to_string().replace("\"", ""), + None => String::from("Invalid_file_name") + }; + + + // bytes 0-0/6442450944 + let total = range + .rsplit('/') + .next() + .ok_or("Invalid Content-Range")? + .parse::()?; + + Ok((total, file_name)) +} \ No newline at end of file diff --git a/backend/app/src/lib.rs b/backend/app/src/lib.rs new file mode 100644 index 0000000..e95578a --- /dev/null +++ b/backend/app/src/lib.rs @@ -0,0 +1,168 @@ +mod api; +mod downloader; + +mod media_proxy; + +use std::sync::Arc; + +use axum::{ + Router, + http::Method, + Extension +}; + +use rand::rng; +use tower_http::services::ServeDir; +use axum::routing::any; + +use tower_http::cors::{CorsLayer, Any}; +use tower::ServiceBuilder; + +use tokio::{sync::oneshot}; +use tokio::sync::{Mutex, mpsc}; +use notify::{Event, RecursiveMode, Result, Watcher}; + +#[derive(Clone, Debug)] +struct AppState { + tx_downloader: mpsc::Sender, + downloads: Arc>>, + comfy_path: String +} + +use serde::Serialize; + +#[derive(Debug, Serialize, Clone)] +struct ModelDownloading { + model_payload: String, + downloaded: u64, + total_size: u64, + started_at: chrono::DateTime, + finished_at: Option>, + download_speed: f64, + status: String, + file_name: String, + cover: String, + base_model: String, + model_name: String, + author_name: String, + published_at: String, + id: String, + based_on_model: String, + stats: String +} + +static TRACKING_FILE_NAME: &str = ".civit_comfy_state"; + +pub async fn start_civit_frontend_server(port: usize, static_dir: &str, comfy_path: &str) { + // Shutdown signal + let (shutdown_tx, shutdown_rx) = oneshot::channel::<()>(); + + // Downloader channel + let models_being_downloaded: Arc>> = Arc::new(Mutex::new(vec![])); + + let (tx_downloader, rx_downloader) = mpsc::channel::(100); + + tokio::spawn(downloader::download_worker(rx_downloader, Arc::clone(&models_being_downloaded))); + + // + let state = Arc::new(AppState { + tx_downloader, + downloads: Arc::clone(&models_being_downloaded), + comfy_path: comfy_path.to_string() + }); + + let cors_layer = CorsLayer::new() + .allow_origin(Any) // Open access to selected route + .allow_methods(vec![Method::GET, Method::POST]); + + let app = Router::new() + .route("/health", any("ok")) + .route("/media_proxy", any(media_proxy::proxy_route)) // proxy para tudo + .merge(api::user::route()) + .merge(api::mansonary::route()) //Infinite media mansonary data + .merge(api::tags::route()) + .merge(api::visualizer_data::route()) + .merge(api::favorite_media::route()) + .merge(api::get_collection_with_media::route()) + .merge(api::get_collections::route()) + .merge(api::update_collections::route()) + .merge(api::get_base_model_list::route()) + .merge(api::get_tools::route()) + .merge(api::get_techniques::route()) + .merge(downloader::route()) + .merge(api::get_model::route()) + .merge(api::create_collection::route()) + .merge(api::get_generation_data::route()) + .merge(api::get_models::route()) + .merge(api::search::route()) + ; + + let app = Router::new() + .nest("/civit", app) + .fallback_service(ServeDir::new(static_dir)) + .layer(ServiceBuilder::new().layer(cors_layer)) + .layer(Extension(state)) + ; + + // Listen for file delete to shutdown server instance + let working_dir = user_dirs::cache_dir().unwrap(); + let file_to_watch = working_dir.join(TRACKING_FILE_NAME); + + println!("{}", file_to_watch.to_string_lossy()); + + if file_to_watch.exists() { + let _ = std::fs::remove_file(&file_to_watch); + } + + let _ = std::fs::File::create(&file_to_watch); + + + tokio::spawn(async move { + use std::{sync::mpsc}; + let (tx, rx) = mpsc::channel::>(); + + let mut watcher = notify::recommended_watcher(tx).unwrap(); + + watcher.watch(std::path::Path::new(&working_dir), RecursiveMode::Recursive).unwrap(); + // Block forever, printing out events as they come in + let lf = file_to_watch.to_string_lossy().replace("\\", "/").replace("//", "/"); + + for res in rx { + match res { + Err(e) => println!("watch error: {:?}", e), + Ok(event) => { + if event.kind.is_remove() { + for path in event.paths { + let path_str = path.to_string_lossy().replace("\\", "/").replace("./", "/").replace("//", "/"); + + if lf == path_str { + let _ = shutdown_tx.send(()); + return; + } + } + } + }, + } + } + + // block forever until event triggers + std::thread::park(); + }); + + let listener = tokio::net::TcpListener::bind(format!("0.0.0.0:{port}")).await.unwrap(); + let addr = listener.local_addr().unwrap().port(); + println!("http://127.0.0.1:{addr}"); + + axum::serve(listener, app) + .with_graceful_shutdown(async { // Waits for file delcared above to be removed, if so it shutdowns the isntance. prevents two instances from being running at the same time + let _ = shutdown_rx.await; + }) + .await.unwrap() + ; +} + + + + + + diff --git a/backend/app/src/media_proxy.rs b/backend/app/src/media_proxy.rs new file mode 100644 index 0000000..624f7fa --- /dev/null +++ b/backend/app/src/media_proxy.rs @@ -0,0 +1,162 @@ +use axum::http::HeaderMap; +use axum::{ + extract::Request, + response::Response, +}; + +use std::collections::HashMap; +use crate::rng; + +use reqwest::Client; + +use rand::random_range; +use rand::Rng; + +pub async fn proxy_route(mut req: Request) -> Response { + let client = Client::new(); + + let params = req.uri().to_string(); + let params = params.split("?").collect::>(); + let params = params.get(1).unwrap().split("&").collect::>(); + let params = params.iter().map(|p| { + let p = p.split("=").collect::>(); + + (p.get(0).unwrap_or(&"").to_string(), p.get(1).unwrap_or(&"").to_string()) + }).collect::>(); + + let media_id = params.get("id").unwrap(); + let def = "video".to_string(); + let media_type = params.get("media_type").unwrap_or(&def).to_lowercase(); + + let mut rand_ident = String::new(); + + for _ in 0..8 { + let n: i32 = random_range(1..=10); + rand_ident += &format!("{n}"); + } + + let random_string: String = (&mut rng()) + .sample_iter(&rand::distr::Alphanumeric) + .take(22) + .map(char::from) + .collect(); + + + // + let axum_body: axum::body::Body = std::mem::take(req.body_mut()); + let method = req.method().clone(); + let headers = req.headers(); + + match media_type.as_str() { + "video" => { + let uri = format!("https://image.civitai.com/{random_string}/{media_id}/transcode=true,width=450,optimized=true/{rand_ident}"); + return video_proxy(client, axum_body, method, &uri, headers).await; + }, + _ => { + let uri = format!("https://image.civitai.com/{random_string}/{media_id}/anim=false,width=450,optimized=true/{rand_ident}"); + return image_proxy(client, axum_body, method, &uri, headers).await; + } + } +} + +use axum::body::to_bytes; + +async fn image_proxy(client: Client, axum_body: axum::body::Body, method: reqwest::Method, uri: &str, headers: &HeaderMap) -> Response { + use http_body_util::BodyExt; + use reqwest::Body; + + //let body = to_bytes(axum_body, 1024 * 1024).await.unwrap(); + + let stream = axum_body.into_data_stream(); + let body = Body::wrap_stream(stream); + + let mut req_builder = client + .request(method.clone(), uri) + .body(body); + + let user_token = match headers.get("user_token") { + Some(t) => t.to_str().unwrap().to_string(), + None => String::new() + }; + + req_builder = req_builder + .header("Cookie", format!("__Secure-civitai-token={user_token}")) + .header("cache-control", "max-age=0") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 OPR/124.0.0.0") + ; + + let res = req_builder.send().await.unwrap(); + + let mut builder = Response::builder().status(res.status()); + + const HOP_HEADERS: [&str; 8] = [ + "connection", + "transfer-encoding", + "keep-alive", + "proxy-authenticate", + "proxy-authorization", + "te", + "trailers", + "upgrade", + ]; + + for (name, value) in res.headers().iter() { + if !HOP_HEADERS.contains(&name.as_str()) { + builder = builder.header(name, value); + } + } + + use axum::body::Body as AxumBody; + + //let bytes = res.bytes().await.unwrap(); + + //builder.body(bytes.into()).unwrap() + + let stream = res.bytes_stream(); + + let body = AxumBody::from_stream(stream); + + builder.body(body).unwrap() +} + +async fn video_proxy(client: Client, axum_body: axum::body::Body, method: reqwest::Method, uri: &str, headers: &HeaderMap) -> Response { + let stream = axum_body.into_data_stream(); + + let reqwest_body = reqwest::Body::wrap_stream(stream); + + let mut req_builder = client.request(method, uri).body(reqwest_body); + + let user_token = match headers.get("user_token") { + Some(t) => t.to_str().unwrap().to_string(), + None => String::new() + }; + + req_builder = req_builder + //.header(":authority", "image.civitai.com") + //.header(":method", "GET") + .header("Cookie", format!("__Secure-civitai-token={user_token}")) + .header("cache-control", "max-age=0") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 OPR/124.0.0.0") + ; + + let res = match req_builder.send().await { + Ok(r) => r, + Err(e) => { + use axum::response::IntoResponse; + println!("Error loading media: {}", e); + return (axum::http::StatusCode::BAD_GATEWAY, format!("backend error: {}", e)).into_response(); + } + }; + + let mut builder = Response::builder().status(res.status()); + + for (name, value) in res.headers().iter() { + builder = builder.header(name, value); + } + + let stream = res.bytes_stream(); + + let body = axum::body::Body::from_stream(stream); + + builder.body(body).unwrap() +} \ No newline at end of file diff --git a/backend/civit/.gitignore b/backend/civit/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/backend/civit/.gitignore @@ -0,0 +1 @@ +/target diff --git a/backend/civit/Cargo.toml b/backend/civit/Cargo.toml new file mode 100644 index 0000000..7a124c2 --- /dev/null +++ b/backend/civit/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "civit" +version = "0.2.12" +edition = "2024" + +[dependencies] +chrono = { version = "0.4.42", features = ["serde"] } +futures-util = "0.3.31" +reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] } +serde = { version = "1.0.228", features = ["derive"] } +serde_json = "1.0.145" +scraper = "0.24.0" +serde_path_to_error = "0.1.20" +regex = "1.12.3" diff --git a/backend/civit/src/api/collections/create.rs b/backend/civit/src/api/collections/create.rs new file mode 100644 index 0000000..2ba603e --- /dev/null +++ b/backend/civit/src/api/collections/create.rs @@ -0,0 +1,73 @@ +use crate::Civit; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use crate::api::user::Collection; + +use reqwest::header::HeaderMap; + +#[derive(Debug, Serialize, Deserialize, Clone)] +pub enum CollectionType { + Image, + Model, + Post, + Article +} + +impl std::fmt::Display for CollectionType { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let s = match self { + CollectionType::Image => "Image", + CollectionType::Model => "Model", + CollectionType::Post => "Post", + CollectionType::Article => "Article" + }; + write!(f, "{}", s) + } +} + +impl Civit { + pub async fn create_collection(&self, collection_name: &str, collection_type: CollectionType, nsfw: bool, description: &str) -> Option { + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let response = self.client.post(format!("https://civitai.com/api/trpc/collection.upsert")) + .headers(headers) + .json(&json!({ + "json": { + "name": collection_name, + "description": description, + "image": null, + "nsfw": nsfw, + "read": null, + "type": collection_type, + "mode": null, + "metadata": { "forcedBrowsingLevel": null }, + "authed": true + }, + "meta": { + "values": { + "description": ["undefined"], + "image": ["undefined"], + "read": ["undefined"], + "metadata.forcedBrowsingLevel": ["undefined"] + } + } + })) + .send().await.unwrap().json::().await.unwrap_or_default(); + + let res = response.get("result").unwrap_or_default().get("data").unwrap_or_default().get("json").unwrap_or_default(); + + match serde_json::from_value::(res.clone()) { + Err(e) => { + dbg!(e); + None + }, + Ok(collection) => Some(collection) + } + } +} \ No newline at end of file diff --git a/backend/civit/src/api/collections/get_collection_with_item.rs b/backend/civit/src/api/collections/get_collection_with_item.rs new file mode 100644 index 0000000..e04bdf3 --- /dev/null +++ b/backend/civit/src/api/collections/get_collection_with_item.rs @@ -0,0 +1,86 @@ +use crate::Civit; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use super::CollectionType; +use reqwest::header::HeaderMap; + +#[derive(Debug, Serialize, Deserialize)] +pub struct ResponseInCollection { + collectionId: usize, + addedById: usize, + tagId: Option, + collection: ResponseCollection, + canRemoveItem: bool +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ResponseCollection { + userId: usize, + read: String +} + +impl Civit { + pub async fn get_collection_with_item(&self, media_id: usize, media_type: &CollectionType) -> Vec { + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let payload = match media_type { + CollectionType::Image => json!({"json":{"imageId":media_id,"type": "Image", "authed":true}}), + CollectionType::Model => json!({"json":{"modelId":media_id,"type": "Model", "authed":true}}), + _ => todo!() + }; + + let response = self.client.get(format!("https://civitai.com/api/trpc/collection.getUserCollectionItemsByItem?input={payload}")) + .headers(headers) + .send().await.unwrap().json::().await.unwrap_or_default(); + + let res = response.get("result").unwrap_or_default().get("data").unwrap_or_default().get("json").unwrap_or_default().to_owned(); + + let collections: Vec = serde_json::from_value(res).unwrap(); + + collections + } +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ResponseInCollectionByType { + id: usize, + name: Option, + description: Option, + read: Option, + userId: usize, + write: String, + imageId: Option, + isOwner: bool, + image: Option, + tags: Option> +} + +impl Civit { + pub async fn get_collection_by_media_type(&self, media_type: &CollectionType) -> Vec { + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let payload = json!({"json":{"permissions":["ADD","ADD_REVIEW","MANAGE"],"type":media_type,"authed":true}}); + + let response = self.client.get(format!("https://civitai.com/api/trpc/collection.getAllUser?input={payload}")) + .headers(headers) + .send().await.unwrap().json::().await.unwrap_or_default(); + + let res = response.get("result").unwrap_or_default().get("data").unwrap_or_default().get("json").unwrap_or_default().to_owned(); + + let collections: Vec = serde_json::from_value(res).unwrap(); + + collections + } +} \ No newline at end of file diff --git a/backend/civit/src/api/collections/mod.rs b/backend/civit/src/api/collections/mod.rs new file mode 100644 index 0000000..7026eb4 --- /dev/null +++ b/backend/civit/src/api/collections/mod.rs @@ -0,0 +1,5 @@ +mod create; +mod save_item_by_id; +mod get_collection_with_item; + +pub use create::CollectionType; \ No newline at end of file diff --git a/backend/civit/src/api/collections/save_item_by_id.rs b/backend/civit/src/api/collections/save_item_by_id.rs new file mode 100644 index 0000000..ac4cf26 --- /dev/null +++ b/backend/civit/src/api/collections/save_item_by_id.rs @@ -0,0 +1,71 @@ +use crate::Civit; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use crate::api::user::Collection; +use super::CollectionType; +use reqwest::header::HeaderMap; + +#[derive(Debug, Serialize, Deserialize)] +struct CollectionItem { + collectionId: usize, + userId: usize, + read: String +} + +impl Civit { + pub async fn collection_save_item_by_id(&self, add_collection: &Vec, remove_collection: &Vec, media_id: usize, media_type: CollectionType) -> Result { + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let add_collection = add_collection.iter().map(|c| CollectionItem { + collectionId: c.id, + userId: c.user_id, + read: c.read.to_string() + }).collect::>(); + + let remove_collection = remove_collection.iter().map(|collection| collection.id).collect::>(); + + let json_payload = match media_type { + CollectionType::Image => { + json!({ + "json": { + "imageId": media_id, + "type": "Image", + "collections": add_collection, + "removeFromCollectionIds": remove_collection, + "authed": true + } + }) + }, + CollectionType::Model => { + json!({ + "json": { + "modelId": media_id, + "type": "Model", + "collections": add_collection, + "removeFromCollectionIds": remove_collection, + "authed": true + } + }) + }, + _ => todo!() + }; + + let response = self.client.post(format!("https://civitai.com/api/trpc/collection.saveItem")) + .headers(headers) + .json(&json_payload) + .send().await.unwrap().json::().await.unwrap_or_default(); + + let res = &response.get("result").unwrap_or_default().get("data").unwrap_or_default().get("json").unwrap_or_default().get("status"); + + match res { + Some(v) => Ok(v.to_string()), + None => Err(response.to_string()) + } + } +} \ No newline at end of file diff --git a/backend/civit/src/api/creator.rs b/backend/civit/src/api/creator.rs new file mode 100644 index 0000000..8e3c788 --- /dev/null +++ b/backend/civit/src/api/creator.rs @@ -0,0 +1,86 @@ +use crate::Civit; +use reqwest::header::{AUTHORIZATION, CONTENT_TYPE}; +use serde::{Deserialize, Serialize}; +use serde_json::Value; + +#[derive(Debug, Deserialize, Serialize)] +pub struct Creator { + id: usize, + image: Option, + username: String, + muted: bool, + bannedAt: Option, + deletedAt: Option, + #[serde(default)] + createdAt: String, + publicSettings: Value, + excludeFromLeaderboards: bool, + links: Vec, + stats: CreatorStats, + rank: Option, + profilePicture: Option +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct Rank { + leaderboardCosmetic: String, + leaderboardId: String, + leaderboardRank: usize, + leaderboardTitle: String +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct CreatorLink { + url: String, + #[serde(rename = "type")] + link_type: String +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct CreatorStats { + downloadCountAllTime: usize, + thumbsUpCountAllTime: usize, + followerCountAllTime: usize, + reactionCountAllTime: usize, + uploadCountAllTime: usize, + generationCountAllTime: usize +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct profilePicture { + id: Option, + name: Option, + url: Option, + nsfwLevel: Option, + hash: Option, + userId: Option, + ingestion: Option, + #[serde(rename = "type")] + media_type: Option, + width: Option, + height: Option +} + +impl Civit { + pub async fn creator(&self, creator_id: u32) -> Option { + let client = &self.client; + + let response = client + .get(format!("https://civitai.com/api/trpc/user.getCreator?input={{\"json\":{{\"id\":{creator_id},\"authed\":true}}}}")) + .header(CONTENT_TYPE, "application/json") + .header(AUTHORIZATION, format!("Bearer {}", &self.api_key)) + .send() + .await.unwrap().json::().await.unwrap_or_default(); + + let res = response.get("result").unwrap_or_default().get("data").unwrap_or_default().get("json").unwrap_or_default(); + + return match serde_json::from_value::(res.clone()) { + Err(e) => { + dbg!(res); + println!("{e}"); + None + }, + Ok(creator) => Some(creator) + }; + } +} \ No newline at end of file diff --git a/backend/civit/src/api/download.rs b/backend/civit/src/api/download.rs new file mode 100644 index 0000000..5a4b289 --- /dev/null +++ b/backend/civit/src/api/download.rs @@ -0,0 +1,111 @@ +use std::collections::HashMap; +use std::time::Instant; +use super::Civit; +use reqwest::header::{AUTHORIZATION, CONTENT_TYPE}; +use futures_util::StreamExt; +use std::io::Write; + +#[derive(Debug, Default)] +pub struct DownloadOptions { + model_type: String, + format: String, + size: String, + fp: String +} + +impl DownloadOptions { + pub fn model_type(mut self, model_type: impl ToString) -> Self { + self.model_type = model_type.to_string(); + + self + } + + pub fn format(mut self, format: impl ToString) -> Self { + self.format = format.to_string(); + + self + } + + pub fn size(mut self, size: impl ToString) -> Self { + self.size = size.to_string(); + + self + } + + pub fn fp(mut self, fp: impl ToString) -> Self { + self.fp = fp.to_string(); + + self + } +} + +impl Civit { + pub async fn download(&self, model_id: usize, download_options: DownloadOptions) { + let client = &self.client; + + let mut params: HashMap = HashMap::new(); + + if download_options.model_type.len() > 0 { + params.insert(String::from("type"), download_options.model_type.to_string()); + } + + if download_options.format.len() > 0 { + params.insert(String::from("format"), download_options.format.to_string()); + } + + if download_options.size.len() > 0 { + params.insert(String::from("size"), download_options.size.to_string()); + } + + if download_options.fp.len() > 0 { + params.insert(String::from("fp"), download_options.fp.to_string()); + } + + let p = params.iter() + .map(|p| format!("{}={}", p.0.trim(), p.1.trim())).collect::>() + .join("&"); + + + let response = client + .get(format!("https://civitai.com/api/download/models/{model_id}?{p}")) + .header(CONTENT_TYPE, "application/json") + .header(AUTHORIZATION, format!("Bearer 7577577650f1dfd4e270c231f7c105de")) + .send().await.unwrap(); + + let total_size = response + .content_length() + .ok_or("Sem content-length no header").unwrap(); + + println!("Tamanho total: {} bytes", total_size); + + let mut file = std::fs::File::create("model.temp").unwrap(); + let mut downloaded: u64 = 0; + + let mut stream = response.bytes_stream(); + let start_time = Instant::now(); + + while let Some(chunk) = stream.next().await { + let chunk = chunk.unwrap(); + + file.write_all(&chunk).unwrap(); + downloaded += chunk.len() as u64; + + let elapsed = start_time.elapsed().as_secs_f64(); // time in seconds + let speed = downloaded as f64 / elapsed; // bytes per second + let percent = (downloaded as f64 / total_size as f64) * 100.0; + //print!("\rProgresso: {:.2}%", percent); + + print!( + "\rProgresso: {:.2}% - Velocidade: {:.2} KB/s", + percent, + speed / 1024.0 + ); + + std::io::stdout().flush().ok(); + } + + println!("\nDownload concluído!"); + + todo!() + } +} \ No newline at end of file diff --git a/backend/civit/src/api/generation_data.rs b/backend/civit/src/api/generation_data.rs new file mode 100644 index 0000000..de220b0 --- /dev/null +++ b/backend/civit/src/api/generation_data.rs @@ -0,0 +1,73 @@ +use crate::Civit; +use reqwest::header::{AUTHORIZATION, CONTENT_TYPE}; +use serde::{Deserialize, Serialize}; +use serde_json::Value; + +#[derive(Debug, Deserialize, Serialize)] +pub struct GenerationData { + #[serde(rename = "type")] + media_type: Option, + onSite: bool, + process: Option, + meta: Value, + resources: Vec, + tools: Vec, + techniques: Vec, + remixOfId: Option, + external: Value, + canRemix: Option +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct Technique { + id: usize, + name: String, + notes: Option +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct Tool { + id: usize, + name: String, + icon: Option, + domain: Option, + priority: Option, + notes: Option +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct Resource { + imageId: usize, + modelVersionId: usize, + strength: Option, + modelId: usize, + modelName: String, + modelType: String, + versionId: usize, + versionName: String, + baseModel: String +} + +impl Civit { + pub async fn generation_data(&self, media_id: u32) -> Option { + let client = &self.client; + + let response = client + .get(format!("https://civitai.com/api/trpc/image.getGenerationData?input={{\"json\":{{\"id\":{media_id},\"authed\":true}}}}")) + .header(CONTENT_TYPE, "application/json") + .header(AUTHORIZATION, format!("Bearer {}", &self.api_key)) + .send() + .await.unwrap().json::().await.unwrap_or_default(); + + let res = response.get("result").unwrap_or_default().get("data").unwrap_or_default().get("json").unwrap_or_default(); + + return match serde_json::from_value::(res.clone()) { + Err(e) => { + dbg!(&res); + println!("{e}"); + None + }, + Ok(data) => Some(data) + }; + } +} \ No newline at end of file diff --git a/backend/civit/src/api/image_infinite.rs b/backend/civit/src/api/image_infinite.rs new file mode 100644 index 0000000..ba625eb --- /dev/null +++ b/backend/civit/src/api/image_infinite.rs @@ -0,0 +1,296 @@ +use serde::{Deserialize, Serialize}; +use serde_json::json; + +use crate::Civit; +use reqwest::{Response, header::HeaderMap}; + +use serde_json::Value; + +#[derive(Debug, Serialize, Deserialize)] +pub struct ImagesInfiniteLoadOptions { + pub cursor: Option, + pub period: String, + pub base_models: Vec, + periodMode: String, + pub techniques: Vec, + pub tools: Vec, + pub sort: String, + pub types: Vec, + pub withMeta: bool, + pub fromPlatform: bool, + hideAutoResources: bool, + hideManualResources: bool, + notPublished: bool, + scheduled: bool, + hidden: bool, + pub remixesOnly: bool, + pub nonRemixesOnly: bool, + pub requiringMeta: bool, + useIndex: bool, + pub browsingLevel: usize, + include: Vec, + excludedTagIds: Vec, + disablePoi: bool, + disableMinor: bool, + pub tags: Vec, + pub model_version_id: Option, + pub prioritized_user_ids: Vec +} + +impl Default for ImagesInfiniteLoadOptions { + fn default() -> Self { + ImagesInfiniteLoadOptions { + period: "Year".to_string(), + periodMode: "published".to_string(), + sort: "Most Reactions".to_string(), + useIndex: true, + disablePoi: true, + browsingLevel: 1, + base_models: vec![], + types: vec![], + withMeta: false, + fromPlatform: false, + hideAutoResources: false, + hideManualResources: false, + notPublished: false, + scheduled: false, + hidden: false, + remixesOnly: false, + nonRemixesOnly: false, + requiringMeta: false, + include: vec![], + excludedTagIds: vec![], + disableMinor: false, + cursor: None, + techniques: vec![], + tags: vec![], + tools: vec![], + model_version_id: None, + prioritized_user_ids: vec![] + } + } +} + +impl Civit { + pub async fn load_infinite(&mut self, options: ImagesInfiniteLoadOptions) -> Result<(Vec, String), Value> { + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let mut params = json!({ + "json": { + "period": options.period, + "periodMode": "published", + "sort": options.sort, + "types": options.types, + "withMeta": options.withMeta, + "baseModels": options.base_models, + "techniques": options.techniques, + "tools": options.tools, + "fromPlatform": options.fromPlatform, + "hideAutoResources": false, + "hideManualResources": false, + "notPublished": false, + "scheduled": false, + "hidden": false, + "remixesOnly": options.remixesOnly, + "nonRemixesOnly": options.nonRemixesOnly, + "requiringMeta": options.requiringMeta, + "useIndex": true, + "browsingLevel": options.browsingLevel, // 31 - include nsfw ; 1 - exclude nsfw + "include": [], + "tags" : options.tags, + "excludedTagIds": [], + "disablePoi": true, + "disableMinor": true, + "cursor": options.cursor, + "authed": true + } + }); + + + if options.cursor.is_none() { + params["meta"] = serde_json::from_str(r#"{ "values": { "cursor": ["undefined"] } }"#).unwrap(); + } + + //let json_params = params["json"].as_object_mut().unwrap(); + + if options.model_version_id.is_some() && options.prioritized_user_ids.len() > 0 { + params = json!({ + "json": { + "modelVersionId": options.model_version_id.unwrap(), + "prioritizedUserIds": options.prioritized_user_ids, + "period": "AllTime", + "sort": "Most Reactions", + "limit": 20, + "pending": true, + "include": [], + "withMeta": false, + "excludedTagIds": [], + "disablePoi": true, + "disableMinor": true, + "cursor": null, + "authed": true + }, + "meta": { "values": { "cursor": ["undefined"] } } + }); + } + + /*if options.model_version_id.is_some() { + json_params.insert("modelVersionId".to_string(), options.model_version_id.into()); + } + + if options.prioritized_user_ids.len() > 0 { + json_params.insert("prioritizedUserIds".to_string(), options.prioritized_user_ids.into()); + }*/ + + //{"json":{"modelVersionId":2578565,"prioritizedUserIds":[4682393],"period":"AllTime","sort":"Most Reactions","limit":20,"pending":true,"include":[],"withMeta":false,"excludedTagIds":[415792,426772,5351,5161,5162,5188,5249,306619,5351,154326,161829,163032,130818,130820,133182],"disablePoi":true,"disableMinor":true,"cursor":null,"authed":true},"meta":{"values":{"cursor":["undefined"]}}} + + let response = &self.client.get(format!("https://civitai.com/api/trpc/image.getInfinite?input={}", params.to_string())) + .headers(headers) + .send().await.unwrap().text().await.unwrap_or_default(); + + + let response_json: Value = serde_json::from_str(&response).unwrap(); + + let json_val = response_json.get("result").unwrap_or(&Value::Null).get("data").unwrap_or(&Value::Null).get("json"); + + if json_val.is_none() { + return Err(response_json); + } + + let json_val = json_val.unwrap(); + + /*if options.model_version_id.is_some() && options.prioritized_user_ids.len() > 0 { + + let items = json_val.get("items").unwrap().as_array().unwrap(); + + for (i, item) in items.iter().enumerate() { + let istr = item.to_string(); + let mut de = serde_json::Deserializer::from_str(&istr); + + let res: Result = + serde_path_to_error::deserialize(&mut de); + + if let Err(err) = res { + eprintln!("Erro no item [{}]", i); + eprintln!("Path: {}", err.path()); + eprintln!("Msg: {}", err); + break; + } + } + + }*/ + + let next_cursor = json_val.get("nextCursor").unwrap_or_default().to_string(); + let mut items: Vec = serde_json::from_value(json_val.get("items").unwrap_or(&Value::Null).clone()).unwrap_or_default(); + + items.iter_mut().for_each(|i| { + i.img_url = Some(format!("https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/{}/transcode=true,original=true,quality=100/3cde953f-b339-426a-97fa-9b47071c1df6", i.url.clone().unwrap_or_default())); + }); + + Ok((items, next_cursor)) + } +} + +#[derive(Deserialize, Debug, Serialize)] +pub struct ImageResponse { + img_url: Option, + id: usize, + reactionCount: Option, + commentCount: Option, + collectedCount: Option, + index: usize, + #[serde(rename = "postId")] + post_id: usize, + url: Option, + #[serde(rename = "aiNsfwLevel")] + ai_nsfw_level: Option, + hash: Option, + width: usize, + height: usize, + #[serde(rename = "nsfwLevel")] + nsfw_level: usize, + #[serde(rename = "createdAt")] + created_at: Option, + #[serde(rename = "stats")] + stats: Stats, + meta: serde_json::Value, + #[serde(rename = "baseModel")] + base_model: Option, + #[serde(rename = "modelVersionIds")] + model_version_ids: Vec, + #[serde(rename = "modelVersionId")] + model_version_id: Option, + #[serde(rename = "sortAt")] + sort_at: Option, + #[serde(rename = "type")] + item_type: Option, + #[serde(rename = "userId")] + user_id: Option, + #[serde(rename = "hasMeta")] + has_meta: bool, + #[serde(rename = "onSite")] + on_site: bool, + #[serde(rename = "postedToId")] + posted_to_id: Option, + #[serde(rename = "combinedNsfwLevel")] + combined_nsfw_level: Option, + #[serde(rename = "toolIds")] + tool_ids: Option>, + #[serde(rename = "techniqueIds")] + technique_ids: Option>, + existedAtUnix: Option, + sortAtUnix: Option, + tagIds: Vec, + tags: Option>, + #[serde(default)] + modelVersionIdsManual: Vec, + #[serde(default)] + minor: bool, + remixOfId: Option, + #[serde(default)] + hasPositivePrompt: bool, + availability: Option, + #[serde(default)] + poi: bool, + #[serde(default)] + acceptableMinor: bool, + publishedAt: Option, + user: User +} + +#[derive(Deserialize, Debug, Serialize)] +pub struct User { + id: usize, + username: Option, + image: Option, + deletedAt: Option, + profilePicture: Option +} + +#[derive(Deserialize, Debug, Serialize)] +struct Stats { + #[serde(rename = "likeCountAllTime")] + like: usize, + #[serde(rename = "laughCountAllTime")] + laugh: usize, + #[serde(rename = "heartCountAllTime")] + heart: usize, + #[serde(rename = "cryCountAllTime")] + cry: usize, + #[serde(rename = "commentCountAllTime")] + comment: usize, + #[serde(rename = "collectedCountAllTime")] + collected: usize, + #[serde(rename = "tippedAmountCountAllTime")] + tipped_amount_count: usize, + #[serde(rename = "dislikeCountAllTime")] + disliked: usize, + #[serde(rename = "viewCountAllTime")] + view: usize, +} diff --git a/backend/civit/src/api/mod.rs b/backend/civit/src/api/mod.rs new file mode 100644 index 0000000..c7f00df --- /dev/null +++ b/backend/civit/src/api/mod.rs @@ -0,0 +1,76 @@ +mod models; +//mod tags; +mod download; +mod user; +mod image_infinite; +mod tags_id; +mod creator; +mod generation_data; +mod collections; +mod tool_list; +mod technique_list; +mod model_infinite; +pub mod search; + +use serde::Deserialize; +pub use models::{ModelsOptions, Model}; +pub use tags_id::{TagsOptions, TagsSort, TagsResponse, VotableTagsResponse}; +pub use download::DownloadOptions; +pub use image_infinite::ImagesInfiniteLoadOptions; +pub use creator::Creator; +pub use generation_data::GenerationData; +pub use collections::CollectionType; +pub use model_infinite::ModelInfiniteLoadOptions; +pub use model_infinite::CheckpointType; + +pub use crate::api::user::{UserData, Collection}; + +pub struct Civit { + api_key: String, + client: reqwest::Client, + auth_token: String, + user_data: Option +} + +impl Civit { + pub fn new() -> Self { + let client = reqwest::Client::new(); + + Civit { + api_key: "".to_string(), + client, + auth_token: "".to_string(), + user_data: None + } + } + + pub fn update_api_key(mut self, api_key: impl ToString) -> Self { + self.api_key = api_key.to_string(); + + self + } + + pub fn set_auth_token(mut self, token: impl ToString) -> Self { + self.auth_token = token.to_string().trim().to_owned(); + + self + } +} + +#[derive(Deserialize, Debug)] +struct CivitResponseMetadata { + #[serde(rename = "nextCursor")] + next_cursor: Option, + #[serde(rename = "nextPage")] + next_page: Option +} + +#[derive(Deserialize, Debug)] +pub struct CivitResponse { + pub metadata: CivitResponseMetadata, + pub items: Vec +} + +trait ParametersFromOptions { + fn to_parameters(&self) -> String; +} \ No newline at end of file diff --git a/backend/civit/src/api/model_infinite.rs b/backend/civit/src/api/model_infinite.rs new file mode 100644 index 0000000..a19092c --- /dev/null +++ b/backend/civit/src/api/model_infinite.rs @@ -0,0 +1,261 @@ +use serde::{Deserialize, Serialize}; +use serde_json::json; + +use crate::Civit; +use reqwest::{header::HeaderMap}; + +use serde_json::Value; + +#[derive(Debug, Serialize, Deserialize)] +pub enum CheckpointType { + Trained, + Merge +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ModelInfiniteLoadOptions { + pub cursor: Option, + pub period: String, + pub sort: String, + pub browsing_level: usize, + pub base_models: Vec, + pub model_types: Vec, + pub early_access: bool, + pub supports_generation: bool, + pub from_platform: bool, + pub is_featured: bool, + pub checkpoint_type: Option, + pub file_formats: Vec +} + +impl Default for ModelInfiniteLoadOptions { + fn default() -> Self { + ModelInfiniteLoadOptions { + cursor: None, + period: "AllTime".to_string(), + sort: "Most Downloaded".to_string(), + browsing_level: 31, + base_models: vec![], + model_types: vec![], + early_access: false, + supports_generation: false, + from_platform: false, + is_featured: false, + checkpoint_type: None, + file_formats: vec![] + } + } +} + +impl Civit { + pub async fn load_model_infinite(&mut self, options: ModelInfiniteLoadOptions) -> Result<(Vec, String), Value> { + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let mut params = json!({ + "json": { + "cursor": options.cursor, + "period": options.period, + "periodMode": "published", + "sort": options.sort, + "followed": false, + "types": options.model_types, + "fileFormats": options.file_formats, + "pending": false, + "browsingLevel": options.browsing_level, + "excludedTagIds": [], + "tags": [], + "disablePoi": true, + "disableMinor": true, + "authed": true, + } + }); + + let json_params = params["json"].as_object_mut().unwrap(); + + if options.base_models.len() > 0 { + json_params.insert("baseModels".to_string(), options.base_models.into()); + } + + if options.early_access { + json_params.insert("earlyAccess".to_string(), true.into()); + } + + if options.supports_generation { + json_params.insert("supportsGeneration".to_string(), true.into()); + } + + if options.is_featured { + json_params.insert("isFeatured".to_string(), true.into()); + } + + if options.from_platform { + json_params.insert("fromPlatform".to_string(), true.into()); + } + + match options.checkpoint_type { + None => (), + Some(ct) => { + match ct { + CheckpointType::Merge => json_params.insert("checkpointType".to_string(), "Merge".into()), + CheckpointType::Trained => json_params.insert("checkpointType".to_string(), "Trained".into()) + }; + } + } + + //println!("{}\n\n", params); + + if options.cursor.is_none() { + params["meta"] = serde_json::from_str(r#"{ "values": { "cursor": ["undefined"] } }"#).unwrap(); + } + + let response = &self.client.get(format!("https://civitai.com/api/trpc/model.getAll?input={}", params.to_string())) + .headers(headers) + .send().await.unwrap().text().await.unwrap_or_default(); + + + let response_json: Value = serde_json::from_str(&response).unwrap(); + + let json_val = response_json.get("result").unwrap_or(&Value::Null).get("data").unwrap_or(&Value::Null).get("json"); + + if json_val.is_none() { + return Err(response_json); + } + + let json_val = json_val.unwrap(); + + let next_cursor = json_val.get("nextCursor").unwrap_or_default().to_string(); + let items: Vec = match serde_json::from_value(json_val.get("items").unwrap_or(&Value::Null).clone()) { + Ok(d) => d, + Err(e) => { + dbg!(e); + vec![] + } + }; + + Ok((items, next_cursor)) + } +} + +#[derive(Deserialize, Debug, Serialize)] +pub struct ModelResponse { + id: usize, + name: String, + #[serde(rename = "type")] + model_type: String, + minor: bool, + #[serde(rename = "sfwOnly")] + sfw_only: bool, + poi: bool, + nsfw: bool, + #[serde(rename = "nsfwLevel", default)] + nsfw_level: usize, + status: String, + #[serde(rename = "createdAt")] + created_at: Option>, + #[serde(rename = "lastVersionAt")] + last_version_at: Option>, + #[serde(rename = "publishedAt")] + published_at: Option>, + locked: bool, + #[serde(rename = "earlyAccessDeadline")] + early_access_deadline: Option>, + availability: String, + tags: Vec, + hashes: Vec, + rank: Rank, + version: Version, + #[serde(rename = "userId")] + user_id: i32, + user: User, + images: Vec, + #[serde(rename = "canGenerate")] + can_generate: bool +} + +#[derive(Deserialize, Debug, Serialize)] +pub struct Image { + id: usize, + #[serde(rename = "userId")] + user_id: i32, + name: Option, + url: String, + #[serde(rename = "nsfwLevel")] + nsfw_level: usize, + width: usize, + height: usize, + hash: String, + #[serde(rename = "type")] + asset_type: String, + minor: bool, + poi: bool, + #[serde(rename = "modelVersionId")] + model_version_id: usize, + availability: String, + #[serde(rename = "hasMeta")] + has_meta: bool, + #[serde(rename = "hasPositivePrompt")] + has_positive_prompt: bool, + #[serde(rename = "onSite")] + on_site: bool, + #[serde(rename = "remixOfId")] + remix_of_id: Option, + tags: Vec +} + +#[derive(Deserialize, Debug, Serialize)] +pub struct User { + id: i32, + username: Option, + image: Option, + #[serde(rename = "deletedAt")] + deleted_at: Option>, +} + +#[derive(Deserialize, Debug, Serialize)] +struct Rank { + #[serde(rename = "downloadCount")] + download_count: usize, + #[serde(rename = "thumbsUpCount")] + thumbs_up_count: usize, + #[serde(rename = "thumbsDownCount")] + thumbs_down_count: usize, + #[serde(rename = "commentCount")] + comment_count: usize, + #[serde(rename = "collectedCount")] + collected_count: usize, + #[serde(rename = "tippedAmountCount")] + tipped_amount_count: usize, +} + +#[derive(Deserialize, Debug, Serialize)] +struct Version { + id: usize, + index: usize, + name: String, + #[serde(rename = "earlyAccessTimeFrame")] + early_access_time_frame: usize, + #[serde(rename = "baseModel")] + base_model: String, + #[serde(rename = "baseModelType")] + base_model_type: String, + #[serde(rename = "createdAt")] + created_at: Option>, + #[serde(rename = "publishedAt")] + published_at: Option>, + status: String, + availability: String, + #[serde(rename = "nsfwLevel")] + nsfw_level: usize, + description: Option, + #[serde(rename = "trainedWords")] + trained_words: Vec, + #[serde(rename = "vaeId")] + vae_id: Option, + covered: bool +} diff --git a/backend/civit/src/api/models.rs b/backend/civit/src/api/models.rs new file mode 100644 index 0000000..1c75eb5 --- /dev/null +++ b/backend/civit/src/api/models.rs @@ -0,0 +1,494 @@ +use std::collections::HashMap; + +use super::{ParametersFromOptions, Civit, CivitResponse}; +use crate::filters::{Sort, Period}; +use reqwest::header::{AUTHORIZATION, CONTENT_TYPE}; +use serde::{Deserialize, Serialize}; +use chrono::{DateTime, Utc}; + + +#[derive(Debug, Deserialize, Serialize)] +enum ModelTypes { + Checkpoint, + TextualInversion, + Hypernetwork, + AestheticGradient, + LORA, + Controlnet, + Poses +} + +#[derive(Debug, Deserialize)] +pub enum AllowComercialUse { + None, + Image, + Rent, + Sell +} + +#[derive(Debug, Default, Deserialize)] +pub struct ModelsOptions { + pub limit: Option, + pub page: Option, + pub query: String, + pub tag: Option, + pub username: Option, + pub model_types: Option, + pub sort: Option, + pub period: Option, + pub favorites: Option, + pub hidden: Option, + pub primary_file_only: Option, + pub allow_no_credit: Option, + pub allow_derivatives: Option, + pub allow_different_licenses: Option, + pub allow_commercial_use: Option, + pub nsfw: Option, + pub supports_generation: Option +} + + + +impl ModelsOptions { + pub fn limit(mut self, limit: usize) -> Self { + self.limit = Some(limit); + self + } + + pub fn page(mut self, page: usize) -> Self { + self.page = Some(page); + self + } + + pub fn query(mut self, query: impl ToString) -> Self { + self.query = query.to_string(); + self + } + + pub fn tag(mut self, tag: impl ToString) -> Self { + self.tag = Some(tag.to_string()); + self + } + + pub fn username(mut self, username: impl ToString) -> Self { + self.username = Some(username.to_string()); + self + } + + pub fn model_type(mut self, model_type: ModelTypes) -> Self { + self.model_types = Some(model_type); + self + } + + pub fn sort(mut self, sort: Sort) -> Self { + self.sort = Some(sort); + self + } + + pub fn period(mut self, period: Period) -> Self { + self.period = Some(period); + self + } + + pub fn favorites(mut self, favorites: bool) -> Self { + self.favorites = Some(favorites); + self + } + + pub fn hidden(mut self, hidden: bool) -> Self { + self.hidden = Some(hidden); + self + } + + pub fn primary_file_only(mut self, primary_file_only: bool) -> Self { + self.primary_file_only = Some(primary_file_only); + self + } + + pub fn allow_no_credit(mut self, allow_no_credit: bool) -> Self { + self.allow_no_credit = Some(allow_no_credit); + self + } + + pub fn allow_derivatives(mut self, allow_derivatives: bool) -> Self { + self.allow_derivatives = Some(allow_derivatives); + self + } + + pub fn allow_different_licenses(mut self, allow_different_licenses: bool) -> Self { + self.allow_different_licenses = Some(allow_different_licenses); + self + } + + pub fn allow_commercial_use(mut self, allow_commercial_use: AllowComercialUse) -> Self { + self.allow_commercial_use = Some(allow_commercial_use); + self + } + + pub fn nsfw(mut self, nsfw: bool) -> Self { + self.nsfw = Some(nsfw); + self + } + + pub fn supports_generation(mut self, supports_generation: bool) -> Self { + self.supports_generation = Some(supports_generation); + self + } +} + +impl ParametersFromOptions for ModelsOptions { + fn to_parameters(&self) -> String { + + use std::collections::HashMap; + + let mut params: HashMap = HashMap::new(); + + match self.limit { + None => (), + Some(v) => { + params.insert("limit".to_string(), v.to_string()); + } + } + + match self.page{ + None => (), + Some(v) => { + params.insert("page".to_string(), v.to_string()); + } + } + + params.insert("query".to_string(), self.query.to_string()); + + match &self.tag{ + None => (), + Some(v) => { + params.insert("tag".to_string(), v.to_string()); + } + } + + match &self.username{ + None => (), + Some(v) => { + params.insert("username".to_string(), v.to_string()); + } + } + + match &self.model_types{ + None => (), + Some(v) => { + + let m_type = match v { + ModelTypes::AestheticGradient => "AestheticGradient", + ModelTypes::Checkpoint => "Checkpoint", + ModelTypes::TextualInversion => "TextualInversion", + ModelTypes::Hypernetwork => "Hypernetwork", + ModelTypes::LORA => "LORA", + ModelTypes::Controlnet => "Controlnet", + ModelTypes::Poses => "Poses", + }; + + params.insert("username".to_string(), m_type.to_string()); + } + } + + match &self.sort { + None => (), + Some(v) => { + + let variant = match v { + Sort::MostComments => "Most Comments", + Sort::MostReactions => "Most Reactions", + Sort::Newest => "Newest" + }; + + params.insert("sort".to_string(), variant.to_string()); + } + } + + match &self.period { + None => (), + Some(v) => { + + let variant = match v { + Period::AllTime => "AllTime", + Period::Year => "Year", + Period::Month => "Month", + Period::Week => "Week", + Period::Day => "Day", + }; + + params.insert("period".to_string(), variant.to_string()); + } + } + + match &self.favorites{ + None => (), + Some(v) => { + params.insert("favorites".to_string(), v.to_string()); + } + } + + match &self.hidden { + None => (), + Some(v) => { + params.insert("hidden".to_string(), v.to_string()); + } + } + + match &self.primary_file_only { + None => (), + Some(v) => { + params.insert("primaryFileOnly".to_string(), v.to_string()); + } + } + + match &self.allow_no_credit { + None => (), + Some(v) => { + params.insert("allowNoCredit".to_string(), v.to_string()); + } + } + + match &self.allow_derivatives { + None => (), + Some(v) => { + params.insert("allowDerivatives".to_string(), v.to_string()); + } + } + + match &self.allow_different_licenses { + None => (), + Some(v) => { + params.insert("allowDifferentLicenses".to_string(), v.to_string()); + } + } + + match &self.allow_commercial_use { + None => (), + Some(v) => { + + let commercial_use = match v { + AllowComercialUse::Image => "Image", + AllowComercialUse::None => "None", + AllowComercialUse::Rent => "Rent", + AllowComercialUse::Sell => "Sell", + }; + + params.insert("allowCommercialUse".to_string(), commercial_use.to_string()); + } + } + + match &self.nsfw { + None => (), + Some(v) => { + params.insert("nsfw".to_string(), v.to_string()); + } + } + + match &self.supports_generation { + None => (), + Some(v) => { + params.insert("supportsGeneration".to_string(), v.to_string()); + } + } + + let p = params.iter() + .map(|p| format!("{}={}", p.0.trim(), p.1.trim())).collect::>() + .join("&"); + + p + } +} + +#[derive(Deserialize, Serialize, Debug)] +struct Stats { + #[serde(rename = "downloadCount")] + download: usize, + #[serde(rename = "thumbsUpCount")] + thumbs_up: usize, + #[serde(rename = "thumbsDownCount")] + thumbs_down: usize, + #[serde(rename = "commentCount")] + comments: usize, + #[serde(rename = "tippedAmountCount")] + tipped_amount: usize +} + +#[derive(Deserialize, Serialize, Debug)] +struct Creator { + username: String, + image: Option +} + +#[derive(Deserialize, Serialize, Debug)] +struct ModelVersionStats { + #[serde(rename = "downloadCount")] + #[serde(default)] + downloads: usize, + #[serde(rename = "thumbsUpCount")] + #[serde(default)] + thumbs_up: usize, + #[serde(rename = "thumbsDownCount")] + #[serde(default)] + thumbs_down: usize +} + +#[derive(Deserialize, Serialize, Debug)] +struct ModelVersionMetadata { + format: Option, + size: Option, + fp: Option, +} + +#[derive(Deserialize, Serialize, Debug)] +struct ModelVersionFiles { + id: usize, + #[serde(rename = "sizeKB")] + size_kb: f64, + name: String, + #[serde(rename = "type")] + model_type: String, + #[serde(rename = "pickleScanResult")] + pickle_scan_result: String, + #[serde(rename = "pickleScanMessage")] + pickle_scan_message: String, + #[serde(rename = "virusScanResult")] + virus_scan_result: String, + #[serde(rename = "virusScanMessage")] + virus_scan_message: Option, + #[serde(rename = "scannedAt")] + scanned_at: Option,//Option>, + metadata: ModelVersionMetadata, + hashes: HashMap, + #[serde(rename = "downloadUrl")] + download_url: String, + primary: Option +} + +#[derive(Deserialize, Serialize, Debug)] +struct ModelImage { + id: Option, + url: String, + #[serde(rename = "nsfwLevel")] + nsfw_level: usize, + width: usize, + height: usize, + hash: String, + #[serde(rename = "type")] + image_type: String, + minor: bool, + poi: bool, + hasMeta: bool, + #[serde(rename = "hasPositivePrompt")] + has_positive_prompt: bool, + #[serde(rename = "onSite")] + on_site: bool, +} + +#[derive(Deserialize, Serialize, Debug)] +pub struct ModelVersion { + id: usize, + index: Option, + name: Option, + baseModel: Option, + #[serde(rename = "baseModelType")] + base_model_type: Option, + #[serde(rename = "publishedAt")] + publishedAt: DateTime, + #[serde(default)] + availability: Option, + #[serde(rename = "nsfwLevel")] + nsfw_level: usize, + description: Option, + #[serde(rename = "trainedWords")] + trained_words: Option>, + + stats: ModelVersionStats, + #[serde(rename = "supportsGeneration")] + #[serde(default)] + supports_generation: bool, + files: Vec, + images: Vec, + #[serde(rename = "downloadUrl")] + download_url: Option, +} + +#[derive(Deserialize, Debug, Serialize)] +pub struct Model { + id: usize, + name: String, + description: Option, + #[serde(rename = "allowNoCredit")] + allow_no_credit: bool, + #[serde(rename = "allowCommercialUse")] + allow_commercial_use: String, + #[serde(rename = "allowDerivatives")] + allow_derivatives: bool, + #[serde(rename = "allowDifferentLicense")] + allow_different_license: bool, + #[serde(rename = "type")] + model_type: ModelTypes, + minor: bool, + #[serde(rename = "sfwOnly")] + sfw_only: bool, + poi: bool, + nsfw: bool, + #[serde(rename = "nsfwLevel")] + nsfw_level: usize, + availability: String, + #[serde(rename = "userId")] + user_id: usize, + cosmetic: Option, + #[serde(rename = "supportsGeneration")] + supports_generation: bool, + stats: Stats, + creator: Creator, + tags: Vec, + #[serde(rename = "modelVersions")] + model_versions: Vec +} + +impl Civit { + pub async fn models(&self, options: ModelsOptions) -> CivitResponse { + let client = &self.client; + + let parameters = options.to_parameters(); + + let response = client + .get(format!("https://civitai.com/api/v1/models?{parameters}")) + .header(CONTENT_TYPE, "application/json") + .header(AUTHORIZATION, format!("Bearer {}", &self.api_key)) + .send() + .await.unwrap().json::>().await.unwrap(); + + response + } + + pub async fn model_by_id(&self, model_id: usize) -> Model { + let client = &self.client; + + let response = client + .get(format!("https://civitai.com/api/v1/models/{model_id}")) + .header(CONTENT_TYPE, "application/json") + .header(AUTHORIZATION, format!("Bearer {}", &self.api_key)) + .send() + .await.unwrap(); + + let response = response.json::().await.unwrap(); + + response + } + + pub async fn model_by_version(&self, model_version: usize) -> ModelVersion { + let client = &self.client; + + let response = client + .get(format!("https://civitai.com/api/v1/model-versions/{model_version}")) + .header(CONTENT_TYPE, "application/json") + .header(AUTHORIZATION, format!("Bearer {}", &self.api_key)) + .send() + .await.unwrap().json::().await.unwrap(); + + response + } +} diff --git a/backend/civit/src/api/search/mod.rs b/backend/civit/src/api/search/mod.rs new file mode 100644 index 0000000..619e8b5 --- /dev/null +++ b/backend/civit/src/api/search/mod.rs @@ -0,0 +1,145 @@ +use reqwest::header::{AUTHORIZATION, CONTENT_TYPE}; +use serde::{Deserialize, Serialize}; +use serde_json::json; + +use crate::Civit; + +use serde_json::Value; + +#[derive(Deserialize, Debug, Serialize, Clone)] +pub enum SearchType { + Models, + Assets, +} + +#[derive(Deserialize, Debug, Serialize, Clone)] +pub struct SearchOptions { + pub api: String, + pub search_type: SearchType, + pub query: String, + pub user_id: usize, + pub username: String, + pub tags: Vec, + pub categories: Vec, + pub checkpoint_type: Vec, + pub base_model: Vec, + pub model_type: Vec, + pub file_formats: Vec, + pub techniques: Vec, + pub tool_names: Vec, + pub aspect_ratio: Vec, + pub media_type: Vec, +} + +impl Civit { + pub async fn search(&self, options: SearchOptions) -> Result { + let client = &self.client; + + let user_id = options.user_id; + let username = options.username; + + let (search_type, facets, ls) = match options.search_type { + SearchType::Assets => { + let ls = format!("(poi != true OR user.username = {username})"); + let facets = vec![ + "aspectRatio", + "baseModel", + "createdAtUnix", + "tagNames", + "techniqueNames", + "toolNames", + "type", + "user.username" + ]; + + ("images_v6", facets, ls) + }, + SearchType::Models => { + let ls = format!("(poi != true OR user.id = {user_id}) AND (availability != Private OR user.id = {user_id})"); + let facets = vec![ + "category.name", + "checkpointType", + "fileFormats", + "lastVersionAtUnix", + "tags.name", + "type", + "user.username", + "version.baseModel" + ]; + + ("models_v9", facets, ls) + }, + }; + + + + let mut filters = json!([]); + + let filters = filters.as_array_mut().unwrap(); + + append_as_val(filters, &options.tags, "tags.name"); + append_as_val(filters, &options.techniques, "techniqueNames"); + append_as_val(filters, &options.tool_names, "toolNames"); + + append_as_list(filters, &options.categories, "category.name"); + append_as_list(filters, &options.checkpoint_type, "checkpointType"); + append_as_list(filters, &options.base_model, "version.baseModel"); + append_as_list(filters, &options.model_type, "type"); + append_as_list(filters, &options.file_formats, "fileFormats"); + append_as_list(filters, &options.aspect_ratio, "aspectRatio"); + append_as_list(filters, &options.media_type, "type"); + + + filters.push(ls.into()); + + let body = json!({ + "queries": [{ + "q": options.query, + "indexUid": search_type, + "facets": facets, + "attributesToHighlight": [], + "highlightPreTag": "__ais-highlight__", + "highlightPostTag": "__/ais-highlight__", + "limit": 51, + "offset": 0, + "filter": filters + }] + }); + + println!("{body}"); + + let response = client + .post(format!("https://search-new.civitai.com/multi-search")) + .header(CONTENT_TYPE, "application/json") + .header(AUTHORIZATION, format!("Bearer {}", &options.api)) + .json(&body) + .send() + .await + .unwrap() + .json::() + .await + .unwrap_or_default(); + + Ok(response) + } +} + +fn append_as_val(filters: &mut Vec, item: &Vec, key: &str) { + if item.len() > 0 { + for it in item { + filters.push(format!("\"{key}\"=\"{it}\"").into()); + } + } +} + +fn append_as_list(filters: &mut Vec, item: &Vec, key: &str) { + if item.len() > 0 { + let mut values = vec![]; + + for it in item { + values.push(format!("\"{key}\"=\"{it}\"")); + } + + filters.push(values.into()); + } +} \ No newline at end of file diff --git a/backend/civit/src/api/tags_id.rs b/backend/civit/src/api/tags_id.rs new file mode 100644 index 0000000..a785fd1 --- /dev/null +++ b/backend/civit/src/api/tags_id.rs @@ -0,0 +1,162 @@ +use serde::{Deserialize, Serialize}; +use serde_json::json; +use std::hash::{Hash, Hasher}; +use reqwest::header::{AUTHORIZATION, CONTENT_TYPE}; + + +use crate::Civit; +use reqwest::header::HeaderMap; + +use serde_json::Value; + +#[derive(Debug, Serialize, Deserialize)] +pub enum TagsSort { + MostModels, + MostImages, + MostPosts, + MostArticles, + MostHidden +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct TagsOptions { + limit: usize, + sort: TagsSort +} + +impl Default for TagsOptions { + fn default() -> Self { + TagsOptions { + limit: 200, + sort: TagsSort::MostImages + } + } +} + +impl TagsOptions { + pub fn limit(mut self, limit: usize) -> Self { + self.limit = limit; + self + } + + pub fn sort(mut self, sort: TagsSort) -> Self { + self.sort = sort; + self + } + + fn sort_to_string(&self) -> &str { + match self.sort { + TagsSort::MostArticles => "Most Articles", + TagsSort::MostHidden => "Most Hidden", + TagsSort::MostPosts => "Most Posts", + TagsSort::MostImages => "Most Images", + TagsSort::MostModels => "Most Models", + } + } +} + +impl Civit { + pub async fn tags(&mut self, options: TagsOptions) -> Option> { + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let params = json!({ + "json": { + "entityType": ["Image"], + "sort": options.sort_to_string(), + "unlisted": false, + "categories": true, + "limit": options.limit, + "page": 1, + "include": ["nsfwLevel"], + "authed": true + } + }); + + let response = &self.client.get(format!("https://civitai.com/api/trpc/tag.getAll?input={}", params.to_string())) + .headers(headers) + .send().await.unwrap().text().await.unwrap_or_default(); + + + let response_json: Value = serde_json::from_str(&response).unwrap(); + + let json_val = response_json.get("result").unwrap_or(&Value::Null).get("data").unwrap_or(&Value::Null).get("json"); + + if json_val.is_none() { + dbg!(&response_json); + return None; + } + + let json_val = json_val.unwrap(); + + + let items: Vec = serde_json::from_value(json_val.get("items").unwrap_or(&Value::Null).clone()).unwrap_or_default(); + + Some(items) + } +} + +#[derive(Deserialize, Debug, Serialize, Clone)] +pub struct TagsResponse { + id: usize, + name: String, + nsfwLevel: usize +} + +impl PartialEq for TagsResponse { + fn eq(&self, other: &Self) -> bool { + self.id == other.id + } +} + +impl Eq for TagsResponse {} + +impl Hash for TagsResponse { + fn hash(&self, state: &mut H) { + self.id.hash(state); + } +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct VotableTagsResponse { + score: usize, + upVotes: usize, + downVotes: usize, + automated: bool, + needsReview: bool, + concrete: bool, + lastUpvote: Option, + id: usize, + #[serde(rename = "type")] + tag_type: String, + nsfwLevel: usize, + name: String +} + +impl Civit { + pub async fn votable_tags(&self, media_id: usize) -> Vec { + let client = &self.client; + + let response = client + .get(format!("https://civitai.com/api/trpc/tag.getVotableTags?input={{\"json\":{{\"id\":{media_id},\"type\": \"image\",\"authed\":true}}}}")) + .header(CONTENT_TYPE, "application/json") + .header(AUTHORIZATION, format!("Bearer {}", &self.api_key)) + .send() + .await.unwrap().json::().await.unwrap_or_default(); + + let res = response.get("result").unwrap_or_default().get("data").unwrap_or_default().get("json").unwrap_or_default(); + + return match serde_json::from_value::>(res.clone()) { + Err(e) => { + println!("{e}"); + vec![] + }, + Ok(tags) => tags + }; + } +} \ No newline at end of file diff --git a/backend/civit/src/api/technique_list.rs b/backend/civit/src/api/technique_list.rs new file mode 100644 index 0000000..232916a --- /dev/null +++ b/backend/civit/src/api/technique_list.rs @@ -0,0 +1,38 @@ +use crate::Civit; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use reqwest::header::HeaderMap; + +#[derive(Debug, Serialize, Deserialize)] +pub struct Technique { + id: usize, + name: String, + #[serde(rename = "type")] + tool_type: String +} + +impl Civit { + pub async fn get_techniques_list(&self) -> Vec { + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let payload = json!({"json":{"authed":true}}); + + let response = self.client.get(format!("https://civitai.com/api/trpc/technique.getAll?input={payload}")) + .headers(headers) + .send().await.unwrap().json::().await.unwrap_or_default(); + + let res = response.get("result").unwrap_or_default().get("data").unwrap_or_default() + .get("json").unwrap_or_default() + .to_owned(); + + let tools = serde_json::from_value::>(res).unwrap_or_default(); + + tools + } +} \ No newline at end of file diff --git a/backend/civit/src/api/tool_list.rs b/backend/civit/src/api/tool_list.rs new file mode 100644 index 0000000..d2c19a7 --- /dev/null +++ b/backend/civit/src/api/tool_list.rs @@ -0,0 +1,51 @@ +use crate::Civit; +use serde::{Deserialize, Serialize}; +use serde_json::{Value, json}; +use reqwest::header::HeaderMap; + +#[derive(Debug, Serialize, Deserialize)] +pub struct Tool { + alias: Option, + #[serde(rename = "bannerUrl")] + banner_url: Option, + company: Option, + #[serde(rename = "createdAt")] + created_at: Option>, + description: Option, + domain: Option, + icon: Option, + id: usize, + name: String, + priority: Option, + #[serde(default)] + supported: bool, + #[serde(rename = "type")] + tool_type: String +} + +impl Civit { + pub async fn get_tools_list(&self) -> Vec { + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let payload = json!({"json":{"include":["unlisted"],"sort":"AZ","cursor":null,"authed":true},"meta":{"values":{"cursor":["undefined"]}}}); + + let response = self.client.get(format!("https://civitai.com/api/trpc/tool.getAll?input={payload}")) + .headers(headers) + .send().await.unwrap().json::().await.unwrap_or_default(); + + let res = response.get("result").unwrap_or_default().get("data").unwrap_or_default() + .get("json").unwrap_or_default() + .get("items").unwrap_or_default() + .to_owned(); + + let tools = serde_json::from_value::>(res).unwrap_or_default(); + + tools + } +} \ No newline at end of file diff --git a/backend/civit/src/api/user/collections.rs b/backend/civit/src/api/user/collections.rs new file mode 100644 index 0000000..e0daabf --- /dev/null +++ b/backend/civit/src/api/user/collections.rs @@ -0,0 +1,64 @@ +use crate::Civit; +use serde_json::{Value, json}; +use reqwest::header::HeaderMap; +use serde::Deserialize; + +#[derive(Debug, Deserialize)] +struct ModelColl { + id: usize, + name: String, + #[serde(rename = "type")] + model_type: String, + nsfw: bool, + #[serde(rename = "nsfwLevel")] + nsfw_level: usize, + status: String, + tags: Vec +} + +pub struct ModelsList { + models: Vec, + cursor: String +} + +impl Civit { + pub async fn collection_data(&mut self, collection_id: usize) -> ModelsList { + let url_params = json!({ + "json": { + "periodMode": "published", + "sort": "Highest Rated", + "collectionId": collection_id, + "pending": false, + "browsingLevel": 31, + "excludedTagIds": [], + "disablePoi": true, + "disableMinor": true, + "cursor": null, + "authed": true + }, + "meta": { "values": { "cursor": ["undefined"] } } + }); + + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + let response = &self.client.get(format!("https://civitai.com/api/trpc/model.getAll?input={}", url_params.to_string())) + .headers(headers) + .send().await.unwrap().text().await.unwrap(); + + let json_v = serde_json::from_str::(&response).unwrap(); + + let items: Vec = serde_json::from_value(json_v.get("result").unwrap().get("data").unwrap().get("json").unwrap().get("items").unwrap().to_owned()).unwrap(); + let cursor = json_v.get("result").unwrap().get("data").unwrap().get("json").unwrap().get("nextCursor").unwrap().to_string(); + + ModelsList { + models: items, + cursor + } + } +} \ No newline at end of file diff --git a/backend/civit/src/api/user/mod.rs b/backend/civit/src/api/user/mod.rs new file mode 100644 index 0000000..89ca8be --- /dev/null +++ b/backend/civit/src/api/user/mod.rs @@ -0,0 +1,164 @@ +use crate::Civit; +use crate::api::tags_id::{TagsSort, TagsResponse, TagsOptions}; +use reqwest::header::HeaderMap; +use scraper::{ElementRef, Html}; +use scraper::Selector; +use serde::Serialize; +use serde_json::Value; +use serde::Deserialize; +pub mod collections; + +use std::collections::HashSet; + +#[derive(Debug, Clone, Serialize)] +pub struct UserData { + pub default_locale: String, + pub color_scheme: String, + pub user_id: usize, + pub user_name: String, + pub username: String, + pub user_email: String, + pub image: String, + pub show_nsfw: bool, + pub created_at: String, + pub autoplay_gifs: bool, + pub collections: Vec, + pub country_code: String, + pub region_code: usize, + pub tags: HashSet +} + +#[derive(Debug, Deserialize, Clone, Serialize)] +pub struct Collection { + pub id: usize, + pub name: String, + pub description: Option, + pub read: String, + #[serde(rename = "userId")] + pub user_id: usize, + pub write: String, + #[serde(rename = "userId")] + pub image_id: Option, + #[serde(rename = "isOwner")] + pub is_owner: bool, + pub image: Option, + pub tags: Vec +} + +impl Civit { + /// Returns user settings, metadata and collection list + pub async fn user_data(&mut self) -> Result { + match &self.user_data { // Caches user data + Some(user_data) => Ok(user_data.clone()), + None => { + let client = &self.client; + + let mut cookies = std::collections::HashMap::new(); + cookies.insert("__Secure-civitai-token", &self.auth_token); + + let cookie_header = cookies.iter().map(|c| format!("{}={}", c.0, c.1)).collect::>().join(";"); + let mut headers = HeaderMap::new(); + headers.append(reqwest::header::COOKIE, reqwest::header::HeaderValue::from_str(&cookie_header).unwrap()); + + // + // User data alternative. I would still need to fetch the collections: + // https://civitai.com/_next/data/VMZr2JCzoNiIShBMq-2h5/en.json + // collections: + // https://civitai.com/api/trpc/collection.getAllUser + // + let response = match client + .get(format!("https://civitai.com/collections")) + .headers(headers) + .send() + .await { + Ok(resp) => resp, + Err(e) => { + dbg!(&e); + return Err(e.to_string()) + } + }; + + let html = match response.text().await { + Ok(res) => res, + Err(e) => { + dbg!(&e); + return Err(e.to_string()) + } + }; + + + let document = Html::parse_document(&html); + + let selector = Selector::parse("script#__NEXT_DATA__").unwrap(); + + for element in document.select(&selector) { + let json_str = element.text().collect::(); + let v: Value = serde_json::from_str(&json_str).unwrap(); + + let user_j = match v.get("props").unwrap().get("pageProps").unwrap().get("session").unwrap().get("user") { + None => { + dbg!(&json_str); + return Err(html); + }, + Some(user_d) => user_d + }; + + //let user_j = v.get("props").unwrap().get("pageProps").unwrap().get("session").unwrap().get("user").unwrap(); + + let collections = v.get("props") + .unwrap() + .get("pageProps").ok_or(format!("Page props does not exist in: \n{}", v.to_string()))? + .get("trpcState").ok_or(format!("trpcState props does not exist in: \n{}", v.to_string()))? + .get("json").ok_or(format!("json props does not exist in: \n{}", v.to_string()))? + .get("queries").ok_or(format!("queries props does not exist in: \n{}", v.to_string()))? + .as_array().ok_or(format!("Error converting to array: \n{}", v.to_string()))?; + + let collections: Vec = match collections.first() { + None => vec![], + Some(coll) => { + let v = coll.get("state").unwrap().get("data").unwrap().to_owned(); + let col: Vec = serde_json::from_value(v).unwrap(); + + col + } + }; + + let user_name = match user_j.get("name") { + Some(u) => u.to_string(), + None => match user_j.get("username") { + Some(u) => serde_json::from_value::(u.clone()).unwrap(), + None => "user".to_string() + } + }.replace("\"", ""); + + let user_data = UserData { + default_locale: v.get("defaultLocale").unwrap().to_string().replace("\"", ""), + color_scheme: v.get("props").unwrap().get("pageProps").unwrap().get("colorScheme").unwrap().to_string().replace("\"", ""), + user_id: user_j.get("id").unwrap().to_string().replace("\"", "").parse::().unwrap(), + user_name: user_name, + username: user_j.get("username").unwrap().to_string().replace("\"", ""), + user_email: user_j.get("email").unwrap().to_string().replace("\"", ""), + image: user_j.get("image").unwrap_or_default().to_string().replace("\"", ""), + show_nsfw: user_j.get("showNsfw").unwrap().to_string().replace("\"", "").parse::().unwrap(), + created_at: user_j.get("createdAt").unwrap().to_string().replace("\"", ""), + autoplay_gifs: user_j.get("autoplayGifs").unwrap().to_string().parse::().unwrap(), + collections: collections, + country_code: v.get("props").unwrap().get("pageProps").unwrap().get("region").unwrap().get("countryCode").unwrap().to_string().replace("\"", ""), + region_code: v.get("props").unwrap().get("pageProps").unwrap().get("region").unwrap().get("regionCode").unwrap().to_string().trim().to_string().replace("\"", "").parse().unwrap(), + tags: HashSet::new() + }; + + self.user_data = Some(user_data.clone()); + + return Ok(user_data); + } + + Err("User does not exist".to_string()) + } + } + } + + pub async fn collections(&mut self) -> Vec { + self.user_data().await.unwrap().collections + } +} \ No newline at end of file diff --git a/backend/civit/src/filters/mod.rs b/backend/civit/src/filters/mod.rs new file mode 100644 index 0000000..c6abd7d --- /dev/null +++ b/backend/civit/src/filters/mod.rs @@ -0,0 +1,25 @@ +use serde::Deserialize; + +#[derive(Debug, Deserialize)] +pub enum NSFW { + None, + Soft, + Mature, + X +} + +#[derive(Debug, Deserialize)] +pub enum Sort { + MostReactions, + MostComments, + Newest, +} + +#[derive(Debug, Deserialize)] +pub enum Period { + AllTime, + Year, + Month, + Week, + Day +} \ No newline at end of file diff --git a/backend/civit/src/lib.rs b/backend/civit/src/lib.rs new file mode 100644 index 0000000..5698574 --- /dev/null +++ b/backend/civit/src/lib.rs @@ -0,0 +1,8 @@ +mod api; +mod filters; + +pub use crate::api::{Civit, ModelsOptions,GenerationData, Creator, VotableTagsResponse,TagsOptions, DownloadOptions, UserData, ImagesInfiniteLoadOptions, TagsSort, TagsResponse}; +pub use crate::api::{CollectionType, Collection}; +pub use crate::api::ModelInfiniteLoadOptions; +pub use api::CheckpointType; +pub use api::search; \ No newline at end of file diff --git a/backend/civitComfyBindings/.gitignore b/backend/civitComfyBindings/.gitignore new file mode 100644 index 0000000..c8f0442 --- /dev/null +++ b/backend/civitComfyBindings/.gitignore @@ -0,0 +1,72 @@ +/target + +# Byte-compiled / optimized / DLL files +__pycache__/ +.pytest_cache/ +*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +.Python +.venv/ +env/ +bin/ +build/ +develop-eggs/ +dist/ +eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +include/ +man/ +venv/ +*.egg-info/ +.installed.cfg +*.egg + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt +pip-selfcheck.json + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.cache +nosetests.xml +coverage.xml + +# Translations +*.mo + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# Rope +.ropeproject + +# Django stuff: +*.log +*.pot + +.DS_Store + +# Sphinx documentation +docs/_build/ + +# PyCharm +.idea/ + +# VSCode +.vscode/ + +# Pyenv +.python-version diff --git a/backend/civitComfyBindings/Cargo.toml b/backend/civitComfyBindings/Cargo.toml new file mode 100644 index 0000000..2b5e2af --- /dev/null +++ b/backend/civitComfyBindings/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "rust_civit_comfy_bindings" +version = "0.2.12" +edition = "2024" + +[lib] +name = "rust_civit_comfy_bindings" +crate-type = ["cdylib"] + +[dependencies] +app = { path = "../app" } +pyo3 = "0.27.0" +axum = "0.8.7" +civit = { path = "../civit" } +rand = "0.9.2" +reqwest = { version = "0.12.25", default-features = false, features = ["json", "rustls-tls"] } +serde = { version = "1.0.228", features = ["derive"] } +serde_json = "1.0.145" +tokio = { version = "1.48.0", features = ["full"] } +tower = "0.5.2" +tower-http = { version = "0.6.7", features = ["cors", "fs"] } + +#[target.'cfg(target_os = "linux")'.dependencies] +#openssl = { version = "0.10.75", features=["vendored"] } + +[target.aarch64-unknown-linux-gnu] +linker = "arm-linux-musleabihf-gcc" diff --git a/backend/civitComfyBindings/pyproject.toml b/backend/civitComfyBindings/pyproject.toml new file mode 100644 index 0000000..9d85c93 --- /dev/null +++ b/backend/civitComfyBindings/pyproject.toml @@ -0,0 +1,21 @@ +[build-system] +requires = ["maturin>=1.11,<2.0"] +build-backend = "maturin" + +[project] +dynamic = ["version"] +name = "rust_civit_comfy_bindings" +requires-python = ">=3.8" +description = "Rust bindings for my civit comfyui integration" +authors = [ + { name = "MonoPT", email = "pypi.reconfirm722@passmail.net" } +] +license = "MIT" +classifiers = [ + "Programming Language :: Rust", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] + +#[tool.maturin] +#version = "scm" \ No newline at end of file diff --git a/backend/civitComfyBindings/src/lib.rs b/backend/civitComfyBindings/src/lib.rs new file mode 100644 index 0000000..aaf560e --- /dev/null +++ b/backend/civitComfyBindings/src/lib.rs @@ -0,0 +1,23 @@ +use pyo3::prelude::*; + +/// A Python module implemented in Rust. +#[pymodule] +mod rust_civit_comfy_bindings { + use pyo3::prelude::*; + + /// Formats the sum of two numbers as string. + #[pyfunction] + fn sum_as_string(a: usize, b: usize) -> PyResult { + Ok((a + b).to_string()) + } + + #[pyfunction] + fn start_server(port: usize, static_dir: &str, comfy_path: &str) { + use tokio::runtime::Runtime; + + let rt = Runtime::new() + .unwrap(); + + rt.block_on(app::start_civit_frontend_server(port, static_dir, comfy_path)); + } +} diff --git a/backend/rust_dev_server/Cargo.toml b/backend/rust_dev_server/Cargo.toml new file mode 100644 index 0000000..072c039 --- /dev/null +++ b/backend/rust_dev_server/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "rust_dev_server" +version = "0.2.12" +edition = "2024" + +[dependencies] +civit = { path = "../civit" } +app = { path = "../app" } +tokio = { version = "1.48.0", features = ["full"] } diff --git a/backend/rust_dev_server/src/main.rs b/backend/rust_dev_server/src/main.rs new file mode 100644 index 0000000..ba70794 --- /dev/null +++ b/backend/rust_dev_server/src/main.rs @@ -0,0 +1,16 @@ +fn main() { + use tokio::runtime::Runtime; + + let rt = Runtime::new() + .unwrap(); + + use std::fs; + + + + let front_end = fs::canonicalize("../../front-end/build").unwrap(); + + let civit_folder = fs::canonicalize("./teste/").unwrap(); + + rt.block_on(app::start_civit_frontend_server(3090, front_end.to_string_lossy().to_string().as_str(), civit_folder.to_string_lossy().to_string().as_str())); +} diff --git a/backend/test_python_server/.gitignore b/backend/test_python_server/.gitignore new file mode 100644 index 0000000..505a3b1 --- /dev/null +++ b/backend/test_python_server/.gitignore @@ -0,0 +1,10 @@ +# Python-generated files +__pycache__/ +*.py[oc] +build/ +dist/ +wheels/ +*.egg-info + +# Virtual environments +.venv diff --git a/backend/test_python_server/.python-version b/backend/test_python_server/.python-version new file mode 100644 index 0000000..e4fba21 --- /dev/null +++ b/backend/test_python_server/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/backend/test_python_server/README.md b/backend/test_python_server/README.md new file mode 100644 index 0000000..e69de29 diff --git a/backend/test_python_server/main.py b/backend/test_python_server/main.py new file mode 100644 index 0000000..7c8700e --- /dev/null +++ b/backend/test_python_server/main.py @@ -0,0 +1,63 @@ +import os + +import subprocess +from pathlib import Path +import importlib.util + +__FILE__ = os.path.dirname(os.path.abspath(__file__)) + +module_path = Path(f"{__FILE__}/../../manage_deps.py") + +print(module_path) + +requireDep = importlib.util.spec_from_file_location( + "my_module", + module_path +) + +module = importlib.util.module_from_spec(requireDep) +requireDep.loader.exec_module(module) + +module.ensure_dependency("rust_civit_comfy_bindings") + +from rust_civit_comfy_bindings import sum_as_string, start_server + +import socketserver +import socket + +def is_port_free(port, host="127.0.0.1"): + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + return s.connect_ex((host, port)) != 0 + +if is_port_free(3090): + port = 3090 +else: + with socketserver.TCPServer(("localhost", 0), None) as server: + port = server.server_address[1] + +from multiprocessing import Process +from pathlib import Path + + +static_dir = f"{__FILE__}/../../front-end/build" +comfy_path = Path(f"C:/ComfyUI").resolve() +print(f"Comfy path: {comfy_path}. Dont forget to update this if yours is different") + +def main(): + import sys + + subprocess.Popen( + [sys.executable, f"{__FILE__}/../../server.py", f"{port}", static_dir, comfy_path], + stdin=subprocess.DEVNULL, + stdout=None, + stderr=None, + close_fds=True + ) + + print("Running server on another process with port:", port) + + while True: + "" + +if __name__ == "__main__": + main() diff --git a/backend/test_python_server/pyproject.toml b/backend/test_python_server/pyproject.toml new file mode 100644 index 0000000..63f901a --- /dev/null +++ b/backend/test_python_server/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "teste" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [] diff --git a/backend/test_python_server/src/manage_deps.py b/backend/test_python_server/src/manage_deps.py new file mode 100644 index 0000000..5d794cb --- /dev/null +++ b/backend/test_python_server/src/manage_deps.py @@ -0,0 +1,27 @@ +import subprocess +import sys +import os +from pathlib import Path + +def pip_install(pkg): + wheel = Path(pkg).resolve() + + whl_files = [f for f in os.listdir(wheel) if f.endswith('.whl')] + + whl_files.sort(reverse=True) + + wheel = f"{wheel}/{whl_files[0]}" + + subprocess.check_call([ + sys.executable, "-m", "pip", "install", "--force-reinstall", str(wheel) + ]) + +import importlib.util + +def ensure(pkg): + if importlib.util.find_spec(pkg) is None: + pip_install(pkg) + + +def ensure_dependency(name: str): + pip_install(name) \ No newline at end of file diff --git a/backend/test_python_server/uv.lock b/backend/test_python_server/uv.lock new file mode 100644 index 0000000..0d447e2 --- /dev/null +++ b/backend/test_python_server/uv.lock @@ -0,0 +1,8 @@ +version = 1 +revision = 2 +requires-python = ">=3.12" + +[[package]] +name = "teste" +version = "0.1.0" +source = { virtual = "." } diff --git a/doc/img.png b/doc/img.png new file mode 100644 index 0000000..70bc96e Binary files /dev/null and b/doc/img.png differ diff --git a/front-end/.gitignore b/front-end/.gitignore new file mode 100644 index 0000000..ddc7629 --- /dev/null +++ b/front-end/.gitignore @@ -0,0 +1,22 @@ +node_modules + +# Output +.output +.vercel +.netlify +.wrangler +/.svelte-kit + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* diff --git a/front-end/.npmrc b/front-end/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/front-end/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/front-end/.vscode/settings.json b/front-end/.vscode/settings.json new file mode 100644 index 0000000..bc31e15 --- /dev/null +++ b/front-end/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "*.css": "tailwindcss" + } +} diff --git a/front-end/README.md b/front-end/README.md new file mode 100644 index 0000000..75842c4 --- /dev/null +++ b/front-end/README.md @@ -0,0 +1,38 @@ +# sv + +Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```sh +# create a new project in the current directory +npx sv create + +# create a new project in my-app +npx sv create my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```sh +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```sh +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment. diff --git a/front-end/build/_app/env.js b/front-end/build/_app/env.js new file mode 100644 index 0000000..f5427da --- /dev/null +++ b/front-end/build/_app/env.js @@ -0,0 +1 @@ +export const env={} \ No newline at end of file diff --git a/front-end/build/_app/immutable/assets/0.g0XgcL43.css b/front-end/build/_app/immutable/assets/0.g0XgcL43.css new file mode 100644 index 0000000..82be0ef --- /dev/null +++ b/front-end/build/_app/immutable/assets/0.g0XgcL43.css @@ -0,0 +1 @@ +h2.svelte-v9agtp,h3.svelte-v9agtp,ol.svelte-v9agtp,h4.svelte-v9agtp{text-align:center;width:max-content}ol.svelte-v9agtp{padding-top:.6rem;padding-left:1.5rem;margin-bottom:2rem}ol.svelte-v9agtp,h3.svelte-v9agtp{opacity:.75}li.svelte-v9agtp{text-align:left;line-height:1.7;font-weight:300;font-size:.9rem}#login.svelte-v9agtp{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh}h2.svelte-v9agtp{font-weight:600;padding-bottom:1.4rem;font-size:2.2rem}.Images-Loading-Wrapper.svelte-v9agtp{display:flex;flex-direction:column;margin-top:2rem;justify-content:center;align-items:center}.Images-Loading-Wrapper.svelte-v9agtp p:where(.svelte-v9agtp){margin-top:.7rem}h4.svelte-v9agtp{margin-inline:auto;margin-top:1.4rem;font-size:.9em;color:#eb4034;opacity:.9}.wrapper.svelte-15dppd8{display:flex;align-items:center;height:20px;gap:.5rem}.wrapper.svelte-15dppd8.open .mobileOpenMeta:where(.svelte-15dppd8){rotate:180deg}.wrapper.svelte-15dppd8:not(.is_mobile) .mobileOpenMeta:where(.svelte-15dppd8){display:none}.wrapper.svelte-15dppd8 .icon:where(.svelte-15dppd8){display:flex;align-items:center;justify-content:center;background:#ffffff1a;padding:.5rem;border-radius:100%;transition:.12s;transform-origin:center;cursor:pointer;min-width:2rem;min-height:2rem}.wrapper.svelte-15dppd8 .icon:where(.svelte-15dppd8):hover{background:#fff3}.wrapper.svelte-15dppd8 .icon:where(.svelte-15dppd8) svg:where(.svelte-15dppd8){width:1rem;display:block;height:50%;aspect-ratio:1 / 1}.wrapper.svelte-15dppd8 .icon:where(.svelte-15dppd8).mobileOpenMeta{margin-left:auto}.wrapper.svelte-15dppd8 .icon:where(.svelte-15dppd8).favorite{fill:transparent;stroke:#fff}.wrapper.svelte-15dppd8 .icon:where(.svelte-15dppd8).favorite.favorited{fill:#fff}.Images-Loading-Wrapper.svelte-td0peg{display:flex;flex-direction:column;margin-top:2rem;justify-content:center;align-items:center}.Images-Loading-Wrapper.svelte-td0peg p:where(.svelte-td0peg){margin-top:.7rem}.otherMetadata.svelte-td0peg:not(:has(.othermetadatawrapper span:nth-child(1))){display:none}.tagContainer.svelte-td0peg{--l: 2}.tagContainer.svelte-td0peg:has([data-showMore]:where(.svelte-td0peg) input:where(.svelte-td0peg):checked){--l: 10000000000}.tagContainer.svelte-td0peg:has([data-showMore]:where(.svelte-td0peg) input:where(.svelte-td0peg):checked) .wrapperContainer:where(.svelte-td0peg):after{display:none}.tagContainer.svelte-td0peg .wrapperContainer:where(.svelte-td0peg){display:flex;flex-wrap:wrap;gap:.2rem;position:relative;overflow:hidden;max-height:calc((.85em + .2em * 2) * var(--l) + .4em * var(--l))}.tagContainer.svelte-td0peg .wrapperContainer:where(.svelte-td0peg) span:where(.svelte-td0peg){font-weight:300;font-size:.85em}.tagContainer.svelte-td0peg .wrapperContainer:where(.svelte-td0peg):after{content:"";position:absolute;bottom:0;background:linear-gradient(180deg,transparent 0%,color-mix(in srgb,var(--navBG) 90%,transparent 10%) 100%);min-height:90%;left:0;width:100%;pointer-events:none;z-index:0}.tagContainer.svelte-td0peg .wrapperContainer:where(.svelte-td0peg):has([data-overflow-false]) [data-showMore]:where(.svelte-td0peg),.tagContainer.svelte-td0peg .wrapperContainer:where(.svelte-td0peg):has([data-overflow-false]):after{display:none}.othermetadatawrapper.svelte-td0peg{display:flex;flex-wrap:wrap;gap:.5rem;font-size:.75em}[data-squared-pill].svelte-td0peg{background:#1971c2;padding-inline:.5em;padding-block:.2em;border-radius:.2em;color:#ffffffbf}[data-squared-pill].svelte-td0peg.weigth{background:#ffffff1a}[data-squared-pill].svelte-td0peg[data-uppercase]{text-transform:uppercase}.resourceWrapper.svelte-td0peg{display:flex;flex-direction:column;row-gap:.8rem}.resourceWrapper.svelte-td0peg .resource:where(.svelte-td0peg){--max-lines: 1;--max-h: calc(.85em * 1.5 * var(--max-lines));display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:.5rem}.resourceWrapper.svelte-td0peg .resource:where(.svelte-td0peg) span:where(.svelte-td0peg){font-size:.85em}.resourceWrapper.svelte-td0peg .resource:where(.svelte-td0peg) span:where(.svelte-td0peg).res_version{font-size:.7em}.resourceWrapper.svelte-td0peg .resource:where(.svelte-td0peg) span.res_name:where(.svelte-td0peg){text-decoration:underline}.resourceWrapper.svelte-td0peg .resource:where(.svelte-td0peg) .res_name:where(.svelte-td0peg){overflow:hidden;display:-webkit-box;-webkit-line-clamp:var(--max-lines);line-clamp:var(--max-lines);-webkit-box-orient:vertical}.resourceWrapper.svelte-td0peg .resource:where(.svelte-td0peg) .left:where(.svelte-td0peg){display:flex;flex-direction:column;gap:.2rem}.resourceWrapper.svelte-td0peg .resource:where(.svelte-td0peg) .left:where(.svelte-td0peg) span.res_version:where(.svelte-td0peg){color:#ffffff80}.resourceWrapper.svelte-td0peg .resource:where(.svelte-td0peg) .rigth:where(.svelte-td0peg){display:flex;align-items:center;gap:.35rem}.resourceWrapper.svelte-td0peg:has(.resource:where(.svelte-td0peg):nth-child(4)):not(:has([data-showMore] input:checked)) .resource:where(.svelte-td0peg):nth-child(n+4){display:none}.resourceWrapper.svelte-td0peg:not(:has(.resource:nth-child(n+4))) [data-showMore]:where(.svelte-td0peg){display:none}.wrapperContainer.svelte-td0peg{--max-lines: 4;--max-h: calc(.85em * 1.5 * var(--max-lines));line-height:1.3}[data-showMore].svelte-td0peg{font-size:.85em;cursor:pointer;color:color-mix(in srgb,#1971C2 80%,#fff 20%);font-weight:500}[data-showMore].svelte-td0peg:after{content:"more"}[data-showMore].svelte-td0peg:has(input:where(.svelte-td0peg):checked):after{content:"less"}.prompt.svelte-td0peg{position:relative;font-size:.85em;-webkit-user-select:text;user-select:text;opacity:.65;font-weight:300;line-height:1.3;min-height:max-content}.prompt.svelte-td0peg:has(+[data-showMore]:where(.svelte-td0peg) input:where(.svelte-td0peg):not(:checked)){display:-webkit-box;-webkit-line-clamp:var(--max-lines);line-clamp:var(--max-lines);-webkit-box-orient:vertical;overflow:hidden;max-height:var(--max-h)}.prompt.svelte-td0peg:has(+[data-showMore]:where(.svelte-td0peg) input:where(.svelte-td0peg):not(:checked)):after{content:"";position:absolute;bottom:0;background:linear-gradient(180deg,transparent 0%,color-mix(in srgb,var(--navBG) 90%,transparent 10%) 100%);min-height:80%;left:0;width:100%;pointer-events:none}.prompt.svelte-td0peg[data-overflow-false]:after{display:none}.prompt.svelte-td0peg[data-overflow-false]+[data-showMore]:where(.svelte-td0peg){display:none}.card.svelte-td0peg{background:var(--navBG);border:1px solid rgba(255,255,255,.1);position:relative;padding:1rem;min-height:100px;border-radius:.4rem;min-height:max-content;width:100%;max-width:80vw}.card.svelte-td0peg h2:where(.svelte-td0peg){padding-top:0;padding-bottom:calc(var(--spacing) * 4);display:flex;align-items:center;gap:.4rem}.card.svelte-td0peg h2:where(.svelte-td0peg) svg:where(.svelte-td0peg){width:2rem;aspect-ratio:1 / 1;display:inline-block}.card.svelte-td0peg h3:where(.svelte-td0peg){padding-top:calc(var(--spacing) * 6);padding-bottom:calc(var(--spacing) * 2)}.card.svelte-td0peg h2:where(.svelte-td0peg)+h3:where(.svelte-td0peg),.card.svelte-td0peg h2:where(.svelte-td0peg)+.wrapperContainer:where(.svelte-td0peg) h3:where(.svelte-td0peg){padding-top:0}.cardWrapper.svelte-td0peg{display:flex;flex-wrap:wrap;gap:calc(var(--spacing) * 2)}.cardWrapper.svelte-td0peg span:where(.svelte-td0peg){font-size:.8em;background:#ffffff26;border-radius:calc(var(--spacing) * .7);padding:calc(var(--spacing) * 1.5);padding-inline:calc(var(--spacing) * 4)}.cardWrapper.svelte-td0peg span:where(.svelte-td0peg){background:#1971c2;border-radius:1000px;border:1px solid color-mix(in srgb,#1971C2 60%,#fff 40%);box-sizing:content-box;color:#ffffffd9;font-size:.9em}.cardWrapper.svelte-td0peg.transparentTag{gap:1rem}.cardWrapper.svelte-td0peg.transparentTag span:where(.svelte-td0peg){padding:0;border:none;background:transparent}.metaWrapper.svelte-td0peg{height:100%;overflow-y:auto;padding-top:calc(var(--spacing) * 6 + 2rem);display:flex;flex-direction:column;gap:calc(var(--spacing) * 5);padding-bottom:2rem}.metaWrapper.svelte-td0peg:has(.Images-Loading-Wrapper:where(.svelte-td0peg)){justify-content:center}.imageWrapper.svelte-td0peg{--spaceTop: 0px;display:flex;align-items:center;justify-content:center;height:100vh;flex-direction:column;gap:1rem;padding-block:calc(var(--spacing) * 3)}.imageWrapper.svelte-td0peg img:where(.svelte-td0peg),.imageWrapper.svelte-td0peg video:where(.svelte-td0peg){display:block;height:calc(100% - var(--spacing) * 8 - 2rem * 2 - var(--spaceTop));width:auto}:is(.imageWrapper.svelte-td0peg img:where(.svelte-td0peg),.imageWrapper.svelte-td0peg video:where(.svelte-td0peg)).landscape{height:auto;width:100%}body:has(#mediaVisualizer.open){overflow:hidden}.reactionsContainer.svelte-td0peg{position:absolute;display:flex;align-items:center;justify-content:center;z-index:2;bottom:0rem;padding:1rem;gap:calc(var(--spacing) * 1);width:100%;flex-wrap:wrap;pointer-events:none}.reactionsContainer.svelte-td0peg span:where(.svelte-td0peg){display:flex;align-items:center;gap:calc(var(--spacing) * 2);background:#0009;padding:calc(var(--spacing) * 1);padding-inline:calc(var(--spacing) * 2);border-radius:calc(var(--spacing) * 1);width:max-content;font-size:.8em;pointer-events:all}.mobileFastActions.svelte-td0peg{display:none;max-width:min(500px,80vw)}.container.svelte-td0peg .imageWrapper:where(.svelte-td0peg),.container.svelte-td0peg .metaWrapper:where(.svelte-td0peg){width:35vw}@media(max-width:1100px){.container.svelte-td0peg .imageWrapper:where(.svelte-td0peg),.container.svelte-td0peg .metaWrapper:where(.svelte-td0peg){width:50vw}}@media(max-width:850px){.container.svelte-td0peg .imageWrapper:where(.svelte-td0peg),.container.svelte-td0peg .metaWrapper:where(.svelte-td0peg){width:100vw;transition:.2s}.container.svelte-td0peg .mobileFastActions:where(.svelte-td0peg){display:block}.container.svelte-td0peg .cardDesktopFastActions:where(.svelte-td0peg){display:none}.container.svelte-td0peg .metaWrapper:where(.svelte-td0peg){position:absolute;z-index:99;align-items:center}.container.svelte-td0peg .imageWrapper:where(.svelte-td0peg){padding:0;--spaceTop: 100px}.container.svelte-td0peg .imageWrapper:where(.svelte-td0peg) .reactionsContainer:where(.svelte-td0peg){position:relative;padding:0}.container.svelte-td0peg:not([data-open-metadata]) .metaWrapper:where(.svelte-td0peg){transform:translateY(-100vh)}.container.svelte-td0peg[data-open-metadata] .imageWrapper:where(.svelte-td0peg){transform:translateY(-100vh)}}.container.svelte-td0peg{display:flex;gap:calc(var(--spacing) * 16);padding-inline:calc(var(--spacing) * 4);align-items:center;justify-content:center;position:fixed;top:0;left:0;background:#000000a6;z-index:999999999999999999;width:100vw;height:100vh;transform-origin:center;transition:.12s;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.container.svelte-td0peg:not(.open){pointer-events:none;opacity:0;scale:.4}.saveWrapper.svelte-ny6f4r{all:inherit;border:none;margin-top:calc(var(--spacing) * 4);margin-left:auto;border-radius:calc(var(--spacing));background:var(--bgLighter);width:max-content;padding:calc(var(--spacing) * 2);padding-inline:calc(var(--spacing) * 10);transition:.12s;cursor:pointer}.saveWrapper.svelte-ny6f4r:hover{background-color:#1971c2}.Images-Loading-Wrapper.svelte-ny6f4r{display:flex;flex-direction:column;margin-top:2rem;justify-content:center;align-items:center;padding-bottom:calc(var(--spacing) * 4)}.Images-Loading-Wrapper.svelte-ny6f4r p:where(.svelte-ny6f4r){margin-top:.7rem}html:has(#selectCollections.open){overflow:hidden}.wrapperMenu.svelte-ny6f4r{display:flex;align-items:center;padding-bottom:calc(var(--spacing) * 6)}.wrapperMenu.svelte-ny6f4r h2:where(.svelte-ny6f4r){margin:0;padding:0!important}.wrapperMenu.svelte-ny6f4r svg:where(.svelte-ny6f4r){width:1.5rem;height:auto;opacity:.7}.wrapperMenu.svelte-ny6f4r span:where(.svelte-ny6f4r){display:flex;align-items:center;justify-content:center;margin-left:auto;cursor:pointer;padding:.3rem;border-radius:calc(var(--spacing) * 1);transition:.12s}.wrapperMenu.svelte-ny6f4r span:where(.svelte-ny6f4r):hover{background:#ffffff0d}.card.svelte-ny6f4r{background:var(--navBG);border:1px solid rgba(255,255,255,.1);position:relative;padding:1rem;min-height:100px;border-radius:.4rem;min-height:max-content;width:100%;max-width:min(600px,80vw)}.card.svelte-ny6f4r h2:where(.svelte-ny6f4r){padding-top:0;padding-bottom:calc(var(--spacing) * 4);display:flex;align-items:center;gap:.4rem}.container.svelte-ny6f4r{display:flex;gap:calc(var(--spacing) * 16);padding-inline:calc(var(--spacing) * 4);align-items:center;justify-content:center;position:fixed;top:0;left:0;background:#000000a6;z-index:999999999999999999;width:100vw;height:100vh;transform-origin:center;transition:.12s;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.container.svelte-ny6f4r:not(.open){pointer-events:none;opacity:0;scale:.4}#Interface.svelte-12qhfyh{display:grid;grid-template-columns:1fr 5fr;gap:1.2rem}#Interface.svelte-12qhfyh nav:where(.svelte-12qhfyh){position:sticky;top:0;left:0}@media(max-width:670px){#Interface.svelte-12qhfyh{grid-template-columns:90px 1fr}#Interface.svelte-12qhfyh nav{min-width:unset!important}#Interface.svelte-12qhfyh nav :where(.svelte-12qhfyh){font-size:0!important}#Interface.svelte-12qhfyh nav label,#Interface.svelte-12qhfyh nav header:where(.svelte-12qhfyh){width:max-content!important;margin:0;padding-block:1;display:block!important;margin-inline:auto}:is(#Interface.svelte-12qhfyh nav label,#Interface.svelte-12qhfyh nav header:where(.svelte-12qhfyh))>:where(.svelte-12qhfyh):not(.icon,svg){display:none}#Interface.svelte-12qhfyh nav h2:where(.svelte-12qhfyh)+li:where(.svelte-12qhfyh){margin-top:calc(var(--spacing) * 8)}#Interface.svelte-12qhfyh nav li:where(.svelte-12qhfyh),#Interface.svelte-12qhfyh nav ul:where(.svelte-12qhfyh),#Interface.svelte-12qhfyh nav{width:max-content!important}}#Interface.svelte-12qhfyh>nav:where(.svelte-12qhfyh),#Interface.svelte-12qhfyh>main:where(.svelte-12qhfyh){padding:1rem}#Interface.svelte-12qhfyh>nav:where(.svelte-12qhfyh){background:#262729;height:100vh;overflow-y:auto;min-width:230px;display:grid;grid-template-rows:auto 1fr;padding-bottom:0;z-index:10000000}#Interface.svelte-12qhfyh>nav:where(.svelte-12qhfyh) ul:where(.svelte-12qhfyh){overflow-y:scroll;height:100%;list-style:none;scrollbar-width:none;display:flex;flex-direction:column;gap:.1rem;padding-top:1.5rem}#Interface.svelte-12qhfyh>nav:where(.svelte-12qhfyh) ul:where(.svelte-12qhfyh) li:where(.svelte-12qhfyh)>*{width:100%}#Interface.svelte-12qhfyh>nav:where(.svelte-12qhfyh) ul:where(.svelte-12qhfyh) h2:where(.svelte-12qhfyh){color:#a1a1a1;text-transform:uppercase;font-weight:700;font-size:.75rem;line-height:calc(1/.75);letter-spacing:.03em;margin-block:1rem;padding-top:1.25rem;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical}@media(max-width:670px){#Interface.svelte-12qhfyh>nav:where(.svelte-12qhfyh) ul:where(.svelte-12qhfyh) h2:where(.svelte-12qhfyh){display:none}}#Interface.svelte-12qhfyh>nav:where(.svelte-12qhfyh) header:where(.svelte-12qhfyh){display:flex;align-items:center;font-size:1rem;line-height:1.5;font-weight:700;gap:.6rem;padding-bottom:.6rem}#Interface.svelte-12qhfyh>nav:where(.svelte-12qhfyh) header:where(.svelte-12qhfyh) svg:where(.svelte-12qhfyh){width:1.9rem;aspect-ratio:1 / 1}#Interface.svelte-12qhfyh>nav:where(.svelte-12qhfyh) header:where(.svelte-12qhfyh) svg:where(.svelte-12qhfyh) :where(.svelte-12qhfyh){color:#fff;fill:#fff} diff --git a/front-end/build/_app/immutable/assets/mansonaryGallery.Crv1-ccZ.css b/front-end/build/_app/immutable/assets/mansonaryGallery.Crv1-ccZ.css new file mode 100644 index 0000000..53cdf14 --- /dev/null +++ b/front-end/build/_app/immutable/assets/mansonaryGallery.Crv1-ccZ.css @@ -0,0 +1 @@ +.separator-wrapper.svelte-l0lfa6{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.8rem}.line.svelte-l0lfa6{display:block;width:100%;height:1px;background:#ffffffb3;border-radius:10000px;opacity:.3}h2.svelte-l0lfa6{font-weight:350;width:max-content;color:#ffffffb3;font-size:1em}h2.svelte-1apv8g3{padding-bottom:calc(var(--spacing) * 3)}.header.svelte-1apv8g3{--gap: calc(var(--spacing) * 2);display:block;gap:var(--gap);padding-bottom:calc(var(--spacing) * 6);position:sticky;top:0;padding-top:1rem;z-index:99999;background:var(--bgColor)}.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3){display:flex;gap:var(--gap);align-items:center}.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3)>:nth-child(1){grid-area:inputs}.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3)>:nth-child(2){grid-area:inputs_2}.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3)>:nth-child(3){grid-area:filter}.header.svelte-1apv8g3 .alignLeft:where(.svelte-1apv8g3){margin-left:auto}@media(max-width:950px){.header.svelte-1apv8g3,.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3){flex-direction:column;align-items:baseline}.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3){display:grid;grid-template-columns:1fr auto;grid-template-areas:"inputs filter" "inputs_2 filter"}.header.svelte-1apv8g3>span:where(.svelte-1apv8g3){display:none}.header.svelte-1apv8g3 .alignLeft:where(.svelte-1apv8g3){margin-left:0}}@media(max-width:550px){.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3){display:flex}.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3)>:nth-child(1){grid-area:unset}.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3)>:nth-child(2){grid-area:unset}.header.svelte-1apv8g3 .wrap:where(.svelte-1apv8g3)>:nth-child(3){grid-area:unset}}.header.svelte-1apv8g3:has(input[name=openPopUpButton]:checked) .filters-popup:where(.svelte-1apv8g3){opacity:1;pointer-events:all;scale:1}.filters-wrapper.svelte-1apv8g3{position:relative;--color: rgba(255,255,255, .6)}.filters-wrapper.svelte-1apv8g3 .filters-popup:where(.svelte-1apv8g3){background:var(--navBG);border:1px solid rgba(255,255,255,.1);position:relative;padding:1rem;min-width:400px;width:40vw;max-width:600px;min-height:100px;position:absolute;top:100%;right:0;z-index:1;border-radius:.4rem;opacity:0;pointer-events:none;scale:.4;transform-origin:top right;transition:.12s}.filters-wrapper.svelte-1apv8g3 .filters-popup:where(.svelte-1apv8g3) .group:where(.svelte-1apv8g3){display:flex;flex-wrap:wrap;gap:.75rem;padding-top:.85rem;padding-bottom:2rem}.filters-wrapper.svelte-1apv8g3 .filters-popup:where(.svelte-1apv8g3) .group:where(.svelte-1apv8g3).last{padding-bottom:0}.image-wrapper.svelte-hp8dbo{--iconsClr: rgba(255,255,255, .8)}.image-wrapper.svelte-hp8dbo:after{content:"";background:#000;background:linear-gradient(180deg,#000c,#0000);width:100%;position:absolute;top:0;left:0;min-height:80px;z-index:1;pointer-events:none;opacity:0;transition:.12s}.image-wrapper.svelte-hp8dbo .loader,.image-wrapper.svelte-hp8dbo .fastActions{z-index:2;transition:.12s;opacity:0;position:absolute;left:.5rem;top:.5rem}.image-wrapper.svelte-hp8dbo:hover .loader,.image-wrapper.svelte-hp8dbo:hover .fastActions,.image-wrapper.svelte-hp8dbo:hover:after{opacity:1}.image-wrapper.svelte-hp8dbo .fastActions{display:flex;gap:.5rem}.image-wrapper.svelte-hp8dbo .fastActions span{cursor:pointer}.image-wrapper.svelte-hp8dbo .fastActions span.Collections svg path{stroke:var(--iconsClr)}.image-wrapper.svelte-hp8dbo .fastActions svg{width:1.5rem;height:max-content}.image-wrapper.svelte-hp8dbo .fastActions svg path{stroke:var(--iconsClr);fill:transparent;stroke-width:1.5}.image-wrapper.svelte-hp8dbo .fastActions .favorited svg path{fill:var(--iconsClr)}main.svelte-hp8dbo{--gap: 1rem;display:grid;grid-template-columns:repeat(var(--columns),1fr);gap:var(--gap)}main.svelte-hp8dbo .column:where(.svelte-hp8dbo){display:flex;flex-direction:column}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo){--color_1: rgba(255,255,255, .03);--color_2: rgba(255,255,255, .07);contain:content;will-change:transform,opacity,display;transform:translateZ(0);border-radius:.5rem;min-height:50px;width:100%;margin-bottom:var(--gap);position:relative;aspect-ratio:var(--aspectRation);cursor:progress}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo).skeleton-loading>*{opacity:0}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo) .errorMsg{display:block;opacity:.45}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo) .errorMsg svg{display:block;width:30%;margin-inline:auto}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo) .errorMsg h2{font-size:1.2rem;font-weight:350;text-align:center;margin-top:1rem}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo).failedToLoad{display:flex;justify-content:center;align-items:center;background:var(--color_1)}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo) .reactionsContainer{position:absolute;display:flex;align-items:center;z-index:2;bottom:0rem;padding:1rem;gap:calc(var(--spacing) * 1);width:100%;flex-wrap:wrap;opacity:0;transform:translateY(100px);transition:.12s}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo) .reactionsContainer span{display:flex;align-items:center;gap:calc(var(--spacing) * 2);background:#0009;padding:calc(var(--spacing) * 1);padding-inline:calc(var(--spacing) * 2);border-radius:calc(var(--spacing) * 1);width:max-content;font-size:.8em}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo) .reactionsContainer span svg{position:relative;display:block;max-width:1rem;height:max-content}main.svelte-hp8dbo .column:where(.svelte-hp8dbo) .image-wrapper:where(.svelte-hp8dbo):hover .reactionsContainer{opacity:1;transform:translateY(0)}main.svelte-hp8dbo img,main.svelte-hp8dbo video{display:block;position:relative;max-width:100%;height:100%;background:#00000012;border-radius:inherit}.Images-Loading-Wrapper.svelte-hp8dbo{display:flex;flex-direction:column;margin-top:2rem;justify-content:center;align-items:center}.Images-Loading-Wrapper.svelte-hp8dbo p:where(.svelte-hp8dbo){margin-top:.7rem} diff --git a/front-end/build/_app/immutable/assets/select.DN33SJvo.css b/front-end/build/_app/immutable/assets/select.DN33SJvo.css new file mode 100644 index 0000000..6bb9db1 --- /dev/null +++ b/front-end/build/_app/immutable/assets/select.DN33SJvo.css @@ -0,0 +1 @@ +.input-wrapper.svelte-1v6743z{background-color:var(--bgLighter);border-radius:.5rem;box-sizing:border-box;display:flex;align-items:center;width:100%}.input-wrapper.svelte-1v6743z:has(button:where(.svelte-1v6743z)){display:grid;grid-template-columns:1fr auto}.input-wrapper.svelte-1v6743z button:where(.svelte-1v6743z){background:var(--bgButton);color:#fff;outline:none;border:none;padding-inline:calc(var(--spacing) * 5);border-radius:inherit;border-top-left-radius:0;border-bottom-left-radius:0;cursor:pointer;font-size:1em;transition:.12s;border-left:2px solid var(--bgColor);height:100%}.input-wrapper.svelte-1v6743z button:where(.svelte-1v6743z):hover{background-color:color-mix(in srgb,var(--bgButton) 90%,#fff 10%)}.input-wrapper.svelte-1v6743z input:where(.svelte-1v6743z){grid-area:a}.input-wrapper.svelte-1v6743z .wrap:where(.svelte-1v6743z){width:100%;display:grid;grid-template-columns:auto 1fr;grid-template-areas:"b a";gap:calc(var(--spacing) * 2);padding-inline:calc(var(--spacing) * 4);min-height:40px;align-items:center}.input-wrapper.svelte-1v6743z .icon:where(.svelte-1v6743z){display:flex;align-items:center;justify-content:center;width:1.8rem;aspect-ratio:1 / 1;opacity:.7;grid-area:b}.input-wrapper.svelte-1v6743z:has(.icon:where(.svelte-1v6743z)).right .wrap:where(.svelte-1v6743z){grid-template-areas:"a b";grid-template-columns:1fr auto}input.svelte-1v6743z{width:100%;border:none;font-size:.875rem;background-color:#0000;outline:none;color:#ffffffb3}.loader{display:block;border-radius:50%;position:relative;animation:svelte-1nd53yh-rotate 1s linear infinite}.loader:before{content:"";box-sizing:border-box;position:absolute;inset:0;border-radius:50%;border:var(--tickness) solid #fff;animation:svelte-1nd53yh-prixClipFix 2s linear infinite}@keyframes svelte-1nd53yh-rotate{to{transform:rotate(360deg)}}@keyframes svelte-1nd53yh-prixClipFix{0%{clip-path:polygon(50% 50%,0 0,0 0,0 0,0 0,0 0)}25%{clip-path:polygon(50% 50%,0 0,100% 0,100% 0,100% 0,100% 0)}50%{clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,100% 100%,100% 100%)}75%{clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,0 100%,0 100%)}to{clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,0 100%,0 0)}}.button-wrapper.svelte-rmjz1s{-webkit-user-select:none;user-select:none;padding-block:.3rem;padding:1rem 1rem 1rem .5rem;cursor:pointer;border-radius:.13rem;transition:.1s;width:max-content;display:flex;align-items:center;gap:.5rem}.button-wrapper.svelte-rmjz1s.pill{border-radius:10000px!important;font-size:.9em;padding-inline:1rem!important;padding-block:.45rem!important}.button-wrapper.svelte-rmjz1s.pill:not(:has(input:checked)) .checkboxMarker:where(.svelte-rmjz1s){position:absolute;transform:scaleX(0);--h: 0}.button-wrapper.svelte-rmjz1s.pill:has(input:where(.svelte-rmjz1s):checked),.button-wrapper.svelte-rmjz1s.pill:has(input:where(.svelte-rmjz1s):checked):hover{background:#1971c2}.button-wrapper.svelte-rmjz1s .checkboxMarker:where(.svelte-rmjz1s){--h: 1rem;width:var(--h);aspect-ratio:1 / 1;background:var(--bgLighter);border-radius:.2rem;margin-right:calc(var(--spacing) * 1);position:relative;transition:.12s}.button-wrapper.svelte-rmjz1s .checkboxMarker:where(.svelte-rmjz1s).radio{margin-right:0;margin-left:auto;background:transparent}.button-wrapper.svelte-rmjz1s .checkboxMarker:where(.svelte-rmjz1s):after{content:"";line-height:var(--h);text-align:center;display:block;position:absolute;width:100%;height:100%;background:transparent;font-size:.8em;scale:0;transition:.05s}.button-wrapper.svelte-rmjz1s.fullWidth{width:100%;padding-block:.6rem}.button-wrapper.svelte-rmjz1s:not(.no_bg){background:var(--bgLighter)}.button-wrapper.svelte-rmjz1s.extraPadding{padding-block:.75rem;padding-inline:1rem}.button-wrapper.svelte-rmjz1s .icon:where(.svelte-rmjz1s){width:20px;transition:.12s;transform-origin:center;display:flex;align-items:center;justify-content:center}.button-wrapper.svelte-rmjz1s .icon:where(.svelte-rmjz1s).small{width:18px}.button-wrapper.svelte-rmjz1s .icon:where(.svelte-rmjz1s).dropdown.dropdown_is_open{rotate:180deg}.button-wrapper.svelte-rmjz1s.active{background:#1971c2}.button-wrapper.svelte-rmjz1s:not(.active,.no_bg):hover{background:color-mix(in srgb,var(--bgLighter) 80%,black 20%);border-color:color-mix(in srgb,rgba(255,255,255,.2) 80%,black 20%)}.button-wrapper.svelte-rmjz1s.bgHover{border-radius:.375rem}.button-wrapper.svelte-rmjz1s.bgHover:not(.active):hover{background:var(--bgHover)}.button-wrapper.svelte-rmjz1s:has(input:where(.svelte-rmjz1s):checked) .checkboxMarker:where(.svelte-rmjz1s):after{content:"✔";scale:1}.button-wrapper.svelte-rmjz1s:has(input[type=radio]:where(.svelte-rmjz1s):checked),.button-wrapper.svelte-rmjz1s.radioCheckbox{background:color-mix(in srgb,var(--navBG) 94%,#fff 6%)}.button-wrapper.svelte-rmjz1s .checkboxMarker.hideMarker:where(.svelte-rmjz1s){display:none}.hr-container.svelte-1lr2yev{padding-block:calc(var(--spacing)* 4)}.hr-container.svelte-1lr2yev .hr:where(.svelte-1lr2yev){height:1px;background-color:#494a50}.selected-cards.svelte-1lr2yev{padding-block:.8rem;display:flex;flex-wrap:wrap;gap:.2rem}.selected-cards.svelte-1lr2yev span:where(.svelte-1lr2yev){background:var(--navBG);padding-inline:.6rem;padding-block:.2rem;border-radius:.2rem;color:#ffffffb3;font-weight:300;font-size:.78em}.search-container.svelte-1lr2yev{position:relative;position:sticky;top:0;margin:0;background:var(--navBG);z-index:2}.noResults.svelte-1lr2yev{text-align:center;font-size:1rem;font-weight:300;padding-block:1.1rem;opacity:.6}.mainContainer.svelte-1lr2yev{position:relative}.mainContainer.svelte-1lr2yev:has(.search-container:where(.svelte-1lr2yev)) .dropdown-container:where(.svelte-1lr2yev){padding-top:0!important}.mainContainer.svelte-1lr2yev:has(.search-container:where(.svelte-1lr2yev)) .dropdown-container:where(.svelte-1lr2yev) .search-container:where(.svelte-1lr2yev){padding-top:1rem}label.svelte-1lr2yev{cursor:pointer}label.svelte-1lr2yev :where(.svelte-1lr2yev){pointer-events:none}.mainContainer.svelte-1lr2yev{width:100%}.mainContainer.svelte-1lr2yev.MaxContent{width:max-content}.input-wrapper.svelte-1lr2yev .dropdown-container:where(.svelte-1lr2yev){opacity:1;transform:scaleY(0);transition:.12s}.input-wrapper.svelte-1lr2yev.menuOpen .dropdown-container:where(.svelte-1lr2yev){opacity:1;transform:scaleY(1)}.input-wrapper.svelte-1lr2yev.menuOpen .wrap:where(.svelte-1lr2yev) .icon:where(.svelte-1lr2yev){rotate:90deg}.dropdown-container.svelte-1lr2yev{min-height:10px;background:var(--navBG);border:1px solid rgba(255,255,255,.1);padding:1rem;width:100%;position:absolute;top:calc(100% + 2px);z-index:999;border-radius:calc(var(--spacing) * 2);list-style:none;max-height:calc(var(--popupMaxH) * 1px);overflow-y:scroll;scrollbar-width:none;transform-origin:top center}.dropdown-container.svelte-1lr2yev .search-box:where(.svelte-1lr2yev) .input-wrapper:where(.svelte-1lr2yev){border:1px solid #494a50;border-radius:.5rem}.dropdown-container.svelte-1lr2yev .search-box:where(.svelte-1lr2yev) .wrap:where(.svelte-1lr2yev){margin-top:calc(var(--spacing)* 2)}.dropdown-container.svelte-1lr2yev .search-box:where(.svelte-1lr2yev) .wrap:where(.svelte-1lr2yev) span:where(.svelte-1lr2yev){font-size:.875rem;line-height:calc(1.25/.875)}.dropdown-container.svelte-1lr2yev .search-box:where(.svelte-1lr2yev) .wrap:where(.svelte-1lr2yev) span:where(.svelte-1lr2yev).selectable{cursor:pointer;transition:.1s}.dropdown-container.svelte-1lr2yev .search-box:where(.svelte-1lr2yev) .wrap:where(.svelte-1lr2yev) span:where(.svelte-1lr2yev).selectable:hover{text-decoration:underline}.mainContainer.onlySelect.svelte-1lr2yev .dropdown-container:where(.svelte-1lr2yev){position:relative;opacity:1;transform:scaleY(1)}.mainContainer.onlySelect.svelte-1lr2yev label:where(.svelte-1lr2yev){display:none}.input-wrapper.svelte-1lr2yev{background-color:var(--bgLighter);border-radius:.5rem;box-sizing:border-box;position:relative;display:flex;align-items:center}.input-wrapper.svelte-1lr2yev input:where(.svelte-1lr2yev){grid-area:a}.input-wrapper.svelte-1lr2yev input:where(.svelte-1lr2yev)[readonly]{-webkit-user-select:none;user-select:none}.input-wrapper.svelte-1lr2yev input:where(.svelte-1lr2yev)[readonly]::selection{background:#ffffff1a}.input-wrapper.svelte-1lr2yev .wrap:where(.svelte-1lr2yev){width:100%;display:grid;grid-template-columns:auto 1fr;grid-template-areas:"b a";gap:calc(var(--spacing) * 2);padding-inline:calc(var(--spacing) * 4);min-height:40px;align-items:center}.input-wrapper.svelte-1lr2yev .icon:where(.svelte-1lr2yev){display:flex;align-items:center;justify-content:center;width:1.8rem;aspect-ratio:1 / 1;opacity:.7;grid-area:b;transform-origin:center;transition:.1s}.input-wrapper.svelte-1lr2yev .icon:where(.svelte-1lr2yev).small{width:1.4rem}.input-wrapper.svelte-1lr2yev:has(.icon:where(.svelte-1lr2yev)).right .wrap:where(.svelte-1lr2yev){grid-template-areas:"a b";grid-template-columns:1fr auto}input.svelte-1lr2yev{width:100%;border:none;font-size:.875rem;background-color:#0000;outline:none;color:#ffffffb3} diff --git a/front-end/build/_app/immutable/chunks/4LgZ9JC7.js b/front-end/build/_app/immutable/chunks/4LgZ9JC7.js new file mode 100644 index 0000000..a7c36bc --- /dev/null +++ b/front-end/build/_app/immutable/chunks/4LgZ9JC7.js @@ -0,0 +1 @@ +import{n as a}from"./BLVsYbeJ.js";a(); diff --git a/front-end/build/_app/immutable/chunks/5qQl8jdw.js b/front-end/build/_app/immutable/chunks/5qQl8jdw.js new file mode 100644 index 0000000..e592b85 --- /dev/null +++ b/front-end/build/_app/immutable/chunks/5qQl8jdw.js @@ -0,0 +1 @@ +import{s as t,p as r}from"./B8UWJ_8F.js";const e={get data(){return r.data},get error(){return r.error},get form(){return r.form},get params(){return r.params},get route(){return r.route},get state(){return r.state},get status(){return r.status},get url(){return r.url}};t.updated.check;const s=e;export{s as p}; diff --git a/front-end/build/_app/immutable/chunks/8S9LQyo2.js b/front-end/build/_app/immutable/chunks/8S9LQyo2.js new file mode 100644 index 0000000..9afa598 --- /dev/null +++ b/front-end/build/_app/immutable/chunks/8S9LQyo2.js @@ -0,0 +1 @@ +import{o as v,q as u,v as p,w as c,T as E,x as h,y as f,z as o,E as T,A as g,B as N,C as w}from"./BLVsYbeJ.js";function m(r){var n=document.createElement("template");return n.innerHTML=r.replaceAll("",""),n.content}function t(r,n){var e=c;e.nodes_start===null&&(e.nodes_start=r,e.nodes_end=n)}function C(r,n){var e=(n&E)!==0,_=(n&h)!==0,a,d=!r.startsWith("");return()=>{if(f)return t(o,null),o;a===void 0&&(a=m(d?r:""+r),e||(a=u(a)));var s=_||p?document.importNode(a,!0):a.cloneNode(!0);if(e){var l=u(s),i=s.lastChild;t(l,i)}else t(s,s);return s}}function y(r,n,e="svg"){var _=!r.startsWith(""),a=`<${e}>${_?r:""+r}`,d;return()=>{if(f)return t(o,null),o;if(!d){var s=m(a),l=u(s);d=u(l)}var i=d.cloneNode(!0);return t(i,i),i}}function M(r,n){return y(r,n,"svg")}function F(r=""){if(!f){var n=v(r+"");return t(n,n),n}var e=o;return e.nodeType!==N&&(e.before(e=v()),w(e)),t(e,e),e}function L(){if(f)return t(o,null),o;var r=document.createDocumentFragment(),n=document.createComment(""),e=v();return r.append(n,e),t(n,e),r}function O(r,n){if(f){var e=c;((e.f&T)===0||e.nodes_end===null)&&(e.nodes_end=o),g();return}r!==null&&r.before(n)}const x="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add(x);export{O as a,t as b,L as c,M as d,C as f,F as t}; diff --git a/front-end/build/_app/immutable/chunks/B8UWJ_8F.js b/front-end/build/_app/immutable/chunks/B8UWJ_8F.js new file mode 100644 index 0000000..8969adf --- /dev/null +++ b/front-end/build/_app/immutable/chunks/B8UWJ_8F.js @@ -0,0 +1 @@ +import{aS as pe,aT as mt,aB as A,i as T,$ as I,aC as ee,aU as Ve,aV as wt}from"./BLVsYbeJ.js";import{o as Be}from"./eD-nflhL.js";const V=[];function Ee(e,t=pe){let n=null;const a=new Set;function r(s){if(mt(e,s)&&(e=s,n)){const c=!V.length;for(const l of a)l[1](),V.push(l,e);if(c){for(let l=0;l{a.delete(l),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:o}}class Re{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class xe{constructor(t,n){this.status=t,this.location=n}}class Le extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function vt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function yt(e){return e.split("%25").map(decodeURI).join("%25")}function bt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ge({href:e}){return e.split("#")[0]}function kt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function St(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&F.delete(Ue(e)),Et(e,t));const F=new Map;function Rt(e,t){const n=Ue(e,t),a=document.querySelector(n);if(a?.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const o=a.getAttribute("data-ttl");return o&&F.set(n,{body:r,init:i,ttl:1e3*Number(o)}),a.getAttribute("data-b64")!==null&&(r=St(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function xt(e,t,n){if(F.size>0){const a=Ue(e,n),r=F.get(a);if(r){if(performance.now(){const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const o=a.split(/\[(.+?)\](?!\])/);return"/"+o.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return _e(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return _e(String.fromCharCode(...c.slice(2).split("-").map(m=>parseInt(m,16))));const f=Lt.exec(c),[,h,w,u,g]=f;return t.push({name:u,matcher:g,optional:!!h,rest:!!w,chained:w?l===1&&o[0]==="":!1}),w?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return _e(c)}).join("")}).join("")}/?$`),params:t}}function At(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Tt(e){return e.slice(1).split("/").filter(At)}function It(e,t,n){const a={},r=e.slice(1),i=r.filter(s=>s!==void 0);let o=0;for(let s=0;sf).join("/"),o=0),l===void 0){c.rest&&(a[c.name]="");continue}if(!c.matcher||n[c.matcher](l)){a[c.name]=l;const f=t[s+1],h=r[s+1];f&&!f.rest&&f.optional&&h&&c.chained&&(o=0),!f&&!h&&Object.keys(a).length===i.length&&(o=0);continue}if(c.optional&&c.chained){o++;continue}return}if(!o)return a}function _e(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ot({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([s,[c,l,f]])=>{const{pattern:h,params:w}=Ut(s),u={id:s,exec:g=>{const m=h.exec(g);if(m)return It(m,w,a)},errors:[1,...f||[]].map(g=>e[g]),layouts:[0,...l||[]].map(o),leaf:i(c)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function i(s){const c=s<0;return c&&(s=~s),[c,e[s]]}function o(s){return s===void 0?s:[r.has(s),e[s]]}}function He(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function Ke(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}const L=globalThis.__sveltekit_1cwhkqh?.base??"",$t=globalThis.__sveltekit_1cwhkqh?.assets??L??"",Pt="1765802233144",Je="sveltekit:snapshot",Xe="sveltekit:scroll",Qe="sveltekit:states",Ct="sveltekit:pageurl",K="sveltekit:history",W="sveltekit:navigation",j={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},le=location.origin;function Ae(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function ue(){return{x:pageXOffset,y:pageYOffset}}function B(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Me={...j,"":j.hover};function Ze(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function et(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Ze(e)}}function ve(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";a.hash=`#${s}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||fe(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=a?.origin===le&&e.hasAttribute("download");return{url:a,external:i,target:r,download:o}}function te(e){let t=null,n=null,a=null,r=null,i=null,o=null,s=e;for(;s&&s!==document.documentElement;)a===null&&(a=B(s,"preload-code")),r===null&&(r=B(s,"preload-data")),t===null&&(t=B(s,"keepfocus")),n===null&&(n=B(s,"noscroll")),i===null&&(i=B(s,"reload")),o===null&&(o=B(s,"replacestate")),s=Ze(s);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Me[a??"off"],preload_data:Me[r??"off"],keepfocus:c(t),noscroll:c(n),reload:c(i),replace_state:c(o)}}function ze(e){const t=Ee(e);let n=!0;function a(){n=!0,t.update(o=>o)}function r(o){n=!1,t.set(o)}function i(o){let s;return t.subscribe(c=>{(s===void 0||n&&c!==s)&&o(s=c)})}return{notify:a,set:r,subscribe:i}}const tt={v:()=>{}};function jt(){const{set:e,subscribe:t}=Ee(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${$t}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const o=(await r.json()).version!==Pt;return o&&(e(!0),tt.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:a}}function fe(e,t,n){return e.origin!==le||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function ln(e){}const nt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...nt];const qt=new Set([...nt]);[...qt];function Nt(e){return e.filter(t=>t!=null)}function Te(e){return e instanceof Re||e instanceof Le?e.status:500}function Dt(e){return e instanceof Le?e.text:"Internal Error"}let k,Y,me;const Vt=Be.toString().includes("$$")||/function \w+\(\) \{\}/.test(Be.toString());Vt?(k={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},Y={current:null},me={current:!1}):(k=new class{#e=A({});get data(){return T(this.#e)}set data(t){I(this.#e,t)}#t=A(null);get form(){return T(this.#t)}set form(t){I(this.#t,t)}#n=A(null);get error(){return T(this.#n)}set error(t){I(this.#n,t)}#a=A({});get params(){return T(this.#a)}set params(t){I(this.#a,t)}#r=A({id:null});get route(){return T(this.#r)}set route(t){I(this.#r,t)}#o=A({});get state(){return T(this.#o)}set state(t){I(this.#o,t)}#s=A(-1);get status(){return T(this.#s)}set status(t){I(this.#s,t)}#i=A(new URL("https://example.com"));get url(){return T(this.#i)}set url(t){I(this.#i,t)}},Y=new class{#e=A(null);get current(){return T(this.#e)}set current(t){I(this.#e,t)}},me=new class{#e=A(!1);get current(){return T(this.#e)}set current(t){I(this.#e,t)}},tt.v=()=>me.current=!0);function at(e){Object.assign(k,e)}const Bt=new Set(["icon","shortcut icon","apple-touch-icon"]),N=He(Xe)??{},H=He(Je)??{},C={url:ze({}),page:ze({}),navigating:Ee(null),updated:jt()};function Ie(e){N[e]=ue()}function Kt(e,t){let n=e+1;for(;N[n];)delete N[n],n+=1;for(n=t+1;H[n];)delete H[n],n+=1}function J(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function rt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(L||"/");e&&await e.update()}}function Fe(){}let Oe,ye,ne,O,be,v;const ae=[],re=[];let R=null;function ke(){R?.fork?.then(e=>e?.discard()),R=null}const Z=new Map,ot=new Set,Mt=new Set,G=new Set;let _={branch:[],error:null,url:null},st=!1,oe=!1,Ge=!0,X=!1,z=!1,it=!1,$e=!1,Pe,y,x,q;const se=new Set,We=new Map;async function hn(e,t,n){globalThis.__sveltekit_1cwhkqh?.data&&globalThis.__sveltekit_1cwhkqh.data,document.URL!==location.href&&(location.href=location.href),v=e,await e.hooks.init?.(),Oe=Ot(e),O=document.documentElement,be=t,ye=e.nodes[0],ne=e.nodes[1],ye(),ne(),y=history.state?.[K],x=history.state?.[W],y||(y=x=Date.now(),history.replaceState({...history.state,[K]:y,[W]:x},""));const a=N[y];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await nn(be,n)):(await M({type:"enter",url:Ae(v.hash?on(new URL(location.href)):location.href),replace_state:!0}),r()),tn()}function zt(){ae.length=0,$e=!1}function ct(e){re.some(t=>t?.snapshot)&&(H[e]=re.map(t=>t?.snapshot?.capture()))}function lt(e){H[e]?.forEach((t,n)=>{re[n]?.snapshot?.restore(t)})}function Ye(){Ie(y),Ke(Xe,N),ct(x),Ke(Je,H)}async function ut(e,t,n,a){let r;t.invalidateAll&&ke(),await M({type:"goto",url:Ae(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{t.invalidateAll&&($e=!0,r=[...We.keys()]),t.invalidate&&t.invalidate.forEach(en)}}),t.invalidateAll&&ee().then(ee).then(()=>{We.forEach(({resource:i},o)=>{r?.includes(o)&&i.refresh?.()})})}async function Ft(e){if(e.id!==R?.id){ke();const t={};if(se.add(t),R={id:e.id,token:t,promise:dt({...e,preload:t}).then(n=>(se.delete(t),n.type==="loaded"&&n.state.error&&ke(),n)),fork:null},Ve){const n=R;n.fork=n.promise.then(a=>{if(n===R&&a.type==="loaded")try{return Ve(()=>{Pe.$set(a.props),at(a.props.page)})}catch{}return null})}}return R.promise}async function we(e){const t=(await de(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].map(n=>n?.[1]()))}async function ft(e,t,n){_=e.state;const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(k,e.props.page),Pe=new v.root({target:t,props:{...e.props,stores:C,components:re},hydrate:n,sync:!1}),await Promise.resolve(),lt(x),n){const r={from:null,to:{params:_.params,route:{id:_.route?.id??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};G.forEach(i=>i(r))}oe=!0}function ie({url:e,params:t,branch:n,status:a,error:r,route:i,form:o}){let s="never";if(L&&(e.pathname===L||e.pathname===L+"/"))s="always";else for(const u of n)u?.slash!==void 0&&(s=u.slash);e.pathname=vt(e.pathname,s),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:r,route:i},props:{constructors:Nt(n).map(u=>u.node.component),page:De(k)}};o!==void 0&&(c.props.form=o);let l={},f=!k,h=0;for(let u=0;us(new URL(o))))return!0;return!1}function je(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function Yt(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(o=>i.includes(o))&&i.every(o=>r.includes(o))&&n.delete(a)}return n}function Ht({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:De(k),constructors:[]}}}async function dt({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if(R?.id===e)return se.delete(R.token),R.promise;const{errors:o,layouts:s,leaf:c}=r,l=[...s,c];o.forEach(p=>p?.().catch(()=>{})),l.forEach(p=>p?.[1]().catch(()=>{}));const f=_.url?e!==ce(_.url):!1,h=_.route?r.id!==_.route.id:!1,w=Yt(_.url,n);let u=!1;const g=l.map(async(p,d)=>{if(!p)return;const S=_.branch[d];return p[1]===S?.loader&&!Wt(u,h,f,w,S.universal?.uses,a)?S:(u=!0,Ce({loader:p[1],url:n,params:a,route:r,parent:async()=>{const $={};for(let U=0;U{});const m=[];for(let p=0;pPromise.resolve({}),server_data_node:je(i)}),s={node:await ne(),loader:ne,universal:null,server:null,data:null};return ie({url:n,params:r,branch:[o,s],status:e,error:t,route:null})}catch(o){if(o instanceof xe)return ut(new URL(o.location,location.href),{},0);throw o}}async function Xt(e){const t=e.href;if(Z.has(t))return Z.get(t);let n;try{const a=(async()=>{let r=await v.hooks.reroute({url:new URL(e),fetch:async(i,o)=>Gt(i,o,e).promise})??e;if(typeof r=="string"){const i=new URL(e);v.hash?i.hash=r:i.pathname=r,r=i}return r})();Z.set(t,a),n=await a}catch{Z.delete(t);return}return n}async function de(e,t){if(e&&!fe(e,L,v.hash)){const n=await Xt(e);if(!n)return;const a=Qt(n);for(const r of Oe){const i=r.exec(a);if(i)return{id:ce(e),invalidating:t,route:r,params:bt(i),url:e}}}}function Qt(e){return yt(v.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(L.length))||"/"}function ce(e){return(v.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function ht({url:e,type:t,intent:n,delta:a,event:r}){let i=!1;const o=Ne(_,n,e,t);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const s={...o.navigation,cancel:()=>{i=!0,o.reject(new Error("navigation cancelled"))}};return X||ot.forEach(c=>c(s)),i?null:o}async function M({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o={},redirect_count:s=0,nav_token:c={},accept:l=Fe,block:f=Fe,event:h}){const w=q;q=c;const u=await de(t,!1),g=e==="enter"?Ne(_,u,t,e):ht({url:t,type:e,delta:n?.delta,intent:u,event:h});if(!g){f(),q===c&&(q=w);return}const m=y,p=x;l(),X=!0,oe&&g.navigation.type!=="enter"&&C.navigating.set(Y.current=g.navigation);let d=u&&await dt(u);if(!d){if(fe(t,L,v.hash))return await J(t,i);d=await pt(t,{id:null},await Q(new Le(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=u?.url||t,q!==c)return g.reject(new Error("navigation aborted")),!1;if(d.type==="redirect"){if(s<20){await M({type:e,url:new URL(d.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o,redirect_count:s+1,nav_token:c}),g.fulfil(void 0);return}d=await qe({status:500,error:await Q(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else d.props.page.status>=400&&await C.updated.check()&&(await rt(),await J(t,i));if(zt(),Ie(m),ct(p),d.props.page.url.pathname!==t.pathname&&(t.pathname=d.props.page.url.pathname),o=n?n.state:o,!n){const b=i?0:1,D={[K]:y+=b,[W]:x+=b,[Qe]:o};(i?history.replaceState:history.pushState).call(history,D,"",t),i||Kt(y,x)}const S=u&&R?.id===u.id?R.fork:null;R=null,d.props.page.state=o;let E;if(oe){const b=(await Promise.all(Array.from(Mt,P=>P(g.navigation)))).filter(P=>typeof P=="function");if(b.length>0){let P=function(){b.forEach(he=>{G.delete(he)})};b.push(P),b.forEach(he=>{G.add(he)})}_=d.state,d.props.page&&(d.props.page.url=t);const D=S&&await S;D?E=D.commit():(Pe.$set(d.props),at(d.props.page),E=wt?.()),it=!0}else await ft(d,be,!1);const{activeElement:$}=document;await E,await ee(),await ee();let U=n?n.scroll:r?ue():null;if(Ge){const b=t.hash&&document.getElementById(gt(t));if(U)scrollTo(U.x,U.y);else if(b){b.scrollIntoView();const{top:D,left:P}=b.getBoundingClientRect();U={x:pageXOffset+P,y:pageYOffset+D}}else scrollTo(0,0)}const _t=document.activeElement!==$&&document.activeElement!==document.body;!a&&!_t&&rn(t,U),Ge=!0,d.props.page&&Object.assign(k,d.props.page),X=!1,e==="popstate"&<(x),g.fulfil(void 0),G.forEach(b=>b(g.navigation)),C.navigating.set(Y.current=null)}async function pt(e,t,n,a,r){return e.origin===le&&e.pathname===location.pathname&&!st?await qe({status:a,error:n,url:e,route:t}):await J(e,r)}function Zt(){let e,t,n;O.addEventListener("mousemove",s=>{const c=s.target;clearTimeout(e),e=setTimeout(()=>{i(c,j.hover)},20)});function a(s){s.defaultPrevented||i(s.composedPath()[0],j.tap)}O.addEventListener("mousedown",a),O.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(s=>{for(const c of s)c.isIntersecting&&(we(new URL(c.target.href)),r.unobserve(c.target))},{threshold:0});async function i(s,c){const l=et(s,O),f=l===t&&c>=n;if(!l||f)return;const{url:h,external:w,download:u}=ve(l,L,v.hash);if(w||u)return;const g=te(l),m=h&&ce(_.url)===ce(h);if(!(g.reload||m))if(c<=g.preload_data){t=l,n=j.tap;const p=await de(h,!1);if(!p)return;Ft(p)}else c<=g.preload_code&&(t=l,n=c,we(h))}function o(){r.disconnect();for(const s of O.querySelectorAll("a")){const{url:c,external:l,download:f}=ve(s,L,v.hash);if(l||f)continue;const h=te(s);h.reload||(h.preload_code===j.viewport&&r.observe(s),h.preload_code===j.eager&&we(c))}}G.add(o),o()}function Q(e,t){if(e instanceof Re)return e.body;const n=Te(e),a=Dt(e);return v.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function pn(e,t={}){return e=new URL(Ae(e)),e.origin!==le?Promise.reject(new Error("goto: invalid URL")):ut(e,t,0)}function en(e){if(typeof e=="function")ae.push(e);else{const{href:t}=new URL(e,location.href);ae.push(n=>n.href===t)}}function tn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(Ye(),!X){const a=Ne(_,void 0,null,"leave"),r={...a.navigation,cancel:()=>{n=!0,a.reject(new Error("navigation cancelled"))}};ot.forEach(i=>i(r))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Ye()}),navigator.connection?.saveData||Zt(),O.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=et(t.composedPath()[0],O);if(!n)return;const{url:a,external:r,target:i,download:o}=ve(n,L,v.hash);if(!a)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const s=te(n);if(!(n instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||o)return;const[l,f]=(v.hash?a.hash.replace(/^#/,""):a.href).split("#"),h=l===ge(location);if(r||s.reload&&(!h||!f)){ht({url:a,type:"link",event:t})?X=!0:t.preventDefault();return}if(f!==void 0&&h){const[,w]=_.url.href.split("#");if(w===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const u=n.ownerDocument.getElementById(decodeURIComponent(f));u&&(u.scrollIntoView(),u.focus())}return}if(z=!0,Ie(y),e(a),!s.replace_state)return;z=!1}t.preventDefault(),await new Promise(w=>{requestAnimationFrame(()=>{setTimeout(w,0)}),setTimeout(w,100)}),await M({type:"link",url:a,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??a.href===location.href,event:t})}),O.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),a=t.submitter;if((a?.formTarget||n.target)==="_blank"||(a?.formMethod||n.method)!=="get")return;const o=new URL(a?.hasAttribute("formaction")&&a?.formAction||n.action);if(fe(o,L,!1))return;const s=t.target,c=te(s);if(c.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(s,a);o.search=new URLSearchParams(l).toString(),M({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!Se){if(t.state?.[K]){const n=t.state[K];if(q={},n===y)return;const a=N[n],r=t.state[Qe]??{},i=new URL(t.state[Ct]??location.href),o=t.state[W],s=_.url?ge(location)===ge(_.url):!1;if(o===x&&(it||s)){r!==k.state&&(k.state=r),e(i),N[y]=ue(),a&&scrollTo(a.x,a.y),y=n;return}const l=n-y;await M({type:"popstate",url:i,popped:{state:r,scroll:a,delta:l},accept:()=>{y=n,x=o},block:()=>{history.go(-l)},nav_token:q,event:t})}else if(!z){const n=new URL(location.href);e(n),v.hash&&location.reload()}}}),addEventListener("hashchange",()=>{z&&(z=!1,history.replaceState({...history.state,[K]:++y,[W]:x},"",location.href))});for(const t of document.querySelectorAll("link"))Bt.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&C.navigating.set(Y.current=null)});function e(t){_.url=k.url=t,C.page.set(De(k)),C.page.notify()}}async function nn(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:o,data:s,form:c}){st=!0;const l=new URL(location.href);let f;({params:r={},route:i={id:null}}=await de(l,!1)||{}),f=Oe.find(({id:u})=>u===i.id);let h,w=!0;try{const u=a.map(async(m,p)=>{const d=s[p];return d?.uses&&(d.uses=an(d.uses)),Ce({loader:v.nodes[m],url:l,params:r,route:i,parent:async()=>{const S={};for(let E=0;E{const s=history.state;Se=!0,location.replace(`#${a}`),v.hash&&location.replace(e.hash),history.replaceState(s,"",e.hash),scrollTo(i,o),Se=!1})}else{const i=document.body,o=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),o!==null?i.setAttribute("tabindex",o):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let o=0;o{if(r.rangeCount===i.length){for(let o=0;o{r=c,i=l});return o.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n},willUnload:!t,type:a,complete:o},fulfil:r,reject:i}}function De(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function on(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function gt(e){let t;if(v.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{hn as a,pn as g,ln as l,k as p,C as s}; diff --git a/front-end/build/_app/immutable/chunks/BLVsYbeJ.js b/front-end/build/_app/immutable/chunks/BLVsYbeJ.js new file mode 100644 index 0000000..2eb83a7 --- /dev/null +++ b/front-end/build/_app/immutable/chunks/BLVsYbeJ.js @@ -0,0 +1 @@ +var Mt=Array.isArray,Ft=Array.prototype.indexOf,kn=Array.from,Rn=Object.defineProperty,le=Object.getOwnPropertyDescriptor,jt=Object.getOwnPropertyDescriptors,Lt=Object.prototype,qt=Array.prototype,nt=Object.getPrototypeOf,Je=Object.isExtensible;const xn=()=>{};function Sn(e){return e()}function Yt(e){for(var t=0;t{e=r,t=s});return{promise:n,resolve:e,reject:t}}const w=2,qe=4,ke=8,Ht=1<<24,F=16,j=32,te=64,Ye=128,D=512,m=1024,A=2048,L=4096,I=8192,Y=16384,He=32768,pe=65536,Ne=1<<17,st=1<<18,ve=1<<19,ft=1<<20,J=32768,Ie=1<<21,Ue=1<<22,H=1<<23,oe=Symbol("$state"),On=Symbol("legacy props"),Dn=Symbol(""),ne=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},Be=3,it=8;function Ut(e){throw new Error("https://svelte.dev/e/experimental_async_required")}function In(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function Bt(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Vt(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Gt(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Kt(e){throw new Error("https://svelte.dev/e/effect_orphan")}function zt(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function $t(){throw new Error("https://svelte.dev/e/fork_discarded")}function Xt(){throw new Error("https://svelte.dev/e/fork_timing")}function Pn(){throw new Error("https://svelte.dev/e/hydration_failed")}function Cn(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function Zt(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Jt(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Qt(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Mn(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Fn=1,jn=2,Ln=4,qn=8,Yn=16,Hn=1,Un=2,Bn=4,Vn=8,Gn=16,Kn=1,zn=2,Wt="[",en="[!",tn="]",Ve={},E=Symbol(),$n="http://www.w3.org/1999/xhtml";function Ge(e){console.warn("https://svelte.dev/e/hydration_mismatch")}function Xn(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let Q=!1;function Zn(e){Q=e}let R;function re(e){if(e===null)throw Ge(),Ve;return R=e}function Jn(){return re(K(R))}function Qn(e){if(Q){if(K(R)!==null)throw Ge(),Ve;R=e}}function Wn(e=1){if(Q){for(var t=e,n=R;t--;)n=K(n);R=n}}function er(e=!0){for(var t=0,n=R;;){if(n.nodeType===it){var r=n.data;if(r===tn){if(t===0)return n;t-=1}else(r===Wt||r===en)&&(t+=1)}var s=K(n);e&&n.remove(),n=s}}function tr(e){if(!e||e.nodeType!==it)throw Ge(),Ve;return e.data}function at(e){return e===this.v}function nn(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function lt(e){return!nn(e,this.v)}let Re=!1;function nr(){Re=!0}let b=null;function we(e){b=e}function rr(e,t=!1,n){b={p:b,i:!1,c:null,e:null,s:e,x:null,l:Re&&!t?{s:null,u:null,$:[]}:null}}function sr(e){var t=b,n=t.e;if(n!==null){t.e=null;for(var r of n)bt(r)}return t.i=!0,b=t.p,{}}function de(){return!Re||b!==null&&b.l===null}let $=[];function ot(){var e=$;$=[],Yt(e)}function rn(e){if($.length===0&&!ue){var t=$;queueMicrotask(()=>{t===$&&ot()})}$.push(e)}function sn(){for(;$.length>0;)ot()}function fn(e){var t=h;if(t===null)return _.f|=H,e;if((t.f&He)===0){if((t.f&Ye)===0)throw e;t.b.error(e)}else ye(e,t)}function ye(e,t){for(;t!==null;){if((t.f&Ye)!==0)try{t.b.error(e);return}catch(n){e=n}t=t.parent}throw e}const X=new Set;let p=null,T=null,S=[],xe=null,Pe=!1,ue=!1;class V{committed=!1;current=new Map;previous=new Map;#r=new Set;#s=new Set;#t=0;#n=0;#a=null;#f=[];#i=[];skipped_effects=new Set;is_fork=!1;is_deferred(){return this.is_fork||this.#n>0}process(t){S=[],this.apply();var n={parent:null,effect:null,effects:[],render_effects:[],block_effects:[]};for(const r of t)this.#l(r,n);this.is_fork||this.#u(),this.is_deferred()?(this.#e(n.effects),this.#e(n.render_effects),this.#e(n.block_effects)):(p=null,Qe(n.render_effects),Qe(n.effects),this.#a?.resolve()),T=null}#l(t,n){t.f^=m;for(var r=t.first;r!==null;){var s=r.f,f=(s&(j|te))!==0,o=f&&(s&m)!==0,l=o||(s&I)!==0||this.skipped_effects.has(r);if((r.f&Ye)!==0&&r.b?.is_pending()&&(n={parent:n,effect:r,effects:[],render_effects:[],block_effects:[]}),!l&&r.fn!==null){f?r.f^=m:(s&qe)!==0?n.effects.push(r):he(r)&&((r.f&F)!==0&&n.block_effects.push(r),_e(r));var i=r.first;if(i!==null){r=i;continue}}var a=r.parent;for(r=r.next;r===null&&a!==null;)a===n.effect&&(this.#e(n.effects),this.#e(n.render_effects),this.#e(n.block_effects),n=n.parent),r=a.next,a=a.parent}}#e(t){for(const n of t)((n.f&A)!==0?this.#f:this.#i).push(n),this.#o(n.deps),y(n,m)}#o(t){if(t!==null)for(const n of t)(n.f&w)===0||(n.f&J)===0||(n.f^=J,this.#o(n.deps))}capture(t,n){this.previous.has(t)||this.previous.set(t,n),(t.f&H)===0&&(this.current.set(t,t.v),T?.set(t,t.v))}activate(){p=this,this.apply()}deactivate(){p===this&&(p=null,T=null)}flush(){if(this.activate(),S.length>0){if(Me(),p!==null&&p!==this)return}else this.#t===0&&this.process([]);this.deactivate()}discard(){for(const t of this.#s)t(this);this.#s.clear()}#u(){if(this.#n===0){for(const t of this.#r)t();this.#r.clear()}this.#t===0&&this.#c()}#c(){if(X.size>1){this.previous.clear();var t=T,n=!0,r={parent:null,effect:null,effects:[],render_effects:[],block_effects:[]};for(const f of X){if(f===this){n=!1;continue}const o=[];for(const[i,a]of this.current){if(f.current.has(i))if(n&&a!==f.current.get(i))f.current.set(i,a);else continue;o.push(i)}if(o.length===0)continue;const l=[...f.current.keys()].filter(i=>!this.current.has(i));if(l.length>0){var s=S;S=[];const i=new Set,a=new Map;for(const u of o)ut(u,l,i,a);if(S.length>0){p=f,f.apply();for(const u of S)f.#l(u,r);f.deactivate()}S=s}}p=null,T=t}this.committed=!0,X.delete(this)}increment(t){this.#t+=1,t&&(this.#n+=1)}decrement(t){this.#t-=1,t&&(this.#n-=1),this.revive()}revive(){for(const t of this.#f)y(t,A),W(t);for(const t of this.#i)y(t,L),W(t);this.#f=[],this.#i=[],this.flush()}oncommit(t){this.#r.add(t)}ondiscard(t){this.#s.add(t)}settled(){return(this.#a??=rt()).promise}static ensure(){if(p===null){const t=p=new V;X.add(p),ue||V.enqueue(()=>{p===t&&t.flush()})}return p}static enqueue(t){rn(t)}apply(){}}function Ce(e){var t=ue;ue=!0;try{var n;for(e&&(p!==null&&Me(),n=e());;){if(sn(),S.length===0&&(p?.flush(),S.length===0))return xe=null,n;Me()}}finally{ue=t}}function Me(){var e=B;Pe=!0;var t=null;try{var n=0;for(Te(!0);S.length>0;){var r=V.ensure();if(n++>1e3){var s,f;an()}r.process(S),U.clear()}}finally{Pe=!1,Te(e),xe=null}}function an(){try{zt()}catch(e){ye(e,xe)}}let C=null;function Qe(e){var t=e.length;if(t!==0){for(var n=0;n0)){U.clear();for(const s of C){if((s.f&(Y|I))!==0)continue;const f=[s];let o=s.parent;for(;o!==null;)C.has(o)&&(C.delete(o),f.push(o)),o=o.parent;for(let l=f.length-1;l>=0;l--){const i=f[l];(i.f&(Y|I))===0&&_e(i)}}C.clear()}}C=null}}function ut(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const s of e.reactions){const f=s.f;(f&w)!==0?ut(s,t,n,r):(f&(Ue|F))!==0&&(f&A)===0&&_t(s,t,r)&&(y(s,A),W(s))}}function ct(e,t){if(e.reactions!==null)for(const n of e.reactions){const r=n.f;(r&w)!==0?ct(n,t):(r&Ne)!==0&&(y(n,A),t.add(n))}}function _t(e,t,n){const r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const s of e.deps){if(t.includes(s))return!0;if((s.f&w)!==0&&_t(s,t,n))return n.set(s,!0),!0}return n.set(e,!1),!1}function W(e){for(var t=xe=e;t.parent!==null;){t=t.parent;var n=t.f;if(Pe&&t===h&&(n&F)!==0&&(n&st)===0)return;if((n&(te|j))!==0){if((n&m)===0)return;t.f^=m}}S.push(t)}function fr(e){Ut(),p!==null&&Xt();var t=V.ensure();t.is_fork=!0,T=new Map;var n=!1,r=t.settled();Ce(e),T=null;for(var[s,f]of t.previous)s.v=f;return{commit:async()=>{if(n){await r;return}X.has(t)||$t(),n=!0,t.is_fork=!1;for(var[o,l]of t.current)o.v=l;Ce(()=>{var i=new Set;for(var a of t.current.keys())ct(a,i);vn(i),pt()}),t.revive(),await r},discard:()=>{!n&&X.has(t)&&(X.delete(t),t.discard())}}}function ln(e,t,n,r){const s=de()?Ke:cn;if(n.length===0&&e.length===0){r(t.map(s));return}var f=p,o=h,l=on();function i(){Promise.all(n.map(a=>un(a))).then(a=>{l();try{r([...t.map(s),...a])}catch(u){(o.f&Y)===0&&ye(u,o)}f?.deactivate(),Ee()}).catch(a=>{ye(a,o)})}e.length>0?Promise.all(e).then(()=>{l();try{return i()}finally{f?.deactivate(),Ee()}}):i()}function on(){var e=h,t=_,n=b,r=p;return function(f=!0){se(e),G(t),we(n),f&&r?.activate()}}function Ee(){se(null),G(null),we(null)}function Ke(e){var t=w|A,n=_!==null&&(_.f&w)!==0?_:null;return h!==null&&(h.f|=ve),{ctx:b,deps:null,effects:null,equals:at,f:t,fn:e,reactions:null,rv:0,v:E,wv:0,parent:n??h,ac:null}}function un(e,t){let n=h;n===null&&Bt();var r=n.b,s=void 0,f=$e(E),o=!_,l=new Map;return wn(()=>{var i=rt();s=i.promise;try{Promise.resolve(e()).then(i.resolve,i.reject).then(()=>{a===p&&a.committed&&a.deactivate(),Ee()})}catch(c){i.reject(c),Ee()}var a=p;if(o){var u=!r.is_pending();r.update_pending_count(1),a.increment(u),l.get(a)?.reject(ne),l.delete(a),l.set(a,i)}const v=(c,d=void 0)=>{if(a.activate(),d)d!==ne&&(f.f|=H,Fe(f,d));else{(f.f&H)!==0&&(f.f^=H),Fe(f,c);for(const[O,Se]of l){if(l.delete(O),O===a)break;Se.reject(ne)}}o&&(r.update_pending_count(-1),a.decrement(u))};i.promise.then(v,c=>v(null,c||"unknown"))}),pn(()=>{for(const i of l.values())i.reject(ne)}),new Promise(i=>{function a(u){function v(){u===s?i(f):a(s)}u.then(v,v)}a(s)})}function ir(e){const t=Ke(e);return St(t),t}function cn(e){const t=Ke(e);return t.equals=lt,t}function vt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n0&&!ht&&pt()}return t}function pt(){ht=!1;var e=B;Te(!0);const t=Array.from(me);try{for(const n of t)(n.f&m)!==0&&y(n,L),he(n)&&_e(n)}finally{Te(e)}me.clear()}function De(e){z(e,e.v+1)}function wt(e,t){var n=e.reactions;if(n!==null)for(var r=de(),s=n.length,f=0;f{if(Z===f)return l();var i=_,a=Z;G(null),tt(f);var u=l();return G(i),tt(a),u};return r&&n.set("length",q(e.length)),new Proxy(e,{defineProperty(l,i,a){(!("value"in a)||a.configurable===!1||a.enumerable===!1||a.writable===!1)&&Zt();var u=n.get(i);return u===void 0?u=o(()=>{var v=q(a.value);return n.set(i,v),v}):z(u,a.value,!0),!0},deleteProperty(l,i){var a=n.get(i);if(a===void 0){if(i in l){const u=o(()=>q(E));n.set(i,u),De(s)}}else z(a,E),De(s);return!0},get(l,i,a){if(i===oe)return e;var u=n.get(i),v=i in l;if(u===void 0&&(!v||le(l,i)?.writable)&&(u=o(()=>{var d=ie(v?l[i]:E),O=q(d);return O}),n.set(i,u)),u!==void 0){var c=ae(u);return c===E?void 0:c}return Reflect.get(l,i,a)},getOwnPropertyDescriptor(l,i){var a=Reflect.getOwnPropertyDescriptor(l,i);if(a&&"value"in a){var u=n.get(i);u&&(a.value=ae(u))}else if(a===void 0){var v=n.get(i),c=v?.v;if(v!==void 0&&c!==E)return{enumerable:!0,configurable:!0,value:c,writable:!0}}return a},has(l,i){if(i===oe)return!0;var a=n.get(i),u=a!==void 0&&a.v!==E||Reflect.has(l,i);if(a!==void 0||h!==null&&(!u||le(l,i)?.writable)){a===void 0&&(a=o(()=>{var c=u?ie(l[i]):E,d=q(c);return d}),n.set(i,a));var v=ae(a);if(v===E)return!1}return u},set(l,i,a,u){var v=n.get(i),c=i in l;if(r&&i==="length")for(var d=a;dq(E)),n.set(d+"",O))}if(v===void 0)(!c||le(l,i)?.writable)&&(v=o(()=>q(void 0)),z(v,ie(a)),n.set(i,v));else{c=v.v!==E;var Se=o(()=>ie(a));z(v,Se)}var Xe=Reflect.getOwnPropertyDescriptor(l,i);if(Xe?.set&&Xe.set.call(u,a),!c){if(r&&typeof i=="string"){var Ze=n.get("length"),Oe=Number(i);Number.isInteger(Oe)&&Oe>=Ze.v&&z(Ze,Oe+1)}De(s)}return!0},ownKeys(l){ae(s);var i=Reflect.ownKeys(l).filter(v=>{var c=n.get(v);return c===void 0||c.v!==E});for(var[a,u]of n)u.v!==E&&!(a in l)&&i.push(a);return i},setPrototypeOf(){Jt()}})}var We,dn,yt,Et;function lr(){if(We===void 0){We=window,dn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;yt=le(t,"firstChild").get,Et=le(t,"nextSibling").get,Je(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Je(n)&&(n.__t=void 0)}}function ge(e=""){return document.createTextNode(e)}function je(e){return yt.call(e)}function K(e){return Et.call(e)}function or(e,t){if(!Q)return je(e);var n=je(R);if(n===null)n=R.appendChild(ge());else if(t&&n.nodeType!==Be){var r=ge();return n?.before(r),re(r),r}return re(n),n}function ur(e,t=!1){if(!Q){var n=je(e);return n instanceof Comment&&n.data===""?K(n):n}if(t&&R?.nodeType!==Be){var r=ge();return R?.before(r),re(r),r}return R}function cr(e,t=1,n=!1){let r=Q?R:e;for(var s;t--;)s=r,r=K(r);if(!Q)return r;if(n&&r?.nodeType!==Be){var f=ge();return r===null?s?.after(f):r.before(f),re(f),f}return re(r),r}function _r(e){e.textContent=""}function vr(){return!1}function mt(e){var t=_,n=h;G(null),se(null);try{return e()}finally{G(t),se(n)}}function gt(e){h===null&&(_===null&&Kt(),Gt()),fe&&Vt()}function hn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function P(e,t,n){var r=h;r!==null&&(r.f&I)!==0&&(e|=I);var s={ctx:b,deps:null,nodes_start:null,nodes_end:null,f:e|A|D,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,transitions:null,wv:0,ac:null};if(n)try{_e(s),s.f|=He}catch(l){throw ee(s),l}else t!==null&&W(s);var f=s;if(n&&f.deps===null&&f.teardown===null&&f.nodes_start===null&&f.first===f.last&&(f.f&ve)===0&&(f=f.first,(e&F)!==0&&(e&pe)!==0&&f!==null&&(f.f|=pe)),f!==null&&(f.parent=r,r!==null&&hn(f,r),_!==null&&(_.f&w)!==0&&(e&te)===0)){var o=_;(o.effects??=[]).push(f)}return s}function be(){return _!==null&&!N}function pn(e){const t=P(ke,null,!1);return y(t,m),t.teardown=e,t}function dr(e){gt();var t=h.f,n=!_&&(t&j)!==0&&(t&He)===0;if(n){var r=b;(r.e??=[]).push(e)}else return bt(e)}function bt(e){return P(qe|ft,e,!1)}function hr(e){return gt(),P(ke|ft,e,!0)}function pr(e){V.ensure();const t=P(te|ve,e,!0);return(n={})=>new Promise(r=>{n.outro?mn(t,()=>{ee(t),r(void 0)}):(ee(t),r(void 0))})}function wr(e){return P(qe,e,!1)}function wn(e){return P(Ue|ve,e,!0)}function yr(e,t=0){return P(ke|t,e,!0)}function Er(e,t=[],n=[],r=[]){ln(r,t,n,s=>{P(ke,()=>e(...s.map(ae)),!0)})}function mr(e,t=0){var n=P(F|t,e,!0);return n}function gr(e){return P(j|ve,e,!0)}function Tt(e){var t=e.teardown;if(t!==null){const n=fe,r=_;et(!0),G(null);try{t.call(null)}finally{et(n),G(r)}}}function At(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const s=n.ac;s!==null&&mt(()=>{s.abort(ne)});var r=n.next;(n.f&te)!==0?n.parent=null:ee(n,t),n=r}}function yn(e){for(var t=e.first;t!==null;){var n=t.next;(t.f&j)===0&&ee(t),t=n}}function ee(e,t=!0){var n=!1;(t||(e.f&st)!==0)&&e.nodes_start!==null&&e.nodes_end!==null&&(En(e.nodes_start,e.nodes_end),n=!0),At(e,t&&!n),Ae(e,0),y(e,Y);var r=e.transitions;if(r!==null)for(const f of r)f.stop();Tt(e);var s=e.parent;s!==null&&s.first!==null&&kt(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes_start=e.nodes_end=e.ac=null}function En(e,t){for(;e!==null;){var n=e===t?null:K(e);e.remove(),e=n}}function kt(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function mn(e,t,n=!0){var r=[];Rt(e,r,!0),gn(r,()=>{n&&ee(e),t&&t()})}function gn(e,t){var n=e.length;if(n>0){var r=()=>--n||t();for(var s of e)s.out(r)}else t()}function Rt(e,t,n){if((e.f&I)===0){if(e.f^=I,e.transitions!==null)for(const o of e.transitions)(o.is_global||n)&&t.push(o);for(var r=e.first;r!==null;){var s=r.next,f=(r.f&pe)!==0||(r.f&j)!==0&&(e.f&F)!==0;Rt(r,t,f?n:!1),r=s}}}function br(e){xt(e,!0)}function xt(e,t){if((e.f&I)!==0){e.f^=I,(e.f&m)===0&&(y(e,A),W(e));for(var n=e.first;n!==null;){var r=n.next,s=(n.f&pe)!==0||(n.f&j)!==0;xt(n,s?t:!1),n=r}if(e.transitions!==null)for(const f of e.transitions)(f.is_global||t)&&f.in()}}function Tr(e,t){for(var n=e.nodes_start,r=e.nodes_end;n!==null;){var s=n===r?null:K(n);t.append(n),n=s}}let B=!1;function Te(e){B=e}let fe=!1;function et(e){fe=e}let _=null,N=!1;function G(e){_=e}let h=null;function se(e){h=e}let M=null;function St(e){_!==null&&(M===null?M=[e]:M.push(e))}let g=null,k=0,x=null;function bn(e){x=e}let Ot=1,ce=0,Z=ce;function tt(e){Z=e}function Dt(){return++Ot}function he(e){var t=e.f;if((t&A)!==0)return!0;if(t&w&&(e.f&=~J),(t&L)!==0){var n=e.deps;if(n!==null)for(var r=n.length,s=0;se.wv)return!0}(t&D)!==0&&T===null&&y(e,m)}return!1}function Nt(e,t,n=!0){var r=e.reactions;if(r!==null&&!M?.includes(e))for(var s=0;s{e.ac.abort(ne)}),e.ac=null);try{e.f|=Ie;var u=e.fn,v=u(),c=e.deps;if(g!==null){var d;if(Ae(e,k),c!==null&&k>0)for(c.length=k+g.length,d=0;d{z()&&(V(r),G(()=>(t===0&&(i=J(()=>e(()=>M(r)))),t+=1,()=>{B(()=>{t-=1,t===0&&(i?.(),i=void 0,M(r))})})))}}var Tt=nt|at|ht;function Rt(e,t,r){new St(e,t,r)}class St{parent;#s=!1;#e;#g=_?d:null;#i;#u;#n;#r=null;#t=null;#a=null;#h=null;#o=null;#c=0;#l=0;#d=!1;#f=null;#m=wt(()=>(this.#f=Y(this.#c),()=>{this.#f=null}));constructor(t,r,i){this.#e=t,this.#i=r,this.#u=i,this.parent=b.b,this.#s=!!this.#i.pending,this.#n=Q(()=>{if(b.b=this,_){const s=this.#g;K(),s.nodeType===L&&s.data===X?this.#E():this.#b()}else{var a=this.#v();try{this.#r=c(()=>i(a))}catch(s){this.error(s)}this.#l>0?this.#p():this.#s=!1}return()=>{this.#o?.remove()}},Tt),_&&(this.#e=d)}#b(){try{this.#r=c(()=>this.#u(this.#e))}catch(t){this.error(t)}this.#s=!1}#E(){const t=this.#i.pending;t&&(this.#t=c(()=>t(this.#e)),w.enqueue(()=>{var r=this.#v();this.#r=this.#_(()=>(w.ensure(),c(()=>this.#u(r)))),this.#l>0?this.#p():(A(this.#t,()=>{this.#t=null}),this.#s=!1)}))}#v(){var t=this.#e;return this.#s&&(this.#o=j(),this.#e.before(this.#o),t=this.#o),t}is_pending(){return this.#s||!!this.parent&&this.parent.is_pending()}has_pending_snippet(){return!!this.#i.pending}#_(t){var r=b,i=D,a=U;S(this.#n),y(this.#n),P(this.#n.ctx);try{return t()}catch(s){return Z(s),null}finally{S(r),y(i),P(a)}}#p(){const t=this.#i.pending;this.#r!==null&&(this.#h=document.createDocumentFragment(),this.#h.append(this.#o),tt(this.#r,this.#h)),this.#t===null&&(this.#t=c(()=>t(this.#e)))}#y(t){if(!this.has_pending_snippet()){this.parent&&this.parent.#y(t);return}this.#l+=t,this.#l===0&&(this.#s=!1,this.#t&&A(this.#t,()=>{this.#t=null}),this.#h&&(this.#e.before(this.#h),this.#h=null))}update_pending_count(t){this.#y(t),this.#c+=t,this.#f&&et(this.#f,this.#c)}get_effect_pending(){return this.#m(),V(this.#f)}error(t){var r=this.#i.onerror;let i=this.#i.failed;if(this.#d||!r&&!i)throw t;this.#r&&(O(this.#r),this.#r=null),this.#t&&(O(this.#t),this.#t=null),this.#a&&(O(this.#a),this.#a=null),_&&(N(this.#g),st(),N(rt()));var a=!1,s=!1;const o=()=>{if(a){ot();return}a=!0,s&&it(),w.ensure(),this.#c=0,this.#a!==null&&A(this.#a,()=>{this.#a=null}),this.#s=this.has_pending_snippet(),this.#r=this.#_(()=>(this.#d=!1,c(()=>this.#u(this.#e)))),this.#l>0?this.#p():this.#s=!1};var f=D;try{y(null),s=!0,r?.(t,o),s=!1}catch(l){q(l,this.#n&&this.#n.parent)}finally{y(f)}i&&B(()=>{this.#a=this.#_(()=>{w.ensure(),this.#d=!0;try{return c(()=>{i(this.#e,()=>t,()=>o)})}catch(l){return q(l,this.#n.parent),null}finally{this.#d=!1}})})}}const Nt=["touchstart","touchmove"];function kt(e){return Nt.includes(e)}const W=new Set,C=new Set;function Ft(e){for(var t=0;t{throw E});throw n}}finally{e.__root=t,delete e.currentTarget,y(k),S(u)}}}function xt(e,t){var r=t==null?"":typeof t=="object"?t+"":t;r!==(e.__t??=e.nodeValue)&&(e.__t=r,e.nodeValue=r+"")}function At(e,t){return $(e,t)}function Ct(e,t){F(),t.intro=t.intro??!1;const r=t.target,i=_,a=d;try{for(var s=ft(r);s&&(s.nodeType!==L||s.data!==ut);)s=ct(s);if(!s)throw x;T(!0),N(s);const o=$(e,{...t,anchor:s});return T(!1),o}catch(o){if(o instanceof Error&&o.message.split(` +`).some(f=>f.startsWith("https://svelte.dev/e/")))throw o;return o!==x&&console.warn("Failed to hydrate: ",o),t.recover===!1&&dt(),F(),_t(r),T(!1),At(e,t)}finally{T(i),N(a)}}const v=new Map;function $(e,{target:t,anchor:r,props:i={},events:a,context:s,intro:o=!0}){F();var f=new Set,l=u=>{for(var n=0;n{var u=r??t.appendChild(j());return Rt(u,{pending:()=>{}},n=>{if(s){vt({});var h=U;h.c=s}if(a&&(i.$$events=a),_&&Et(n,null),p=e(n,i)||{},_&&(b.nodes_end=d,d===null||d.nodeType!==L||d.data!==yt))throw mt(),x;s&&bt()}),()=>{for(var n of f){t.removeEventListener(n,R);var h=v.get(n);--h===0?(document.removeEventListener(n,R),v.delete(n)):v.set(n,h)}C.delete(l),u!==r&&u.parentNode?.removeChild(u)}});return I.set(p,k),p}let I=new WeakMap;function It(e,t){const r=I.get(e);return r?(I.delete(e),r(t)):Promise.resolve()}export{Ft as d,Ct as h,At as m,xt as s,It as u}; diff --git a/front-end/build/_app/immutable/chunks/DEURx20L.js b/front-end/build/_app/immutable/chunks/DEURx20L.js new file mode 100644 index 0000000..e88e6a8 --- /dev/null +++ b/front-end/build/_app/immutable/chunks/DEURx20L.js @@ -0,0 +1 @@ +import{D as I,F as w,G as g,H as N,o as T,I as y,y as A,z as B,J as Y,K as F,L as x,A as C,M as U,N as $,O as q,P as z,C as G,Q as m,R as H,S as Z,e as O,U as J,V as D,W as K,X as Q,Y as V,i as P,k as W,Z as X,_ as j,$ as ee,a0 as te,w as se,a1 as ae,a2 as re,m as ie,a3 as fe,a4 as ne,a5 as ce,a6 as de}from"./BLVsYbeJ.js";class ue{anchor;#t=new Map;#s=new Map;#e=new Map;#a=new Set;#r=!0;constructor(e,s=!0){this.anchor=e,this.#r=s}#i=()=>{var e=I;if(this.#t.has(e)){var s=this.#t.get(e),r=this.#s.get(s);if(r)w(r),this.#a.delete(s);else{var i=this.#e.get(s);i&&(this.#s.set(s,i.effect),this.#e.delete(s),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),r=i.effect)}for(const[t,n]of this.#t){if(this.#t.delete(t),t===e)break;const f=this.#e.get(n);f&&(g(f.effect),this.#e.delete(n))}for(const[t,n]of this.#s){if(t===s||this.#a.has(t))continue;const f=()=>{if(Array.from(this.#t.values()).includes(t)){var u=document.createDocumentFragment();Y(n,u),u.append(T()),this.#e.set(t,{effect:n,fragment:u})}else g(n);this.#a.delete(t),this.#s.delete(t)};this.#r||!r?(this.#a.add(t),N(n,f,!1)):f()}}};#f=e=>{this.#t.delete(e);const s=Array.from(this.#t.values());for(const[r,i]of this.#e)s.includes(r)||(g(i.effect),this.#e.delete(r))};ensure(e,s){var r=I,i=F();if(s&&!this.#s.has(e)&&!this.#e.has(e))if(i){var t=document.createDocumentFragment(),n=T();t.append(n),this.#e.set(e,{effect:y(()=>s(n)),fragment:t})}else this.#s.set(e,y(()=>s(this.anchor)));if(this.#t.set(r,e),i){for(const[f,c]of this.#s)f===e?r.skipped_effects.delete(c):r.skipped_effects.add(c);for(const[f,c]of this.#e)f===e?r.skipped_effects.delete(c.effect):r.skipped_effects.add(c.effect);r.oncommit(this.#i),r.ondiscard(this.#f)}else A&&(this.anchor=B),this.#i()}}function le(a,e,s=!1){A&&C();var r=new ue(a),i=s?U:0;function t(n,f){if(A){const u=$(a)===q;if(n===u){var c=z();G(c),r.anchor=c,m(!1),r.ensure(n,f),m(!0);return}}r.ensure(n,f)}x(()=>{var n=!1;e((f,c=!0)=>{n=!0,t(c,f)}),n||t(!1,null)},i)}function p(a,e){return a===e||a?.[D]===e}function oe(a={},e,s,r){return H(()=>{var i,t;return Z(()=>{i=t,t=[],O(()=>{a!==s(...t)&&(e(a,...t),i&&p(s(...i),a)&&e(null,...i))})}),()=>{J(()=>{t&&p(s(...t),a)&&e(null,...t)})}}),a}let b=!1;function he(a){var e=b;try{return b=!1,[a(),b]}finally{b=e}}function ve(a,e,s,r){var i=!ie||(s&fe)!==0,t=(s&re)!==0,n=(s&ce)!==0,f=r,c=!0,u=()=>(c&&(c=!1,f=n?O(r):r),f),_;if(t){var k=D in a||de in a;_=K(a,e)?.set??(k&&e in a?d=>a[e]=d:void 0)}var l,E=!1;t?[l,E]=he(()=>a[e]):l=a[e],l===void 0&&r!==void 0&&(l=u(),_&&(i&&Q(),_(l)));var h;if(i?h=()=>{var d=a[e];return d===void 0?u():(c=!0,d)}:h=()=>{var d=a[e];return d!==void 0&&(f=void 0),d===void 0?f:d},i&&(s&V)===0)return h;if(_){var L=a.$$legacy;return(function(d,v){return arguments.length>0?((!i||!v||L||E)&&_(v?h():d),d):h()})}var S=!1,o=((s&ne)!==0?W:X)(()=>(S=!1,h()));t&&P(o);var M=se;return(function(d,v){if(arguments.length>0){const R=v?P(o):i&&t?j(d):d;return ee(o,R),S=!0,f!==void 0&&(f=R),d}return te&&S||(M.f&ae)!==0?o.v:P(o)})}export{ue as B,oe as b,le as i,ve as p}; diff --git a/front-end/build/_app/immutable/chunks/DbzXHS10.js b/front-end/build/_app/immutable/chunks/DbzXHS10.js new file mode 100644 index 0000000..cf9cec4 --- /dev/null +++ b/front-end/build/_app/immutable/chunks/DbzXHS10.js @@ -0,0 +1,4 @@ +import{f as X,a as c,t as C}from"./8S9LQyo2.js";import{o as ce}from"./eD-nflhL.js";import{c as h,r as g,ai as S,p as _e,_ as q,aB as ee,t as ge,a as fe,i as l,s as p,$ as V,f as we}from"./BLVsYbeJ.js";import{s as xe,u as Se,S as B,B as O,F as pe,e as ve,I as F,A as de,i as ye,a as H,b as he,c as J,d as Le}from"./oYDKx04z.js";import{p as be,b as ue,i as Ce}from"./DEURx20L.js";import{s as Ve}from"./Bvh94p1P.js";import"./4LgZ9JC7.js";import{p as ke}from"./5qQl8jdw.js";var De=X('

');function le(R,x){var $=De(),_=h($),L=h(_);xe(L,x,"default",{}),g(_),S(2),g($),c(R,$)}const $e=[{name:"AuraFlow",type:"image",group:"AuraFlow"},{name:"Chroma",type:"image",group:"Chroma"},{name:"CogVideoX",type:"image",group:"CogVideoX"},{name:"Flux.1 S",type:"image",group:"Flux1"},{name:"Flux.1 D",type:"image",group:"Flux1"},{name:"Flux.1 Krea",type:"image",group:"FluxKrea"},{name:"Flux.1 Kontext",type:"image",group:"Flux1Kontext"},{name:"Flux.2 D",type:"image",group:"Flux2"},{name:"HiDream",type:"image",group:"HiDream"},{name:"Hunyuan 1",type:"image",group:"HyDit1"},{name:"Hunyuan Video",type:"video",group:"HyV1",engine:"hunyuan"},{name:"Illustrious",type:"image",group:"Illustrious",ecosystem:"sdxl"},{name:"Imagen4",type:"image",group:"Imagen4",hidden:!0},{name:"Kolors",type:"image",group:"Kolors"},{name:"LTXV",type:"video",group:"LTXV",engine:"lightricks"},{name:"Lumina",type:"image",group:"Lumina"},{name:"Mochi",type:"image",group:"Mochi"},{name:"Nano Banana",type:"image",group:"NanoBanana",hidden:!0},{name:"NoobAI",type:"image",group:"NoobAI",ecosystem:"sdxl"},{name:"ODOR",type:"image",group:"ODOR",hidden:!0},{name:"OpenAI",type:"image",group:"OpenAI",hidden:!0},{name:"Other",type:"image",group:"Other"},{name:"PixArt a",type:"image",group:"PixArtA"},{name:"PixArt E",type:"image",group:"PixArtE"},{name:"Playground v2",type:"image",group:"PlaygroundV2",hidden:!0},{name:"Pony",type:"image",group:"Pony",ecosystem:"sdxl"},{name:"Pony V7",type:"image",group:"PonyV7",ecosystem:"auraflow"},{name:"Qwen",type:"image",group:"Qwen",ecosystem:"qwen"},{name:"Stable Cascade",type:"image",group:"SCascade",hidden:!0},{name:"SD 1.4",type:"image",group:"SD1"},{name:"SD 1.5",type:"image",group:"SD1"},{name:"SD 1.5 LCM",type:"image",group:"SD1"},{name:"SD 1.5 Hyper",type:"image",group:"SD1"},{name:"SD 2.0",type:"image",group:"SD2"},{name:"SD 2.0 768",type:"image",group:"SD2",hidden:!0},{name:"SD 2.1",type:"image",group:"SD2"},{name:"SD 2.1 768",type:"image",group:"SD2",hidden:!0},{name:"SD 2.1 Unclip",type:"image",group:"SD2",hidden:!0},{name:"SD 3",type:"image",group:"SD3",hidden:!0},{name:"SD 3.5",type:"image",group:"SD3",hidden:!0},{name:"SD 3.5 Large",type:"image",group:"SD3",hidden:!0},{name:"SD 3.5 Large Turbo",type:"image",group:"SD3",hidden:!0},{name:"SD 3.5 Medium",type:"image",group:"SD3_5M",ecosystem:"sd3",hidden:!0},{name:"Sora 2",type:"video",group:"Sora2",hidden:!0},{name:"SDXL 0.9",type:"image",group:"SDXL",hidden:!0},{name:"SDXL 1.0",type:"image",group:"SDXL"},{name:"SDXL 1.0 LCM",type:"image",group:"SDXL",hidden:!0},{name:"SDXL Lightning",type:"image",group:"SDXL"},{name:"SDXL Hyper",type:"image",group:"SDXL"},{name:"SDXL Turbo",type:"image",group:"SDXL",hidden:!0},{name:"SDXL Distilled",type:"image",group:"SDXLDistilled",hidden:!0},{name:"Seedream",type:"image",group:"Seedream",family:"Bytedance",hidden:!0},{name:"SVD",type:"image",group:"SVD",hidden:!0},{name:"SVD XT",type:"image",group:"SVD",hidden:!0},{name:"Veo 3",type:"video",group:"Veo3",hidden:!0,engine:"veo3"},{name:"Wan Video",type:"video",group:"WanVideo",hidden:!0,engine:"wan"},{name:"Wan Video 1.3B t2v",type:"video",group:"WanVideo1_3B_T2V",engine:"wan"},{name:"Wan Video 14B t2v",type:"video",group:"WanVideo14B_T2V",engine:"wan"},{name:"Wan Video 14B i2v 480p",type:"video",group:"WanVideo14B_I2V_480p",engine:"wan"},{name:"Wan Video 14B i2v 720p",type:"video",group:"WanVideo14B_I2V_720p",engine:"wan"},{name:"Wan Video 2.2 TI2V-5B",type:"video",group:"WanVideo-22-TI2V-5B",engine:"wan"},{name:"Wan Video 2.2 I2V-A14B",type:"video",group:"WanVideo-22-I2V-A14B",engine:"wan"},{name:"Wan Video 2.2 T2V-A14B",type:"video",group:"WanVideo-22-T2V-A14B",engine:"wan"},{name:"Wan Video 2.5 T2V",type:"video",group:"WanVideo-25-T2V",engine:"wan"},{name:"Wan Video 2.5 I2V",type:"video",group:"WanVideo-25-I2V",engine:"wan"},{name:"ZImageTurbo",type:"image",group:"ZImageTurbo",ecosystem:"zimageturbo"}],Me=[{name:"txt2img",value:"1"},{name:"img2img",value:"2"},{name:"inpainting",value:"3"},{name:"workflow",value:"4"},{name:"vid2vid",value:"5"},{name:"txt2vid",value:"6"},{name:"img2vid",value:"7"},{name:"controlnet",value:"8"}];var Ee=X('

');function Ae(R,x){_e(x,!0);let $=be(x,"current_route",3,""),_=q(Se.tags.map(e=>({name:e.name,value:`${e.id}`})).sort((e,d)=>e.name.localeCompare(d.name))),L,b,I=ee(q(x.media.split(",").map(e=>e.toLowerCase()))),k=q($e.filter(e=>l(I).includes(e.type.toLowerCase())).sort((e,d)=>e.name.localeCompare(d.name)).map(e=>({name:e.name,value:e.name}))),N=q(Me);const z=[{name:"Day",value:""},{name:"Week",value:""},{name:"Month",value:""},{name:"Year",value:""},{name:"All Time",value:""}],te=[{name:"Most Reactions",value:""},{name:"Most Comments",value:""},{name:"Most Collected",value:""},{name:"Newest",value:""},{name:"Oldest",value:""}],ae=e=>{if(V(I,Array.from(b.querySelectorAll('input[name="mediaType"]:checked')).map(u=>u.value),!0),e){const u=e.target.name.trim();if(u==="openPopUpButton"||u.length<1||e.target.closest(".search-container"))return}pe.filters={};const d=Array.from(b.querySelectorAll("input"));new Set(d.filter(u=>u.checked).map(u=>u.name).filter(u=>u.length>0)).forEach(u=>{const W=Array.from(b.querySelectorAll(`input[name="${u}"]:checked`)).map(se=>se.value);pe.update_filter(u,W)})};ce(()=>{ae(null),b.addEventListener("change",ae),L.querySelector(".clear-button > *")?.addEventListener("click",()=>{L.querySelectorAll("input").forEach(e=>e.checked=!1),pe.filters={}}),window.addEventListener("click",e=>{if(!b)return;const d=e.target,i=b.querySelector('input[name="openPopUpButton"]');i.closest(".filters-wrapper")?.contains(d)||(i.checked=!1)})});var M=Ee(),E=h(M),re=h(E,!0);g(E);var U=p(E,4),G=h(U);B(G,{enable_search:!1,selected:["Most Reactions"],maxContent:!0,singleOption:!0,empty_name:"Sort by",icon:2,name:"sort",selection_name:"sort",get data_options(){return te}});var K=p(G,2);B(K,{enable_search:!1,selected:["Week"],singleOption:!0,maxContent:!0,empty_name:"Time Period",icon:2,name:"timePeriod",selection_name:"Period",get data_options(){return z}});var P=p(K,2),ne=h(P);B(ne,{enable_search:!1,maxContent:!0,empty_name:"Media Type",get selected(){return l(I)},icon:2,name:"mediaType",selection_name:"Media",data_options:[{name:"Image",value:"Image"},{name:"Video",value:"Video"}]}),g(P);var D=p(P,2),j=h(D),oe=h(j);O(oe,{hideMarker:!0,type:"checkbox",name:"openPopUpButton",icon:4,active_route:"_",get current_route(){return $()},no_bg:!0,has_dropdown:!0,children:(e,d)=>{S();var i=C("Filters");c(e,i)},$$slots:{default:!0}});var Z=p(oe,2),t=h(Z);le(t,{children:(e,d)=>{S();var i=C("Base model");c(e,i)},$$slots:{default:!0}});var s=p(t,2),r=h(s);B(r,{select_list_cards:!0,empty_name:"Show all",icon:2,name:"baseModel",selection_name:"Base Models",get data_options(){return k}}),g(s);var m=p(s,2);le(m,{children:(e,d)=>{S();var i=C("Tags");c(e,i)},$$slots:{default:!0}});var n=p(m,2),a=h(n);B(a,{select_list_cards:!0,empty_name:"Show all",icon:2,name:"tags",selection_name:"Tags",get data_options(){return _}}),g(n);var o=p(n,2);le(o,{children:(e,d)=>{S();var i=C("Techniques");c(e,i)},$$slots:{default:!0}});var v=p(o,2),w=h(v);B(w,{select_list_cards:!0,empty_name:"Show all",icon:2,name:"techniques",selection_name:"Techniques",get data_options(){return N}}),g(v);var f=p(v,2);le(f,{children:(e,d)=>{S();var i=C("Modifiers");c(e,i)},$$slots:{default:!0}});var Q=p(f,2),A=h(Q);O(A,{pill:!0,name:"Show NSFW",value:"Show NSFW",type:"radioCheckbox",onclick:()=>{},icon:0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(e,d)=>{S();var i=C("Show NSFW");c(e,i)},$$slots:{default:!0}});var ie=p(A,2);O(ie,{pill:!0,name:"Metadata only",value:"Metadata only",type:"radioCheckbox",onclick:()=>{},icon:0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(e,d)=>{S();var i=C("Metadata only");c(e,i)},$$slots:{default:!0}});var me=p(ie,2);O(me,{pill:!0,name:"Made On-site",value:"Made On-site",type:"radioCheckbox",onclick:()=>{},icon:0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(e,d)=>{S();var i=C("Made On-site");c(e,i)},$$slots:{default:!0}});var Y=p(me,2);O(Y,{pill:!0,name:"Originals Only",value:"Originals Only",type:"radioCheckbox",onclick:()=>{},icon:0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(e,d)=>{S();var i=C("Originals Only");c(e,i)},$$slots:{default:!0}});var y=p(Y,2);O(y,{pill:!0,name:"Remixes Only",value:"Remixes Only",type:"radioCheckbox",onclick:()=>{},icon:0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(e,d)=>{S();var i=C("Remixes Only");c(e,i)},$$slots:{default:!0}}),g(Q),g(Z),ue(Z,e=>L=e,()=>L),g(j),g(D),g(U),g(M),ue(M,e=>b=e,()=>b),ge(()=>Ve(re,x.page_title)),c(R,M),fe()}var Ie=X('
'),Te=X('
'),Pe=X('

Loading data

'),We=X('
',1);function ze(R,x){_e(x,!0);let $=370,_=ee(4),L=[],b=q(ke.url.pathname),I=4,T=ee(q({})),k=ee(!1),N=ee(1500),z,te=!0;const ae=(t,s)=>{t.forEach(async r=>{if(r.isIntersecting){if(l(k))return;if(V(k,!0),te){te=!1,V(k,!1);return}await F.load_next_images(J.token)}})},M=()=>{F.cursor=null,F.images=[],V(T,[],!0),F.load_next_images(J.token)};ce(async()=>{M();const t=()=>{V(N,window.innerWidth,!0),I=l(_),V(_,Math.floor(l(N)/$),!0),l(_)!==I&&window.dispatchEvent(new CustomEvent("UpdatedImagesList"))};t(),window.addEventListener("resize",t),window.addEventListener("UpdatedFilters",M),window.addEventListener("StartedLoadingImages",()=>V(k,!0)),window.addEventListener("UpdatedImagesList",()=>{V(k,!1);let r=F.images;V(T,{},!0);for(let n=0;n{l(T)[m].push(n),m+=1,m>=l(_)&&(m=0)})}),new IntersectionObserver(ae,{root:null,rootMargin:"0px",threshold:0}).observe(z)});let E;const re=async t=>{const s=document.querySelector(`.image-wrapper[data-id="${t}"]`);if(!s)return;let r=await fetch(de.collections_with_media(J.token,t));r.status!==200&&alert("Error getting collections of "+t);let n=(await r.json()).map(o=>o.collectionId);L[t]=n;const a=s.querySelector(".loader");a&&a.remove(),G(t)},U=async(t,s=!0)=>{const r=document.querySelector(`.image-wrapper[data-id="${t}"]`);if(!r)return;let m=r.querySelector(".loader");m&&m.remove();const n=r.querySelector(".fastActions");n&&n.remove();let a=K(20,3);r.appendChild(a),s?await fetch(de.favorite_media(J.token,t)):await fetch(de.unfavorite_media(J.token,t)),re(t)},G=t=>{const s=document.querySelector(`.image-wrapper[data-id="${t}"]`);if(!s)return;const r=s.querySelector(".fastActions");r&&r.remove();const m=Se.collections.find(f=>f.name==="comfyui_civit_favorites").id||-1,n=L[t],a=s.querySelector(".fastActions");a&&a.remove();const o=document.createElement("div");o.classList.add("fastActions");let v=document.createElement("span");v.classList.add("favoriteIcon"),v.innerHTML='',n.includes(m)?(v.classList.add("favorited"),v.addEventListener("click",()=>U(t,!1))):v.addEventListener("click",()=>U(t));let w=document.createElement("span");w.classList.add("Collections"),w.innerHTML='',w.addEventListener("click",()=>window.dispatchEvent(new CustomEvent("openCollectionSelector",{detail:{id:t,media_type:"Image"}}))),o.appendChild(v),o.appendChild(w),s.appendChild(o)},K=(t,s)=>{let r=document.createElement("span");return r.classList.add("loader"),r.style.setProperty("width",`${t}px`),r.style.setProperty("height",`${t}px`),r.style.setProperty("--tickness",`${s}px`),r};ce(()=>{const t=document.createElement("div");t.classList.add("errorMsg"),t.innerHTML=` + +

Failed to load image

+ `;const s=new IntersectionObserver((m,n)=>{m.forEach(a=>{const o=a.target;if(!a.isIntersecting){o.innerHTML="";return}const v=u=>{o.classList.remove("skeleton-loading"),o.classList.add("failedToLoad"),o.innerHTML="";let W=t.cloneNode(!0);W.querySelector("h2").textContent=`Failed to load ${u}`,o.appendChild(W)},w=parseInt(o.getAttribute("data-id"));o.getAttribute("data-url");const f=o.getAttribute("data-media"),Q=Number(o.getAttribute("data-mediaIndex")),A=F.images.find(u=>u.index===Q),ie=o.getAttribute("data-uuid");let Y=`${`${de.endpoint}/media_proxy?id=${ie}`}&media_type=${f}`,y;if(f=="image")y=document.createElement("img"),y.src=Y,y.loading="lazy";else{y=document.createElement("video"),y.loop=!0,y.muted=!0,y.autoplay=!0;let u=document.createElement("source");u.src=Y,u.type="video/webm",y.appendChild(u)}y.addEventListener("loadeddata",()=>o.classList.remove("skeleton-loading")),y.addEventListener("load",()=>o.classList.remove("skeleton-loading")),y.addEventListener("error",()=>v(f)),y.querySelector("source")?.addEventListener("error",()=>v(f));let e=K(20,3),d=document.createElement("div");d.classList.add("reactionsContainer");const i=(u,W)=>{let se=document.createElement("span");return se.innerHTML=`${W} ${u}`,se};d.appendChild(i(A.stats.likeCountAllTime,"👍")),d.appendChild(i(A.stats.heartCountAllTime,"❤️")),d.appendChild(i(A.stats.laughCountAllTime,"😂")),d.appendChild(i(A.stats.cryCountAllTime,"😢")),o.appendChild(y),o.appendChild(d),L[w]?G(w):o.appendChild(e)})},{root:null,rootMargin:"0px",threshold:0});new MutationObserver(m=>{m.forEach(n=>{n.addedNodes.forEach(a=>{if(a.nodeName!=="#text"){if(!a.classList.contains("image-wrapper")||a.classList.contains("registered"))return;a.classList.add("registered");const o=a.getAttribute("data-id"),v=a.getAttribute("data-creator-id"),w=a.getAttribute("data-uuid");a.addEventListener("click",f=>{f.target.closest(".fastActions")||window.dispatchEvent(new CustomEvent("loadMediaVisualizer",{detail:{id:o,creator_id:v,image_uuid:w}}))}),a.addEventListener("pointerenter",async f=>{re(o)},{once:!0}),s.observe(a)}})})}).observe(E,{childList:!0,subtree:!0})});var P=We(),ne=we(P);Ae(ne,{get current_route(){return b},get media(){return x.media},get page_title(){return x.page_title}});var D=p(ne,2);ve(D,21,()=>Array.from({length:l(_)},(t,s)=>s),ye,(t,s)=>{var r=Te();ve(r,21,()=>l(T)[l(s)],ye,(m,n)=>{var a=Ie();ge(()=>{H(a,"data-creator-id",l(n).creatorId),H(a,"data-id",l(n).id),H(a,"data-uuid",l(n).uuid),H(a,"data-mediaindex",l(n).index),H(a,"data-media",l(n).media_type),H(a,"data-url",l(n).url),he(a,`--aspectRation: ${l(n).width/l(n).height}`)}),c(m,a)}),g(r),c(t,r)}),g(D),ue(D,t=>E=t,()=>E);var j=p(D,2);ue(j,t=>z=t,()=>z);var oe=p(j,2);{var Z=t=>{var s=Pe(),r=h(s);Le(r,{size:35,tickness:3}),S(2),g(s),c(t,s)};Ce(oe,t=>{l(k)&&t(Z)})}ge(()=>he(D,`--screenWidth: ${l(N)??""}; --columns: ${l(_)??""}`)),c(R,P),fe()}export{ze as M}; diff --git a/front-end/build/_app/immutable/chunks/eD-nflhL.js b/front-end/build/_app/immutable/chunks/eD-nflhL.js new file mode 100644 index 0000000..774e9e7 --- /dev/null +++ b/front-end/build/_app/immutable/chunks/eD-nflhL.js @@ -0,0 +1 @@ +import{l as o,d as l,b as t,m as a,e as c}from"./BLVsYbeJ.js";function f(e){t===null&&o(),a&&t.l!==null?u(t).m.push(e):l(()=>{const n=c(e);if(typeof n=="function")return n})}function u(e){var n=e.l;return n.u??={a:[],b:[],m:[]}}export{f as o}; diff --git a/front-end/build/_app/immutable/chunks/f4row_AD.js b/front-end/build/_app/immutable/chunks/f4row_AD.js new file mode 100644 index 0000000..3ff488b --- /dev/null +++ b/front-end/build/_app/immutable/chunks/f4row_AD.js @@ -0,0 +1 @@ +import{b as d,u as g,d as c,e as b,g as l,h as m,i as p,j as h,k}from"./BLVsYbeJ.js";function x(n=!1){const s=d,e=s.l.u;if(!e)return;let r=()=>h(s.s);if(n){let o=0,t={};const _=k(()=>{let i=!1;const a=s.s;for(const f in a)a[f]!==t[f]&&(t[f]=a[f],i=!0);return i&&o++,o});r=()=>p(_)}e.b.length&&g(()=>{u(s,r),l(e.b)}),c(()=>{const o=b(()=>e.m.map(m));return()=>{for(const t of o)typeof t=="function"&&t()}}),e.a.length&&c(()=>{u(s,r),l(e.a)})}function u(n,s){if(n.l.s)for(const e of n.l.s)p(e);s()}export{x as i}; diff --git a/front-end/build/_app/immutable/chunks/oYDKx04z.js b/front-end/build/_app/immutable/chunks/oYDKx04z.js new file mode 100644 index 0000000..9e18d3d --- /dev/null +++ b/front-end/build/_app/immutable/chunks/oYDKx04z.js @@ -0,0 +1,2 @@ +import{o as Fe,L as yt,aF as nt,C as Ne,y as G,q as At,A as it,i as p,Z as Mt,N as St,O as Et,P as Ke,Q as Ie,z as Ee,aa as Lt,ax as Rt,ah as Ye,D as Ot,I as Ue,K as Vt,aA as Tt,a8 as Qe,av as st,aG as jt,aH as ot,aI as lt,F as vt,H as zt,aJ as Ht,aK as Be,U as dt,aL as Nt,ar as It,aM as Bt,aN as Dt,au as Pt,G as Ft,aO as Ut,aP as Zt,aQ as Gt,aR as qt,_ as be,p as Ze,aB as Ce,c as H,s as q,r as j,t as W,a as Ge,$ as oe,f as le,ai as De,aD as we}from"./BLVsYbeJ.js";import{f as O,a as _,d as ne,c as ve,t as Wt}from"./8S9LQyo2.js";import{p as u,i as S,b as ce}from"./DEURx20L.js";import{o as qe}from"./eD-nflhL.js";import{s as Re,d as Kt}from"./Bvh94p1P.js";function Je(r,e){return e}function Yt(r,e,t){for(var a=[],n=e.length,i=0;i{var s=a.length===0&&t!==null;if(s){var h=t,l=h.parentNode;Pt(l),l.append(h),r.items.clear(),X(r,e[0].prev,e[n-1].next)}for(var g=0;g{var k=t();return jt(k)?k:k==null?[]:st(k)}),C,o=!0;function v(){Qt(x,C,s,e,a),m!==null&&(C.length===0?(m.fragment?(s.before(m.fragment),m.fragment=null):vt(m.effect),w.first=m.effect):zt(m.effect,()=>{m=null}))}var w=yt(()=>{C=p(V);var k=C.length;let L=!1;if(G){var P=St(s)===Et;P!==(k===0)&&(s=Ke(),Ne(s),Ie(!1),L=!0)}for(var T=new Set,M=Ot,F=null,K=Vt(),z=0;zi(s))};else{var de=document.createDocumentFragment(),Y=Fe();de.append(Y),m={fragment:de,effect:Ue(()=>i(Y))}}if(G&&k>0&&Ne(Ke()),!o)if(K){for(const[A,R]of h)T.has(A)||M.skipped_effects.add(R.e);M.oncommit(v),M.ondiscard(()=>{})}else v();L&&Ie(!0),p(V)}),x={effect:w,items:h,first:l};o=!1,G&&(s=Ee)}function Qt(r,e,t,a,n){var i=(a&Nt)!==0,s=e.length,h=r.items,l=r.first,g,f=null,E,b=[],m=[],V,C,o,v;if(i)for(v=0;vs;if(l!==null||g!==void 0){for(var M=g===void 0?[]:st(g);l!==null;)(l.e.f&Be)===0&&M.push(l),l=l.next;var F=M.length;if(T=h.size-F>s,F>0){var K=(a&nt)!==0&&s===0?t:null;if(i){for(v=0;v{if(E!==void 0)for(o of E)o.a?.apply()})}function Jt(r,e,t,a,n,i,s,h){var l=(s&ot)!==0,g=(s&Ht)===0,f=l?g?Tt(t,!1,!1):Qe(t):t,E=(s<)===0?n:Qe(n),b={i:E,v:f,k:a,a:null,e:null,o:!1,prev:e,next:null};try{if(r===null){var m=document.createDocumentFragment();m.append(r=Fe())}return b.e=Ue(()=>i(r,f,E,h)),e!==null&&(e.next=b),b}finally{}}function Pe(r,e,t){for(var a=r.next?r.next.e.nodes_start:t,n=e?e.e.nodes_start:t,i=r.e.nodes_start;i!==null&&i!==a;){var s=It(i);n.before(i),i=s}}function X(r,e,t){e===null?(r.first=t,r.effect.first=t&&t.e):(e.e.next&&(e.e.next.prev=null),e.next=t,e.e.next=t&&t.e),t!==null&&(t.e.prev&&(t.e.prev.next=null),t.prev=e,t.e.prev=e&&e.e)}let $e=!1;function Xt(){$e||($e=!0,document.addEventListener("reset",r=>{Promise.resolve().then(()=>{if(!r.defaultPrevented)for(const e of r.target.elements)e.__on_r?.()})},{capture:!0}))}function $t(r,e,t,a,n){G&&it();var i=e.$$slots?.[t],s=!1;i===!0&&(i=e.children,s=!0),i===void 0||i(r,s?()=>a:a)}const et=[...` +\r\f \v\uFEFF`];function er(r,e,t){var a=r==null?"":""+r;if(e&&(a=a?a+" "+e:e),t){for(var n in t)if(t[n])a=a?a+" "+n:n;else if(a.length)for(var i=n.length,s=0;(s=a.indexOf(n,s))>=0;){var h=s+i;(s===0||et.includes(a[s-1]))&&(h===a.length||et.includes(a[h]))?a=(s===0?"":a.substring(0,s))+a.substring(h+1):s=h}}return a===""?null:a}function tr(r,e){return r==null?null:String(r)}function pe(r,e,t,a,n,i){var s=r.__className;if(G||s!==t||s===void 0){var h=er(t,a,i);(!G||h!==r.getAttribute("class"))&&(h==null?r.removeAttribute("class"):r.className=h),r.__className=t}else if(i&&n!==i)for(var l in i){var g=!!i[l];(n==null||g!==!!n[l])&&r.classList.toggle(l,g)}return i}function Oe(r,e,t,a){var n=r.__style;if(G||n!==e){var i=tr(e);(!G||i!==r.getAttribute("style"))&&(i==null?r.removeAttribute("style"):r.style.cssText=i),r.__style=e}return a}const rr=Symbol("is custom element"),ar=Symbol("is html");function ct(r){if(G){var e=!1,t=()=>{if(!e){if(e=!0,r.hasAttribute("value")){var a=r.value;fe(r,"value",null),r.value=a}if(r.hasAttribute("checked")){var n=r.checked;fe(r,"checked",null),r.checked=n}}};r.__on_r=t,dt(t),Xt()}}function ft(r,e){var t=We(r);t.value===(t.value=e??void 0)||r.value===e&&(e!==0||r.nodeName!=="PROGRESS")||(r.value=e??"")}function nr(r,e){var t=We(r);t.checked!==(t.checked=e??void 0)&&(r.checked=e)}function fe(r,e,t,a){var n=We(r);G&&(n[e]=r.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&r.nodeName==="LINK")||n[e]!==(n[e]=t)&&(e==="loading"&&(r[Ut]=t),t==null?r.removeAttribute(e):typeof t!="string"&&ir(r).includes(e)?r[e]=t:r.setAttribute(e,t))}function We(r){return r.__attributes??={[rr]:r.nodeName.includes("-"),[ar]:r.namespaceURI===Zt}}var tt=new Map;function ir(r){var e=r.getAttribute("is")||r.nodeName,t=tt.get(e);if(t)return t;tt.set(e,t=[]);for(var a,n=r,i=Element.prototype;i!==n;){a=qt(n);for(var s in a)a[s].set&&t.push(s);n=Gt(n)}return t}class ut{static endpoint="http://127.0.0.1:3090";static user_data(e){return`${this.endpoint}/user_data?token=${e}`}static infinite_images(e,t){return`${this.endpoint}/infinite_images?${t}&token=${e}`}static popular_tags(e){return`${this.endpoint}/tags_with_id?&token=${e}`}static media_data(e,t,a){return`${this.endpoint}/media_data/${a}/${t}?&token=${e}`}static get_collections(e){return`${this.endpoint}/get_collections?&token=${e}`}static get_collections_by_media_type(e,t){return`${this.endpoint}/get_collections_by_media?&token=${e}&media_type=${t}`}static update_media_collections(e,t,a,n){return`${this.endpoint}/update_collections/${t}?&token=${e}&add=${a.join(",")}&remove=${n.join(",")}`}static collections_with_media(e,t){return`${this.endpoint}/collection_with_media/${t}?&token=${e}`}static favorite_media(e,t){return`${this.endpoint}/favorite_media/${t}?token=${e}`}static unfavorite_media(e,t){return`${this.endpoint}/unfavorite_media/${t}?token=${e}`}}const sr=be({}),Le=be({loading:!0,error:""}),rt=be({token:""}),Ur=async r=>{Le.loading=!0,Le.error="",rt.token="";let e=await fetch(ut.user_data(r));if(Le.loading=!1,e.status!=200){Le.error="Token is not valid",at("user_token",r,-3);return}let t=await e.json();rt.token=r;for(const a of Object.keys(t))sr[a]=t[a];at("user_token",r,61),window.dispatchEvent(new CustomEvent("FinishloadingUser"))};function at(r,e,t=7){const a=new Date(Date.now()+t*24*60*60*1e3).toUTCString();document.cookie=`${encodeURIComponent(r)}=${encodeURIComponent(e)}; expires=${a}; path=/`}function Zr(r){const e=encodeURIComponent(r)+"=",t=document.cookie.split(";");for(let a of t)if(a=a.trim(),a.startsWith(e))return decodeURIComponent(a.substring(e.length));return null}var or=O('
'),lr=O(''),vr=O('
');function dr(r,e){Ze(e,!0);let t=u(e,"icon",3,0),a=u(e,"icon_pos",3,"left"),n=u(e,"button_text",3,"Login"),i=u(e,"on_change",3,v=>{}),s=u(e,"btn_onclick",3,v=>{}),h=u(e,"placeholder",3,""),l=Ce(void 0),g;qe(()=>{p(l)&&(p(l).addEventListener("click",()=>s()()(g.value)),g.addEventListener("keypress",v=>{v.key=="Enter"&&p(l)?.click()})),g.addEventListener("input",()=>{typeof i()()=="function"&&i()()(g.value)})});var f=vr(),E=H(f),b=H(E);{var m=v=>{var w=or();_(v,w)};S(b,v=>{t()>0&&v(m)})}var V=q(b,2);ce(V,v=>g=v,()=>g),j(E);var C=q(E,2);{var o=v=>{var w=lr(),x=H(w,!0);j(w),ce(w,k=>oe(l,k),()=>p(l)),W(()=>Re(x,n())),_(v,w)};S(C,v=>{n().length>0&&v(o)})}j(f),W(()=>{pe(f,1,`input-wrapper ${t()>0?"icon":""} ${a()??""}`,"svelte-1v6743z"),fe(V,"placeholder",h())}),_(r,f),Ge()}var cr=O('');function Gr(r,e){let t=u(e,"size",3,48),a=u(e,"tickness",3,4);var n=cr();W(()=>Oe(n,`width: ${t()??""}px; height: ${t()??""}px; --tickness: ${a()??""}px`)),_(r,n)}var fr=ne(''),ur=ne(''),_r=ne(''),hr=ne(''),gr=ne(''),pr=ne(''),mr=ne(''),kr=ne(''),wr=O('
'),Cr=O("
"),br=O("
"),xr=O('
'),yr=O('');function Ar(r,e){Ze(e,!0);let t=u(e,"icon",3,0),a=u(e,"current_route",3,""),n=u(e,"active_route",3,"_"),i=u(e,"no_bg",3,!1),s=u(e,"has_dropdown",3,!1),h=u(e,"dropdown_is_open",3,!1),l=u(e,"fullWidth",3,void 0),g=u(e,"onclick",3,()=>{}),f=u(e,"hoverColor",3,"transparent"),E=u(e,"bgHover",3,!1),b=u(e,"extraPadding",3,!1),m=u(e,"name",3,""),V=u(e,"value",3,""),C=u(e,"type",7,"text"),o=u(e,"checked",3,!1),v=u(e,"pill",3,!1),w=u(e,"hideMarker",3,!1),x=C(),k;qe(()=>{k.addEventListener("click",()=>g()()),C()==="radioCheckbox"&&C("checkbox")});var L=yr();let P;var T=H(L);ct(T);var M=q(T,2);{var F=A=>{var R=wr(),U=H(R);{var Te=se=>{var ee=fr();_(se,ee)},xe=se=>{var ee=ve(),me=le(ee);{var ye=ae=>{var ue=ur();_(ae,ue)},je=ae=>{var ue=ve(),ze=le(ue);{var d=y=>{var I=_r();_(y,I)},c=y=>{var I=ve(),Z=le(I);{var B=D=>{var Q=hr();_(D,Q)},te=D=>{var Q=ve(),J=le(Q);{var ke=_e=>{var Ae=gr();_(_e,Ae)},_t=_e=>{var Ae=ve(),ht=le(Ae);{var gt=he=>{var Me=pr();_(he,Me)},pt=he=>{var Me=ve(),mt=le(Me);{var kt=ge=>{var Se=mr();_(ge,Se)},wt=ge=>{var Se=ve(),Ct=le(Se);{var bt=He=>{var xt=kr();_(He,xt)};S(Ct,He=>{t()==8&&He(bt)},!0)}_(ge,Se)};S(mt,ge=>{t()==7?ge(kt):ge(wt,!1)},!0)}_(he,Me)};S(ht,he=>{t()==6?he(gt):he(pt,!1)},!0)}_(_e,Ae)};S(J,_e=>{t()==5?_e(ke):_e(_t,!1)},!0)}_(D,Q)};S(Z,D=>{t()==4?D(B):D(te,!1)},!0)}_(y,I)};S(ze,y=>{t()==3?y(d):y(c,!1)},!0)}_(ae,ue)};S(me,ae=>{t()==2?ae(ye):ae(je,!1)},!0)}_(se,ee)};S(U,se=>{t()==1?se(Te):se(xe,!1)})}j(R),_(A,R)};S(M,A=>{t()>0&&A(F)})}var K=q(M,2);{var z=A=>{var R=Cr();let U;W(()=>U=pe(R,1,"checkboxMarker svelte-rmjz1s",null,U,{hideMarker:w()})),_(A,R)};S(K,A=>{C()=="checkbox"&&x!=="radioCheckbox"&&A(z)})}var ie=q(K,2);$t(ie,e,"default",{});var $=q(ie,2);{var N=A=>{var R=br();let U;W(()=>U=pe(R,1,"checkboxMarker radio svelte-rmjz1s",null,U,{hideMarker:w()})),_(A,R)};S($,A=>{(C()=="radio"||x==="radioCheckbox")&&A(N)})}var de=q($,2);{var Y=A=>{var R=xr();let U;W(()=>U=pe(R,1,"icon small dropdown svelte-rmjz1s",null,U,{dropdown_is_open:h()})),_(A,R)};S(de,A=>{s()&&A(Y)})}j(L),ce(L,A=>k=A,()=>k),W(()=>{P=pe(L,1,`button-wrapper ${x==="radioCheckbox"?"radio":""}`,"svelte-rmjz1s",P,{pill:v(),active:n()===a(),extraPadding:b(),bgHover:E(),no_bg:i(),fullWidth:l()}),Oe(L,`--bgHover: ${f()??""}`),nr(T,o()),fe(T,"type",C()),fe(T,"name",m()),ft(T,V())}),_(r,L),Ge()}class Ve{static filters={};static update_filter(e,t){Ve.filters[e]=t.join(","),Sr()}static debounce(e,t=800){let a;return function(...n){a&&clearTimeout(a),a=setTimeout(()=>{e.apply(this,n)},t)}}}const Mr=()=>{window.dispatchEvent(new CustomEvent("UpdatedFilters"))},Sr=Ve.debounce(Mr);class re{static images=[];static counter=0;static cursor=null;static isFetching=!1;static async load_next_images(e){if(re.isFetching)return;re.isFetching=!0,window.dispatchEvent(new CustomEvent("StartedLoadingImages"));let t=Ve.filters,a=(t.timePeriod||"Day").replace("All Time","AllTime"),n=t.sort||"Most Reactions",i=Array.from((t.baseModel||"").split(",")).filter(w=>w.length>0),s=Array.from((t.mediaType||"").split(",")).filter(w=>w.length>0),h=t["Show NSFW"]?31:1,l=Array.from((t.techniques||"").split(",")).filter(w=>w.length>0).map(w=>parseInt(w)).join(","),g=!!t["Metadata only"],f=!!t["Made On-site"],E=!!t["Originals Only"],b=!!t["Remixes Only"],m=Array.from((t.tags||"").split(",")).filter(w=>w.length>0),V=`period=${a}&tags=${m.join(",")}&originalsOnly=${E}&remixesOnly=${b}&madeOnsite=${f}&requiringMeta=${g}&sort=${n}&baseModel=${i}&mediaType=${s}&cursor=${re.cursor}&browsingLevel=${h}&techniques=${l}`;const C=await fetch(`${ut.infinite_images(e,V)}`);re.isFetching=!1;const o=await C.json();re.cursor=o[1].replaceAll('"',"");let v=o[0];for(let w in v){const x=v[w];if(!re.images.includes(x.img_url)){const k={creatorId:x.user.id,uuid:x.url,id:x.id,url:x.img_url,index:re.counter,width:x.width,height:x.height,media_type:x.type,stats:x.stats};re.counter+=1,re.images.push(k)}}window.dispatchEvent(new CustomEvent("UpdatedImagesList"))}}var Er=ne(''),Lr=O(''),Rr=O('
'),Or=O(' '),Vr=O('
'),Tr=O('
Clear all
'),jr=O('
'),zr=O("
  • "),Hr=O('

    No results found.

    '),Nr=O('
    ');function qr(r,e){Ze(e,!0);let t=u(e,"icon",3,1),a=u(e,"onlySelect",3,!1),n=u(e,"icon_pos",3,"right");u(e,"btn_onclick",3,d=>{});let i=u(e,"empty_name",7,""),s=u(e,"name",3,""),h=u(e,"selection_name",3,""),l=u(e,"data_options",19,()=>[]),g=u(e,"maxContent",3,void 0),f=u(e,"singleOption",3,!1),E=u(e,"enable_search",3,!0),b=u(e,"selected",19,()=>[]),m=u(e,"select_list_cards",3,!1),V,C,o;const v=be(l());let w=16,x=500,k=Ce(500),L,P=Ce(!1),T=Ce(0),M=Ce(be([])),F=we(()=>p(T)>1?`${p(T)} ${h()}`:i()),K=we(()=>v.map(d=>d.name)),z=i(),ie=b().map(d=>d.toLowerCase());const $=()=>{let d=Array.from(C.querySelectorAll("input:checked"));oe(M,d.map(c=>c.closest("li")?.getAttribute("data-itemname")||c.value),!0),oe(T,d.length,!0),(f()||d.length===1)&&d.length>0?i(d[0].value):i(z)},N=d=>{oe(K,v.filter(c=>c.name.toLowerCase().includes(d)).map(c=>c.name))},de=()=>{if(!o)return;const d=o.getBoundingClientRect();oe(k,x);let c=window.innerHeight-(d.top+d.height)-w;c{C.addEventListener("change",()=>{$()}),window.addEventListener("click",c=>{L?.contains(c.target)&&c.target.getAttribute("data-clearbtn")!==null&&C.querySelectorAll("input[type='checkbox']:checked").forEach(y=>y.click()),!(L&&L.contains(c.target))&&oe(P,!1)}),o.addEventListener("click",c=>{c.target.tagName==="LABEL"&&de()}),new ResizeObserver(c=>{for(let y of c)de()}).observe(o),$()});var Y=Nr();let A;var R=H(Y),U=H(R);{var Te=d=>{var c=Rr(),y=H(c);{var I=B=>{var te=Er();_(B,te)},Z=B=>{var te=ve(),D=le(te);{var Q=J=>{var ke=Lr();_(J,ke)};S(D,J=>{t()==2&&J(Q)},!0)}_(B,te)};S(y,B=>{t()==1?B(I):B(Z,!1)})}j(c),_(d,c)};S(U,d=>{t()>0&&d(Te)})}var xe=q(U,2);{var se=d=>{var c=Vr();Xe(c,21,()=>p(M),Je,(y,I)=>{var Z=Or(),B=H(Z,!0);j(Z),W(()=>Re(B,p(I))),_(y,Z)}),j(c),_(d,c)};S(xe,d=>{m()&&p(M).length<14&&p(M).length>0&&d(se)})}var ee=q(xe,2);ct(ee),ee.__click=()=>oe(P,!p(P)),ce(ee,d=>V=d,()=>V),j(R),ce(R,d=>o=d,()=>o);var me=q(R,2),ye=H(me);{var je=d=>{var c=jr(),y=H(c),I=H(y),Z=H(I);dr(Z,{on_change:()=>N,button_text:"",placeholder:"Search...",icon:1,icon_pos:"left"}),j(I);var B=q(I,2);{var te=D=>{var Q=Tr(),J=H(Q),ke=H(J);j(J),De(2),j(Q),W(()=>Re(ke,`${p(T)??""} items selected`)),_(D,Q)};S(B,D=>{!f()&&p(M).length>0&&D(te)})}j(y),De(2),j(c),_(d,c)};S(ye,d=>{E()&&d(je)})}var ae=q(ye,2);Xe(ae,17,()=>v,Je,(d,c)=>{var y=zr(),I=H(y);{let Z=we(()=>ie.includes(p(c).name.toLowerCase())),B=we(()=>p(c).value.length>0?p(c).value:p(c).name),te=we(()=>f()?"radio":"checkbox");Ar(I,{get checked(){return p(Z)},get name(){return s()},get value(){return p(B)},get type(){return p(te)},onclick:()=>{},fullWidth:!0,icon:0,no_bg:!0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(D,Q)=>{De();var J=Wt();W(()=>Re(J,p(c).name)),_(D,J)},$$slots:{default:!0}})}j(y),W(Z=>{Oe(y,Z),fe(y,"data-itemname",p(c).name)},[()=>p(K).includes(p(c).name)?"":"display: none"]),_(d,y)});var ue=q(ae,2);{var ze=d=>{var c=Hr();_(d,c)};S(ue,d=>{p(K).length<1&&d(ze)})}j(me),ce(me,d=>C=d,()=>C),j(Y),ce(Y,d=>L=d,()=>L),W(()=>{Oe(Y,`--popupMaxH: ${p(k)??""}`),A=pe(Y,1,`input-wrapper mainContainer ${t()>0?"icon":""} ${n()??""}`,"svelte-1lr2yev",A,{onlySelect:a(),MaxContent:g(),menuOpen:p(P)}),fe(ee,"hidden",p(M).length<1?!1:m()&&p(M).length<14),ft(ee,p(F))}),_(r,Y),Ge()}Kt(["click"]);export{ut as A,Ar as B,Ve as F,re as I,qr as S,fe as a,Oe as b,rt as c,Gr as d,Xe as e,dr as f,Ur as g,pe as h,Je as i,Zr as j,Le as l,$t as s,sr as u}; diff --git a/front-end/build/_app/immutable/entry/app.Bpgl7z-g.js b/front-end/build/_app/immutable/entry/app.Bpgl7z-g.js new file mode 100644 index 0000000..fb0e6f8 --- /dev/null +++ b/front-end/build/_app/immutable/entry/app.Bpgl7z-g.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.BDBTEYBH.js","../chunks/8S9LQyo2.js","../chunks/BLVsYbeJ.js","../chunks/eD-nflhL.js","../chunks/Bvh94p1P.js","../chunks/DEURx20L.js","../chunks/oYDKx04z.js","../assets/select.DN33SJvo.css","../chunks/B8UWJ_8F.js","../chunks/4LgZ9JC7.js","../chunks/f4row_AD.js","../chunks/5qQl8jdw.js","../assets/0.g0XgcL43.css","../nodes/1.2fbrpKZV.js","../nodes/2.FpzZrQ65.js","../nodes/3.VIY1k0Bq.js","../chunks/DbzXHS10.js","../assets/mansonaryGallery.Crv1-ccZ.css","../nodes/4.trStyS_e.js","../nodes/5.BfO0SO9c.js","../nodes/6.nYntKIJH.js"])))=>i.map(i=>d[i]); +import{y as U,A as z,L as G,M as W,$ as A,a6 as Y,i as d,az as H,ao as J,aA as K,p as Q,u as X,d as Z,aB as L,aC as $,f as w,s as ee,a as te,c as re,r as se,aD as k,t as ae}from"../chunks/BLVsYbeJ.js";import{h as ne,m as oe,u as ie,s as ce}from"../chunks/Bvh94p1P.js";import{f as V,a as b,c as x,t as le}from"../chunks/8S9LQyo2.js";import{o as ue}from"../chunks/eD-nflhL.js";import{B as me,p as T,i as S,b as C}from"../chunks/DEURx20L.js";function j(n,e,s){U&&z();var c=new me(n);G(()=>{var o=e()??null;c.ensure(o,o&&(r=>s(r,o)))},W)}function de(n){return class extends fe{constructor(e){super({component:n,...e})}}}class fe{#t;#e;constructor(e){var s=new Map,c=(r,t)=>{var a=K(t,!1,!1);return s.set(r,a),a};const o=new Proxy({...e.props||{},$$events:{}},{get(r,t){return d(s.get(t)??c(t,Reflect.get(r,t)))},has(r,t){return t===Y?!0:(d(s.get(t)??c(t,Reflect.get(r,t))),Reflect.has(r,t))},set(r,t,a){return A(s.get(t)??c(t,a),a),Reflect.set(r,t,a)}});this.#e=(e.hydrate?ne:oe)(e.component,{target:e.target,anchor:e.anchor,props:o,context:e.context,intro:e.intro??!1,recover:e.recover}),(!e?.props?.$$host||e.sync===!1)&&H(),this.#t=o.$$events;for(const r of Object.keys(this.#e))r==="$set"||r==="$destroy"||r==="$on"||J(this,r,{get(){return this.#e[r]},set(t){this.#e[r]=t},enumerable:!0});this.#e.$set=r=>{Object.assign(o,r)},this.#e.$destroy=()=>{ie(this.#e)}}$set(e){this.#e.$set(e)}$on(e,s){this.#t[e]=this.#t[e]||[];const c=(...o)=>s.call(this,...o);return this.#t[e].push(c),()=>{this.#t[e]=this.#t[e].filter(o=>o!==c)}}$destroy(){this.#e.$destroy()}}const _e="modulepreload",he=function(n,e){return new URL(n,e).href},I={},E=function(e,s,c){let o=Promise.resolve();if(s&&s.length>0){let O=function(l){return Promise.all(l.map(m=>Promise.resolve(m).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};const t=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),R=a?.nonce||a?.getAttribute("nonce");o=O(s.map(l=>{if(l=he(l,c),l in I)return;I[l]=!0;const m=l.endsWith(".css"),f=m?'[rel="stylesheet"]':"";if(c)for(let _=t.length-1;_>=0;_--){const i=t[_];if(i.href===l&&(!m||i.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${l}"]${f}`))return;const u=document.createElement("link");if(u.rel=m?"stylesheet":_e,m||(u.as="script"),u.crossOrigin="",u.href=l,R&&u.setAttribute("nonce",R),document.head.appendChild(u),m)return new Promise((_,i)=>{u.addEventListener("load",_),u.addEventListener("error",()=>i(new Error(`Unable to preload CSS for ${l}`)))})}))}function r(t){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=t,window.dispatchEvent(a),!a.defaultPrevented)throw t}return o.then(t=>{for(const a of t||[])a.status==="rejected"&&r(a.reason);return e().catch(r)})},Ae={};var ve=V('
    '),ge=V(" ",1);function Ee(n,e){Q(e,!0);let s=T(e,"components",23,()=>[]),c=T(e,"data_0",3,null),o=T(e,"data_1",3,null);X(()=>e.stores.page.set(e.page)),Z(()=>{e.stores,e.page,e.constructors,s(),e.form,c(),o(),e.stores.page.notify()});let r=L(!1),t=L(!1),a=L(null);ue(()=>{const i=e.stores.page.subscribe(()=>{d(r)&&(A(t,!0),$().then(()=>{A(a,document.title||"untitled page",!0)}))});return A(r,!0),i});const R=k(()=>e.constructors[1]);var O=ge(),l=w(O);{var m=i=>{const h=k(()=>e.constructors[0]);var v=x(),P=w(v);j(P,()=>d(h),(g,y)=>{C(y(g,{get data(){return c()},get form(){return e.form},get params(){return e.page.params},children:(p,be)=>{var D=x(),N=w(D);j(N,()=>d(R),(B,q)=>{C(q(B,{get data(){return o()},get form(){return e.form},get params(){return e.page.params}}),F=>s()[1]=F,()=>s()?.[1])}),b(p,D)},$$slots:{default:!0}}),p=>s()[0]=p,()=>s()?.[0])}),b(i,v)},f=i=>{const h=k(()=>e.constructors[0]);var v=x(),P=w(v);j(P,()=>d(h),(g,y)=>{C(y(g,{get data(){return c()},get form(){return e.form},get params(){return e.page.params}}),p=>s()[0]=p,()=>s()?.[0])}),b(i,v)};S(l,i=>{e.constructors[1]?i(m):i(f,!1)})}var u=ee(l,2);{var _=i=>{var h=ve(),v=re(h);{var P=g=>{var y=le();ae(()=>ce(y,d(a))),b(g,y)};S(v,g=>{d(t)&&g(P)})}se(h),b(i,h)};S(u,i=>{d(r)&&i(_)})}b(n,O),te()}const Le=de(Ee),ke=[()=>E(()=>import("../nodes/0.BDBTEYBH.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]),import.meta.url),()=>E(()=>import("../nodes/1.2fbrpKZV.js"),__vite__mapDeps([13,1,2,9,4,10,11,8,3]),import.meta.url),()=>E(()=>import("../nodes/2.FpzZrQ65.js"),__vite__mapDeps([14,1,2,9]),import.meta.url),()=>E(()=>import("../nodes/3.VIY1k0Bq.js"),__vite__mapDeps([15,1,2,9,16,3,6,5,4,7,11,8,17]),import.meta.url),()=>E(()=>import("../nodes/4.trStyS_e.js"),__vite__mapDeps([18,1,2,9]),import.meta.url),()=>E(()=>import("../nodes/5.BfO0SO9c.js"),__vite__mapDeps([19,1,2,9,16,3,6,5,4,7,11,8,17]),import.meta.url),()=>E(()=>import("../nodes/6.nYntKIJH.js"),__vite__mapDeps([20,1,2,9,16,3,6,5,4,7,11,8,17]),import.meta.url)],xe=[],Te={"/":[2],"/image":[3],"/models":[4],"/popular":[5],"/video":[6]},M={handleError:(({error:n})=>{console.error(n)}),reroute:(()=>{}),transport:{}},ye=Object.fromEntries(Object.entries(M.transport).map(([n,e])=>[n,e.decode])),Se=Object.fromEntries(Object.entries(M.transport).map(([n,e])=>[n,e.encode])),Ce=!1,je=(n,e)=>ye[n](e);export{je as decode,ye as decoders,Te as dictionary,Se as encoders,Ce as hash,M as hooks,Ae as matchers,ke as nodes,Le as root,xe as server_loads}; diff --git a/front-end/build/_app/immutable/entry/start.B4TOJfmp.js b/front-end/build/_app/immutable/entry/start.B4TOJfmp.js new file mode 100644 index 0000000..9346e57 --- /dev/null +++ b/front-end/build/_app/immutable/entry/start.B4TOJfmp.js @@ -0,0 +1 @@ +import{l as o,a as r}from"../chunks/B8UWJ_8F.js";export{o as load_css,r as start}; diff --git a/front-end/build/_app/immutable/nodes/0.BDBTEYBH.js b/front-end/build/_app/immutable/nodes/0.BDBTEYBH.js new file mode 100644 index 0000000..8359866 --- /dev/null +++ b/front-end/build/_app/immutable/nodes/0.BDBTEYBH.js @@ -0,0 +1 @@ +import{f as d,a as l,d as Ye,c as Je,t as ce}from"../chunks/8S9LQyo2.js";import{o as ue}from"../chunks/eD-nflhL.js";import{L as Ze,M as Ke,o as Xe,aE as et,y as He,q as tt,aa as at,ar as Ne,Q as Re,C as Ge,z as st,p as Le,c as a,r as t,a as Me,ai as V,s,i as C,aB as de,t as b,$ as E,_ as xe,f as ge}from"../chunks/BLVsYbeJ.js";import{s as q,d as rt}from"../chunks/Bvh94p1P.js";import{B as lt,i as h,p as Se,b as _e}from"../chunks/DEURx20L.js";import{l as Te,d as Ae,f as it,g as De,h as fe,A as ne,c as he,u as Be,I as ot,a as Ie,e as Pe,i as ze,S as dt,j as nt,B as oe}from"../chunks/oYDKx04z.js";import{g as pe}from"../chunks/B8UWJ_8F.js";import"../chunks/4LgZ9JC7.js";import{i as vt}from"../chunks/f4row_AD.js";import{p as ct}from"../chunks/5qQl8jdw.js";function pt(O,S,..._){var f=new lt(O);Ze(()=>{const e=S()??null;f.ensure(e,e&&(m=>e(m,..._)))},Ke)}function gt(O,S){let _=null,f=He;var e;if(He){_=st;for(var m=tt(document.head);m!==null&&(m.nodeType!==at||m.data!==O);)m=Ne(m);if(m===null)Re(!1);else{var k=Ne(m);m.remove(),Ge(k)}}He||(e=document.head.appendChild(Xe()));try{Ze(()=>S(e),et)}finally{f&&(Re(!0),Ge(_))}}const _t=!0,pa=Object.freeze(Object.defineProperty({__proto__:null,prerender:_t},Symbol.toStringTag,{value:"Module"})),ut="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='107'%20height='128'%20viewBox='0%200%20107%20128'%3e%3ctitle%3esvelte-logo%3c/title%3e%3cpath%20d='M94.157%2022.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282%2029.608A29.92%2029.92%200%200%200%208.764%2049.65a31.5%2031.5%200%200%200%203.108%2020.231%2030%2030%200%200%200-4.477%2011.183%2031.9%2031.9%200%200%200%205.448%2024.116c10.402%2014.887%2030.942%2019.297%2045.791%209.835l26.083-16.624A29.92%2029.92%200%200%200%2098.235%2078.35a31.53%2031.53%200%200%200-3.105-20.232%2030%2030%200%200%200%204.474-11.182%2031.88%2031.88%200%200%200-5.447-24.116'%20style='fill:%23ff3e00'/%3e%3cpath%20d='M45.817%20106.582a20.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.503%2018%2018%200%200%201%20.624-2.435l.49-1.498%201.337.981a33.6%2033.6%200%200%200%2010.203%205.098l.97.294-.09.968a5.85%205.85%200%200%200%201.052%203.878%206.24%206.24%200%200%200%206.695%202.485%205.8%205.8%200%200%200%201.603-.704L69.27%2076.28a5.43%205.43%200%200%200%202.45-3.631%205.8%205.8%200%200%200-.987-4.371%206.24%206.24%200%200%200-6.698-2.487%205.7%205.7%200%200%200-1.6.704l-9.953%206.345a19%2019%200%200%201-5.296%202.326%2020.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.502%2017.99%2017.99%200%200%201%208.13-12.052l26.081-16.623a19%2019%200%200%201%205.3-2.329%2020.72%2020.72%200%200%201%2022.237%208.243%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-.624%202.435l-.49%201.498-1.337-.98a33.6%2033.6%200%200%200-10.203-5.1l-.97-.294.09-.968a5.86%205.86%200%200%200-1.052-3.878%206.24%206.24%200%200%200-6.696-2.485%205.8%205.8%200%200%200-1.602.704L37.73%2051.72a5.42%205.42%200%200%200-2.449%203.63%205.79%205.79%200%200%200%20.986%204.372%206.24%206.24%200%200%200%206.698%202.486%205.8%205.8%200%200%200%201.602-.704l9.952-6.342a19%2019%200%200%201%205.295-2.328%2020.72%2020.72%200%200%201%2022.237%208.242%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-8.13%2012.053l-26.081%2016.622a19%2019%200%200%201-5.3%202.328'%20style='fill:%23fff'/%3e%3c/svg%3e";var ht=d('

    Loading user data

    '),mt=d('

    The provided token is not valid!

    '),ft=d(`

    You're Logged out

    To login, follow the instruction bellow:

    1. Go to: https://civitai.com
    2. Login into your account
    3. Open the devtools (Ctrl + Shift + I)
    4. Navigate to cookies section
    5. Copy value of the cookie "__Secure-civitai-token" and paste it bellow
    `),wt=d('
    ');function Ct(O,S){Le(S,!1);async function _(n){De(n)}vt();var f=wt(),e=a(f);{var m=n=>{var p=ht(),P=a(p);Ae(P,{size:35,tickness:3}),V(2),t(p),l(n,p)},k=n=>{var p=ft(),P=s(a(p),6);it(P,{placeholder:"Paste Cookie here",btn_onclick:()=>_});var z=s(P,2);{var B=T=>{var A=mt();l(T,A)};h(z,T=>{Te.error&&T(B)})}t(p),l(n,p)};h(e,n=>{Te.loading?n(m):n(k,!1)})}t(f),l(O,f),Me()}var yt=Ye(''),bt=d('
    ');function Fe(O,S){Le(S,!0);let _=Se(S,"open",3,!1),f=Se(S,"is_mobile",3,!1),e=Se(S,"media_id",3,0),m=Se(S,"media_type",3,"Image"),k,n,p,P,z,B=de(!0),T=de(!1);ue(()=>{n.addEventListener("click",()=>window.dispatchEvent(new CustomEvent("closeVisualizer"))),p.addEventListener("click",()=>window.dispatchEvent(new CustomEvent("downloadVisualizerMedia"))),P.addEventListener("click",()=>window.dispatchEvent(new CustomEvent("openCollectionSelector",{detail:{id:e(),media_type:m()}}))),k&&(k.addEventListener("click",()=>window.dispatchEvent(new CustomEvent("visualizerToggleMeta"))),A(),z.addEventListener("click",async()=>{C(B)||(E(B,!0),C(T)?await fetch(ne.unfavorite_media(he.token,e())):await fetch(ne.favorite_media(he.token,e())),A())}))});const A=async()=>{E(B,!0),E(T,!1);let o=await fetch(ne.collections_with_media(he.token,e()));if(o.status!==200){E(B,!1),console.error("Could not get media with collection for media id "+e()),console.log(await o.text());return}let c=await o.json();const I=Be.collections.find(j=>j.name==="comfyui_civit_favorites").id||-1;c.find(j=>j.collectionId===I)&&E(T,!0),E(B,!1)};var D=bt();let N;var U=a(D);_e(U,o=>n=o,()=>n);var Q=s(U,2);_e(Q,o=>p=o,()=>p);var Y=s(Q,2);_e(Y,o=>P=o,()=>P);var W=s(Y,2);let ee;var J=a(W);{var r=o=>{var c=yt();l(o,c)},i=o=>{Ae(o,{size:15,tickness:2})};h(J,o=>{C(B)?o(i,!1):o(r)})}t(W),_e(W,o=>z=o,()=>z);var v=s(W,2);_e(v,o=>k=o,()=>k),t(D),b(()=>{N=fe(D,1,"wrapper svelte-15dppd8",null,N,{open:_(),is_mobile:f()}),ee=fe(W,1,"icon favorite svelte-15dppd8",null,ee,{favorited:C(T)})}),l(O,D),Me()}var kt=d(''),xt=d('',2),Lt=d(' ',1),Mt=d('

    Loading data

    '),$t=d(' '),qt=d('

    Tags

    '),Et=d(' '),St=d('
    '),Pt=d('

    Resources used

    '),zt=d('

    Prompt

    ',1),Bt=d('

    Negative Prompt

    ',1),It=d(' '),Tt=d(' '),At=d(' '),Vt=d(' '),jt=d(' '),Ot=d(''),Wt=d('

    Generation data

    '),Ht=d(' '),Ft=d('

    Tools

    ',1),Nt=d(' '),Rt=d('

    Techniques

    ',1),Gt=d('

    Process

    '),Zt=d('
    ',1),Dt=d('
    ');function Ut(O,S){Le(S,!0);let _=de(!1),f=de(!1),e=xe({tags:[],image:"",media_type:"image",media_data:null,gen_data:null,landscape:!1,media_id:0}),m=!1;ue(()=>window.addEventListener("loadMediaVisualizer",async r=>{if(C(_))return;e.tags=[],e.image="",e.gen_data=null,e.landscape=!1,m=!1,E(_,!0);let{id:i,creator_id:v,image_uuid:o}=r.detail;e.media_id=i,E(f,!0);const c=ot.images.find(L=>L.uuid===o),I=c.media_type,x=c.uuid;let u=`${`${ne.endpoint}/media_proxy?id=${x}`}&media_type=${I}`;e.media_type=I,e.image=u,e.media_data=c,c.width>c.height&&(e.landscape=!0);const H=await fetch(ne.media_data(he.token,i,v));if(E(_,!1),H.status!==200){console.log(await H.text()),alert("Error loading image data");return}const te=await H.json();e.tags=te.votable_tags,e.gen_data=te.generation_data})),ue(()=>{const r=document.querySelector("#mediaVisualizer .metaWrapper"),i=new MutationObserver((o,c)=>{for(const I of o)if(I.type==="childList"){if(m)return;I.target.querySelectorAll(".wrapperContainer .prompt, .wrapperContainer .tagWrapper").forEach(x=>{m=!0,x.scrollHeight>x.clientHeight||x.scrollWidth>x.clientWidth||x.setAttribute("data-overflow-false","")})}}),v={childList:!0,attributes:!1,subtree:!0};i.observe(r,v)});let k=!1;ue(()=>{window.addEventListener("visualizerToggleMeta",()=>{k=!k,document.getElementById("mediaVisualizer")?.removeAttribute("data-open-metadata"),k&&document.getElementById("mediaVisualizer")?.setAttribute("data-open-metadata","")}),window.addEventListener("downloadVisualizerMedia",async()=>{const r=document.querySelector("#mediaVisualizer :is(img, video source)"),v=await(await fetch(r.src)).blob(),o=URL.createObjectURL(v),c=document.createElement("a");c.href=o,c.download=`${e.media_data?.id}.${e.media_type==="image"?"jpg":"mp4"}`,c.click()}),window.addEventListener("closeVisualizer",()=>{E(f,!1),k=!1,e.media_type="image",document.getElementById("mediaVisualizer")?.removeAttribute("data-open-metadata")})});var n=Dt();let p;var P=a(n),z=a(P);{var B=r=>{var i=kt();let v;b(()=>{Ie(i,"src",e.image),v=fe(i,1,"svelte-td0peg",null,v,{landscape:e.landscape})}),l(r,i)},T=r=>{var i=xt();i.muted=!0;let v;var o=s(a(i),2);t(i),b(()=>{v=fe(i,1,"svelte-td0peg",null,v,{landscape:e.landscape}),Ie(o,"src",e.image)}),l(r,i)};h(z,r=>{e.media_type==="image"?r(B):r(T,!1)})}var A=s(z,2),D=a(A);{var N=r=>{var i=Lt(),v=ge(i),o=a(v);t(v);var c=s(v,2),I=a(c);t(c);var x=s(c,2),j=a(x);t(x);var u=s(x,2),H=a(u);t(u),b(()=>{q(o,`👍 ${e.media_data.stats.likeCountAllTime??""}`),q(I,`❤️ ${e.media_data.stats.heartCountAllTime??""}`),q(j,`😂 ${e.media_data.stats.laughCountAllTime??""}`),q(H,`😢 ${e.media_data.stats.cryCountAllTime??""}`)}),l(r,i)};h(D,r=>{e.media_data&&e.media_data.stats&&r(N)})}t(A);var U=s(A,2),Q=a(U);Fe(Q,{is_mobile:!0,get media_id(){return e.media_id},media_type:"Image"}),t(U),t(P);var Y=s(P,2),W=a(Y);{var ee=r=>{var i=Mt(),v=a(i);Ae(v,{size:35,tickness:3}),V(2),t(i),l(r,i)},J=r=>{var i=Zt(),v=ge(i),o=a(v);Fe(o,{open:!0,is_mobile:!0,get media_id(){return e.media_id},media_type:"Image"}),t(v);var c=s(v,2),I=a(c);Fe(I,{get media_id(){return e.media_id},media_type:"Image"}),t(c);var x=s(c,2);{var j=M=>{var g=qt(),ae=s(a(g),2);Pe(ae,21,()=>e.tags,ze,(we,se)=>{var re=$t(),R=a(re,!0);t(re),b(()=>{Ie(re,"data-tag-id",C(se).id),q(R,C(se).name)}),l(we,re)}),t(ae),V(2),t(g),l(M,g)};h(x,M=>{e.tags.length>0&&M(j)})}var u=s(x,2);{var H=M=>{var g=Wt(),ae=s(a(g),2);{var we=$=>{var F=Pt(),G=s(a(F),2),le=a(G);Pe(le,17,()=>e.gen_data?.resources,ze,(Ve,ie)=>{var be=St(),me=a(be),ke=a(me),$e=a(ke,!0);t(ke);var qe=s(ke,2),je=a(qe,!0);t(qe),t(me);var Ee=s(me,2),w=a(Ee),y=a(w,!0);t(w);var Z=s(w,2);{var Ue=Oe=>{var We=Et(),Qe=a(We,!0);t(We),b(()=>q(Qe,C(ie).strength)),l(Oe,We)};h(Z,Oe=>{C(ie).strength&&Oe(Ue)})}t(Ee),t(be),b(()=>{q($e,C(ie).modelName),q(je,C(ie).versionName),q(y,C(ie).modelType)}),l(Ve,be)}),V(2),t(G),t(F),l($,F)};h(ae,$=>{e.gen_data?.resources.length>0&&$(we)})}var se=s(ae,2),re=a(se);{var R=$=>{var F=zt(),G=s(ge(F),2),le=a(G,!0);t(G),V(2),b(()=>q(le,e.gen_data?.meta.prompt)),l($,F)};h(re,$=>{e.gen_data?.meta.prompt&&$(R)})}t(se);var K=s(se,2),ve=a(K);{var Ce=$=>{var F=Bt(),G=s(ge(F),2),le=a(G,!0);t(G),V(2),b(()=>q(le,e.gen_data?.meta.negativePrompt)),l($,F)};h(ve,$=>{e.gen_data?.meta.negativePrompt&&$(Ce)})}t(K);var ye=s(K,2);{var X=$=>{var F=Ot(),G=s(a(F),2),le=a(G);{var Ve=w=>{var y=It(),Z=a(y);t(y),b(()=>q(Z,`cfgScale: ${e.gen_data?.meta.cfgScale??""}`)),l(w,y)};h(le,w=>{e.gen_data?.meta.cfgScale&&w(Ve)})}var ie=s(le,2);{var be=w=>{var y=Tt(),Z=a(y);t(y),b(()=>q(Z,`steps: ${e.gen_data?.meta.steps??""}`)),l(w,y)};h(ie,w=>{e.gen_data?.meta.steps&&w(be)})}var me=s(ie,2);{var ke=w=>{var y=At(),Z=a(y);t(y),b(()=>q(Z,`sampler: ${e.gen_data?.meta.sampler??""}`)),l(w,y)};h(me,w=>{e.gen_data?.meta.sampler&&w(ke)})}var $e=s(me,2);{var qe=w=>{var y=Vt(),Z=a(y);t(y),b(()=>q(Z,`seed: ${e.gen_data?.meta.seed??""}`)),l(w,y)};h($e,w=>{e.gen_data?.meta.seed&&w(qe)})}var je=s($e,2);{var Ee=w=>{var y=jt(),Z=a(y);t(y),b(()=>q(Z,`size: ${e.gen_data?.meta.Size??""}`)),l(w,y)};h(je,w=>{e.gen_data?.meta.Size&&w(Ee)})}t(G),t(F),l($,F)};h(ye,$=>{e.gen_data?.meta&&$(X)})}t(g),l(M,g)};h(u,M=>{e.gen_data?.meta&&M(H)})}var te=s(u,2);{var L=M=>{var g=Gt(),ae=s(a(g),2);{var we=R=>{var K=Ft(),ve=s(ge(K),2);Pe(ve,21,()=>e.gen_data?.tools,ze,(Ce,ye)=>{var X=Ht(),$=a(X,!0);t(X),b(()=>q($,C(ye).name)),l(Ce,X)}),t(ve),l(R,K)};h(ae,R=>{e.gen_data?.tools.length>0&&R(we)})}var se=s(ae,2);{var re=R=>{var K=Rt(),ve=s(ge(K),2);Pe(ve,21,()=>e.gen_data?.techniques,ze,(Ce,ye)=>{var X=Nt(),$=a(X,!0);t(X),b(()=>q($,C(ye).name)),l(Ce,X)}),t(ve),l(R,K)};h(se,R=>{e.gen_data?.techniques.length>0&&R(re)})}t(g),l(M,g)};h(te,M=>{(e.gen_data?.tools?.length||0+e.gen_data?.techniques?.length||0)>0&&M(L)})}l(r,i)};h(W,r=>{C(_)?r(ee):r(J,!1)})}t(Y),t(n),b(()=>p=fe(n,1,"container svelte-td0peg",null,p,{open:C(f)})),l(O,n),Me()}var Qt=d('

    Loading collections

    '),Yt=d(''),Jt=d('

    Add to collection

    ');function Kt(O,S){Le(S,!0);let _=de(!1),f=de(!1),e,m,k=de(xe([])),n=de(xe([])),p=xe({id:0,media_type:"Image"});ue(()=>{window.addEventListener("openCollectionSelector",async r=>{const{id:i,media_type:v}=r.detail;p.id=i,p.media_type=v,E(_,!0),E(f,!0),E(k,[],!0),E(n,[],!0);const o=[ne.collections_with_media(he.token,i),ne.get_collections_by_media_type(he.token,v)],c=await Promise.all(o.map(u=>fetch(u)));c.forEach(u=>{if(!u.ok)throw new Error(`Erro em ${u.url}`)});const I=await Promise.all(c.map(u=>u.json())),[x,j]=I;E(k,j.map(u=>({name:u.name,value:`${u.id}`})).filter(u=>u.name!=="comfyui_civit_favorites"),!0),E(n,x.map(u=>{let H=j.find(te=>te.id===u.collectionId);return H?H.name:""}).filter(u=>u.length>0),!0),E(f,!1)})}),ue(()=>m.addEventListener("click",async()=>E(_,!1)));const P=async()=>{E(f,!0);const r=Array.from(e.querySelectorAll('input[name="SelectedCollections"]'));let i=[],v=[];r.forEach(o=>{const c=parseInt(o.value);o.checked?i.push(c):v.push(c)}),await fetch(ne.update_media_collections(he.token,p.id,i,v)),window.dispatchEvent(new CustomEvent("openCollectionSelector",{detail:{id:p.id,media_type:p.media_type}}))};var z=Jt();let B;var T=a(z),A=a(T),D=s(a(A),2);_e(D,r=>m=r,()=>m),t(A);var N=s(A,2),U=a(N);{var Q=r=>{dt(r,{onlySelect:!0,select_list_cards:!0,empty_name:" ",icon:2,name:"SelectedCollections",selection_name:"Collections",get data_options(){return C(k)},get selected(){return C(n)}})};h(U,r=>{C(_)&&!C(f)&&r(Q)})}var Y=s(U,2);{var W=r=>{var i=Qt(),v=a(i);Ae(v,{size:35,tickness:3}),V(2),t(i),l(r,i)};h(Y,r=>{C(f)&&r(W)})}t(N);var ee=s(N,2);{var J=r=>{var i=Yt();i.__click=()=>P(),l(r,i)};h(ee,r=>{C(f)||r(J)})}t(T),t(z),_e(z,r=>e=r,()=>e),b(()=>B=fe(z,1,"container svelte-ny6f4r",null,B,{open:C(_)})),l(O,z),Me()}rt(["click"]);var Xt=d(''),ea=d('Downloads (0)',1),ta=d('
    ');function ga(O,S){Le(S,!0);let _=xe(ct);ue(async()=>{if(Object.keys(Be).length===0){let n=nt("user_token");(!n||n.length<1)&&(Te.loading=!1),n&&await De(n)}});var f=Je();gt("12qhfyh",n=>{var p=Xt();b(()=>Ie(p,"href",ut)),l(n,p)});var e=ge(f);{var m=n=>{Ct(n,{})},k=n=>{var p=ta(),P=a(p);Ut(P,{});var z=s(P,2);Kt(z,{});var B=s(z,2),T=s(a(B),2),A=a(T),D=a(A);oe(D,{icon:3,no_bg:!0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(L,M)=>{V();var g=ea();V(),l(L,g)},$$slots:{default:!0}}),t(A);var N=s(A,4),U=a(N);oe(U,{active_route:"/popular",get current_route(){return _.url.pathname},onclick:()=>{pe("/popular")},icon:6,no_bg:!0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(L,M)=>{V();var g=ce("Popular");l(L,g)},$$slots:{default:!0}}),t(N);var Q=s(N,2),Y=a(Q);oe(Y,{active_route:"/image",get current_route(){return _.url.pathname},onclick:()=>{pe("/image")},icon:1,no_bg:!0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(L,M)=>{V();var g=ce("Images");l(L,g)},$$slots:{default:!0}}),t(Q);var W=s(Q,2),ee=a(W);oe(ee,{active_route:"/video",get current_route(){return _.url.pathname},onclick:()=>{pe("/video")},icon:5,no_bg:!0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(L,M)=>{V();var g=ce("Videos");l(L,g)},$$slots:{default:!0}}),t(W);var J=s(W,2),r=a(J);oe(r,{active_route:"/models",get current_route(){return _.url.pathname},onclick:()=>{pe("/models")},icon:2,no_bg:!0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(L,M)=>{V();var g=ce("Models");l(L,g)},$$slots:{default:!0}}),t(J);var i=s(J,2),v=a(i,!0);t(i);var o=s(i,2),c=a(o);oe(c,{active_route:"/favorites",get current_route(){return _.url.pathname},onclick:()=>{pe("/favorites")},icon:7,no_bg:!0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(L,M)=>{V();var g=ce("Favorites");l(L,g)},$$slots:{default:!0}}),t(o);var I=s(o,2),x=a(I);oe(x,{active_route:"/liked-models",get current_route(){return _.url.pathname},onclick:()=>{pe("/liked-models")},icon:7,no_bg:!0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(L,M)=>{V();var g=ce("Liked Models");l(L,g)},$$slots:{default:!0}}),t(I);var j=s(I,2),u=a(j);oe(u,{active_route:"/collections",get current_route(){return _.url.pathname},onclick:()=>{pe("/collections")},icon:8,no_bg:!0,hoverColor:"#3c3d42",bgHover:!0,extraPadding:!0,children:(L,M)=>{V();var g=ce("Collections");l(L,g)},$$slots:{default:!0}}),t(j),t(T),t(B);var H=s(B,2),te=a(H);pt(te,()=>S.children),t(H),t(p),b(()=>q(v,Be.user_name)),l(n,p)};h(e,n=>{Object.keys(Be).length===0||Te.loading?n(m):n(k,!1)})}l(O,f),Me()}export{ga as component,pa as universal}; diff --git a/front-end/build/_app/immutable/nodes/1.2fbrpKZV.js b/front-end/build/_app/immutable/nodes/1.2fbrpKZV.js new file mode 100644 index 0000000..2eb3fb2 --- /dev/null +++ b/front-end/build/_app/immutable/nodes/1.2fbrpKZV.js @@ -0,0 +1 @@ +import{f as h,a as c}from"../chunks/8S9LQyo2.js";import"../chunks/4LgZ9JC7.js";import{p as l,f as v,t as u,a as _,c as s,r as e,s as g}from"../chunks/BLVsYbeJ.js";import{s as o}from"../chunks/Bvh94p1P.js";import{i as x}from"../chunks/f4row_AD.js";import{p}from"../chunks/5qQl8jdw.js";var d=h("

    ",1);function y(m,i){l(i,!1),x();var t=d(),r=v(t),f=s(r,!0);e(r);var a=g(r,2),n=s(a,!0);e(a),u(()=>{o(f,p.status),o(n,p.error?.message)}),c(m,t),_()}export{y as component}; diff --git a/front-end/build/_app/immutable/nodes/2.FpzZrQ65.js b/front-end/build/_app/immutable/nodes/2.FpzZrQ65.js new file mode 100644 index 0000000..dd40990 --- /dev/null +++ b/front-end/build/_app/immutable/nodes/2.FpzZrQ65.js @@ -0,0 +1 @@ +import{f as a,a as p}from"../chunks/8S9LQyo2.js";import"../chunks/4LgZ9JC7.js";var t=a("

    Hello, world

    ");function n(o){var r=t();p(o,r)}export{n as component}; diff --git a/front-end/build/_app/immutable/nodes/3.VIY1k0Bq.js b/front-end/build/_app/immutable/nodes/3.VIY1k0Bq.js new file mode 100644 index 0000000..4887a82 --- /dev/null +++ b/front-end/build/_app/immutable/nodes/3.VIY1k0Bq.js @@ -0,0 +1 @@ +import"../chunks/8S9LQyo2.js";import"../chunks/4LgZ9JC7.js";import{M as e}from"../chunks/DbzXHS10.js";function i(a){e(a,{media:"image",page_title:"Images"})}export{i as component}; diff --git a/front-end/build/_app/immutable/nodes/4.trStyS_e.js b/front-end/build/_app/immutable/nodes/4.trStyS_e.js new file mode 100644 index 0000000..1899363 --- /dev/null +++ b/front-end/build/_app/immutable/nodes/4.trStyS_e.js @@ -0,0 +1 @@ +import{f as a,a as m}from"../chunks/8S9LQyo2.js";import"../chunks/4LgZ9JC7.js";var p=a("

    This is my models explorer

    ");function s(o){var r=p();m(o,r)}export{s as component}; diff --git a/front-end/build/_app/immutable/nodes/5.BfO0SO9c.js b/front-end/build/_app/immutable/nodes/5.BfO0SO9c.js new file mode 100644 index 0000000..2ea413e --- /dev/null +++ b/front-end/build/_app/immutable/nodes/5.BfO0SO9c.js @@ -0,0 +1 @@ +import"../chunks/8S9LQyo2.js";import"../chunks/4LgZ9JC7.js";import{M as a}from"../chunks/DbzXHS10.js";function r(o){a(o,{media:"video,image",page_title:"Popular"})}export{r as component}; diff --git a/front-end/build/_app/immutable/nodes/6.nYntKIJH.js b/front-end/build/_app/immutable/nodes/6.nYntKIJH.js new file mode 100644 index 0000000..6fa88f1 --- /dev/null +++ b/front-end/build/_app/immutable/nodes/6.nYntKIJH.js @@ -0,0 +1 @@ +import"../chunks/8S9LQyo2.js";import"../chunks/4LgZ9JC7.js";import{M as e}from"../chunks/DbzXHS10.js";function p(o){e(o,{media:"video",page_title:"Videos"})}export{p as component}; diff --git a/front-end/build/_app/version.json b/front-end/build/_app/version.json new file mode 100644 index 0000000..e8581e8 --- /dev/null +++ b/front-end/build/_app/version.json @@ -0,0 +1 @@ +{"version":"1765802233144"} \ No newline at end of file diff --git a/front-end/build/civit/_app/env.js b/front-end/build/civit/_app/env.js new file mode 100644 index 0000000..f5427da --- /dev/null +++ b/front-end/build/civit/_app/env.js @@ -0,0 +1 @@ +export const env={} \ No newline at end of file diff --git a/front-end/build/civit/_app/immutable/assets/0.scA15517.css b/front-end/build/civit/_app/immutable/assets/0.scA15517.css new file mode 100644 index 0000000..6b396fa --- /dev/null +++ b/front-end/build/civit/_app/immutable/assets/0.scA15517.css @@ -0,0 +1 @@ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-600:oklch(57.7% .245 27.325);--color-green-500:oklch(72.3% .219 149.579);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-600:oklch(58.8% .158 241.966);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--radius-xs:.125rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-popover:var(--popover);--color-popover-foreground:var(--popover-foreground);--color-border:var(--border)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-start-12{inset-inline-start:calc(var(--spacing)*-12)}.start-0{inset-inline-start:calc(var(--spacing)*0)}.start-1\/2{inset-inline-start:50%}.start-2{inset-inline-start:calc(var(--spacing)*2)}.-end-12{inset-inline-end:calc(var(--spacing)*-12)}.end-0{inset-inline-end:calc(var(--spacing)*0)}.end-1{inset-inline-end:calc(var(--spacing)*1)}.end-2{inset-inline-end:calc(var(--spacing)*2)}.end-3{inset-inline-end:calc(var(--spacing)*3)}.end-4{inset-inline-end:calc(var(--spacing)*4)}.-top-12{top:calc(var(--spacing)*-12)}.top-0{top:calc(var(--spacing)*0)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-1\/2{top:50%}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-2{right:calc(var(--spacing)*2)}.-bottom-12{bottom:calc(var(--spacing)*-12)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1\.5{bottom:calc(var(--spacing)*1.5)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-5{bottom:calc(var(--spacing)*5)}.left-0{left:calc(var(--spacing)*0)}.left-1\.5{left:calc(var(--spacing)*1.5)}.left-2{left:calc(var(--spacing)*2)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-1{z-index:1}.z-10{z-index:10}.z-12{z-index:12}.z-20{z-index:20}.z-50{z-index:50}.z-99{z-index:99}.z-102{z-index:102}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.\!m-0{margin:calc(var(--spacing)*0)!important}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-auto{margin-inline:auto}.my-0{margin-block:calc(var(--spacing)*0)}.my-1{margin-block:calc(var(--spacing)*1)}.-ms-1{margin-inline-start:calc(var(--spacing)*-1)}.-ms-4{margin-inline-start:calc(var(--spacing)*-4)}.ms-auto{margin-inline-start:auto}.me-2{margin-inline-end:calc(var(--spacing)*2)}.-mt-4{margin-top:calc(var(--spacing)*-4)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-auto{margin-top:auto}.mr-12{margin-right:calc(var(--spacing)*12)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-7{width:calc(var(--spacing)*7);height:calc(var(--spacing)*7)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-full{width:100%;height:100%}.h-\(--bits-select-anchor-height\){height:var(--bits-select-anchor-height)}.h-2{height:calc(var(--spacing)*2)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-\[1\.2rem\]{height:1.2rem}.h-\[1\.15rem\]{height:1.15rem}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-\(--bits-dropdown-menu-content-available-height\){max-height:var(--bits-dropdown-menu-content-available-height)}.max-h-\(--bits-select-content-available-height\){max-height:var(--bits-select-content-available-height)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-svh{min-height:100svh}.w-\(--bits-dropdown-menu-anchor-width\){width:var(--bits-dropdown-menu-anchor-width)}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-1\/1{width:100%}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-25{width:calc(var(--spacing)*25)}.w-56{width:calc(var(--spacing)*56)}.w-72{width:calc(var(--spacing)*72)}.w-\[1\.2rem\]{width:1.2rem}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-xs{max-width:var(--container-xs)}.min-w-\(--bits-select-anchor-width\){min-width:var(--bits-select-anchor-width)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-56{min-width:calc(var(--spacing)*56)}.min-w-\[8rem\]{min-width:8rem}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--bits-dropdown-menu-content-transform-origin\){transform-origin:var(--bits-dropdown-menu-content-transform-origin)}.origin-\(--bits-popover-content-transform-origin\){transform-origin:var(--bits-popover-content-transform-origin)}.origin-\(--bits-select-content-transform-origin\){transform-origin:var(--bits-select-content-transform-origin)}.origin-\(--bits-tooltip-content-transform-origin\){transform-origin:var(--bits-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.rotate-0{rotate:none}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.resize{resize:both}.scroll-m-20{scroll-margin:calc(var(--spacing)*20)}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.auto-rows-min{grid-auto-rows:min-content}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-between\!{justify-content:space-between!important}.justify-center{justify-content:center}.gap-0{gap:calc(var(--spacing)*0)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-\[2px\]{border-radius:2px}.rounded-\[4px\]{border-radius:4px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-border{border-color:var(--border)}.border-input{border-color:var(--input)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--accent)}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-foreground{background-color:var(--foreground)}.bg-input{background-color:var(--input)}.bg-muted,.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sky-400{background-color:var(--color-sky-400)}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-current{fill:currentColor}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.ps-2{padding-inline-start:calc(var(--spacing)*2)}.ps-4{padding-inline-start:calc(var(--spacing)*4)}.ps-8{padding-inline-start:calc(var(--spacing)*8)}.pe-2{padding-inline-end:calc(var(--spacing)*2)}.pe-8{padding-inline-end:calc(var(--spacing)*8)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-0\.5{padding-top:calc(var(--spacing)*.5)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pt-8{padding-top:calc(var(--spacing)*8)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-center{text-align:center}.text-end{text-align:end}.text-start{text-align:start}.align-middle{vertical-align:middle}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-foreground{color:var(--foreground)}.text-green-500{color:var(--color-green-500)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_var\(--sidebar-border\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-border));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all\!{transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none{transition-property:none}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}.zoom-in{--tw-enter-scale:0}.zoom-out{--tw-exit-scale:0}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media(hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pe-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-inline-end:calc(var(--spacing)*8)}.group-has-\[\[data-slot\=item-description\]\]\/item\:translate-y-0\.5:is(:where(.group\/item):has([data-slot=item-description]) *){--tw-translate-y:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-has-\[\[data-slot\=item-description\]\]\/item\:self-start:is(:where(.group\/item):has([data-slot=item-description]) *){align-self:flex-start}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:start-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){inset-inline-start:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:end-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){inset-inline-end:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-end-4:is(:where(.group)[data-side=left] *){inset-inline-end:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-e:is(:where(.group)[data-side=left] *){border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.group-data-\[side\=right\]\:start-0:is(:where(.group)[data-side=right] *){inset-inline-start:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-s:is(:where(.group)[data-side=right] *){border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media(hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:start-\[calc\(1\/2\*100\%-1px\)\]:after{content:var(--tw-content);inset-inline-start:calc(50% - 1px)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:start-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);inset-inline-start:100%}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media(hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_var\(--sidebar-accent\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-accent));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(>[data-slot=button-group]){gap:calc(var(--spacing)*2)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-highlighted\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-highlighted\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-\[highlighted\]\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}.data-\[inset\]\:ps-8[data-inset]{padding-inline-start:calc(var(--spacing)*8)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-4[data-orientation=vertical]{height:calc(var(--spacing)*4)}.data-\[orientation\=vertical\]\:h-auto[data-orientation=vertical]{height:auto}.data-\[orientation\=vertical\]\:min-h-full[data-orientation=vertical]{min-height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[side\=bottom\]\:-translate-x-1\/2[data-side=bottom]{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:-translate-y-\[calc\(-50\%_\+_1px\)\][data-side=bottom]{--tw-translate-y: calc((-50% + 1px)*-1) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:-translate-y-\[calc\(50\%_-_3px\)\][data-side=left]{--tw-translate-y: calc((50% - 3px)*-1) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-end-2[data-side=left]:where(:dir(ltr),[dir=ltr]){--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=left\]\:slide-in-from-end-2[data-side=left]:where(:dir(rtl),[dir=rtl]){--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:translate-x-\[calc\(50\%_\+_2px\)\][data-side=right]{--tw-translate-x: calc(50% + 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:translate-y-1\/2[data-side=right]{--tw-translate-y: 50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-start-2[data-side=right]:where(:dir(ltr),[dir=ltr]){--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=right\]\:slide-in-from-start-2[data-side=right]:where(:dir(rtl),[dir=rtl]){--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=top\]\:translate-x-1\/2[data-side=top]{--tw-translate-x: 50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:translate-y-\[calc\(-50\%_\+_2px\)\][data-side=top]{--tw-translate-y: calc(-50% + 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:slide-out-to-end[data-state=closed]:dir(ltr){--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-end[data-state=closed]:dir(rtl){--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-start[data-state=closed]:dir(ltr){--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-start[data-state=closed]:dir(rtl){--tw-exit-translate-x:100%}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:rotate-90[data-state=open]{rotate:90deg}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down var(--tw-animation-duration,var(--tw-duration,.2s))var(--tw-ease,ease-out)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-sidebar-accent-foreground[data-state=open]{color:var(--sidebar-accent-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:slide-in-from-end[data-state=open]:dir(ltr){--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-end[data-state=open]:dir(rtl){--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-start[data-state=open]:dir(ltr){--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-start[data-state=open]:dir(rtl){--tw-enter-translate-x:100%}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}@media(hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:data-highlighted\:bg-destructive\/10[data-variant=destructive][data-highlighted]{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:data-highlighted\:bg-destructive\/10[data-variant=destructive][data-highlighted]{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.data-\[variant\=destructive\]\:data-highlighted\:text-destructive[data-variant=destructive][data-highlighted]{color:var(--destructive)}@media(min-width:40rem){.sm\:flex{display:flex}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:basis-1\/1{flex-basis:100%}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-start{text-align:start}}@media(min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ms-0:is(:where(.peer)[data-variant=inset]~*){margin-inline-start:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ms-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-inline-start:calc(var(--spacing)*2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media(min-width:64rem){.lg\:basis-1\/2{flex-basis:50%}}.dark\:scale-0:is(.dark *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:scale-100:is(.dark *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:-rotate-90:is(.dark *){rotate:-90deg}.dark\:rotate-0:is(.dark *){rotate:none}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-destructive\/70:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/70:is(.dark *){background-color:color-mix(in oklab,var(--destructive)70%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-sky-600:is(.dark *){background-color:var(--color-sky-600)}@media(hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[state\=checked\]\:bg-primary:is(.dark *)[data-state=checked]{background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input)80%,transparent)}}.dark\:data-\[variant\=destructive\]\:data-highlighted\:bg-destructive\/20:is(.dark *)[data-variant=destructive][data-highlighted]{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:data-highlighted\:bg-destructive\/20:is(.dark *)[data-variant=destructive][data-highlighted]{background-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.\[\&_img\]\:size-full img{width:100%;height:100%}.\[\&_img\]\:object-cover img{object-fit:cover}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\+\[data-slot\=item-content\]\]\:flex-none+[data-slot=item-content]{flex:none}.\[\&\:has\(\[role\=checkbox\]\)\]\:pe-0:has([role=checkbox]){padding-inline-end:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}.\[a\]\:transition-colors:is(a){transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.\[a\]\:hover\:bg-accent\/50:is(a):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-accent\/50:is(a):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\>\*\]\:focus-visible\:relative>:focus-visible{position:relative}.\[\&\>\*\]\:focus-visible\:z-10>:focus-visible{z-index:10}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-s-none>:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none>:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-s-0>:not(:first-child){border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0>:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-e-none>:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none>:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-e-md:has(:is(select[aria-hidden=true]:last-child))>[data-slot=select-trigger]:last-of-type{border-start-end-radius:calc(var(--radius) - 2px);border-end-end-radius:calc(var(--radius) - 2px)}.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:fit-content}.\[\&\>a\]\:underline>a{text-decoration-line:underline}.\[\&\>a\]\:underline-offset-4>a{text-underline-offset:4px}.\[\&\>a\:hover\]\:text-primary>a:hover{color:var(--primary)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>input\]\:flex-1>input{flex:1}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}@media(hover:hover){:is(.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover,.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover>svelte-css-wrapper)>th,:is(.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover,.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover>svelte-css-wrapper) td{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){:is(.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover,.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover>svelte-css-wrapper)>th,:is(.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover,.hover\:\[\&\,\&\>svelte-css-wrapper\]\:\[\&\>th\,td\]\:bg-muted\/50:hover>svelte-css-wrapper) td{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-end-2{inset-inline-end:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-start-2{inset-inline-start:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media(hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--border:oklch(92% .004 286.32);--input:oklch(92% .004 286.32);--ring:oklch(70.5% .015 286.067);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.1% .005 285.823);--sidebar-primary:oklch(21% .006 285.885);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(96.7% .001 286.375);--sidebar-accent-foreground:oklch(21% .006 285.885);--sidebar-border:oklch(92% .004 286.32);--sidebar-ring:oklch(70.5% .015 286.067)}.dark{--background:oklch(14.1% .005 285.823);--foreground:oklch(98.5% 0 0);--card:oklch(21% .006 285.885);--card-foreground:oklch(98.5% 0 0);--popover:oklch(21% .006 285.885);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27.4% .006 286.033);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(27.4% .006 286.033);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.2% .016 285.938);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(21% .006 285.885);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(27.4% .006 286.033);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.2% .016 285.938)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,var(--ngp-accordion-content-height,auto)))))}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,var(--ngp-accordion-content-height,auto)))))}to{height:0}}html[dir=ltr],[data-sonner-toaster][dir=ltr]{--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}html[dir=rtl],[data-sonner-toaster][dir=rtl]{--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}@media(hover:none)and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translate(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}[data-sonner-toast][data-y-position=top]{top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px #0006}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:#00000014}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:#ffffff4d}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]:before{content:"";position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]:before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]:before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]:before{content:"";position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]:after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y: translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y: translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y: translateY( calc(var(--lift) * var(--offset) + var(--lift) * -100%) );opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]:before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{-webkit-user-select:none;user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media(max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 87%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 93%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 84%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 43%, 17%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 9%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media(prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}.modelTableRow:not(:has([data-state=open])){border:none}.modelTableCell:not(:has([data-state=open])){padding-block:0}#ModelVersionsTable [data-slot=checkbox-indicator]{pointer-events:none}.noSelect{-webkit-user-select:none;user-select:none}.selectedVersion{background:#0085c8;border-color:#065884}video{position:relative;width:100%;height:100%}.modelVersion.svelte-1iy54su{grid-template-columns:auto 30%}@media(max-width:700px){.modelVersion.svelte-1iy54su{grid-template-columns:1fr}}video.svelte-l8s2j8{position:relative;display:block;height:100%;width:100%;max-height:100%}#media-preview.svelte-l8s2j8{display:grid;grid-template-columns:2fr 2fr;gap:2rem}.clampText.svelte-l8s2j8{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical}.clampText-4.svelte-l8s2j8{overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical}h2.svelte-v9agtp,h3.svelte-v9agtp,ol.svelte-v9agtp,h4.svelte-v9agtp{text-align:center;width:max-content}ol.svelte-v9agtp{padding-top:.6rem;padding-left:1.5rem;margin-bottom:2rem}ol.svelte-v9agtp,h3.svelte-v9agtp{opacity:.75}li.svelte-v9agtp{text-align:left;line-height:1.7;font-weight:300;font-size:.9rem}#login.svelte-v9agtp{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh}h2.svelte-v9agtp{font-weight:600;padding-bottom:1.4rem;font-size:2.2rem}.Images-Loading-Wrapper.svelte-v9agtp{display:flex;flex-direction:column;margin-top:2rem;justify-content:center;align-items:center}.Images-Loading-Wrapper.svelte-v9agtp p:where(.svelte-v9agtp){margin-top:.7rem}h4.svelte-v9agtp{margin-inline:auto;margin-top:1.4rem;font-size:.9em;color:#eb4034;opacity:.9} diff --git a/front-end/build/civit/_app/immutable/assets/5.BU9B4D3Q.css b/front-end/build/civit/_app/immutable/assets/5.BU9B4D3Q.css new file mode 100644 index 0000000..4d230e0 --- /dev/null +++ b/front-end/build/civit/_app/immutable/assets/5.BU9B4D3Q.css @@ -0,0 +1 @@ +.asset-container.svelte-1yp1o9z{border-radius:5px;overflow:hidden;position:relative;width:100%;height:100%}.overlay.svelte-1yp1o9z{--bgGT: linear-gradient(to top, color-mix(in lab, var(--background) 50%, transparent 50%) 15% ,color-mix(in lab, var(--background) 50%, transparent 70%) 30%, transparent 100%);position:absolute;z-index:2;width:100%;height:100%;top:0;left:0;pointer-events:none;background:var(--bgGT)}.overlay.svelte-1yp1o9z>:where(.svelte-1yp1o9z){pointer-events:all}.overlay.svelte-1yp1o9z .stats:where(.svelte-1yp1o9z){opacity:0;transition:.12s;z-index:1}.overlay.svelte-1yp1o9z:after{content:"";position:absolute;width:100%;height:100%;background:linear-gradient(to bottom,color-mix(in lab,var(--background) 80%,transparent 20%) 15%,color-mix(in lab,var(--background) 50%,transparent 70%) 30%,transparent 100%),var(--bgGT);transition:.12s;opacity:0;z-index:0}.asset-container.svelte-1yp1o9z:hover .overlay:where(.svelte-1yp1o9z):after{opacity:1}.asset-container.svelte-1yp1o9z:hover .overlay:where(.svelte-1yp1o9z) .stats:where(.svelte-1yp1o9z){opacity:1}[data-actions].svelte-1yp1o9z{transition:.12s}.asset-container.svelte-1yp1o9z:not(:hover) [data-actions]:where(.svelte-1yp1o9z){opacity:0!important}.clampText.svelte-1yp1o9z{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}#mansonary video{display:block;width:100%;height:100%;z-index:1;position:relative}[data-asset-container]:has(video) [data-slot=skeleton]{display:none}[data-asset-container]:has(video){border:1px solid transparent;border-style:var(--tw-border-style);border-color:var(--input)}.filterWrapper.svelte-yx0ry8{display:flex;align-items:center} diff --git a/front-end/build/civit/_app/immutable/assets/media.DcDX5w35.css b/front-end/build/civit/_app/immutable/assets/media.DcDX5w35.css new file mode 100644 index 0000000..7307acd --- /dev/null +++ b/front-end/build/civit/_app/immutable/assets/media.DcDX5w35.css @@ -0,0 +1 @@ +.asset-container.svelte-16s4zz4{border-radius:5px;overflow:hidden;position:relative;width:100%;height:100%}.overlay.svelte-16s4zz4{position:absolute;z-index:2;width:100%;height:100%;top:0;left:0;pointer-events:none}.overlay.svelte-16s4zz4>:where(.svelte-16s4zz4){pointer-events:all}.overlay.svelte-16s4zz4 .stats:where(.svelte-16s4zz4){opacity:0;transition:.12s;z-index:1}.overlay.svelte-16s4zz4:after{content:"";position:absolute;width:100%;height:100%;background:linear-gradient(0deg,var(--background) 4%,color-mix(in lab,var(--background) 50%,transparent 70%) 30%,transparent 100%);transition:.12s;opacity:0;z-index:0}.asset-container.svelte-16s4zz4:hover .overlay:where(.svelte-16s4zz4):after{opacity:1}.asset-container.svelte-16s4zz4:hover .overlay:where(.svelte-16s4zz4) .stats:where(.svelte-16s4zz4){opacity:1}#mansonary video{display:block;width:100%;height:100%;z-index:1;position:relative}.filterWrapper.svelte-26iiob{display:flex;align-items:center} diff --git a/front-end/build/civit/_app/immutable/assets/select-trigger.CV-KWLNP.css b/front-end/build/civit/_app/immutable/assets/select-trigger.CV-KWLNP.css new file mode 100644 index 0000000..527a504 --- /dev/null +++ b/front-end/build/civit/_app/immutable/assets/select-trigger.CV-KWLNP.css @@ -0,0 +1 @@ +[data-select-viewport],[data-combobox-viewport]{scrollbar-width:none!important;-ms-overflow-style:none!important;-webkit-overflow-scrolling:touch!important}[data-combobox-viewport]::-webkit-scrollbar{display:none!important}[data-select-viewport]::-webkit-scrollbar{display:none!important} diff --git a/front-end/build/civit/_app/immutable/chunks/2XHqwiYu.js b/front-end/build/civit/_app/immutable/chunks/2XHqwiYu.js new file mode 100644 index 0000000..5d22504 --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/2XHqwiYu.js @@ -0,0 +1 @@ +import{A as f,u as p}from"./B8s4VlAd.js";class l{static cursor="";static media="";static reset(){l.cursor=""}static default_payload(s=[]){let a={period:"Month",sort:"Most Reactions",baseModel:"",mediaType:"Image",cursor:l.cursor,browsingLevel:"31",techniques:"",requiringMeta:"false",madeOnsite:"false",originalsOnly:"false",remixesOnly:"false",metadataOnly:"false",tags:"",tools:"",modelVersionId:"",prioritizedUserIds:""};for(const o in s){const t=s[o],r=t.name,i=t.value;a[r]!==void 0&&(a[r]=i)}return a}static async fetch_assets(s=[]){let a=l.default_payload(s),o=f.infinite_images(p.token,new URLSearchParams(a).toString()),t=await fetch(o);if(t.status===200){let r=await t.json(),i=r[0].map(e=>{const u=e.img_url,c=u.replace("/transcode=true,original=true,quality=100/","/transcode=true,width=400,original=false,optimized=true/"),d=u.replace("/transcode=true,original=true,quality=100/","/anim=false,transcode=true,width=400,original=false,optimized=true/");return e.optimized_asset_url=c,e.optimized_poster_img_url=d,e.ratio=g(e.width||0,e.height||0),e});return l.cursor=r[1].replaceAll('"',""),{status:t.status,assets:i}}return{status:t.status,assets:[]}}}function g(n,s,a=50){const o=(r,i,e)=>e>=a||i===0?r:o(i,r%i,e+1),t=o(n,s,0);return{w:n/t,h:s/t}}export{l}; diff --git a/front-end/build/civit/_app/immutable/chunks/B8s4VlAd.js b/front-end/build/civit/_app/immutable/chunks/B8s4VlAd.js new file mode 100644 index 0000000..fdd8c7a --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/B8s4VlAd.js @@ -0,0 +1,6 @@ +import{aK as lr,aL as on,aM as Rs,J as B,P as yt,O as Ft,g as y,a1 as Ps,R as Os,S as Fs,T as Rr,U as Oe,V as Ae,K as Ee,ae as Ls,aH as Ds,al as Pr,D as Pe,I as Qe,N as zs,aF as an,H as wt,B as Vs,ac as Xt,aN as cn,aO as ln,aP as Gs,at as un,aQ as dn,E as fn,G as Bs,aR as Vt,Y as hn,aS as Ws,aB as Us,aT as js,aU as Ks,aE as qs,F as kt,aV as pn,aW as Hs,Q as gn,as as mn,aX as Ys,aY as Xs,a3 as Zs,aZ as bn,W as vn,a_ as Js,a$ as Qs,b0 as $s,b1 as eo,b2 as to,b3 as ro,b4 as no,b5 as so,b6 as oo,b7 as yn,X as wn,C as kn,k as xt,b8 as io,p as $,e as $e,d as xn,r as et,b as ee,f as K,x as D,v as ae,b9 as ao,s as X,ba as Or,c as C,ad as We,a as De,bb as co,bc as Fr,bd as lo,u as uo,j as Ie,be as fo,bf as Sn}from"./DA9wTPlB.js";import{e as ho,i as po,g as go,j as mo,d as bo,n as vo,k as yo,l as wo,a as V,c as Z,f as ve,b as ko,o as Y,m as xo,u as So,p as Co}from"./kT5kkkQy.js";import{B as ur,p as _,r as fe,s as ze,i as ke,b as St,c as To}from"./Bl70acv3.js";import{i as Eo}from"./CUg-vmQ0.js";const Ao=[];function _o(t,e=!1,r=!1){return bt(t,new Map,"",Ao,null,r)}function bt(t,e,r,n,s=null,o=!1){if(typeof t=="object"&&t!==null){var i=e.get(t);if(i!==void 0)return i;if(t instanceof Map)return new Map(t);if(t instanceof Set)return new Set(t);if(lr(t)){var a=Array(t.length);e.set(t,a),s!==null&&e.set(s,a);for(var c=0;c{var i=n.length===0&&r!==null;if(i){var a=r,c=a.parentNode;qs(c),c.append(a),t.items.clear(),ue(t,e[0].prev,e[s-1].next)}for(var l=0;l{var T=r();return lr(T)?T:T==null?[]:an(T)}),p,g=!0;function x(){Ro(F,p,i,e,n),h!==null&&(p.length===0?(h.fragment?(i.before(h.fragment),h.fragment=null):fn(h.effect),O.first=h.effect):Bs(h.effect,()=>{h=null}))}var O=Ft(()=>{p=y(m);var T=p.length;let A=!1;if(B){var S=Os(i)===Fs;S!==(T===0)&&(i=Rr(),Oe(i),Ae(!1),A=!0)}for(var M=new Set,v=Pe,z=null,G=zs(),q=0;qo(i))};else{var P=document.createDocumentFragment(),I=wt();P.append(I),h={fragment:P,effect:Qe(()=>o(I))}}if(B&&T>0&&Oe(Rr()),!g)if(G){for(const[L,b]of a)M.has(L)||v.skipped_effects.add(b.e);v.oncommit(x),v.ondiscard(()=>{})}else x();A&&Ae(!0),y(m)}),F={effect:O,items:a,first:c};g=!1,B&&(i=Ee)}function Ro(t,e,r,n,s){var o=(n&Ws)!==0,i=e.length,a=t.items,c=t.first,l,u=null,d,f=[],h=[],m,p,g,x;if(o)for(x=0;xi;if(c!==null||l!==void 0){for(var v=l===void 0?[]:an(l);c!==null;)(c.e.f&Vt)===0&&v.push(c),c=c.next;var z=v.length;if(M=a.size-z>i,z>0){var G=(n&dn)!==0&&i===0?r:null;if(o){for(x=0;x{if(d!==void 0)for(g of d)g.a?.apply()})}function Po(t,e,r,n,s,o,i,a){var c=(i&ln)!==0,l=(i&Gs)===0,u=c?l?Vs(r,!1,!1):Xt(r):r,d=(i&cn)===0?s:Xt(s),f={i:d,v:u,k:n,a:null,e:null,o:!1,prev:e,next:null};try{if(t===null){var h=document.createDocumentFragment();h.append(t=wt())}return f.e=Qe(()=>o(t,u,d,a)),e!==null&&(e.next=f),f}finally{}}function Gt(t,e,r){for(var n=t.next?t.next.e.nodes_start:r,s=e?e.e.nodes_start:r,o=t.e.nodes_start;o!==null&&o!==n;){var i=Us(o);s.before(o),o=i}}function ue(t,e,r){e===null?(t.first=r,t.effect.first=r&&r.e):(e.e.next&&(e.e.next.prev=null),e.next=r,e.e.next=r&&r.e),r!==null&&(r.e.prev&&(r.e.prev.next=null),r.prev=e,r.e.prev=e&&e.e)}function Oo(){return Symbol(pn)}function Fo(t,e,r){B&&yt();var n=new ur(t),s=!Hs();Ft(()=>{var o=e();s&&o!==null&&typeof o=="object"&&(o={}),n.ensure(o,r)})}function ie(t,e,...r){var n=new ur(t);Ft(()=>{const s=e()??null;n.ensure(s,s&&(o=>s(o,...r)))},gn)}function Lo(t,e,r,n,s,o){let i=B;B&&yt();var a=null;B&&Ee.nodeType===Ys&&(a=Ee,yt());var c=B?Ee:t,l=new ur(c,!1);Ft(()=>{const u=e()||null;var d=r||u==="svg"?Xs:null;if(u===null){l.ensure(null,null);return}return l.ensure(u,f=>{if(u){if(a=B?a:d?document.createElementNS(d,u):document.createElement(u),ho(a,a),n){B&&po(u)&&a.append(document.createComment(""));var h=B?un(a):a.appendChild(wt());B&&(h===null?Ae(!1):Oe(h)),n(a,h)}Zs.nodes_end=a,f.before(a)}B&&Oe(f)}),()=>{}},gn),mn(()=>{}),i&&(Ae(!0),Oe(c))}function Do(t,e){var r=void 0,n;bn(()=>{r!==(r=e())&&(n&&(kt(n),n=null),r&&(n=Qe(()=>{vn(()=>r(t))})))})}function Cn(t){var e,r,n="";if(typeof t=="string"||typeof t=="number")n+=t;else if(typeof t=="object")if(Array.isArray(t)){var s=t.length;for(e=0;e=0;){var a=i+o;(i===0||Lr.includes(n[i-1]))&&(a===n.length||Lr.includes(n[a]))?n=(i===0?"":n.substring(0,i))+n.substring(a+1):i=a}}return n===""?null:n}function Dr(t,e=!1){var r=e?" !important;":";",n="";for(var s in t){var o=t[s];o!=null&&o!==""&&(n+=" "+s+": "+o+r)}return n}function Bt(t){return t[0]!=="-"||t[1]!=="-"?t.toLowerCase():t}function Go(t,e){if(e){var r="",n,s;if(Array.isArray(e)?(n=e[0],s=e[1]):n=e,t){t=String(t).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var o=!1,i=0,a=!1,c=[];n&&c.push(...Object.keys(n).map(Bt)),s&&c.push(...Object.keys(s).map(Bt));var l=0,u=-1;const p=t.length;for(var d=0;d{Zt(t,t.__value)});e.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),mn(()=>{e.disconnect()})}function zr(t){return"__value"in t?t.__value:t.value}const Ue=Symbol("class"),je=Symbol("style"),Tn=Symbol("is custom element"),En=Symbol("is html");function jo(t){if(B){var e=!1,r=()=>{if(!e){if(e=!0,t.hasAttribute("value")){var n=t.value;Ct(t,"value",null),t.value=n}if(t.hasAttribute("checked")){var s=t.checked;Ct(t,"checked",null),t.checked=s}}};t.__on_r=r,hn(r),so()}}function Ko(t,e){e?t.hasAttribute("selected")||t.setAttribute("selected",""):t.removeAttribute("selected")}function Ct(t,e,r,n){var s=An(t);B&&(s[e]=t.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&t.nodeName==="LINK")||s[e]!==(s[e]=r)&&(e==="loading"&&(t[oo]=r),r==null?t.removeAttribute(e):typeof r!="string"&&_n(t).includes(e)?t[e]=r:t.setAttribute(e,r))}function qo(t,e,r,n,s=!1,o=!1){if(B&&s&&t.tagName==="INPUT"){var i=t,a=i.type==="checkbox"?"defaultChecked":"defaultValue";a in r||jo(i)}var c=An(t),l=c[Tn],u=!c[En];let d=B&&l;d&&Ae(!1);var f=e||{},h=t.tagName==="OPTION";for(var m in e)m in r||(r[m]=null);r.class?r.class=zo(r.class):(n||r[Ue])&&(r.class=null),r[je]&&(r.style??=null);var p=_n(t);for(const S in r){let M=r[S];if(h&&S==="value"&&M==null){t.value=t.__value="",f[S]=M;continue}if(S==="class"){var g=t.namespaceURI==="http://www.w3.org/1999/xhtml";Bo(t,g,M,n,e?.[Ue],r[Ue]),f[S]=M,f[Ue]=r[Ue];continue}if(S==="style"){Wo(t,M,e?.[je],r[je]),f[S]=M,f[je]=r[je];continue}var x=f[S];if(!(M===x&&!(M===void 0&&t.hasAttribute(S)))){f[S]=M;var O=S[0]+S[1];if(O!=="$$")if(O==="on"){const v={},z="$$"+S;let G=S.slice(2);var F=yo(G);if(go(G)&&(G=G.slice(0,-7),v.capture=!0),!F&&x){if(M!=null)continue;t.removeEventListener(G,f[z],v),f[z]=null}if(M!=null)if(F)t[`__${G}`]=M,bo([G]);else{let q=function(ce){f[S].call(this,ce)};f[z]=mo(G,t,q,v)}else F&&(t[`__${G}`]=void 0)}else if(S==="style")Ct(t,S,M);else if(S==="autofocus")ro(t,!!M);else if(!l&&(S==="__value"||S==="value"&&M!=null))t.value=t.__value=M;else if(S==="selected"&&h)Ko(t,M);else{var T=S;u||(T=vo(T));var A=T==="defaultValue"||T==="defaultChecked";if(M==null&&!l&&!A)if(c[S]=null,T==="value"||T==="checked"){let v=t;const z=e===void 0;if(T==="value"){let G=v.defaultValue;v.removeAttribute(T),v.defaultValue=G,v.value=v.__value=z?G:null}else{let G=v.defaultChecked;v.removeAttribute(T),v.defaultChecked=G,v.checked=z?G:!1}}else t.removeAttribute(S);else A||p.includes(T)&&(l||typeof M!="string")?(t[T]=M,T in c&&(c[T]=no)):typeof M!="function"&&Ct(t,T,M)}}}return d&&Ae(!0),f}function be(t,e,r=[],n=[],s=[],o,i=!1,a=!1){to(s,r,n,c=>{var l=void 0,u={},d=t.nodeName==="SELECT",f=!1;if(bn(()=>{var m=e(...c.map(y)),p=qo(t,l,m,o,i,a);f&&d&&"value"in m&&Zt(t,m.value);for(let x of Object.getOwnPropertySymbols(u))m[x]||kt(u[x]);for(let x of Object.getOwnPropertySymbols(m)){var g=m[x];x.description===pn&&(!l||g!==l[x])&&(u[x]&&kt(u[x]),u[x]=Qe(()=>Do(t,()=>g))),p[x]=g}l=p}),d){var h=t;vn(()=>{Zt(h,l.value,!0),Uo(h)})}f=!0})}function An(t){return t.__attributes??={[Tn]:t.nodeName.includes("-"),[En]:t.namespaceURI===$s}}var Vr=new Map;function _n(t){var e=t.getAttribute("is")||t.nodeName,r=Vr.get(e);if(r)return r;Vr.set(e,r=[]);for(var n,s=t,o=Element.prototype;o!==s;){n=eo(s);for(var i in n)n[i].set&&r.push(i);s=on(s)}return r}function Jt(t,e,r=e){var n=new WeakSet;yn(t,"input",async s=>{var o=s?t.defaultValue:t.value;if(o=Ut(t)?jt(o):o,r(o),Pe!==null&&n.add(Pe),await kn(),o!==(o=e())){var i=t.selectionStart,a=t.selectionEnd,c=t.value.length;if(t.value=o??"",a!==null){var l=t.value.length;i===a&&a===c&&l>c?(t.selectionStart=l,t.selectionEnd=l):(t.selectionStart=i,t.selectionEnd=Math.min(a,l))}}}),(B&&t.defaultValue!==t.value||xt(e)==null&&t.value)&&(r(Ut(t)?jt(t.value):t.value),Pe!==null&&n.add(Pe)),wn(()=>{var s=e();if(t===document.activeElement){var o=io??Pe;if(n.has(o))return}Ut(t)&&s===jt(t.value)||t.type==="date"&&!s&&!t.value||s!==t.value&&(t.value=s??"")})}function Ut(t){var e=t.type;return e==="number"||e==="range"}function jt(t){return t===""?null:+t}function Ho(t,e,r=e){yn(t,"change",()=>{r(t.files)}),B&&t.files&&r(t.files),wn(()=>{t.files=e()})}const Yo={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};var Xo=wo("");function dr(t,e){$(e,!0);const r=_(e,"color",3,"currentColor"),n=_(e,"size",3,24),s=_(e,"strokeWidth",3,2),o=_(e,"absoluteStrokeWidth",3,!1),i=_(e,"iconNode",19,()=>[]),a=fe(e,["$$slots","$$events","$$legacy","name","color","size","strokeWidth","absoluteStrokeWidth","iconNode","children"]);var c=Xo();be(c,d=>({...Yo,...a,width:n(),height:n(),stroke:r(),"stroke-width":d,class:["lucide-icon lucide",e.name&&`lucide-${e.name}`,e.class]}),[()=>o()?Number(s())*24/Number(n()):s()]);var l=$e(c);No(l,17,i,Mo,(d,f)=>{var h=D(()=>ao(y(f),2));let m=()=>y(h)[0],p=()=>y(h)[1];var g=Z(),x=K(g);Lo(x,m,!0,(O,F)=>{be(O,()=>({...p()}))}),V(d,g)});var u=xn(l);ie(u,()=>e.children??ae),et(c),V(t,c),ee()}function Zo(t,e){$(e,!0);let r=fe(e,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56"}]];dr(t,ze({name:"loader-circle"},()=>r,{get iconNode(){return n},children:(s,o)=>{var i=Z(),a=K(i);ie(a,()=>e.children??ae),V(s,i)},$$slots:{default:!0}})),ee()}class Jo extends Map{#e=new Map;#t=X(0);#r=X(0);#n=Or||-1;constructor(e){if(super(),e){for(var[r,n]of e)super.set(r,n);this.#r.v=super.size}}#s(e){return Or===this.#n?X(e):Xt(e)}has(e){var r=this.#e,n=r.get(e);if(n===void 0){var s=super.get(e);if(s!==void 0)n=this.#s(0),r.set(e,n);else return y(this.#t),!1}return y(n),!0}forEach(e,r){this.#o(),super.forEach(e,r)}get(e){var r=this.#e,n=r.get(e);if(n===void 0){var s=super.get(e);if(s!==void 0)n=this.#s(0),r.set(e,n);else{y(this.#t);return}}return y(n),super.get(e)}set(e,r){var n=this.#e,s=n.get(e),o=super.get(e),i=super.set(e,r),a=this.#t;if(s===void 0)s=this.#s(0),n.set(e,s),C(this.#r,super.size),We(a);else if(o!==r){We(s);var c=a.reactions===null?null:new Set(a.reactions),l=c===null||!s.reactions?.every(u=>c.has(u));l&&We(a)}return i}delete(e){var r=this.#e,n=r.get(e),s=super.delete(e);return n!==void 0&&(r.delete(e),C(this.#r,super.size),C(n,-1),We(this.#t)),s}clear(){if(super.size!==0){super.clear();var e=this.#e;C(this.#r,0);for(var r of e.values())C(r,-1);We(this.#t),e.clear()}}#o(){y(this.#t);var e=this.#e;if(this.#r.v!==e.size){for(var r of super.keys())if(!e.has(r)){var n=this.#s(0);e.set(r,n)}}for([,n]of this.#e)y(n)}keys(){return y(this.#t),super.keys()}values(){return this.#o(),super.values()}entries(){return this.#o(),super.entries()}[Symbol.iterator](){return this.entries()}get size(){return y(this.#r),super.size}}var Gr=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,Qo=/\n/g,$o=/^\s*/,ei=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,ti=/^:\s*/,ri=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,ni=/^[;\s]*/,si=/^\s+|\s+$/g,oi=` +`,Br="/",Wr="*",Te="",ii="comment",ai="declaration";function ci(t,e){if(typeof t!="string")throw new TypeError("First argument must be a string");if(!t)return[];e=e||{};var r=1,n=1;function s(m){var p=m.match(Qo);p&&(r+=p.length);var g=m.lastIndexOf(oi);n=~g?m.length-g:n+m.length}function o(){var m={line:r,column:n};return function(p){return p.position=new i(m),l(),p}}function i(m){this.start=m,this.end={line:r,column:n},this.source=e.source}i.prototype.content=t;function a(m){var p=new Error(e.source+":"+r+":"+n+": "+m);if(p.reason=m,p.filename=e.source,p.line=r,p.column=n,p.source=t,!e.silent)throw p}function c(m){var p=m.exec(t);if(p){var g=p[0];return s(g),t=t.slice(g.length),p}}function l(){c($o)}function u(m){var p;for(m=m||[];p=d();)p!==!1&&m.push(p);return m}function d(){var m=o();if(!(Br!=t.charAt(0)||Wr!=t.charAt(1))){for(var p=2;Te!=t.charAt(p)&&(Wr!=t.charAt(p)||Br!=t.charAt(p+1));)++p;if(p+=2,Te===t.charAt(p-1))return a("End of comment missing");var g=t.slice(2,p-2);return n+=2,s(g),t=t.slice(p),n+=2,m({type:ii,comment:g})}}function f(){var m=o(),p=c(ei);if(p){if(d(),!c(ti))return a("property missing ':'");var g=c(ri),x=m({type:ai,property:Ur(p[0].replace(Gr,Te)),value:g?Ur(g[0].replace(Gr,Te)):Te});return c(ni),x}}function h(){var m=[];u(m);for(var p;p=f();)p!==!1&&(m.push(p),u(m));return m}return l(),h()}function Ur(t){return t?t.replace(si,Te):Te}function li(t,e){let r=null;if(!t||typeof t!="string")return r;const n=ci(t),s=typeof e=="function";return n.forEach(o=>{if(o.type!=="declaration")return;const{property:i,value:a}=o;s?e(i,a,o):a&&(r=r||{},r[i]=a)}),r}typeof window<"u"&&new URL(window.location.href).port;let Mn="";Mn="/civit";class ui{static endpoint=Mn;static user_data(e){return`${this.endpoint}/user_data?token=${e}`}static infinite_images(e,r){return`${this.endpoint}/infinite_images?${r}&token=${e}`}static infinite_models(e,r){return`${this.endpoint}/models?${r}&token=${e}`}static popular_tags(e){return`${this.endpoint}/tags_with_id?&token=${e}`}static media_data(e,r,n){return`${this.endpoint}/media_data/${n}/${r}?&token=${e}`}static get_collections(e){return`${this.endpoint}/get_collections?&token=${e}`}static get_collections_by_media_type(e,r){return`${this.endpoint}/get_collections_by_media?&token=${e}&media_type=${r}`}static update_media_collections(e,r,n,s,o){return`${this.endpoint}/update_collections/${r}?&token=${e}&add=${n.join(",")}&remove=${s.join(",")}&collection_type=${o}`}static collections_with_media(e,r,n){return`${this.endpoint}/collection_with_media/${r}?&token=${e}&collection_type=${n}`}static favorite_media(e,r,n){return`${this.endpoint}/favorite_media/${r}?token=${e}&collection_type=${n}`}static unfavorite_media(e,r,n){return`${this.endpoint}/unfavorite_media/${r}?token=${e}&collection_type=${n}`}static get_base_models(e){return`${this.endpoint}/base_models_list?token=${e}`}static get_tools(e){return`${this.endpoint}/get_tools_list?token=${e}`}static get_techniques(e){return`${this.endpoint}/get_techniques_list?token=${e}`}static get_model_by_id(e,r){return`${this.endpoint}/get_model/${r}?token=${e}`}static download_model_by_id(e,r,n,s,o,i,a,c,l,u,d){return`${this.endpoint}/download_by_id/${r}?token=${e}&model_type=${n}&cover=${s}&base_model=${o}&model_name=${i}&published_at=${c}&author_name=${a}&based_on_model=${l}&file_name=${u}&stats=${d}"`}static list_downloads(e){return`${this.endpoint}/downloads?token=${e}"`}static create_collection(e,r,n,s,o){return`${this.endpoint}/create_collection?token=${e}&collection_name=${r}&collection_type=${n}&nsfw=${s}&description=${o}"`}static get_gen_data(e,r){return`${this.endpoint}/get_generation_data/${r}?token=${e}"`}}const Qt=De({}),lt=De({loading:!0,error:""}),$t=De({token:""}),El=()=>{$t.token="";for(const t in Qt)delete Qt[t];er("user_token","",0)},Al=async t=>{lt.loading=!0,lt.error="",$t.token="";let e=await fetch(ui.user_data(t));if(lt.loading=!1,e.status!=200){lt.error="Token is not valid",er("user_token",t,-3);return}let r=await e.json();$t.token=t;for(const n of Object.keys(r))Qt[n]=r[n];er("user_token",t,61),window.dispatchEvent(new CustomEvent("FinishloadingUser"))};function er(t,e,r=7){const n=new Date(Date.now()+r*24*60*60*1e3).toUTCString();document.cookie=`${encodeURIComponent(t)}=${encodeURIComponent(e)}; expires=${n}; path=/`}function _l(t){const e=encodeURIComponent(t)+"=",r=document.cookie.split(";");for(let n of r)if(n=n.trim(),n.startsWith(e))return decodeURIComponent(n.substring(e.length));return null}const di=(t,e)=>{const r=new Array(t.length+e.length);for(let n=0;n({classGroupId:t,validator:e}),In=(t=new Map,e=null,r)=>({nextPart:t,validators:e,classGroupId:r}),Tt="-",jr=[],hi="arbitrary..",pi=t=>{const e=mi(t),{conflictingClassGroups:r,conflictingClassGroupModifiers:n}=t;return{getClassGroupId:i=>{if(i.startsWith("[")&&i.endsWith("]"))return gi(i);const a=i.split(Tt),c=a[0]===""&&a.length>1?1:0;return Nn(a,c,e)},getConflictingClassGroupIds:(i,a)=>{if(a){const c=n[i],l=r[i];return c?l?di(l,c):c:l||jr}return r[i]||jr}}},Nn=(t,e,r)=>{if(t.length-e===0)return r.classGroupId;const s=t[e],o=r.nextPart.get(s);if(o){const l=Nn(t,e+1,o);if(l)return l}const i=r.validators;if(i===null)return;const a=e===0?t.join(Tt):t.slice(e).join(Tt),c=i.length;for(let l=0;lt.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),r=e.indexOf(":"),n=e.slice(0,r);return n?hi+n:void 0})(),mi=t=>{const{theme:e,classGroups:r}=t;return bi(r,e)},bi=(t,e)=>{const r=In();for(const n in t){const s=t[n];fr(s,r,n,e)}return r},fr=(t,e,r,n)=>{const s=t.length;for(let o=0;o{if(typeof t=="string"){yi(t,e,r);return}if(typeof t=="function"){wi(t,e,r,n);return}ki(t,e,r,n)},yi=(t,e,r)=>{const n=t===""?e:Rn(e,t);n.classGroupId=r},wi=(t,e,r,n)=>{if(xi(t)){fr(t(n),e,r,n);return}e.validators===null&&(e.validators=[]),e.validators.push(fi(r,t))},ki=(t,e,r,n)=>{const s=Object.entries(t),o=s.length;for(let i=0;i{let r=t;const n=e.split(Tt),s=n.length;for(let o=0;o"isThemeGetter"in t&&t.isThemeGetter===!0,Si=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,r=Object.create(null),n=Object.create(null);const s=(o,i)=>{r[o]=i,e++,e>t&&(e=0,n=r,r=Object.create(null))};return{get(o){let i=r[o];if(i!==void 0)return i;if((i=n[o])!==void 0)return s(o,i),i},set(o,i){o in r?r[o]=i:s(o,i)}}},tr="!",Kr=":",Ci=[],qr=(t,e,r,n,s)=>({modifiers:t,hasImportantModifier:e,baseClassName:r,maybePostfixModifierPosition:n,isExternal:s}),Ti=t=>{const{prefix:e,experimentalParseClassName:r}=t;let n=s=>{const o=[];let i=0,a=0,c=0,l;const u=s.length;for(let p=0;pc?l-c:void 0;return qr(o,h,f,m)};if(e){const s=e+Kr,o=n;n=i=>i.startsWith(s)?o(i.slice(s.length)):qr(Ci,!1,i,void 0,!0)}if(r){const s=n;n=o=>r({className:o,parseClassName:s})}return n},Ei=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((r,n)=>{e.set(r,1e6+n)}),r=>{const n=[];let s=[];for(let o=0;o0&&(s.sort(),n.push(...s),s=[]),n.push(i)):s.push(i)}return s.length>0&&(s.sort(),n.push(...s)),n}},Ai=t=>({cache:Si(t.cacheSize),parseClassName:Ti(t),sortModifiers:Ei(t),...pi(t)}),_i=/\s+/,Mi=(t,e)=>{const{parseClassName:r,getClassGroupId:n,getConflictingClassGroupIds:s,sortModifiers:o}=e,i=[],a=t.trim().split(_i);let c="";for(let l=a.length-1;l>=0;l-=1){const u=a[l],{isExternal:d,modifiers:f,hasImportantModifier:h,baseClassName:m,maybePostfixModifierPosition:p}=r(u);if(d){c=u+(c.length>0?" "+c:c);continue}let g=!!p,x=n(g?m.substring(0,p):m);if(!x){if(!g){c=u+(c.length>0?" "+c:c);continue}if(x=n(m),!x){c=u+(c.length>0?" "+c:c);continue}g=!1}const O=f.length===0?"":f.length===1?f[0]:o(f).join(":"),F=h?O+tr:O,T=F+x;if(i.indexOf(T)>-1)continue;i.push(T);const A=s(x,g);for(let S=0;S0?" "+c:c)}return c},Ii=(...t)=>{let e=0,r,n,s="";for(;e{if(typeof t=="string")return t;let e,r="";for(let n=0;n{let r,n,s,o;const i=c=>{const l=e.reduce((u,d)=>d(u),t());return r=Ai(l),n=r.cache.get,s=r.cache.set,o=a,a(c)},a=c=>{const l=n(c);if(l)return l;const u=Mi(c,r);return s(c,u),u};return o=i,(...c)=>o(Ii(...c))},Ni=[],H=t=>{const e=r=>r[t]||Ni;return e.isThemeGetter=!0,e},On=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Fn=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Ri=/^\d+\/\d+$/,Pi=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Oi=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Fi=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,Li=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Di=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Re=t=>Ri.test(t),N=t=>!!t&&!Number.isNaN(Number(t)),ye=t=>!!t&&Number.isInteger(Number(t)),Kt=t=>t.endsWith("%")&&N(t.slice(0,-1)),pe=t=>Pi.test(t),zi=()=>!0,Vi=t=>Oi.test(t)&&!Fi.test(t),Ln=()=>!1,Gi=t=>Li.test(t),Bi=t=>Di.test(t),Wi=t=>!w(t)&&!k(t),Ui=t=>Ve(t,Vn,Ln),w=t=>On.test(t),Ce=t=>Ve(t,Gn,Vi),qt=t=>Ve(t,Yi,N),Hr=t=>Ve(t,Dn,Ln),ji=t=>Ve(t,zn,Bi),ut=t=>Ve(t,Bn,Gi),k=t=>Fn.test(t),Ke=t=>Ge(t,Gn),Ki=t=>Ge(t,Xi),Yr=t=>Ge(t,Dn),qi=t=>Ge(t,Vn),Hi=t=>Ge(t,zn),dt=t=>Ge(t,Bn,!0),Ve=(t,e,r)=>{const n=On.exec(t);return n?n[1]?e(n[1]):r(n[2]):!1},Ge=(t,e,r=!1)=>{const n=Fn.exec(t);return n?n[1]?e(n[1]):r:!1},Dn=t=>t==="position"||t==="percentage",zn=t=>t==="image"||t==="url",Vn=t=>t==="length"||t==="size"||t==="bg-size",Gn=t=>t==="length",Yi=t=>t==="number",Xi=t=>t==="family-name",Bn=t=>t==="shadow",nr=()=>{const t=H("color"),e=H("font"),r=H("text"),n=H("font-weight"),s=H("tracking"),o=H("leading"),i=H("breakpoint"),a=H("container"),c=H("spacing"),l=H("radius"),u=H("shadow"),d=H("inset-shadow"),f=H("text-shadow"),h=H("drop-shadow"),m=H("blur"),p=H("perspective"),g=H("aspect"),x=H("ease"),O=H("animate"),F=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],A=()=>[...T(),k,w],S=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],v=()=>[k,w,c],z=()=>[Re,"full","auto",...v()],G=()=>[ye,"none","subgrid",k,w],q=()=>["auto",{span:["full",ye,k,w]},ye,k,w],ce=()=>[ye,"auto",k,w],he=()=>["auto","min","max","fr",k,w],E=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],P=()=>["start","end","center","stretch","center-safe","end-safe"],I=()=>["auto",...v()],L=()=>[Re,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...v()],b=()=>[t,k,w],U=()=>[...T(),Yr,Hr,{position:[k,w]}],re=()=>["no-repeat",{repeat:["","x","y","space","round"]}],le=()=>["auto","cover","contain",qi,Ui,{size:[k,w]}],te=()=>[Kt,Ke,Ce],W=()=>["","none","full",l,k,w],j=()=>["",N,Ke,Ce],ne=()=>["solid","dashed","dotted","double"],Se=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],J=()=>[N,Kt,Yr,Hr],Nr=()=>["","none",m,k,w],it=()=>["none",N,k,w],at=()=>["none",N,k,w],zt=()=>[N,k,w],ct=()=>[Re,"full",...v()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[pe],breakpoint:[pe],color:[zi],container:[pe],"drop-shadow":[pe],ease:["in","out","in-out"],font:[Wi],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[pe],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[pe],shadow:[pe],spacing:["px",N],text:[pe],"text-shadow":[pe],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Re,w,k,g]}],container:["container"],columns:[{columns:[N,w,k,a]}],"break-after":[{"break-after":F()}],"break-before":[{"break-before":F()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:A()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:z()}],"inset-x":[{"inset-x":z()}],"inset-y":[{"inset-y":z()}],start:[{start:z()}],end:[{end:z()}],top:[{top:z()}],right:[{right:z()}],bottom:[{bottom:z()}],left:[{left:z()}],visibility:["visible","invisible","collapse"],z:[{z:[ye,"auto",k,w]}],basis:[{basis:[Re,"full","auto",a,...v()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[N,Re,"auto","initial","none",w]}],grow:[{grow:["",N,k,w]}],shrink:[{shrink:["",N,k,w]}],order:[{order:[ye,"first","last","none",k,w]}],"grid-cols":[{"grid-cols":G()}],"col-start-end":[{col:q()}],"col-start":[{"col-start":ce()}],"col-end":[{"col-end":ce()}],"grid-rows":[{"grid-rows":G()}],"row-start-end":[{row:q()}],"row-start":[{"row-start":ce()}],"row-end":[{"row-end":ce()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":he()}],"auto-rows":[{"auto-rows":he()}],gap:[{gap:v()}],"gap-x":[{"gap-x":v()}],"gap-y":[{"gap-y":v()}],"justify-content":[{justify:[...E(),"normal"]}],"justify-items":[{"justify-items":[...P(),"normal"]}],"justify-self":[{"justify-self":["auto",...P()]}],"align-content":[{content:["normal",...E()]}],"align-items":[{items:[...P(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...P(),{baseline:["","last"]}]}],"place-content":[{"place-content":E()}],"place-items":[{"place-items":[...P(),"baseline"]}],"place-self":[{"place-self":["auto",...P()]}],p:[{p:v()}],px:[{px:v()}],py:[{py:v()}],ps:[{ps:v()}],pe:[{pe:v()}],pt:[{pt:v()}],pr:[{pr:v()}],pb:[{pb:v()}],pl:[{pl:v()}],m:[{m:I()}],mx:[{mx:I()}],my:[{my:I()}],ms:[{ms:I()}],me:[{me:I()}],mt:[{mt:I()}],mr:[{mr:I()}],mb:[{mb:I()}],ml:[{ml:I()}],"space-x":[{"space-x":v()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":v()}],"space-y-reverse":["space-y-reverse"],size:[{size:L()}],w:[{w:[a,"screen",...L()]}],"min-w":[{"min-w":[a,"screen","none",...L()]}],"max-w":[{"max-w":[a,"screen","none","prose",{screen:[i]},...L()]}],h:[{h:["screen","lh",...L()]}],"min-h":[{"min-h":["screen","lh","none",...L()]}],"max-h":[{"max-h":["screen","lh",...L()]}],"font-size":[{text:["base",r,Ke,Ce]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[n,k,qt]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Kt,w]}],"font-family":[{font:[Ki,w,e]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[s,k,w]}],"line-clamp":[{"line-clamp":[N,"none",k,qt]}],leading:[{leading:[o,...v()]}],"list-image":[{"list-image":["none",k,w]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",k,w]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:b()}],"text-color":[{text:b()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ne(),"wavy"]}],"text-decoration-thickness":[{decoration:[N,"from-font","auto",k,Ce]}],"text-decoration-color":[{decoration:b()}],"underline-offset":[{"underline-offset":[N,"auto",k,w]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:v()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",k,w]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",k,w]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:U()}],"bg-repeat":[{bg:re()}],"bg-size":[{bg:le()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},ye,k,w],radial:["",k,w],conic:[ye,k,w]},Hi,ji]}],"bg-color":[{bg:b()}],"gradient-from-pos":[{from:te()}],"gradient-via-pos":[{via:te()}],"gradient-to-pos":[{to:te()}],"gradient-from":[{from:b()}],"gradient-via":[{via:b()}],"gradient-to":[{to:b()}],rounded:[{rounded:W()}],"rounded-s":[{"rounded-s":W()}],"rounded-e":[{"rounded-e":W()}],"rounded-t":[{"rounded-t":W()}],"rounded-r":[{"rounded-r":W()}],"rounded-b":[{"rounded-b":W()}],"rounded-l":[{"rounded-l":W()}],"rounded-ss":[{"rounded-ss":W()}],"rounded-se":[{"rounded-se":W()}],"rounded-ee":[{"rounded-ee":W()}],"rounded-es":[{"rounded-es":W()}],"rounded-tl":[{"rounded-tl":W()}],"rounded-tr":[{"rounded-tr":W()}],"rounded-br":[{"rounded-br":W()}],"rounded-bl":[{"rounded-bl":W()}],"border-w":[{border:j()}],"border-w-x":[{"border-x":j()}],"border-w-y":[{"border-y":j()}],"border-w-s":[{"border-s":j()}],"border-w-e":[{"border-e":j()}],"border-w-t":[{"border-t":j()}],"border-w-r":[{"border-r":j()}],"border-w-b":[{"border-b":j()}],"border-w-l":[{"border-l":j()}],"divide-x":[{"divide-x":j()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":j()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ne(),"hidden","none"]}],"divide-style":[{divide:[...ne(),"hidden","none"]}],"border-color":[{border:b()}],"border-color-x":[{"border-x":b()}],"border-color-y":[{"border-y":b()}],"border-color-s":[{"border-s":b()}],"border-color-e":[{"border-e":b()}],"border-color-t":[{"border-t":b()}],"border-color-r":[{"border-r":b()}],"border-color-b":[{"border-b":b()}],"border-color-l":[{"border-l":b()}],"divide-color":[{divide:b()}],"outline-style":[{outline:[...ne(),"none","hidden"]}],"outline-offset":[{"outline-offset":[N,k,w]}],"outline-w":[{outline:["",N,Ke,Ce]}],"outline-color":[{outline:b()}],shadow:[{shadow:["","none",u,dt,ut]}],"shadow-color":[{shadow:b()}],"inset-shadow":[{"inset-shadow":["none",d,dt,ut]}],"inset-shadow-color":[{"inset-shadow":b()}],"ring-w":[{ring:j()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:b()}],"ring-offset-w":[{"ring-offset":[N,Ce]}],"ring-offset-color":[{"ring-offset":b()}],"inset-ring-w":[{"inset-ring":j()}],"inset-ring-color":[{"inset-ring":b()}],"text-shadow":[{"text-shadow":["none",f,dt,ut]}],"text-shadow-color":[{"text-shadow":b()}],opacity:[{opacity:[N,k,w]}],"mix-blend":[{"mix-blend":[...Se(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":Se()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[N]}],"mask-image-linear-from-pos":[{"mask-linear-from":J()}],"mask-image-linear-to-pos":[{"mask-linear-to":J()}],"mask-image-linear-from-color":[{"mask-linear-from":b()}],"mask-image-linear-to-color":[{"mask-linear-to":b()}],"mask-image-t-from-pos":[{"mask-t-from":J()}],"mask-image-t-to-pos":[{"mask-t-to":J()}],"mask-image-t-from-color":[{"mask-t-from":b()}],"mask-image-t-to-color":[{"mask-t-to":b()}],"mask-image-r-from-pos":[{"mask-r-from":J()}],"mask-image-r-to-pos":[{"mask-r-to":J()}],"mask-image-r-from-color":[{"mask-r-from":b()}],"mask-image-r-to-color":[{"mask-r-to":b()}],"mask-image-b-from-pos":[{"mask-b-from":J()}],"mask-image-b-to-pos":[{"mask-b-to":J()}],"mask-image-b-from-color":[{"mask-b-from":b()}],"mask-image-b-to-color":[{"mask-b-to":b()}],"mask-image-l-from-pos":[{"mask-l-from":J()}],"mask-image-l-to-pos":[{"mask-l-to":J()}],"mask-image-l-from-color":[{"mask-l-from":b()}],"mask-image-l-to-color":[{"mask-l-to":b()}],"mask-image-x-from-pos":[{"mask-x-from":J()}],"mask-image-x-to-pos":[{"mask-x-to":J()}],"mask-image-x-from-color":[{"mask-x-from":b()}],"mask-image-x-to-color":[{"mask-x-to":b()}],"mask-image-y-from-pos":[{"mask-y-from":J()}],"mask-image-y-to-pos":[{"mask-y-to":J()}],"mask-image-y-from-color":[{"mask-y-from":b()}],"mask-image-y-to-color":[{"mask-y-to":b()}],"mask-image-radial":[{"mask-radial":[k,w]}],"mask-image-radial-from-pos":[{"mask-radial-from":J()}],"mask-image-radial-to-pos":[{"mask-radial-to":J()}],"mask-image-radial-from-color":[{"mask-radial-from":b()}],"mask-image-radial-to-color":[{"mask-radial-to":b()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[N]}],"mask-image-conic-from-pos":[{"mask-conic-from":J()}],"mask-image-conic-to-pos":[{"mask-conic-to":J()}],"mask-image-conic-from-color":[{"mask-conic-from":b()}],"mask-image-conic-to-color":[{"mask-conic-to":b()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:U()}],"mask-repeat":[{mask:re()}],"mask-size":[{mask:le()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",k,w]}],filter:[{filter:["","none",k,w]}],blur:[{blur:Nr()}],brightness:[{brightness:[N,k,w]}],contrast:[{contrast:[N,k,w]}],"drop-shadow":[{"drop-shadow":["","none",h,dt,ut]}],"drop-shadow-color":[{"drop-shadow":b()}],grayscale:[{grayscale:["",N,k,w]}],"hue-rotate":[{"hue-rotate":[N,k,w]}],invert:[{invert:["",N,k,w]}],saturate:[{saturate:[N,k,w]}],sepia:[{sepia:["",N,k,w]}],"backdrop-filter":[{"backdrop-filter":["","none",k,w]}],"backdrop-blur":[{"backdrop-blur":Nr()}],"backdrop-brightness":[{"backdrop-brightness":[N,k,w]}],"backdrop-contrast":[{"backdrop-contrast":[N,k,w]}],"backdrop-grayscale":[{"backdrop-grayscale":["",N,k,w]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[N,k,w]}],"backdrop-invert":[{"backdrop-invert":["",N,k,w]}],"backdrop-opacity":[{"backdrop-opacity":[N,k,w]}],"backdrop-saturate":[{"backdrop-saturate":[N,k,w]}],"backdrop-sepia":[{"backdrop-sepia":["",N,k,w]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":v()}],"border-spacing-x":[{"border-spacing-x":v()}],"border-spacing-y":[{"border-spacing-y":v()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",k,w]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[N,"initial",k,w]}],ease:[{ease:["linear","initial",x,k,w]}],delay:[{delay:[N,k,w]}],animate:[{animate:["none",O,k,w]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,k,w]}],"perspective-origin":[{"perspective-origin":A()}],rotate:[{rotate:it()}],"rotate-x":[{"rotate-x":it()}],"rotate-y":[{"rotate-y":it()}],"rotate-z":[{"rotate-z":it()}],scale:[{scale:at()}],"scale-x":[{"scale-x":at()}],"scale-y":[{"scale-y":at()}],"scale-z":[{"scale-z":at()}],"scale-3d":["scale-3d"],skew:[{skew:zt()}],"skew-x":[{"skew-x":zt()}],"skew-y":[{"skew-y":zt()}],transform:[{transform:[k,w,"","none","gpu","cpu"]}],"transform-origin":[{origin:A()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ct()}],"translate-x":[{"translate-x":ct()}],"translate-y":[{"translate-y":ct()}],"translate-z":[{"translate-z":ct()}],"translate-none":["translate-none"],accent:[{accent:b()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:b()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",k,w]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":v()}],"scroll-mx":[{"scroll-mx":v()}],"scroll-my":[{"scroll-my":v()}],"scroll-ms":[{"scroll-ms":v()}],"scroll-me":[{"scroll-me":v()}],"scroll-mt":[{"scroll-mt":v()}],"scroll-mr":[{"scroll-mr":v()}],"scroll-mb":[{"scroll-mb":v()}],"scroll-ml":[{"scroll-ml":v()}],"scroll-p":[{"scroll-p":v()}],"scroll-px":[{"scroll-px":v()}],"scroll-py":[{"scroll-py":v()}],"scroll-ps":[{"scroll-ps":v()}],"scroll-pe":[{"scroll-pe":v()}],"scroll-pt":[{"scroll-pt":v()}],"scroll-pr":[{"scroll-pr":v()}],"scroll-pb":[{"scroll-pb":v()}],"scroll-pl":[{"scroll-pl":v()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",k,w]}],fill:[{fill:["none",...b()]}],"stroke-w":[{stroke:[N,Ke,Ce,qt]}],stroke:[{stroke:["none",...b()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Zi=(t,{cacheSize:e,prefix:r,experimentalParseClassName:n,extend:s={},override:o={}})=>(Xe(t,"cacheSize",e),Xe(t,"prefix",r),Xe(t,"experimentalParseClassName",n),ft(t.theme,o.theme),ft(t.classGroups,o.classGroups),ft(t.conflictingClassGroups,o.conflictingClassGroups),ft(t.conflictingClassGroupModifiers,o.conflictingClassGroupModifiers),Xe(t,"orderSensitiveModifiers",o.orderSensitiveModifiers),ht(t.theme,s.theme),ht(t.classGroups,s.classGroups),ht(t.conflictingClassGroups,s.conflictingClassGroups),ht(t.conflictingClassGroupModifiers,s.conflictingClassGroupModifiers),Wn(t,s,"orderSensitiveModifiers"),t),Xe=(t,e,r)=>{r!==void 0&&(t[e]=r)},ft=(t,e)=>{if(e)for(const r in e)Xe(t,r,e[r])},ht=(t,e)=>{if(e)for(const r in e)Wn(t,e,r)},Wn=(t,e,r)=>{const n=e[r];n!==void 0&&(t[r]=t[r]?t[r].concat(n):n)},Ji=(t,...e)=>typeof t=="function"?rr(nr,t,...e):rr(()=>Zi(nr(),t),...e),Un=rr(nr);function Fe(...t){return Un(Ze(t))}var Qi=/\s+/g,$i=t=>typeof t!="string"||!t?t:t.replace(Qi," ").trim(),Et=(...t)=>{const e=[],r=n=>{if(!n&&n!==0&&n!==0n)return;if(Array.isArray(n)){for(let o=0,i=n.length;o0?$i(e.join(" ")):void 0},Xr=t=>t===!1?"false":t===!0?"true":t===0?"0":t,se=t=>{if(!t||typeof t!="object")return!0;for(const e in t)return!1;return!0},ea=(t,e)=>{if(t===e)return!0;if(!t||!e)return!1;const r=Object.keys(t),n=Object.keys(e);if(r.length!==n.length)return!1;for(let s=0;s{for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){const n=e[r];r in t?t[r]=Et(t[r],n):t[r]=n}return t},jn=(t,e)=>{for(let r=0;r{const e=[];jn(t,e);const r=[];for(let n=0;n{const r={};for(const n in t){const s=t[n];if(n in e){const o=e[n];Array.isArray(s)||Array.isArray(o)?r[n]=Kn(o,s):typeof s=="object"&&typeof o=="object"&&s&&o?r[n]=sr(s,o):r[n]=o+" "+s}else r[n]=s}for(const n in e)n in t||(r[n]=e[n]);return r},ra={twMerge:!0,twMergeConfig:{}};function na(){let t=null,e={},r=!1;return{get cachedTwMerge(){return t},set cachedTwMerge(n){t=n},get cachedTwMergeConfig(){return e},set cachedTwMergeConfig(n){e=n},get didTwMergeConfigChange(){return r},set didTwMergeConfigChange(n){r=n},reset(){t=null,e={},r=!1}}}var ge=na(),sa=t=>{const e=(n,s)=>{const{extend:o=null,slots:i={},variants:a={},compoundVariants:c=[],compoundSlots:l=[],defaultVariants:u={}}=n,d={...ra,...s},f=o?.base?Et(o.base,n?.base):n?.base,h=o?.variants&&!se(o.variants)?sr(a,o.variants):a,m=o?.defaultVariants&&!se(o.defaultVariants)?{...o.defaultVariants,...u}:u;!se(d.twMergeConfig)&&!ea(d.twMergeConfig,ge.cachedTwMergeConfig)&&(ge.didTwMergeConfigChange=!0,ge.cachedTwMergeConfig=d.twMergeConfig);const p=se(o?.slots),g=se(i)?{}:{base:Et(n?.base,p&&o?.base),...i},x=p?g:ta({...o?.slots},se(g)?{base:n?.base}:g),O=se(o?.compoundVariants)?c:Kn(o?.compoundVariants,c),F=A=>{if(se(h)&&se(i)&&p)return t(f,A?.class,A?.className)(d);if(O&&!Array.isArray(O))throw new TypeError(`The "compoundVariants" prop must be an array. Received: ${typeof O}`);if(l&&!Array.isArray(l))throw new TypeError(`The "compoundSlots" prop must be an array. Received: ${typeof l}`);const S=(E,P=h,I=null,L=null)=>{const b=P[E];if(!b||se(b))return null;const U=L?.[E]??A?.[E];if(U===null)return null;const re=Xr(U);if(typeof re=="object")return null;const le=m?.[E],te=re??Xr(le);return b[te||"false"]},M=()=>{if(!h)return null;const E=Object.keys(h),P=[];for(let I=0;I{if(!h||typeof h!="object")return null;const I=[];for(const L in h){const b=S(L,h,E,P),U=E==="base"&&typeof b=="string"?b:b&&b[E];U&&I.push(U)}return I},z={};for(const E in A){const P=A[E];P!==void 0&&(z[E]=P)}const G=(E,P)=>{const I=typeof A?.[E]=="object"?{[E]:A[E]?.initial}:{};return{...m,...z,...I,...P}},q=(E=[],P)=>{const I=[],L=E.length;for(let b=0;b{const P=q(O,E);if(!Array.isArray(P))return P;const I={},L=t;for(let b=0;b{if(l.length<1)return null;const P={},I=G(null,E);for(let L=0;L{const b=ce(L),U=he(L);return P(x[I],v(I,L),b?b[I]:void 0,U?U[I]:void 0,L?.class,L?.className)(d)}}return E}return t(f,M(),q(O),A?.class,A?.className)(d)},T=()=>{if(!(!h||typeof h!="object"))return Object.keys(h)};return F.variantKeys=T(),F.extend=o,F.base=f,F.slots=x,F.variants=h,F.defaultVariants=m,F.compoundSlots=l,F.compoundVariants=O,F};return{tv:e,createTV:n=>(s,o)=>e(s,o?sr(n,o):n)}},oa=t=>se(t)?Un:Ji({...t,extend:{theme:t.theme,classGroups:t.classGroups,conflictingClassGroupModifiers:t.conflictingClassGroupModifiers,conflictingClassGroups:t.conflictingClassGroups,...t.extend}}),ia=(t,e)=>{const r=Et(t);return!r||!(e?.twMerge??!0)?r:((!ge.cachedTwMerge||ge.didTwMergeConfigChange)&&(ge.didTwMergeConfigChange=!1,ge.cachedTwMerge=oa(ge.cachedTwMergeConfig)),ge.cachedTwMerge(r)||void 0)},aa=(...t)=>e=>ia(t,e),{tv:ca}=sa(aa);const Zr=ca({base:"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90 shadow-xs",destructive:"bg-destructive hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-white shadow-xs",outline:"bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border shadow-xs",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80 shadow-xs",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});var la=ve(""),ua=ve("");function Ml(t,e){$(e,!0);let r=_(e,"variant",3,"default"),n=_(e,"size",3,"default"),s=_(e,"ref",15,null),o=_(e,"href",3,void 0),i=_(e,"type",3,"button"),a=fe(e,["$$slots","$$events","$$legacy","class","variant","size","ref","href","type","disabled","children"]);var c=Z(),l=K(c);{var u=f=>{var h=la();be(h,p=>({"data-slot":"button",class:p,href:e.disabled?void 0:o(),"aria-disabled":e.disabled,role:e.disabled?"link":void 0,tabindex:e.disabled?-1:void 0,...a}),[()=>Fe(Zr({variant:r(),size:n()}),e.class)]);var m=$e(h);ie(m,()=>e.children??ae),et(h),St(h,p=>s(p),()=>s()),V(f,h)},d=f=>{var h=ua();be(h,p=>({"data-slot":"button",class:p,type:i(),disabled:e.disabled,...a}),[()=>Fe(Zr({variant:r(),size:n()}),e.class)]);var m=$e(h);ie(m,()=>e.children??ae),et(h),St(h,p=>s(p),()=>s()),V(f,h)};ke(l,f=>{o()?f(u):f(d,!1)})}V(t,c),ee()}function da(t){return typeof t=="function"}function rt(t){return t!==null&&typeof t=="object"}const fa=["string","number","bigint","boolean"];function or(t){return t==null||fa.includes(typeof t)?!0:Array.isArray(t)?t.every(e=>or(e)):typeof t=="object"?Object.getPrototypeOf(t)===Object.prototype:!1}const Le=Symbol("box"),Lt=Symbol("is-writable");function R(t,e){const r=D(t);return e?{[Le]:!0,[Lt]:!0,get current(){return y(r)},set current(n){e(n)}}:{[Le]:!0,get current(){return t()}}}function nt(t){return rt(t)&&Le in t}function hr(t){return nt(t)&&Lt in t}function ha(t){return nt(t)?t:da(t)?R(t):qn(t)}function pa(t){return Object.entries(t).reduce((e,[r,n])=>nt(n)?(hr(n)?Object.defineProperty(e,r,{get(){return n.current},set(s){n.current=s}}):Object.defineProperty(e,r,{get(){return n.current}}),e):Object.assign(e,{[r]:n}),{})}function ga(t){return hr(t)?{[Le]:!0,get current(){return t.current}}:t}function qn(t){let e=X(De(t));return{[Le]:!0,[Lt]:!0,get current(){return y(e)},set current(r){C(e,r,!0)}}}function Ne(t){let e=X(De(t));return{[Le]:!0,[Lt]:!0,get current(){return y(e)},set current(r){C(e,r,!0)}}}Ne.from=ha;Ne.with=R;Ne.flatten=pa;Ne.readonly=ga;Ne.isBox=nt;Ne.isWritableBox=hr;function Hn(...t){return function(e){for(const r of t)if(r){if(e.defaultPrevented)return;typeof r=="function"?r.call(this,e):r.current?.call(this,e)}}}const ma=/\d/,ba=["-","_","/","."];function va(t=""){if(!ma.test(t))return t!==t.toLowerCase()}function ya(t){const e=[];let r="",n,s;for(const o of t){const i=ba.includes(o);if(i===!0){e.push(r),r="",n=void 0;continue}const a=va(o);if(s===!1){if(n===!1&&a===!0){e.push(r),r=o,n=a;continue}if(n===!0&&a===!1&&r.length>1){const c=r.at(-1);e.push(r.slice(0,Math.max(0,r.length-1))),r=c+o,n=a;continue}}r+=o,n=a,s=i}return e.push(r),e}function Yn(t){return t?ya(t).map(e=>ka(e)).join(""):""}function wa(t){return xa(Yn(t||""))}function ka(t){return t?t[0].toUpperCase()+t.slice(1):""}function xa(t){return t?t[0].toLowerCase()+t.slice(1):""}function pt(t){if(!t)return{};const e={};function r(n,s){if(n.startsWith("-moz-")||n.startsWith("-webkit-")||n.startsWith("-ms-")||n.startsWith("-o-")){e[Yn(n)]=s;return}if(n.startsWith("--")){e[n]=s;return}e[wa(n)]=s}return li(t,r),e}function _e(...t){return(...e)=>{for(const r of t)typeof r=="function"&&r(...e)}}function Sa(t,e){const r=RegExp(t,"g");return n=>{if(typeof n!="string")throw new TypeError(`expected an argument of type string, but got ${typeof n}`);return n.match(r)?n.replace(r,e):n}}const Ca=Sa(/[A-Z]/,t=>`-${t.toLowerCase()}`);function Ta(t){if(!t||typeof t!="object"||Array.isArray(t))throw new TypeError(`expected an argument of type object, but got ${typeof t}`);return Object.keys(t).map(e=>`${Ca(e)}: ${t[e]};`).join(` +`)}function Xn(t={}){return Ta(t).replace(` +`," ")}const Ea=["onabort","onanimationcancel","onanimationend","onanimationiteration","onanimationstart","onauxclick","onbeforeinput","onbeforetoggle","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncompositionend","oncompositionstart","oncompositionupdate","oncontextlost","oncontextmenu","oncontextrestored","oncopy","oncuechange","oncut","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","onfocusin","onfocusout","onformdata","ongotpointercapture","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onlostpointercapture","onmousedown","onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onpaste","onpause","onplay","onplaying","onpointercancel","onpointerdown","onpointerenter","onpointerleave","onpointermove","onpointerout","onpointerover","onpointerup","onprogress","onratechange","onreset","onresize","onscroll","onscrollend","onsecuritypolicyviolation","onseeked","onseeking","onselect","onselectionchange","onselectstart","onslotchange","onstalled","onsubmit","onsuspend","ontimeupdate","ontoggle","ontouchcancel","ontouchend","ontouchmove","ontouchstart","ontransitioncancel","ontransitionend","ontransitionrun","ontransitionstart","onvolumechange","onwaiting","onwebkitanimationend","onwebkitanimationiteration","onwebkitanimationstart","onwebkittransitionend","onwheel"],Aa=new Set(Ea);function _a(t){return Aa.has(t)}function pr(...t){const e={...t[0]};for(let r=1;r{const o=Y(r,"focusin",s),i=Y(r,"focusout",s);return()=>{o(),i()}}))}get current(){return this.#t?.(),this.#e?Ra(this.#e):null}}new Pa;class xe{#e;#t;constructor(e){this.#e=e,this.#t=Symbol(e)}get key(){return this.#t}exists(){return co(this.#t)}get(){const e=Fr(this.#t);if(e===void 0)throw new Error(`Context "${this.#e}" not found`);return e}getOr(e){const r=Fr(this.#t);return r===void 0?e:r}set(e){return lo(this.#t,e)}}function Oa(t,e){switch(t){case"post":Ie(e);break;case"pre":uo(e);break}}function Zn(t,e,r,n={}){const{lazy:s=!1}=n;let o=!s,i=Array.isArray(t)?[]:void 0;Oa(e,()=>{const a=Array.isArray(t)?t.map(l=>l()):t();if(!o){o=!0,i=a;return}const c=xt(()=>r(a,i));return i=a,c})}function Q(t,e,r){Zn(t,"post",e,r)}function Fa(t,e,r){Zn(t,"pre",e,r)}Q.pre=Fa;function st(t){Ie(()=>()=>{t()})}function La(t,e){return setTimeout(e,t)}function me(t){kn().then(t)}const Da=1,za=9,Va=11;function ir(t){return rt(t)&&t.nodeType===Da&&typeof t.nodeName=="string"}function Jn(t){return rt(t)&&t.nodeType===za}function Ga(t){return rt(t)&&t.constructor?.name==="VisualViewport"}function Ba(t){return rt(t)&&t.nodeType!==void 0}function Qn(t){return Ba(t)&&t.nodeType===Va&&"host"in t}function Wa(t,e){if(!t||!e||!ir(t)||!ir(e))return!1;const r=e.getRootNode?.();if(t===e||t.contains(e))return!0;if(r&&Qn(r)){let n=e;for(;n;){if(t===n)return!0;n=n.parentNode||n.host}}return!1}function ot(t){return Jn(t)?t:Ga(t)?t.document:t?.ownerDocument??document}function $n(t){return Qn(t)?$n(t.host):Jn(t)?t.defaultView??window:ir(t)?t.ownerDocument?.defaultView??window:window}function Ua(t){let e=t.activeElement;for(;e?.shadowRoot;){const r=e.shadowRoot.activeElement;if(r===e)break;e=r}return e}class gr{element;#e=D(()=>this.element.current?this.element.current.getRootNode()??document:document);get root(){return y(this.#e)}set root(e){C(this.#e,e)}constructor(e){typeof e=="function"?this.element=R(e):this.element=e}getDocument=()=>ot(this.root);getWindow=()=>this.getDocument().defaultView??window;getActiveElement=()=>Ua(this.root);isActiveElement=e=>e===this.getActiveElement();getElementById(e){return this.root.getElementById(e)}querySelector=e=>this.root?this.root.querySelector(e):null;querySelectorAll=e=>this.root?this.root.querySelectorAll(e):[];setTimeout=(e,r)=>this.getWindow().setTimeout(e,r);clearTimeout=e=>this.getWindow().clearTimeout(e)}function Be(t,e){return{[Oo()]:r=>nt(t)?(t.current=r,xt(()=>e?.(r)),()=>{"isConnected"in r&&r.isConnected||(t.current=null,e?.(null))}):(t(r),xt(()=>e?.(r)),()=>{"isConnected"in r&&r.isConnected||(t(null),e?.(null))})}}function At(t){return t?"true":"false"}function Il(t){return t?"true":void 0}function _t(t){return t?"":void 0}function Nl(t){return t?!0:void 0}function es(t){return t?"open":"closed"}function ts(t,e){return e?"mixed":t?"true":"false"}class ja{#e;#t;attrs;constructor(e){this.#e=e.getVariant?e.getVariant():null,this.#t=this.#e?`data-${this.#e}-`:`data-${e.component}-`,this.getAttr=this.getAttr.bind(this),this.selector=this.selector.bind(this),this.attrs=Object.fromEntries(e.parts.map(r=>[r,this.getAttr(r)]))}getAttr(e,r){return r?`data-${r}-${e}`:`${this.#t}${e}`}selector(e,r){return`[${this.getAttr(e,r)}]`}}function rs(t){const e=new ja(t);return{...e.attrs,selector:e.selector,getAttr:e.getAttr}}const tt="ArrowDown",mr="ArrowLeft",br="ArrowRight",Mt="ArrowUp",ns="End",vr="Enter",Ka="Escape",ss="Home",qa="PageDown",Ha="PageUp",Dt=" ",Ya="Tab";function Xa(t){return window.getComputedStyle(t).getPropertyValue("direction")}function Za(t="ltr",e="horizontal"){return{horizontal:t==="rtl"?mr:br,vertical:tt}[e]}function Ja(t="ltr",e="horizontal"){return{horizontal:t==="rtl"?br:mr,vertical:Mt}[e]}function Qa(t="ltr",e="horizontal"){return["ltr","rtl"].includes(t)||(t="ltr"),["horizontal","vertical"].includes(e)||(e="horizontal"),{nextKey:Za(t,e),prevKey:Ja(t,e)}}const os=typeof document<"u",Jr=$a();function $a(){return os&&window?.navigator?.userAgent&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||window?.navigator?.maxTouchPoints>2&&/iPad|Macintosh/.test(window?.navigator.userAgent))}function de(t){return t instanceof HTMLElement}function ar(t){return t instanceof Element}function is(t){return t instanceof Element||t instanceof SVGElement}function Rl(t){return t.pointerType==="touch"}function Pl(t){return t.matches(":focus-visible")}function Ol(t){return t!==null}function ec(t){return t instanceof HTMLInputElement&&"select"in t}class tc{#e;#t=Ne(null);constructor(e){this.#e=e}getCandidateNodes(){return this.#e.rootNode.current?this.#e.candidateSelector?Array.from(this.#e.rootNode.current.querySelectorAll(this.#e.candidateSelector)):this.#e.candidateAttr?Array.from(this.#e.rootNode.current.querySelectorAll(`[${this.#e.candidateAttr}]:not([data-disabled])`)):[]:[]}focusFirstCandidate(){const e=this.getCandidateNodes();e.length&&e[0]?.focus()}handleKeydown(e,r,n=!1){const s=this.#e.rootNode.current;if(!s||!e)return;const o=this.getCandidateNodes();if(!o.length)return;const i=o.indexOf(e),a=Xa(s),{nextKey:c,prevKey:l}=Qa(a,this.#e.orientation.current),u=this.#e.loop.current,d={[c]:i+1,[l]:i-1,[ss]:0,[ns]:o.length-1};if(n){const m=c===tt?br:tt,p=l===Mt?mr:Mt;d[m]=i+1,d[p]=i-1}let f=d[r.key];if(f===void 0)return;r.preventDefault(),f<0&&u?f=o.length-1:f===o.length&&u&&(f=0);const h=o[f];if(h)return h.focus(),this.#t.current=h.id,this.#e.onCandidateFocus?.(h),h}getTabIndex(e){const r=this.getCandidateNodes(),n=this.#t.current!==null;return e&&!n&&r[0]===e?(this.#t.current=e.id,0):e?.id===this.#t.current?0:-1}setCurrentTabStopId(e){this.#t.current=e}focusCurrentTabStop(){const e=this.#t.current;if(!e)return;const r=this.#e.rootNode.current?.querySelector(`#${e}`);!r||!de(r)||r.focus()}}class rc{#e;#t=null;constructor(e){this.#e=e,st(()=>this.#r())}#r(){this.#t&&(window.cancelAnimationFrame(this.#t),this.#t=null)}run(e){this.#r();const r=this.#e.ref.current;if(r){if(typeof r.getAnimations!="function"){this.#n(e);return}this.#t=window.requestAnimationFrame(()=>{const n=r.getAnimations();if(n.length===0){this.#n(e);return}Promise.allSettled(n.map(s=>s.finished)).then(()=>{this.#n(e)})})}}#n(e){const r=()=>{e()};this.#e.afterTick?me(r):r()}}class nc{#e;#t;#r;#n=X(!1);constructor(e){this.#e=e,C(this.#n,e.open.current,!0),this.#t=e.enabled??!0,this.#r=new rc({ref:this.#e.ref,afterTick:this.#e.open}),Q(()=>this.#e.open.current,r=>{r&&C(this.#n,!0),this.#t&&this.#r.run(()=>{r===this.#e.open.current&&(this.#e.open.current||C(this.#n,!1),this.#e.onComplete?.())})})}get shouldRender(){return y(this.#n)}}function oe(){}function sc(t,e){return`bits-${t}`}function oc(t,e){var r=Z(),n=K(r);Fo(n,()=>e.children,s=>{var o=Z(),i=K(o);ie(i,()=>e.children??ae),V(s,o)}),V(t,r)}const ic=new xe("BitsConfig");function ac(){const t=new cc(null,{});return ic.getOr(t).opts}class cc{opts;constructor(e,r){const n=lc(e,r);this.opts={defaultPortalTo:n(s=>s.defaultPortalTo),defaultLocale:n(s=>s.defaultLocale)}}}function lc(t,e){return r=>R(()=>{const s=r(e)?.current;if(s!==void 0)return s;if(t!==null)return r(t.opts)?.current})}function uc(t,e){return r=>{const n=ac();return R(()=>{const s=r();if(s!==void 0)return s;const o=t(n).current;return o!==void 0?o:e})}}const dc=uc(t=>t.defaultPortalTo,"body");function Fl(t,e){$(e,!0);const r=dc(()=>e.to),n=fo();let s=D(o);function o(){if(!os||e.disabled)return null;let d=null;return typeof r.current=="string"?d=document.querySelector(r.current):d=r.current,d}let i;function a(){i&&(So(i),i=null)}Q([()=>y(s),()=>e.disabled],([d,f])=>{if(!d||f){a();return}return i=xo(oc,{target:d,props:{children:e.children},context:n}),()=>{a()}});var c=Z(),l=K(c);{var u=d=>{var f=Z(),h=K(f);ie(h,()=>e.children??ae),V(d,f)};ke(l,d=>{e.disabled&&d(u)})}V(t,c),ee()}class fc{eventName;options;constructor(e,r={bubbles:!0,cancelable:!0}){this.eventName=e,this.options=r}createEvent(e){return new CustomEvent(this.eventName,{...this.options,detail:e})}dispatch(e,r){const n=this.createEvent(r);return e.dispatchEvent(n),n}listen(e,r,n){const s=o=>{r(o)};return Y(e,this.eventName,s,n)}}function Qr(t,e=500){let r=null;const n=(...s)=>{r!==null&&clearTimeout(r),r=setTimeout(()=>{t(...s)},e)};return n.destroy=()=>{r!==null&&(clearTimeout(r),r=null)},n}function as(t,e){return t===e||t.contains(e)}function cs(t){return t?.ownerDocument??document}function hc(t,e){const{clientX:r,clientY:n}=t,s=e.getBoundingClientRect();return rs.right||ns.bottom}const pc=[vr,Dt],gc=[tt,Ha,ss],ls=[Mt,qa,ns],mc=[...gc,...ls];function bc(t){return t==="indeterminate"}function vc(t){return bc(t)?"indeterminate":t?"checked":"unchecked"}function $r(t){return t.pointerType==="mouse"}function yc(t,{select:e=!1}={}){if(!t||!t.focus)return;const r=ot(t);if(r.activeElement===t)return;const n=r.activeElement;t.focus({preventScroll:!0}),t!==n&&ec(t)&&e&&t.select()}function wc(t,{select:e=!1}={},r){const n=r();for(const s of t)if(yc(s,{select:e}),r()!==n)return!0}let qe=X(!1);class we{static _refs=0;static _cleanup;constructor(){Ie(()=>(we._refs===0&&(we._cleanup=Sn(()=>{const e=[],r=s=>{C(qe,!1)},n=s=>{C(qe,!0)};return e.push(Y(document,"pointerdown",r,{capture:!0}),Y(document,"pointermove",r,{capture:!0}),Y(document,"keydown",n,{capture:!0})),_e(...e)})),we._refs++,()=>{we._refs--,we._refs===0&&(C(qe,!1),we._cleanup?.())}))}get current(){return y(qe)}set current(e){C(qe,e,!0)}}var us=["input:not([inert]):not([inert] *)","select:not([inert]):not([inert] *)","textarea:not([inert]):not([inert] *)","a[href]:not([inert]):not([inert] *)","button:not([inert]):not([inert] *)","[tabindex]:not(slot):not([inert]):not([inert] *)","audio[controls]:not([inert]):not([inert] *)","video[controls]:not([inert]):not([inert] *)",'[contenteditable]:not([contenteditable="false"]):not([inert]):not([inert] *)',"details>summary:first-of-type:not([inert]):not([inert] *)","details:not([inert]):not([inert] *)"],It=us.join(","),ds=typeof Element>"u",Me=ds?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Nt=!ds&&Element.prototype.getRootNode?function(t){var e;return t==null||(e=t.getRootNode)===null||e===void 0?void 0:e.call(t)}:function(t){return t?.ownerDocument},Rt=function(e,r){var n;r===void 0&&(r=!0);var s=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),o=s===""||s==="true",i=o||r&&e&&(typeof e.closest=="function"?e.closest("[inert]"):Rt(e.parentNode));return i},kc=function(e){var r,n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"contenteditable");return n===""||n==="true"},fs=function(e,r,n){if(Rt(e))return[];var s=Array.prototype.slice.apply(e.querySelectorAll(It));return r&&Me.call(e,It)&&s.unshift(e),s=s.filter(n),s},Pt=function(e,r,n){for(var s=[],o=Array.from(e);o.length;){var i=o.shift();if(!Rt(i,!1))if(i.tagName==="SLOT"){var a=i.assignedElements(),c=a.length?a:i.children,l=Pt(c,!0,n);n.flatten?s.push.apply(s,l):s.push({scopeParent:i,candidates:l})}else{var u=Me.call(i,It);u&&n.filter(i)&&(r||!e.includes(i))&&s.push(i);var d=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),f=!Rt(d,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(d&&f){var h=Pt(d===!0?i.children:d.children,!0,n);n.flatten?s.push.apply(s,h):s.push({scopeParent:i,candidates:h})}else o.unshift.apply(o,i.children)}}return s},hs=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ps=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||kc(e))&&!hs(e)?0:e.tabIndex},xc=function(e,r){var n=ps(e);return n<0&&r&&!hs(e)?0:n},Sc=function(e,r){return e.tabIndex===r.tabIndex?e.documentOrder-r.documentOrder:e.tabIndex-r.tabIndex},gs=function(e){return e.tagName==="INPUT"},Cc=function(e){return gs(e)&&e.type==="hidden"},Tc=function(e){var r=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return r},Ec=function(e,r){for(var n=0;nsummary:first-of-type"),a=i?e.parentElement:e;if(Me.call(a,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="full-native"||n==="legacy-full"){if(typeof s=="function"){for(var c=e;e;){var l=e.parentElement,u=Nt(e);if(l&&!l.shadowRoot&&s(l)===!0)return en(e);e.assignedSlot?e=e.assignedSlot:!l&&u!==e.ownerDocument?e=u.host:e=l}e=c}if(Ic(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return en(e);return!1},Rc=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var r=e.parentElement;r;){if(r.tagName==="FIELDSET"&&r.disabled){for(var n=0;n=0)},ms=function(e){var r=[],n=[];return e.forEach(function(s,o){var i=!!s.scopeParent,a=i?s.scopeParent:s,c=xc(a,i),l=i?ms(s.candidates):a;c===0?i?r.push.apply(r,l):r.push(a):n.push({documentOrder:o,tabIndex:c,item:s,isScope:i,content:l})}),n.sort(Sc).reduce(function(s,o){return o.isScope?s.push.apply(s,o.content):s.push(o.content),s},[]).concat(r)},bs=function(e,r){r=r||{};var n;return r.getShadowRoot?n=Pt([e],r.includeContainer,{filter:cr.bind(null,r),flatten:!1,getShadowRoot:r.getShadowRoot,shadowRootFilter:Pc}):n=fs(e,r.includeContainer,cr.bind(null,r)),ms(n)},vs=function(e,r){r=r||{};var n;return r.getShadowRoot?n=Pt([e],r.includeContainer,{filter:Ot.bind(null,r),flatten:!0,getShadowRoot:r.getShadowRoot}):n=fs(e,r.includeContainer,Ot.bind(null,r)),n},yr=function(e,r){if(r=r||{},!e)throw new Error("No node provided");return Me.call(e,It)===!1?!1:cr(r,e)},Oc=us.concat("iframe:not([inert]):not([inert] *)").join(","),ys=function(e,r){if(r=r||{},!e)throw new Error("No node provided");return Me.call(e,Oc)===!1?!1:Ot(r,e)};function Je(){return{getShadowRoot:!0,displayCheck:typeof ResizeObserver=="function"&&ResizeObserver.toString().includes("[native code]")?"full":"none"}}function Fc(t,e){if(!yr(t,Je()))return Lc(t,e);const r=ot(t),n=bs(r.body,Je());e==="prev"&&n.reverse();const s=n.indexOf(t);return s===-1?r.body:n.slice(s+1)[0]}function Lc(t,e){const r=ot(t);if(!ys(t,Je()))return r.body;const n=vs(r.body,Je());e==="prev"&&n.reverse();const s=n.indexOf(t);return s===-1?r.body:n.slice(s+1).find(i=>yr(i,Je()))??r.body}function Ll(t,e,r=!0){if(!(t.length===0||e<0||e>=t.length))return t.length===1&&e===0?t[0]:e===t.length-1?r?t[0]:void 0:t[e+1]}function Dl(t,e,r=!0){if(!(t.length===0||e<0||e>=t.length))return t.length===1&&e===0?t[0]:e===0?r?t[t.length-1]:void 0:t[e-1]}function zl(t,e,r,n=!0){if(t.length===0||e<0||e>=t.length)return;let s=e+r;return n?s=(s%t.length+t.length)%t.length:s=Math.max(0,Math.min(s,t.length-1)),t[s]}function Vl(t,e,r,n=!0){if(t.length===0||e<0||e>=t.length)return;let s=e-r;return n?s=(s%t.length+t.length)%t.length:s=Math.max(0,Math.min(s,t.length-1)),t[s]}function ws(t,e,r){const n=e.toLowerCase();if(n.endsWith(" ")){const d=n.slice(0,-1);if(t.filter(p=>p.toLowerCase().startsWith(d)).length<=1)return ws(t,d,r);const h=r?.toLowerCase();if(h&&h.startsWith(d)&&h.charAt(d.length)===" "&&e.trim()===d)return r;const m=t.filter(p=>p.toLowerCase().startsWith(n));if(m.length>0){const p=r?t.indexOf(r):-1;return tn(m,Math.max(p,0)).find(O=>O!==r)||r}}const o=e.length>1&&Array.from(e).every(d=>d===e[0])?e[0]:e,i=o.toLowerCase(),a=r?t.indexOf(r):-1;let c=tn(t,Math.max(a,0));o.length===1&&(c=c.filter(d=>d!==r));const u=c.find(d=>d?.toLowerCase().startsWith(i));return u!==r?u:void 0}function tn(t,e){return t.map((r,n)=>t[(e+n)%t.length])}const Dc={afterMs:1e4,onChange:oe};function ks(t,e){const{afterMs:r,onChange:n,getWindow:s}={...Dc,...e};let o=null,i=X(De(t));function a(){return s().setTimeout(()=>{C(i,t,!0),n?.(t)},r)}return Ie(()=>()=>{o&&s().clearTimeout(o)}),R(()=>y(i),c=>{C(i,c,!0),n?.(c),o&&s().clearTimeout(o),o=a()})}class zc{#e;#t;#r=D(()=>this.#e.onMatch?this.#e.onMatch:e=>e.focus());#n=D(()=>this.#e.getCurrentItem?this.#e.getCurrentItem:this.#e.getActiveElement);constructor(e){this.#e=e,this.#t=ks("",{afterMs:1e3,getWindow:e.getWindow}),this.handleTypeaheadSearch=this.handleTypeaheadSearch.bind(this),this.resetTypeahead=this.resetTypeahead.bind(this)}handleTypeaheadSearch(e,r){if(!r.length)return;this.#t.current=this.#t.current+e;const n=y(this.#n)(),s=r.find(c=>c===n)?.textContent?.trim()??"",o=r.map(c=>c.textContent?.trim()??""),i=ws(o,this.#t.current,s),a=r.find(c=>c.textContent?.trim()===i);return a&&y(this.#r)(a),a}resetTypeahead(){this.#t.current=""}get search(){return this.#t.current}}class Vc{#e;#t;#r;#n=X(null);constructor(e){this.#e=e,this.#t=D(()=>this.#e.enabled()),this.#r=ks(!1,{afterMs:e.transitTimeout??300,onChange:r=>{y(this.#t)&&this.#e.setIsPointerInTransit?.(r)},getWindow:()=>$n(this.#e.triggerNode())}),Q([e.triggerNode,e.contentNode,e.enabled],([r,n,s])=>{if(!r||!n||!s)return;const o=a=>{this.#o(a,n)},i=a=>{this.#o(a,r)};return _e(Y(r,"pointerleave",o),Y(n,"pointerleave",i))}),Q(()=>y(this.#n),()=>{const r=s=>{if(!y(this.#n))return;const o=s.target;if(!ar(o))return;const i={x:s.clientX,y:s.clientY},a=e.triggerNode()?.contains(o)||e.contentNode()?.contains(o),c=!Uc(i,y(this.#n));a?this.#s():c&&(this.#s(),e.onPointerExit())},n=ot(e.triggerNode()??e.contentNode());if(n)return Y(n,"pointermove",r)})}#s(){C(this.#n,null),this.#r.current=!1}#o(e,r){const n=e.currentTarget;if(!de(n))return;const s={x:e.clientX,y:e.clientY},o=Gc(s,n.getBoundingClientRect()),i=Bc(s,o),a=Wc(r.getBoundingClientRect()),c=jc([...i,...a]);C(this.#n,c,!0),this.#r.current=!0}}function Gc(t,e){const r=Math.abs(e.top-t.y),n=Math.abs(e.bottom-t.y),s=Math.abs(e.right-t.x),o=Math.abs(e.left-t.x);switch(Math.min(r,n,s,o)){case o:return"left";case s:return"right";case r:return"top";case n:return"bottom";default:throw new Error("unreachable")}}function Bc(t,e,r=5){const n=r*1.5;switch(e){case"top":return[{x:t.x-r,y:t.y+r},{x:t.x,y:t.y-n},{x:t.x+r,y:t.y+r}];case"bottom":return[{x:t.x-r,y:t.y-r},{x:t.x,y:t.y+n},{x:t.x+r,y:t.y-r}];case"left":return[{x:t.x+r,y:t.y-r},{x:t.x-n,y:t.y},{x:t.x+r,y:t.y+r}];case"right":return[{x:t.x-r,y:t.y-r},{x:t.x+n,y:t.y},{x:t.x-r,y:t.y+r}]}}function Wc(t){const{top:e,right:r,bottom:n,left:s}=t;return[{x:s,y:e},{x:r,y:e},{x:r,y:n},{x:s,y:n}]}function Uc(t,e){const{x:r,y:n}=t;let s=!1;for(let o=0,i=e.length-1;on!=u>n&&r<(l-a)*(n-c)/(u-c)+a&&(s=!s)}return s}function jc(t){const e=t.slice();return e.sort((r,n)=>r.xn.x?1:r.yn.y?1:0),Kc(e)}function Kc(t){if(t.length<=1)return t.slice();const e=[];for(let n=0;n=2;){const o=e[e.length-1],i=e[e.length-2];if((o.x-i.x)*(s.y-i.y)>=(o.y-i.y)*(s.x-i.x))e.pop();else break}e.push(s)}e.pop();const r=[];for(let n=t.length-1;n>=0;n--){const s=t[n];for(;r.length>=2;){const o=r[r.length-1],i=r[r.length-2];if((o.x-i.x)*(s.y-i.y)>=(o.y-i.y)*(s.x-i.x))r.pop();else break}r.push(s)}return r.pop(),e.length===1&&r.length===1&&e[0].x===r[0].x&&e[0].y===r[0].y?e:e.concat(r)}const qc="data-context-menu-trigger",Hc="data-context-menu-content",wr=new xe("Menu.Root"),kr=new xe("Menu.Root | Menu.Sub"),xr=new xe("Menu.Content"),Yc=new xe("Menu.Group | Menu.RadioGroup"),Gl=new xe("Menu.CheckboxGroup"),Xc=new fc("bitsmenuopen",{bubbles:!1,cancelable:!0}),Zc=rs({component:"menu",parts:["trigger","content","sub-trigger","item","group","group-heading","checkbox-group","checkbox-item","radio-group","radio-item","separator","sub-content","arrow"]});class xs{static create(e){const r=new xs(e);return wr.set(r)}opts;isUsingKeyboard=new we;#e=X(!1);get ignoreCloseAutoFocus(){return y(this.#e)}set ignoreCloseAutoFocus(e){C(this.#e,e,!0)}#t=X(!1);get isPointerInTransit(){return y(this.#t)}set isPointerInTransit(e){C(this.#t,e,!0)}constructor(e){this.opts=e}getBitsAttr=e=>Zc.getAttr(e,this.opts.variant.current)}class Ss{static create(e,r){return kr.set(new Ss(e,r,null))}opts;root;parentMenu;contentId=R(()=>"");#e=X(null);get contentNode(){return y(this.#e)}set contentNode(e){C(this.#e,e,!0)}contentPresence;#t=X(null);get triggerNode(){return y(this.#t)}set triggerNode(e){C(this.#t,e,!0)}constructor(e,r,n){this.opts=e,this.root=r,this.parentMenu=n,this.contentPresence=new nc({ref:R(()=>this.contentNode),open:this.opts.open,onComplete:()=>{this.opts.onOpenChangeComplete.current(this.opts.open.current)}}),n&&Q(()=>n.opts.open.current,()=>{n.opts.open.current||(this.opts.open.current=!1)})}toggleOpen(){this.opts.open.current=!this.opts.open.current}onOpen(){this.opts.open.current=!0}onClose(){this.opts.open.current=!1}}class Cs{static create(e){return xr.set(new Cs(e,kr.get()))}opts;parentMenu;rovingFocusGroup;domContext;attachment;#e=X("");get search(){return y(this.#e)}set search(e){C(this.#e,e,!0)}#t=0;#r;#n=X(!1);get mounted(){return y(this.#n)}set mounted(e){C(this.#n,e,!0)}#s;constructor(e,r){this.opts=e,this.parentMenu=r,this.domContext=new gr(e.ref),this.attachment=Be(this.opts.ref,n=>{this.parentMenu.contentNode!==n&&(this.parentMenu.contentNode=n)}),r.contentId=e.id,this.#s=e.isSub??!1,this.onkeydown=this.onkeydown.bind(this),this.onblur=this.onblur.bind(this),this.onfocus=this.onfocus.bind(this),this.handleInteractOutside=this.handleInteractOutside.bind(this),new Vc({contentNode:()=>this.parentMenu.contentNode,triggerNode:()=>this.parentMenu.triggerNode,enabled:()=>this.parentMenu.opts.open.current&&!!this.parentMenu.triggerNode?.hasAttribute(this.parentMenu.root.getBitsAttr("sub-trigger")),onPointerExit:()=>{this.parentMenu.opts.open.current=!1},setIsPointerInTransit:n=>{this.parentMenu.root.isPointerInTransit=n}}),this.#r=new zc({getActiveElement:()=>this.domContext.getActiveElement(),getWindow:()=>this.domContext.getWindow()}).handleTypeaheadSearch,this.rovingFocusGroup=new tc({rootNode:R(()=>this.parentMenu.contentNode),candidateAttr:this.parentMenu.root.getBitsAttr("item"),loop:this.opts.loop,orientation:R(()=>"vertical")}),Q(()=>this.parentMenu.contentNode,n=>{if(!n)return;const s=()=>{me(()=>{this.parentMenu.root.isUsingKeyboard.current&&this.rovingFocusGroup.focusFirstCandidate()})};return Xc.listen(n,s)}),Ie(()=>{this.parentMenu.opts.open.current||this.domContext.getWindow().clearTimeout(this.#t)})}#o(){const e=this.parentMenu.contentNode;return e?Array.from(e.querySelectorAll(`[${this.parentMenu.root.getBitsAttr("item")}]:not([data-disabled])`)):[]}#i(){return this.parentMenu.root.isPointerInTransit}onCloseAutoFocus=e=>{this.opts.onCloseAutoFocus.current?.(e),!(e.defaultPrevented||this.#s)&&this.parentMenu.triggerNode&&yr(this.parentMenu.triggerNode)&&(e.preventDefault(),this.parentMenu.triggerNode.focus())};handleTabKeyDown(e){let r=this.parentMenu;for(;r.parentMenu!==null;)r=r.parentMenu;if(!r.triggerNode)return;e.preventDefault();const n=Fc(r.triggerNode,e.shiftKey?"prev":"next");n?(this.parentMenu.root.ignoreCloseAutoFocus=!0,r.onClose(),me(()=>{n.focus(),me(()=>{this.parentMenu.root.ignoreCloseAutoFocus=!1})})):this.domContext.getDocument().body.focus()}onkeydown(e){if(e.defaultPrevented)return;if(e.key===Ya){this.handleTabKeyDown(e);return}const r=e.target,n=e.currentTarget;if(!de(r)||!de(n))return;const s=r.closest(`[${this.parentMenu.root.getBitsAttr("content")}]`)?.id===this.parentMenu.contentId.current,o=e.ctrlKey||e.altKey||e.metaKey,i=e.key.length===1;if(this.rovingFocusGroup.handleKeydown(r,e)||e.code==="Space")return;const c=this.#o();s&&!o&&i&&this.#r(e.key,c),e.target?.id===this.parentMenu.contentId.current&&mc.includes(e.key)&&(e.preventDefault(),ls.includes(e.key)&&c.reverse(),wc(c,{select:!1},()=>this.domContext.getActiveElement()))}onblur(e){ar(e.currentTarget)&&ar(e.target)&&(e.currentTarget.contains?.(e.target)||(this.domContext.getWindow().clearTimeout(this.#t),this.search=""))}onfocus(e){this.parentMenu.root.isUsingKeyboard.current&&me(()=>this.rovingFocusGroup.focusFirstCandidate())}onItemEnter(){return this.#i()}onItemLeave(e){if(e.currentTarget.hasAttribute(this.parentMenu.root.getBitsAttr("sub-trigger"))||this.#i()||this.parentMenu.root.isUsingKeyboard.current)return;this.parentMenu.contentNode?.focus(),this.rovingFocusGroup.setCurrentTabStopId("")}onTriggerLeave(){return!!this.#i()}handleInteractOutside(e){if(!is(e.target))return;const r=this.parentMenu.triggerNode?.id;if(e.target.id===r){e.preventDefault();return}e.target.closest(`#${r}`)&&e.preventDefault()}get shouldRender(){return this.parentMenu.contentPresence.shouldRender}#a=D(()=>({open:this.parentMenu.opts.open.current}));get snippetProps(){return y(this.#a)}set snippetProps(e){C(this.#a,e)}#c=D(()=>({id:this.opts.id.current,role:"menu","aria-orientation":"vertical",[this.parentMenu.root.getBitsAttr("content")]:"","data-state":es(this.parentMenu.opts.open.current),onkeydown:this.onkeydown,onblur:this.onblur,onfocus:this.onfocus,dir:this.parentMenu.root.opts.dir.current,style:{pointerEvents:"auto",contain:"layout style paint"},...this.attachment}));get props(){return y(this.#c)}set props(e){C(this.#c,e)}popperProps={onCloseAutoFocus:e=>this.onCloseAutoFocus(e)}}class Ts{opts;content;attachment;#e=X(!1);constructor(e,r){this.opts=e,this.content=r,this.attachment=Be(this.opts.ref),this.onpointermove=this.onpointermove.bind(this),this.onpointerleave=this.onpointerleave.bind(this),this.onfocus=this.onfocus.bind(this),this.onblur=this.onblur.bind(this)}onpointermove(e){if(!e.defaultPrevented&&$r(e))if(this.opts.disabled.current)this.content.onItemLeave(e);else{if(this.content.onItemEnter())return;const n=e.currentTarget;if(!de(n))return;n.focus()}}onpointerleave(e){e.defaultPrevented||$r(e)&&this.content.onItemLeave(e)}onfocus(e){me(()=>{e.defaultPrevented||this.opts.disabled.current||C(this.#e,!0)})}onblur(e){me(()=>{e.defaultPrevented||C(this.#e,!1)})}#t=D(()=>({id:this.opts.id.current,tabindex:-1,role:"menuitem","aria-disabled":At(this.opts.disabled.current),"data-disabled":_t(this.opts.disabled.current),"data-highlighted":y(this.#e)?"":void 0,[this.content.parentMenu.root.getBitsAttr("item")]:"",onpointermove:this.onpointermove,onpointerleave:this.onpointerleave,onfocus:this.onfocus,onblur:this.onblur,...this.attachment}));get props(){return y(this.#t)}set props(e){C(this.#t,e)}}class Sr{static create(e){const r=new Ts(e,xr.get());return new Sr(e,r)}opts;item;root;#e=!1;constructor(e,r){this.opts=e,this.item=r,this.root=r.content.parentMenu.root,this.onkeydown=this.onkeydown.bind(this),this.onclick=this.onclick.bind(this),this.onpointerdown=this.onpointerdown.bind(this),this.onpointerup=this.onpointerup.bind(this)}#t(){if(this.item.opts.disabled.current)return;const e=new CustomEvent("menuitemselect",{bubbles:!0,cancelable:!0});if(this.opts.onSelect.current(e),e.defaultPrevented){this.item.content.parentMenu.root.isUsingKeyboard.current=!1;return}this.opts.closeOnSelect.current&&this.item.content.parentMenu.root.opts.onClose()}onkeydown(e){const r=this.item.content.search!=="";if(!(this.item.opts.disabled.current||r&&e.key===Dt)&&pc.includes(e.key)){if(!de(e.currentTarget))return;e.currentTarget.click(),e.preventDefault()}}onclick(e){this.item.opts.disabled.current||this.#t()}onpointerup(e){if(!e.defaultPrevented&&!this.#e){if(!de(e.currentTarget))return;e.currentTarget?.click()}}onpointerdown(e){this.#e=!0}#r=D(()=>pr(this.item.props,{onclick:this.onclick,onpointerdown:this.onpointerdown,onpointerup:this.onpointerup,onkeydown:this.onkeydown}));get props(){return y(this.#r)}set props(e){C(this.#r,e)}}class Es{static create(e,r){const n=new Sr(e,new Ts(e,xr.get()));return new Es(e,n,r)}opts;item;group;constructor(e,r,n=null){this.opts=e,this.item=r,this.group=n,this.group&&(Q(()=>this.group.opts.value.current,s=>{this.opts.checked.current=s.includes(this.opts.value.current)}),Q(()=>this.opts.checked.current,s=>{s?this.group.addValue(this.opts.value.current):this.group.removeValue(this.opts.value.current)}))}toggleChecked(){this.opts.indeterminate.current?(this.opts.indeterminate.current=!1,this.opts.checked.current=!0):this.opts.checked.current=!this.opts.checked.current}#e=D(()=>({checked:this.opts.checked.current,indeterminate:this.opts.indeterminate.current}));get snippetProps(){return y(this.#e)}set snippetProps(e){C(this.#e,e)}#t=D(()=>({...this.item.props,role:"menuitemcheckbox","aria-checked":ts(this.opts.checked.current,this.opts.indeterminate.current),"data-state":vc(this.opts.checked.current),[this.item.root.getBitsAttr("checkbox-item")]:""}));get props(){return y(this.#t)}set props(e){C(this.#t,e)}}class As{static create(e){return Yc.set(new As(e,wr.get()))}opts;root;attachment;#e=X(void 0);get groupHeadingId(){return y(this.#e)}set groupHeadingId(e){C(this.#e,e,!0)}constructor(e,r){this.opts=e,this.root=r,this.attachment=Be(this.opts.ref)}#t=D(()=>({id:this.opts.id.current,role:"group","aria-labelledby":this.groupHeadingId,[this.root.getBitsAttr("group")]:"",...this.attachment}));get props(){return y(this.#t)}set props(e){C(this.#t,e)}}class _s{static create(e){return new _s(e,wr.get())}opts;root;attachment;constructor(e,r){this.opts=e,this.root=r,this.attachment=Be(this.opts.ref)}#e=D(()=>({id:this.opts.id.current,role:"group",[this.root.getBitsAttr("separator")]:"",...this.attachment}));get props(){return y(this.#e)}set props(e){C(this.#e,e)}}class Ms{static create(e){return new Ms(e,kr.get())}opts;parentMenu;attachment;constructor(e,r){this.opts=e,this.parentMenu=r,this.attachment=Be(this.opts.ref,n=>this.parentMenu.triggerNode=n)}onclick=e=>{this.opts.disabled.current||e.detail!==0||(this.parentMenu.toggleOpen(),e.preventDefault())};onpointerdown=e=>{if(!this.opts.disabled.current){if(e.pointerType==="touch")return e.preventDefault();e.button===0&&e.ctrlKey===!1&&(this.parentMenu.toggleOpen(),this.parentMenu.opts.open.current||e.preventDefault())}};onpointerup=e=>{this.opts.disabled.current||e.pointerType==="touch"&&(e.preventDefault(),this.parentMenu.toggleOpen())};onkeydown=e=>{if(!this.opts.disabled.current){if(e.key===Dt||e.key===vr){this.parentMenu.toggleOpen(),e.preventDefault();return}e.key===tt&&(this.parentMenu.onOpen(),e.preventDefault())}};#e=D(()=>{if(this.parentMenu.opts.open.current&&this.parentMenu.contentId.current)return this.parentMenu.contentId.current});#t=D(()=>({id:this.opts.id.current,disabled:this.opts.disabled.current,"aria-haspopup":"menu","aria-expanded":At(this.parentMenu.opts.open.current),"aria-controls":y(this.#e),"data-disabled":_t(this.opts.disabled.current),"data-state":es(this.parentMenu.opts.open.current),[this.parentMenu.root.getBitsAttr("trigger")]:"",onclick:this.onclick,onpointerdown:this.onpointerdown,onpointerup:this.onpointerup,onkeydown:this.onkeydown,...this.attachment}));get props(){return y(this.#t)}set props(e){C(this.#t,e)}}globalThis.bitsDismissableLayers??=new Map;class Cr{static create(e){return new Cr(e)}opts;#e;#t;#r={pointerdown:!1};#n=!1;#s=!1;#o=void 0;#i;#a=oe;constructor(e){this.opts=e,this.#t=e.interactOutsideBehavior,this.#e=e.onInteractOutside,this.#i=e.onFocusOutside,Ie(()=>{this.#o=cs(this.opts.ref.current)});let r=oe;const n=()=>{this.#f(),globalThis.bitsDismissableLayers.delete(this),this.#l.destroy(),r()};Q([()=>this.opts.enabled.current,()=>this.opts.ref.current],()=>{if(!(!this.opts.enabled.current||!this.opts.ref.current))return La(1,()=>{this.opts.ref.current&&(globalThis.bitsDismissableLayers.set(this,this.#t),r(),r=this.#d())}),n}),st(()=>{this.#f.destroy(),globalThis.bitsDismissableLayers.delete(this),this.#l.destroy(),this.#a(),r()})}#c=e=>{e.defaultPrevented||this.opts.ref.current&&me(()=>{!this.opts.ref.current||this.#m(e.target)||e.target&&!this.#s&&this.#i.current?.(e)})};#d(){return _e(Y(this.#o,"pointerdown",_e(this.#h,this.#g),{capture:!0}),Y(this.#o,"pointerdown",_e(this.#p,this.#l)),Y(this.#o,"focusin",this.#c))}#u=e=>{let r=e;r.defaultPrevented&&(r=rn(e)),this.#e.current(e)};#l=Qr(e=>{if(!this.opts.ref.current){this.#a();return}const r=this.opts.isValidEvent.current(e,this.opts.ref.current)||$c(e,this.opts.ref.current);if(!this.#n||this.#b()||!r){this.#a();return}let n=e;if(n.defaultPrevented&&(n=rn(n)),this.#t.current!=="close"&&this.#t.current!=="defer-otherwise-close"){this.#a();return}e.pointerType==="touch"?(this.#a(),this.#a=Y(this.#o,"click",this.#u,{once:!0})):this.#e.current(n)},10);#h=e=>{this.#r[e.type]=!0};#p=e=>{this.#r[e.type]=!1};#g=()=>{this.opts.ref.current&&(this.#n=Qc(this.opts.ref.current))};#m=e=>this.opts.ref.current?as(this.opts.ref.current,e):!1;#f=Qr(()=>{for(const e in this.#r)this.#r[e]=!1;this.#n=!1},20);#b(){return Object.values(this.#r).some(Boolean)}#v=()=>{this.#s=!0};#y=()=>{this.#s=!1};props={onfocuscapture:this.#v,onblurcapture:this.#y}}function Jc(t=[...globalThis.bitsDismissableLayers]){return t.findLast(([e,{current:r}])=>r==="close"||r==="ignore")}function Qc(t){const e=[...globalThis.bitsDismissableLayers],r=Jc(e);if(r)return r[0].opts.ref.current===t;const[n]=e[0];return n.opts.ref.current===t}function $c(t,e){const r=t.target;if(!is(r))return!1;const n=!!r.closest(`[${qc}]`);if("button"in t&&t.button>0&&!n)return!1;if("button"in t&&t.button===0&&n)return!0;const s=!!e.closest(`[${Hc}]`);return n&&s?!1:cs(r).documentElement.contains(r)&&!as(e,r)&&hc(t,e)}function rn(t){const e=t.currentTarget,r=t.target;let n;t instanceof PointerEvent?n=new PointerEvent(t.type,t):n=new PointerEvent("pointerdown",t);let s=!1;return new Proxy(n,{get:(i,a)=>a==="currentTarget"?e:a==="target"?r:a==="preventDefault"?()=>{s=!0,typeof i.preventDefault=="function"&&i.preventDefault()}:a==="defaultPrevented"?s:a in i?i[a]:t[a]})}function Bl(t,e){$(e,!0);let r=_(e,"interactOutsideBehavior",3,"close"),n=_(e,"onInteractOutside",3,oe),s=_(e,"onFocusOutside",3,oe),o=_(e,"isValidEvent",3,()=>!1);const i=Cr.create({id:R(()=>e.id),interactOutsideBehavior:R(()=>r()),onInteractOutside:R(()=>n()),enabled:R(()=>e.enabled),onFocusOutside:R(()=>s()),isValidEvent:R(()=>o()),ref:e.ref});var a=Z(),c=K(a);ie(c,()=>e.children??ae,()=>({props:i.props})),V(t,a),ee()}globalThis.bitsEscapeLayers??=new Map;class Tr{static create(e){return new Tr(e)}opts;domContext;constructor(e){this.opts=e,this.domContext=new gr(this.opts.ref);let r=oe;Q(()=>e.enabled.current,n=>(n&&(globalThis.bitsEscapeLayers.set(this,e.escapeKeydownBehavior),r=this.#e()),()=>{r(),globalThis.bitsEscapeLayers.delete(this)}))}#e=()=>Y(this.domContext.getDocument(),"keydown",this.#t,{passive:!1});#t=e=>{if(e.key!==Ka||!el(this))return;const r=new KeyboardEvent(e.type,e);e.preventDefault();const n=this.opts.escapeKeydownBehavior.current;n!=="close"&&n!=="defer-otherwise-close"||this.opts.onEscapeKeydown.current(r)}}function el(t){const e=[...globalThis.bitsEscapeLayers],r=e.findLast(([s,{current:o}])=>o==="close"||o==="ignore");if(r)return r[0]===t;const[n]=e[0];return n===t}function Wl(t,e){$(e,!0);let r=_(e,"escapeKeydownBehavior",3,"close"),n=_(e,"onEscapeKeydown",3,oe);Tr.create({escapeKeydownBehavior:R(()=>r()),onEscapeKeydown:R(()=>n()),enabled:R(()=>e.enabled),ref:e.ref});var s=Z(),o=K(s);ie(o,()=>e.children??ae),V(t,s),ee()}class Er{static instance;#e=qn([]);#t=new WeakMap;#r=new WeakMap;static getInstance(){return this.instance||(this.instance=new Er),this.instance}register(e){const r=this.getActive();r&&r!==e&&r.pause();const n=document.activeElement;n&&n!==document.body&&this.#r.set(e,n),this.#e.current=this.#e.current.filter(s=>s!==e),this.#e.current.unshift(e)}unregister(e){this.#e.current=this.#e.current.filter(n=>n!==e);const r=this.getActive();r&&r.resume()}getActive(){return this.#e.current[0]}setFocusMemory(e,r){this.#t.set(e,r)}getFocusMemory(e){return this.#t.get(e)}isActiveScope(e){return this.getActive()===e}setPreFocusMemory(e,r){this.#r.set(e,r)}getPreFocusMemory(e){return this.#r.get(e)}clearPreFocusMemory(e){this.#r.delete(e)}}class Ar{#e=!1;#t=null;#r=Er.getInstance();#n=[];#s;constructor(e){this.#s=e}get paused(){return this.#e}pause(){this.#e=!0}resume(){this.#e=!1}#o(){for(const e of this.#n)e();this.#n=[]}mount(e){this.#t&&this.unmount(),this.#t=e,this.#r.register(this),this.#c(),this.#i()}unmount(){this.#t&&(this.#o(),this.#a(),this.#r.unregister(this),this.#r.clearPreFocusMemory(this),this.#t=null)}#i(){if(!this.#t)return;const e=new CustomEvent("focusScope.onOpenAutoFocus",{bubbles:!1,cancelable:!0});this.#s.onOpenAutoFocus.current(e),e.defaultPrevented||requestAnimationFrame(()=>{if(!this.#t)return;const r=this.#u();r?(r.focus(),this.#r.setFocusMemory(this,r)):this.#t.focus()})}#a(){const e=new CustomEvent("focusScope.onCloseAutoFocus",{bubbles:!1,cancelable:!0});if(this.#s.onCloseAutoFocus.current?.(e),!e.defaultPrevented){const r=this.#r.getPreFocusMemory(this);if(r&&document.contains(r))try{r.focus()}catch{document.body.focus()}}}#c(){if(!this.#t||!this.#s.trap.current)return;const e=this.#t,r=e.ownerDocument,n=i=>{if(this.#e||!this.#r.isActiveScope(this))return;const a=i.target;if(!a)return;if(e.contains(a))this.#r.setFocusMemory(this,a);else{const l=this.#r.getFocusMemory(this);if(l&&e.contains(l)&&ys(l))i.preventDefault(),l.focus();else{const u=this.#u(),d=this.#l()[0];(u||d||e).focus()}}},s=i=>{if(!this.#s.loop||this.#e||i.key!=="Tab"||!this.#r.isActiveScope(this))return;const a=this.#d();if(a.length===0)return;const c=a[0],l=a[a.length-1];!i.shiftKey&&r.activeElement===l?(i.preventDefault(),c.focus()):i.shiftKey&&r.activeElement===c&&(i.preventDefault(),l.focus())};this.#n.push(Y(r,"focusin",n,{capture:!0}),Y(e,"keydown",s));const o=new MutationObserver(()=>{const i=this.#r.getFocusMemory(this);if(i&&!e.contains(i)){const a=this.#u(),c=this.#l()[0],l=a||c;l?(l.focus(),this.#r.setFocusMemory(this,l)):e.focus()}});o.observe(e,{childList:!0,subtree:!0}),this.#n.push(()=>o.disconnect())}#d(){return this.#t?bs(this.#t,{includeContainer:!1,getShadowRoot:!0}):[]}#u(){return this.#d()[0]||null}#l(){return this.#t?vs(this.#t,{includeContainer:!1,getShadowRoot:!0}):[]}static use(e){let r=null;return Q([()=>e.ref.current,()=>e.enabled.current],([n,s])=>{n&&s?(r||(r=new Ar(e)),r.mount(n)):r&&(r.unmount(),r=null)}),st(()=>{r?.unmount()}),{get props(){return{tabindex:-1}}}}}function Ul(t,e){$(e,!0);let r=_(e,"enabled",3,!1),n=_(e,"trapFocus",3,!1),s=_(e,"loop",3,!1),o=_(e,"onCloseAutoFocus",3,oe),i=_(e,"onOpenAutoFocus",3,oe);const a=Ar.use({enabled:R(()=>r()),trap:R(()=>n()),loop:s(),onCloseAutoFocus:R(()=>o()),onOpenAutoFocus:R(()=>i()),ref:e.ref});var c=Z(),l=K(c);ie(l,()=>e.focusScope??ae,()=>({props:a.props})),V(t,c),ee()}globalThis.bitsTextSelectionLayers??=new Map;class _r{static create(e){return new _r(e)}opts;domContext;#e=oe;constructor(e){this.opts=e,this.domContext=new gr(e.ref);let r=oe;Q(()=>this.opts.enabled.current,n=>(n&&(globalThis.bitsTextSelectionLayers.set(this,this.opts.enabled),r(),r=this.#t()),()=>{r(),this.#n(),globalThis.bitsTextSelectionLayers.delete(this)}))}#t(){return _e(Y(this.domContext.getDocument(),"pointerdown",this.#r),Y(this.domContext.getDocument(),"pointerup",Hn(this.#n,this.opts.onPointerUp.current)))}#r=e=>{const r=this.opts.ref.current,n=e.target;!de(r)||!de(n)||!this.opts.enabled.current||!rl(this)||!Wa(r,n)||(this.opts.onPointerDown.current(e),!e.defaultPrevented&&(this.#e=tl(r,this.domContext.getDocument().body)))};#n=()=>{this.#e(),this.#e=oe}}const nn=t=>t.style.userSelect||t.style.webkitUserSelect;function tl(t,e){const r=nn(e),n=nn(t);return gt(e,"none"),gt(t,"text"),()=>{gt(e,r),gt(t,n)}}function gt(t,e){t.style.userSelect=e,t.style.webkitUserSelect=e}function rl(t){const e=[...globalThis.bitsTextSelectionLayers];if(!e.length)return!1;const r=e.at(-1);return r?r[0]===t:!1}function jl(t,e){$(e,!0);let r=_(e,"preventOverflowTextSelection",3,!0),n=_(e,"onPointerDown",3,oe),s=_(e,"onPointerUp",3,oe);_r.create({id:R(()=>e.id),onPointerDown:R(()=>n()),onPointerUp:R(()=>s()),enabled:R(()=>e.enabled&&r()),ref:e.ref});var o=Z(),i=K(o);ie(i,()=>e.children??ae),V(t,o),ee()}globalThis.bitsIdCounter??={current:0};function nl(t="bits"){return globalThis.bitsIdCounter.current++,`${t}-${globalThis.bitsIdCounter.current}`}class sl{#e;#t=0;#r=X();#n;constructor(e){this.#e=e}#s(){this.#t-=1,this.#n&&this.#t<=0&&(this.#n(),C(this.#r,void 0),this.#n=void 0)}get(...e){return this.#t+=1,y(this.#r)===void 0&&(this.#n=Sn(()=>{C(this.#r,this.#e(...e),!0)})),Ie(()=>()=>{this.#s()}),y(this.#r)}}const vt=new Jo;let mt=X(null),Ht=null,He=null,Ye=!1;const sn=R(()=>{for(const t of vt.values())if(t)return!0;return!1});let Yt=null;const ol=new sl(()=>{function t(){document.body.setAttribute("style",y(mt)??""),document.body.style.removeProperty("--scrollbar-width"),Jr&&Ht?.(),C(mt,null)}function e(){He!==null&&(window.clearTimeout(He),He=null)}function r(s,o){e(),Ye=!0,Yt=Date.now();const i=Yt,a=()=>{He=null,Yt===i&&(Is(vt)?Ye=!1:(Ye=!1,o()))},c=s===null?24:s;He=window.setTimeout(a,c)}function n(){y(mt)===null&&vt.size===0&&!Ye&&C(mt,document.body.getAttribute("style"),!0)}return Q(()=>sn.current,()=>{if(!sn.current)return;n(),Ye=!1;const s=getComputedStyle(document.documentElement),o=getComputedStyle(document.body),i=s.scrollbarGutter?.includes("stable")||o.scrollbarGutter?.includes("stable"),a=window.innerWidth-document.documentElement.clientWidth,l={padding:Number.parseInt(o.paddingRight??"0",10)+a,margin:Number.parseInt(o.marginRight??"0",10)};a>0&&!i&&(document.body.style.paddingRight=`${l.padding}px`,document.body.style.marginRight=`${l.margin}px`,document.body.style.setProperty("--scrollbar-width",`${a}px`)),document.body.style.overflow="hidden",Jr&&(Ht=Y(document,"touchmove",u=>{u.target===document.documentElement&&(u.touches.length>1||u.preventDefault())},{passive:!1})),me(()=>{document.body.style.pointerEvents="none",document.body.style.overflow="hidden"})}),st(()=>()=>{Ht?.()}),{get lockMap(){return vt},resetBodyStyle:t,scheduleCleanupIfNoNewLocks:r,cancelPendingCleanup:e,ensureInitialStyleCaptured:n}});class il{#e=nl();#t;#r=()=>null;#n;locked;constructor(e,r=()=>null){this.#t=e,this.#r=r,this.#n=ol.get(),this.#n&&(this.#n.cancelPendingCleanup(),this.#n.ensureInitialStyleCaptured(),this.#n.lockMap.set(this.#e,this.#t??!1),this.locked=R(()=>this.#n.lockMap.get(this.#e)??!1,n=>this.#n.lockMap.set(this.#e,n)),st(()=>{if(this.#n.lockMap.delete(this.#e),Is(this.#n.lockMap))return;const n=this.#r();this.#n.scheduleCleanupIfNoNewLocks(n,()=>{this.#n.resetBodyStyle()})}))}}function Is(t){for(const[e,r]of t)if(r)return!0;return!1}function Kl(t,e){$(e,!0);let r=_(e,"preventScroll",3,!0),n=_(e,"restoreScrollDelay",3,null);r()&&new il(r(),()=>n()),ee()}const al=rs({component:"checkbox",parts:["root","group","group-label","input"]}),cl=new xe("Checkbox.Group"),Ns=new xe("Checkbox.Root");class Mr{static create(e,r=null){return Ns.set(new Mr(e,r))}opts;group;#e=D(()=>this.group&&this.group.opts.name.current?this.group.opts.name.current:this.opts.name.current);get trueName(){return y(this.#e)}set trueName(e){C(this.#e,e)}#t=D(()=>this.group&&this.group.opts.required.current?!0:this.opts.required.current);get trueRequired(){return y(this.#t)}set trueRequired(e){C(this.#t,e)}#r=D(()=>this.group&&this.group.opts.disabled.current?!0:this.opts.disabled.current);get trueDisabled(){return y(this.#r)}set trueDisabled(e){C(this.#r,e)}#n=D(()=>this.group&&this.group.opts.readonly.current?!0:this.opts.readonly.current);get trueReadonly(){return y(this.#n)}set trueReadonly(e){C(this.#n,e)}attachment;constructor(e,r){this.opts=e,this.group=r,this.attachment=Be(this.opts.ref),this.onkeydown=this.onkeydown.bind(this),this.onclick=this.onclick.bind(this),Q.pre([()=>_o(this.group?.opts.value.current),()=>this.opts.value.current],([n,s])=>{!n||!s||(this.opts.checked.current=n.includes(s))}),Q.pre(()=>this.opts.checked.current,n=>{this.group&&(n?this.group?.addValue(this.opts.value.current):this.group?.removeValue(this.opts.value.current))})}onkeydown(e){if(!(this.trueDisabled||this.trueReadonly)){if(e.key===vr){e.preventDefault(),this.opts.type.current==="submit"&&e.currentTarget.closest("form")?.requestSubmit();return}e.key===Dt&&(e.preventDefault(),this.#s())}}#s(){this.opts.indeterminate.current?(this.opts.indeterminate.current=!1,this.opts.checked.current=!0):this.opts.checked.current=!this.opts.checked.current}onclick(e){if(!(this.trueDisabled||this.trueReadonly)){if(this.opts.type.current==="submit"){this.#s();return}e.preventDefault(),this.#s()}}#o=D(()=>({checked:this.opts.checked.current,indeterminate:this.opts.indeterminate.current}));get snippetProps(){return y(this.#o)}set snippetProps(e){C(this.#o,e)}#i=D(()=>({id:this.opts.id.current,role:"checkbox",type:this.opts.type.current,disabled:this.trueDisabled,"aria-checked":ts(this.opts.checked.current,this.opts.indeterminate.current),"aria-required":At(this.trueRequired),"aria-readonly":At(this.trueReadonly),"data-disabled":_t(this.trueDisabled),"data-readonly":_t(this.trueReadonly),"data-state":ll(this.opts.checked.current,this.opts.indeterminate.current),[al.root]:"",onclick:this.onclick,onkeydown:this.onkeydown,...this.attachment}));get props(){return y(this.#i)}set props(e){C(this.#i,e)}}class Ir{static create(){return new Ir(Ns.get())}root;#e=D(()=>this.root.group?!!(this.root.opts.value.current!==void 0&&this.root.group.opts.value.current.includes(this.root.opts.value.current)):this.root.opts.checked.current);get trueChecked(){return y(this.#e)}set trueChecked(e){C(this.#e,e)}#t=D(()=>!!this.root.trueName);get shouldRender(){return y(this.#t)}set shouldRender(e){C(this.#t,e)}constructor(e){this.root=e,this.onfocus=this.onfocus.bind(this)}onfocus(e){de(this.root.opts.ref.current)&&this.root.opts.ref.current.focus()}#r=D(()=>({type:"checkbox",checked:this.root.opts.checked.current===!0,disabled:this.root.trueDisabled,required:this.root.trueRequired,name:this.root.trueName,value:this.root.opts.value.current,readonly:this.root.trueReadonly,onfocus:this.onfocus}));get props(){return y(this.#r)}set props(e){C(this.#r,e)}}function ll(t,e){return e?"indeterminate":t?"checked":"unchecked"}var ul=ve(""),dl=ve("");function fl(t,e){$(e,!0);let r=_(e,"value",15),n=fe(e,["$$slots","$$events","$$legacy","value"]);const s=D(()=>pr(n,{"aria-hidden":"true",tabindex:-1,style:Ia}));var o=Z(),i=K(o);{var a=l=>{var u=ul();be(u,()=>({...y(s),value:r()}),void 0,void 0,void 0,void 0,!0),V(l,u)},c=l=>{var u=dl();be(u,()=>({...y(s)}),void 0,void 0,void 0,void 0,!0),Jt(u,r),V(l,u)};ke(i,l=>{y(s).type==="checkbox"?l(a):l(c,!1)})}V(t,o),ee()}function hl(t,e){$(e,!1);const r=Ir.create();Eo();var n=Z(),s=K(n);{var o=i=>{fl(i,ze(()=>r.props))};ke(s,i=>{r.shouldRender&&i(o)})}V(t,n),ee()}var pl=ve(""),gl=ve(" ",1);function ml(t,e){const r=Co();$(e,!0);let n=_(e,"checked",15,!1),s=_(e,"ref",15,null),o=_(e,"disabled",3,!1),i=_(e,"required",3,!1),a=_(e,"name",3,void 0),c=_(e,"value",3,"on"),l=_(e,"id",19,()=>sc(r)),u=_(e,"indeterminate",15,!1),d=_(e,"type",3,"button"),f=fe(e,["$$slots","$$events","$$legacy","checked","ref","onCheckedChange","children","disabled","required","name","value","id","indeterminate","onIndeterminateChange","child","type","readonly"]);const h=cl.getOr(null);h&&c()&&(h.opts.value.current.includes(c())?n(!0):n(!1)),Q.pre(()=>c(),()=>{h&&c()&&(h.opts.value.current.includes(c())?n(!0):n(!1))});const m=Mr.create({checked:R(()=>n(),A=>{n(A),e.onCheckedChange?.(A)}),disabled:R(()=>o()??!1),required:R(()=>i()),name:R(()=>a()),value:R(()=>c()),id:R(()=>l()),ref:R(()=>s(),A=>s(A)),indeterminate:R(()=>u(),A=>{u(A),e.onIndeterminateChange?.(A)}),type:R(()=>d()),readonly:R(()=>!!e.readonly)},h),p=D(()=>pr({...f},m.props));var g=gl(),x=K(g);{var O=A=>{var S=Z(),M=K(S);{let v=D(()=>({props:y(p),...m.snippetProps}));ie(M,()=>e.child,()=>y(v))}V(A,S)},F=A=>{var S=pl();be(S,()=>({...y(p)}));var M=$e(S);ie(M,()=>e.children??ae,()=>m.snippetProps),et(S),V(A,S)};ke(x,A=>{e.child?A(O):A(F,!1)})}var T=xn(x,2);hl(T,{}),V(t,g),ee()}var bl=ve(""),vl=ve("");function ql(t,e){$(e,!0);let r=_(e,"ref",15,null),n=_(e,"value",15),s=_(e,"files",15),o=_(e,"data-slot",3,"input"),i=fe(e,["$$slots","$$events","$$legacy","ref","value","type","files","class","data-slot"]);var a=Z(),c=K(a);{var l=d=>{var f=bl();be(f,h=>({"data-slot":o(),class:h,type:"file",...i}),[()=>Fe("selection:bg-primary dark:bg-input/30 selection:text-primary-foreground border-input ring-offset-background placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 pt-1.5 text-sm font-medium shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e.class)],void 0,void 0,void 0,!0),St(f,h=>r(h),()=>r()),Ho(f,s),Jt(f,n),V(d,f)},u=d=>{var f=vl();be(f,h=>({"data-slot":o(),class:h,type:e.type,...i}),[()=>Fe("border-input bg-background selection:bg-primary dark:bg-input/30 selection:text-primary-foreground ring-offset-background placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e.class)],void 0,void 0,void 0,!0),St(f,h=>r(h),()=>r()),Jt(f,n),V(d,f)};ke(c,d=>{e.type==="file"?d(l):d(u,!1)})}V(t,a),ee()}function yl(t,e){$(e,!0);let r=fe(e,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"M20 6 9 17l-5-5"}]];dr(t,ze({name:"check"},()=>r,{get iconNode(){return n},children:(s,o)=>{var i=Z(),a=K(i);ie(a,()=>e.children??ae),V(s,i)},$$slots:{default:!0}})),ee()}function wl(t,e){$(e,!0);let r=fe(e,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"M5 12h14"}]];dr(t,ze({name:"minus"},()=>r,{get iconNode(){return n},children:(s,o)=>{var i=Z(),a=K(i);ie(a,()=>e.children??ae),V(s,i)},$$slots:{default:!0}})),ee()}var kl=ve('
    ');function Hl(t,e){$(e,!0);let r=_(e,"ref",15,null),n=_(e,"checked",15,!1),s=_(e,"indeterminate",15,!1),o=fe(e,["$$slots","$$events","$$legacy","ref","checked","indeterminate","class"]);var i=Z(),a=K(i);{const c=(u,d)=>{let f=()=>d?.().checked,h=()=>d?.().indeterminate;var m=kl(),p=$e(m);{var g=O=>{yl(O,{class:"size-3.5"})},x=O=>{var F=Z(),T=K(F);{var A=S=>{wl(S,{class:"size-3.5"})};ke(T,S=>{h()&&S(A)},!0)}V(O,F)};ke(p,O=>{f()?O(g):O(x,!1)})}et(m),V(u,m)};let l=D(()=>Fe("border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive peer flex size-4 shrink-0 items-center justify-center rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e.class));To(a,()=>ml,(u,d)=>{d(u,ze({"data-slot":"checkbox",get class(){return y(l)}},()=>o,{get ref(){return r()},set ref(f){r(f)},get checked(){return n()},set checked(f){n(f)},get indeterminate(){return s()},set indeterminate(f){s(f)},children:c,$$slots:{default:!0}}))})}V(t,i),ee()}function Yl(t,e){$(e,!0);let r=fe(e,["$$slots","$$events","$$legacy","class"]);{let n=D(()=>Fe("size-4 animate-spin",e.class));Zo(t,ze({role:"status","aria-label":"Loading",get class(){return y(n)}},()=>r))}ee()}export{La as $,ui as A,Ml as B,Hl as C,Bl as D,vr as E,Ul as F,Fl as G,ks as H,dr as I,ws as J,gr as K,zc as L,Mt as M,tt as N,Ya as O,nc as P,Ha as Q,ss as R,Yl as S,jl as T,qa as U,ns as V,Ll as W,Dl as X,zl as Y,Vl as Z,At as _,be as a,Jr as a0,Il as a1,Nl as a2,me as a3,fl as a4,As as a5,Gl as a6,Es as a7,wl as a8,yl as a9,Qt as aA,El as aB,Jt as aC,_l as aD,Na as aa,qn as ab,ha as ac,nl as ad,pt as ae,Ol as af,Xn as ag,$n as ah,Sr as ai,_s as aj,xs as ak,Ss as al,Cs as am,Ms as an,zo as ao,Bo as ap,je as aq,Zo as ar,tc as as,ot as at,ar as au,Rl as av,yr as aw,Pl as ax,lt as ay,Al as az,ql as b,Fe as c,Zr as d,Lo as e,No as f,Ct as g,Wo as h,Mo as i,xe as j,Be as k,_t as l,Dt as m,R as n,st as o,rs as p,es as q,sc as r,ie as s,ca as t,$t as u,pr as v,Q as w,oe as x,Wl as y,Kl as z}; diff --git a/front-end/build/civit/_app/immutable/chunks/Bl70acv3.js b/front-end/build/civit/_app/immutable/chunks/Bl70acv3.js new file mode 100644 index 0000000..0efbeee --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/Bl70acv3.js @@ -0,0 +1 @@ +import{D as R,E as U,F as P,G as j,H as A,I as T,J as g,K as C,M as $,N as q,O as x,P as L,Q as M,R as G,S as H,T as Z,U as z,V as I,W as J,X as Q,k as N,Y as V,Z as m,_ as y,$ as W,a0 as X,g as w,n as ee,a1 as se,a as re,c as te,a2 as ie,a3 as ne,a4 as ae,a5 as fe,a6 as ue,a7 as ce,a8 as oe,a9 as p,L as B,aa as le}from"./DA9wTPlB.js";class Y{anchor;#s=new Map;#r=new Map;#e=new Map;#t=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#n=()=>{var e=R;if(this.#s.has(e)){var t=this.#s.get(e),r=this.#r.get(t);if(r)U(r),this.#t.delete(t);else{var i=this.#e.get(t);i&&(this.#r.set(t,i.effect),this.#e.delete(t),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),r=i.effect)}for(const[n,f]of this.#s){if(this.#s.delete(n),n===e)break;const a=this.#e.get(f);a&&(P(a.effect),this.#e.delete(f))}for(const[n,f]of this.#r){if(n===t||this.#t.has(n))continue;const a=()=>{if(Array.from(this.#s.values()).includes(n)){var o=document.createDocumentFragment();$(f,o),o.append(A()),this.#e.set(n,{effect:f,fragment:o})}else P(f);this.#t.delete(n),this.#r.delete(n)};this.#i||!r?(this.#t.add(n),j(f,a,!1)):a()}}};#a=e=>{this.#s.delete(e);const t=Array.from(this.#s.values());for(const[r,i]of this.#e)t.includes(r)||(P(i.effect),this.#e.delete(r))};ensure(e,t){var r=R,i=q();if(t&&!this.#r.has(e)&&!this.#e.has(e))if(i){var n=document.createDocumentFragment(),f=A();n.append(f),this.#e.set(e,{effect:T(()=>t(f)),fragment:n})}else this.#r.set(e,T(()=>t(this.anchor)));if(this.#s.set(r,e),i){for(const[a,u]of this.#r)a===e?r.skipped_effects.delete(u):r.skipped_effects.add(u);for(const[a,u]of this.#e)a===e?r.skipped_effects.delete(u.effect):r.skipped_effects.add(u.effect);r.oncommit(this.#n),r.ondiscard(this.#a)}else g&&(this.anchor=C),this.#n()}}function ve(s,e,t=!1){g&&L();var r=new Y(s),i=t?M:0;function n(f,a){if(g){const o=G(s)===H;if(f===o){var u=Z();z(u),r.anchor=u,I(!1),r.ensure(f,a),I(!0);return}}r.ensure(f,a)}x(()=>{var f=!1;e((a,u=!0)=>{f=!0,n(u,a)}),f||n(!1,null)},i)}function be(s,e,t){g&&L();var r=new Y(s);x(()=>{var i=e()??null;r.ensure(i,i&&(n=>t(n,i)))},M)}function D(s,e){return s===e||s?.[m]===e}function ge(s={},e,t,r){return J(()=>{var i,n;return Q(()=>{i=n,n=[],N(()=>{s!==t(...n)&&(e(s,...n),i&&D(t(...i),s)&&e(null,...i))})}),()=>{V(()=>{n&&D(t(...n),s)&&e(null,...n)})}}),s}let b=!1;function de(s){var e=b;try{return b=!1,[s(),b]}finally{b=e}}const he={get(s,e){if(!s.exclude.includes(e))return s.props[e]},set(s,e){return!1},getOwnPropertyDescriptor(s,e){if(!s.exclude.includes(e)&&e in s.props)return{enumerable:!0,configurable:!0,value:s.props[e]}},has(s,e){return s.exclude.includes(e)?!1:e in s.props},ownKeys(s){return Reflect.ownKeys(s.props).filter(e=>!s.exclude.includes(e))}};function Se(s,e,t){return new Proxy({props:s,exclude:e},he)}const _e={get(s,e){let t=s.props.length;for(;t--;){let r=s.props[t];if(p(r)&&(r=r()),typeof r=="object"&&r!==null&&e in r)return r[e]}},set(s,e,t){let r=s.props.length;for(;r--;){let i=s.props[r];p(i)&&(i=i());const n=y(i,e);if(n&&n.set)return n.set(t),!0}return!1},getOwnPropertyDescriptor(s,e){let t=s.props.length;for(;t--;){let r=s.props[t];if(p(r)&&(r=r()),typeof r=="object"&&r!==null&&e in r){const i=y(r,e);return i&&!i.configurable&&(i.configurable=!0),i}}},has(s,e){if(e===m||e===B)return!1;for(let t of s.props)if(p(t)&&(t=t()),t!=null&&e in t)return!0;return!1},ownKeys(s){const e=[];for(let t of s.props)if(p(t)&&(t=t()),!!t){for(const r in t)e.includes(r)||e.push(r);for(const r of Object.getOwnPropertySymbols(t))e.includes(r)||e.push(r)}return e}};function Pe(...s){return new Proxy({props:s},_e)}function we(s,e,t,r){var i=!ue||(t&ce)!==0,n=(t&fe)!==0,f=(t&le)!==0,a=r,u=!0,o=()=>(u&&(u=!1,a=f?N(r):r),a),d;if(n){var F=m in s||B in s;d=y(s,e)?.set??(F&&e in s?c=>s[e]=c:void 0)}var h,E=!1;n?[h,E]=de(()=>s[e]):h=s[e],h===void 0&&r!==void 0&&(h=o(),d&&(i&&W(),d(h)));var l;if(i?l=()=>{var c=s[e];return c===void 0?o():(u=!0,c)}:l=()=>{var c=s[e];return c!==void 0&&(a=void 0),c===void 0?a:c},i&&(t&X)===0)return l;if(d){var k=s.$$legacy;return(function(c,v){return arguments.length>0?((!i||!v||k||E)&&d(v?l():c),c):l()})}var S=!1,_=((t&oe)!==0?ee:se)(()=>(S=!1,l()));n&&w(_);var K=ne;return(function(c,v){if(arguments.length>0){const O=v?w(_):i&&n?re(c):c;return te(_,O),S=!0,a!==void 0&&(a=O),c}return ie&&S||(K.f&ae)!==0?_.v:w(_)})}export{Y as B,ge as b,be as c,ve as i,we as p,Se as r,Pe as s}; diff --git a/front-end/build/civit/_app/immutable/chunks/BxiYE_8e.js b/front-end/build/civit/_app/immutable/chunks/BxiYE_8e.js new file mode 100644 index 0000000..0a759c7 --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/BxiYE_8e.js @@ -0,0 +1 @@ +import{v as he,aJ as _t,o as De,s as U,g as T,c as I,C as ee,bk as Ve,bl as mt}from"./DA9wTPlB.js";const V=[];function Se(e,t=he){let n=null;const a=new Set;function r(s){if(_t(e,s)&&(e=s,n)){const c=!V.length;for(const l of a)l[1](),V.push(l,e);if(c){for(let l=0;l{a.delete(l),a.size===0&&n&&(n(),n=null)}}return{set:r,update:i,subscribe:o}}class Ee{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Re{constructor(t,n){this.status=t,this.location=n}}class xe extends Error{constructor(t,n,a){super(a),this.status=t,this.text=n}}new URL("sveltekit-internal://");function wt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function vt(e){return e.split("%25").map(decodeURI).join("%25")}function yt(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function pe({href:e}){return e.split("#")[0]}function bt(...e){let t=5381;for(const n of e)if(typeof n=="string"){let a=n.length;for(;a;)t=t*33^n.charCodeAt(--a)}else if(ArrayBuffer.isView(n)){const a=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let r=a.length;for(;r;)t=t*33^a[--r]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function kt(e){const t=atob(e),n=new Uint8Array(t.length);for(let a=0;a((e instanceof Request?e.method:t?.method||"GET")!=="GET"&&F.delete(Ae(e)),St(e,t));const F=new Map;function Et(e,t){const n=Ae(e,t),a=document.querySelector(n);if(a?.textContent){a.remove();let{body:r,...i}=JSON.parse(a.textContent);const o=a.getAttribute("data-ttl");return o&&F.set(n,{body:r,init:i,ttl:1e3*Number(o)}),a.getAttribute("data-b64")!==null&&(r=kt(r)),Promise.resolve(new Response(r,i))}return window.fetch(e,t)}function Rt(e,t,n){if(F.size>0){const a=Ae(e,n),r=F.get(a);if(r){if(performance.now(){const r=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(a);if(r)return t.push({name:r[1],matcher:r[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(a);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!a)return;const o=a.split(/\[(.+?)\](?!\])/);return"/"+o.map((c,l)=>{if(l%2){if(c.startsWith("x+"))return ge(String.fromCharCode(parseInt(c.slice(2),16)));if(c.startsWith("u+"))return ge(String.fromCharCode(...c.slice(2).split("-").map(m=>parseInt(m,16))));const f=xt.exec(c),[,h,w,u,g]=f;return t.push({name:u,matcher:g,optional:!!h,rest:!!w,chained:w?l===1&&o[0]==="":!1}),w?"([^]*?)":h?"([^/]*)?":"([^/]+?)"}return ge(c)}).join("")}).join("")}/?$`),params:t}}function Lt(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function Ut(e){return e.slice(1).split("/").filter(Lt)}function Tt(e,t,n){const a={},r=e.slice(1),i=r.filter(s=>s!==void 0);let o=0;for(let s=0;sf).join("/"),o=0),l===void 0){c.rest&&(a[c.name]="");continue}if(!c.matcher||n[c.matcher](l)){a[c.name]=l;const f=t[s+1],h=r[s+1];f&&!f.rest&&f.optional&&h&&c.chained&&(o=0),!f&&!h&&Object.keys(a).length===i.length&&(o=0);continue}if(c.optional&&c.chained){o++;continue}return}if(!o)return a}function ge(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function It({nodes:e,server_loads:t,dictionary:n,matchers:a}){const r=new Set(t);return Object.entries(n).map(([s,[c,l,f]])=>{const{pattern:h,params:w}=At(s),u={id:s,exec:g=>{const m=h.exec(g);if(m)return Tt(m,w,a)},errors:[1,...f||[]].map(g=>e[g]),layouts:[0,...l||[]].map(o),leaf:i(c)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function i(s){const c=s<0;return c&&(s=~s),[c,e[s]]}function o(s){return s===void 0?s:[r.has(s),e[s]]}}function Ye(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ze(e,t,n=JSON.stringify){const a=n(t);try{sessionStorage[e]=a}catch{}}const A=globalThis.__sveltekit_1vgz915?.base??"/civit",Ot=globalThis.__sveltekit_1vgz915?.assets??A??"",$t="1770745449453",Je="sveltekit:snapshot",He="sveltekit:scroll",Xe="sveltekit:states",Ct="sveltekit:pageurl",B="sveltekit:history",W="sveltekit:navigation",j={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},Le=location.origin;function Qe(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function le(){return{x:pageXOffset,y:pageYOffset}}function z(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Be={...j,"":j.hover};function Ze(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function et(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Ze(e)}}function we(e,t,n){let a;try{if(a=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&a.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";a.hash=`#${s}${a.hash}`}}catch{}const r=e instanceof SVGAElement?e.target.baseVal:e.target,i=!a||!!r||ue(a,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=a?.origin===Le&&e.hasAttribute("download");return{url:a,external:i,target:r,download:o}}function te(e){let t=null,n=null,a=null,r=null,i=null,o=null,s=e;for(;s&&s!==document.documentElement;)a===null&&(a=z(s,"preload-code")),r===null&&(r=z(s,"preload-data")),t===null&&(t=z(s,"keepfocus")),n===null&&(n=z(s,"noscroll")),i===null&&(i=z(s,"reload")),o===null&&(o=z(s,"replacestate")),s=Ze(s);function c(l){switch(l){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Be[a??"off"],preload_data:Be[r??"off"],keepfocus:c(t),noscroll:c(n),reload:c(i),replace_state:c(o)}}function Ke(e){const t=Se(e);let n=!0;function a(){n=!0,t.update(o=>o)}function r(o){n=!1,t.set(o)}function i(o){let s;return t.subscribe(c=>{(s===void 0||n&&c!==s)&&o(s=c)})}return{notify:a,set:r,subscribe:i}}const tt={v:()=>{}};function Pt(){const{set:e,subscribe:t}=Se(!1);let n;async function a(){clearTimeout(n);try{const r=await fetch(`${Ot}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const o=(await r.json()).version!==$t;return o&&(e(!0),tt.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:a}}function ue(e,t,n){return e.origin!==Le||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function cn(e){}const nt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...nt];const jt=new Set([...nt]);[...jt];function Nt(e){return e.filter(t=>t!=null)}function Ue(e){return e instanceof Ee||e instanceof xe?e.status:500}function qt(e){return e instanceof xe?e.text:"Internal Error"}let k,Y,_e;const Dt=De.toString().includes("$$")||/function \w+\(\) \{\}/.test(De.toString());Dt?(k={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},Y={current:null},_e={current:!1}):(k=new class{#e=U({});get data(){return T(this.#e)}set data(t){I(this.#e,t)}#t=U(null);get form(){return T(this.#t)}set form(t){I(this.#t,t)}#n=U(null);get error(){return T(this.#n)}set error(t){I(this.#n,t)}#a=U({});get params(){return T(this.#a)}set params(t){I(this.#a,t)}#r=U({id:null});get route(){return T(this.#r)}set route(t){I(this.#r,t)}#o=U({});get state(){return T(this.#o)}set state(t){I(this.#o,t)}#s=U(-1);get status(){return T(this.#s)}set status(t){I(this.#s,t)}#i=U(new URL("https://example.com"));get url(){return T(this.#i)}set url(t){I(this.#i,t)}},Y=new class{#e=U(null);get current(){return T(this.#e)}set current(t){I(this.#e,t)}},_e=new class{#e=U(!1);get current(){return T(this.#e)}set current(t){I(this.#e,t)}},tt.v=()=>_e.current=!0);function at(e){Object.assign(k,e)}const Vt=new Set(["icon","shortcut icon","apple-touch-icon"]),q=Ye(He)??{},J=Ye(Je)??{},P={url:Ke({}),page:Ke({}),navigating:Se(null),updated:Pt()};function Te(e){q[e]=le()}function zt(e,t){let n=e+1;for(;q[n];)delete q[n],n+=1;for(n=t+1;J[n];)delete J[n],n+=1}function H(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function rt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(A||"/");e&&await e.update()}}function Me(){}let Ie,ve,ne,O,ye,v;const ae=[],re=[];let R=null;function be(){R?.fork?.then(e=>e?.discard()),R=null}const Z=new Map,ot=new Set,Bt=new Set,G=new Set;let _={branch:[],error:null,url:null},st=!1,oe=!1,Fe=!0,X=!1,M=!1,it=!1,Oe=!1,$e,y,x,N;const se=new Set,Ge=new Map;async function dn(e,t,n){globalThis.__sveltekit_1vgz915?.data&&globalThis.__sveltekit_1vgz915.data,document.URL!==location.href&&(location.href=location.href),v=e,await e.hooks.init?.(),Ie=It(e),O=document.documentElement,ye=t,ve=e.nodes[0],ne=e.nodes[1],ve(),ne(),y=history.state?.[B],x=history.state?.[W],y||(y=x=Date.now(),history.replaceState({...history.state,[B]:y,[W]:x},""));const a=q[y];function r(){a&&(history.scrollRestoration="manual",scrollTo(a.x,a.y))}n?(r(),await nn(ye,n)):(await K({type:"enter",url:Qe(v.hash?on(new URL(location.href)):location.href),replace_state:!0}),r()),tn()}function Kt(){ae.length=0,Oe=!1}function ct(e){re.some(t=>t?.snapshot)&&(J[e]=re.map(t=>t?.snapshot?.capture()))}function lt(e){J[e]?.forEach((t,n)=>{re[n]?.snapshot?.restore(t)})}function We(){Te(y),ze(He,q),ct(x),ze(Je,J)}async function Mt(e,t,n,a){let r;t.invalidateAll&&be(),await K({type:"goto",url:Qe(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:a,accept:()=>{t.invalidateAll&&(Oe=!0,r=[...Ge.keys()]),t.invalidate&&t.invalidate.forEach(en)}}),t.invalidateAll&&ee().then(ee).then(()=>{Ge.forEach(({resource:i},o)=>{r?.includes(o)&&i.refresh?.()})})}async function Ft(e){if(e.id!==R?.id){be();const t={};if(se.add(t),R={id:e.id,token:t,promise:ft({...e,preload:t}).then(n=>(se.delete(t),n.type==="loaded"&&n.state.error&&be(),n)),fork:null},Ve){const n=R;n.fork=n.promise.then(a=>{if(n===R&&a.type==="loaded")try{return Ve(()=>{$e.$set(a.props),at(a.props.page)})}catch{}return null})}}return R.promise}async function me(e){const t=(await fe(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].map(n=>n?.[1]()))}async function ut(e,t,n){_=e.state;const a=document.querySelector("style[data-sveltekit]");if(a&&a.remove(),Object.assign(k,e.props.page),$e=new v.root({target:t,props:{...e.props,stores:P,components:re},hydrate:n,sync:!1}),await Promise.resolve(),lt(x),n){const r={from:null,to:{params:_.params,route:{id:_.route?.id??null},url:new URL(location.href)},willUnload:!1,type:"enter",complete:Promise.resolve()};G.forEach(i=>i(r))}oe=!0}function ie({url:e,params:t,branch:n,status:a,error:r,route:i,form:o}){let s="never";if(A&&(e.pathname===A||e.pathname===A+"/"))s="always";else for(const u of n)u?.slash!==void 0&&(s=u.slash);e.pathname=wt(e.pathname,s),e.search=e.search;const c={type:"loaded",state:{url:e,params:t,branch:n,error:r,route:i},props:{constructors:Nt(n).map(u=>u.node.component),page:qe(k)}};o!==void 0&&(c.props.form=o);let l={},f=!k,h=0;for(let u=0;us(new URL(o))))return!0;return!1}function Pe(e,t){return e?.type==="data"?e:e?.type==="skip"?t??null:null}function Yt(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const a of n){const r=e.searchParams.getAll(a),i=t.searchParams.getAll(a);r.every(o=>i.includes(o))&&i.every(o=>r.includes(o))&&n.delete(a)}return n}function Jt({error:e,url:t,route:n,params:a}){return{type:"loaded",state:{error:e,url:t,route:n,params:a,branch:[]},props:{page:qe(k),constructors:[]}}}async function ft({id:e,invalidating:t,url:n,params:a,route:r,preload:i}){if(R?.id===e)return se.delete(R.token),R.promise;const{errors:o,layouts:s,leaf:c}=r,l=[...s,c];o.forEach(p=>p?.().catch(()=>{})),l.forEach(p=>p?.[1]().catch(()=>{}));const f=_.url?e!==ce(_.url):!1,h=_.route?r.id!==_.route.id:!1,w=Yt(_.url,n);let u=!1;const g=l.map(async(p,d)=>{if(!p)return;const S=_.branch[d];return p[1]===S?.loader&&!Wt(u,h,f,w,S.universal?.uses,a)?S:(u=!0,Ce({loader:p[1],url:n,params:a,route:r,parent:async()=>{const $={};for(let L=0;L{});const m=[];for(let p=0;pPromise.resolve({}),server_data_node:Pe(i)}),s={node:await ne(),loader:ne,universal:null,server:null,data:null};return ie({url:n,params:r,branch:[o,s],status:e,error:t,route:null})}catch(o){if(o instanceof Re)return Mt(new URL(o.location,location.href),{},0);throw o}}async function Xt(e){const t=e.href;if(Z.has(t))return Z.get(t);let n;try{const a=(async()=>{let r=await v.hooks.reroute({url:new URL(e),fetch:async(i,o)=>Gt(i,o,e).promise})??e;if(typeof r=="string"){const i=new URL(e);v.hash?i.hash=r:i.pathname=r,r=i}return r})();Z.set(t,a),n=await a}catch{Z.delete(t);return}return n}async function fe(e,t){if(e&&!ue(e,A,v.hash)){const n=await Xt(e);if(!n)return;const a=Qt(n);for(const r of Ie){const i=r.exec(a);if(i)return{id:ce(e),invalidating:t,route:r,params:yt(i),url:e}}}}function Qt(e){return vt(v.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(A.length))||"/"}function ce(e){return(v.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function dt({url:e,type:t,intent:n,delta:a,event:r}){let i=!1;const o=Ne(_,n,e,t);a!==void 0&&(o.navigation.delta=a),r!==void 0&&(o.navigation.event=r);const s={...o.navigation,cancel:()=>{i=!0,o.reject(new Error("navigation cancelled"))}};return X||ot.forEach(c=>c(s)),i?null:o}async function K({type:e,url:t,popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o={},redirect_count:s=0,nav_token:c={},accept:l=Me,block:f=Me,event:h}){const w=N;N=c;const u=await fe(t,!1),g=e==="enter"?Ne(_,u,t,e):dt({url:t,type:e,delta:n?.delta,intent:u,event:h});if(!g){f(),N===c&&(N=w);return}const m=y,p=x;l(),X=!0,oe&&g.navigation.type!=="enter"&&P.navigating.set(Y.current=g.navigation);let d=u&&await ft(u);if(!d){if(ue(t,A,v.hash))return await H(t,i);d=await ht(t,{id:null},await Q(new xe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=u?.url||t,N!==c)return g.reject(new Error("navigation aborted")),!1;if(d.type==="redirect"){if(s<20){await K({type:e,url:new URL(d.location,t),popped:n,keepfocus:a,noscroll:r,replace_state:i,state:o,redirect_count:s+1,nav_token:c}),g.fulfil(void 0);return}d=await je({status:500,error:await Q(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else d.props.page.status>=400&&await P.updated.check()&&(await rt(),await H(t,i));if(Kt(),Te(m),ct(p),d.props.page.url.pathname!==t.pathname&&(t.pathname=d.props.page.url.pathname),o=n?n.state:o,!n){const b=i?0:1,D={[B]:y+=b,[W]:x+=b,[Xe]:o};(i?history.replaceState:history.pushState).call(history,D,"",t),i||zt(y,x)}const S=u&&R?.id===u.id?R.fork:null;R=null,d.props.page.state=o;let E;if(oe){const b=(await Promise.all(Array.from(Bt,C=>C(g.navigation)))).filter(C=>typeof C=="function");if(b.length>0){let C=function(){b.forEach(de=>{G.delete(de)})};b.push(C),b.forEach(de=>{G.add(de)})}_=d.state,d.props.page&&(d.props.page.url=t);const D=S&&await S;D?E=D.commit():($e.$set(d.props),at(d.props.page),E=mt?.()),it=!0}else await ut(d,ye,!1);const{activeElement:$}=document;await E,await ee(),await ee();let L=n?n.scroll:r?le():null;if(Fe){const b=t.hash&&document.getElementById(pt(t));if(L)scrollTo(L.x,L.y);else if(b){b.scrollIntoView();const{top:D,left:C}=b.getBoundingClientRect();L={x:pageXOffset+C,y:pageYOffset+D}}else scrollTo(0,0)}const gt=document.activeElement!==$&&document.activeElement!==document.body;!a&&!gt&&rn(t,L),Fe=!0,d.props.page&&Object.assign(k,d.props.page),X=!1,e==="popstate"&<(x),g.fulfil(void 0),G.forEach(b=>b(g.navigation)),P.navigating.set(Y.current=null)}async function ht(e,t,n,a,r){return e.origin===Le&&e.pathname===location.pathname&&!st?await je({status:a,error:n,url:e,route:t}):await H(e,r)}function Zt(){let e,t,n;O.addEventListener("mousemove",s=>{const c=s.target;clearTimeout(e),e=setTimeout(()=>{i(c,j.hover)},20)});function a(s){s.defaultPrevented||i(s.composedPath()[0],j.tap)}O.addEventListener("mousedown",a),O.addEventListener("touchstart",a,{passive:!0});const r=new IntersectionObserver(s=>{for(const c of s)c.isIntersecting&&(me(new URL(c.target.href)),r.unobserve(c.target))},{threshold:0});async function i(s,c){const l=et(s,O),f=l===t&&c>=n;if(!l||f)return;const{url:h,external:w,download:u}=we(l,A,v.hash);if(w||u)return;const g=te(l),m=h&&ce(_.url)===ce(h);if(!(g.reload||m))if(c<=g.preload_data){t=l,n=j.tap;const p=await fe(h,!1);if(!p)return;Ft(p)}else c<=g.preload_code&&(t=l,n=c,me(h))}function o(){r.disconnect();for(const s of O.querySelectorAll("a")){const{url:c,external:l,download:f}=we(s,A,v.hash);if(l||f)continue;const h=te(s);h.reload||(h.preload_code===j.viewport&&r.observe(s),h.preload_code===j.eager&&me(c))}}G.add(o),o()}function Q(e,t){if(e instanceof Ee)return e.body;const n=Ue(e),a=qt(e);return v.hooks.handleError({error:e,event:t,status:n,message:a})??{message:a}}function en(e){if(typeof e=="function")ae.push(e);else{const{href:t}=new URL(e,location.href);ae.push(n=>n.href===t)}}function tn(){history.scrollRestoration="manual",addEventListener("beforeunload",t=>{let n=!1;if(We(),!X){const a=Ne(_,void 0,null,"leave"),r={...a.navigation,cancel:()=>{n=!0,a.reject(new Error("navigation cancelled"))}};ot.forEach(i=>i(r))}n?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&We()}),navigator.connection?.saveData||Zt(),O.addEventListener("click",async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const n=et(t.composedPath()[0],O);if(!n)return;const{url:a,external:r,target:i,download:o}=we(n,A,v.hash);if(!a)return;if(i==="_parent"||i==="_top"){if(window.parent!==window)return}else if(i&&i!=="_self")return;const s=te(n);if(!(n instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||o)return;const[l,f]=(v.hash?a.hash.replace(/^#/,""):a.href).split("#"),h=l===pe(location);if(r||s.reload&&(!h||!f)){dt({url:a,type:"link",event:t})?X=!0:t.preventDefault();return}if(f!==void 0&&h){const[,w]=_.url.href.split("#");if(w===f){if(t.preventDefault(),f===""||f==="top"&&n.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const u=n.ownerDocument.getElementById(decodeURIComponent(f));u&&(u.scrollIntoView(),u.focus())}return}if(M=!0,Te(y),e(a),!s.replace_state)return;M=!1}t.preventDefault(),await new Promise(w=>{requestAnimationFrame(()=>{setTimeout(w,0)}),setTimeout(w,100)}),await K({type:"link",url:a,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??a.href===location.href,event:t})}),O.addEventListener("submit",t=>{if(t.defaultPrevented)return;const n=HTMLFormElement.prototype.cloneNode.call(t.target),a=t.submitter;if((a?.formTarget||n.target)==="_blank"||(a?.formMethod||n.method)!=="get")return;const o=new URL(a?.hasAttribute("formaction")&&a?.formAction||n.action);if(ue(o,A,!1))return;const s=t.target,c=te(s);if(c.reload)return;t.preventDefault(),t.stopPropagation();const l=new FormData(s,a);o.search=new URLSearchParams(l).toString(),K({type:"form",url:o,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??o.href===location.href,event:t})}),addEventListener("popstate",async t=>{if(!ke){if(t.state?.[B]){const n=t.state[B];if(N={},n===y)return;const a=q[n],r=t.state[Xe]??{},i=new URL(t.state[Ct]??location.href),o=t.state[W],s=_.url?pe(location)===pe(_.url):!1;if(o===x&&(it||s)){r!==k.state&&(k.state=r),e(i),q[y]=le(),a&&scrollTo(a.x,a.y),y=n;return}const l=n-y;await K({type:"popstate",url:i,popped:{state:r,scroll:a,delta:l},accept:()=>{y=n,x=o},block:()=>{history.go(-l)},nav_token:N,event:t})}else if(!M){const n=new URL(location.href);e(n),v.hash&&location.reload()}}}),addEventListener("hashchange",()=>{M&&(M=!1,history.replaceState({...history.state,[B]:++y,[W]:x},"",location.href))});for(const t of document.querySelectorAll("link"))Vt.has(t.rel)&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&P.navigating.set(Y.current=null)});function e(t){_.url=k.url=t,P.page.set(qe(k)),P.page.notify()}}async function nn(e,{status:t=200,error:n,node_ids:a,params:r,route:i,server_route:o,data:s,form:c}){st=!0;const l=new URL(location.href);let f;({params:r={},route:i={id:null}}=await fe(l,!1)||{}),f=Ie.find(({id:u})=>u===i.id);let h,w=!0;try{const u=a.map(async(m,p)=>{const d=s[p];return d?.uses&&(d.uses=an(d.uses)),Ce({loader:v.nodes[m],url:l,params:r,route:i,parent:async()=>{const S={};for(let E=0;E{const s=history.state;ke=!0,location.replace(`#${a}`),v.hash&&location.replace(e.hash),history.replaceState(s,"",e.hash),scrollTo(i,o),ke=!1})}else{const i=document.body,o=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),o!==null?i.setAttribute("tabindex",o):i.removeAttribute("tabindex")}const r=getSelection();if(r&&r.type!=="None"){const i=[];for(let o=0;o{if(r.rangeCount===i.length){for(let o=0;o{r=c,i=l});return o.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n},willUnload:!t,type:a,complete:o},fulfil:r,reject:i}}function qe(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function on(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function pt(e){let t;if(v.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{dn as a,cn as l,k as p,P as s}; diff --git a/front-end/build/civit/_app/immutable/chunks/ByoH8mPx.js b/front-end/build/civit/_app/immutable/chunks/ByoH8mPx.js new file mode 100644 index 0000000..51f531f --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/ByoH8mPx.js @@ -0,0 +1 @@ +import{W as ze,k as Ae,X as Ve,m as Ke,aJ as Xe,x as S,g as m,j as ht,s as $,a as qt,c as D,p as T,f as C,v as H,b as k,o as Ye,d as je,e as lt,r as ct}from"./DA9wTPlB.js";import{b as Ue,c as F,a as O,f as gt,p as Rt}from"./kT5kkkQy.js";import{aa as qe,ab as mt,j as te,ac as Ze,k as Tt,ad as _e,ae as Je,af as Qe,ag as Ge,w as ue,ah as $e,s as B,n as A,v as dt,F as tn,z as fe,y as en,D as nn,T as rn,r as Mt,x as Ot,ai as on,a as nt,aj as sn,ak as an,al as ln,am as cn,an as dn,p as un,I as bt,c as At,A as kt,u as Wt,G as fn}from"./B8s4VlAd.js";import{p as v,i as G,s as z,r as W,b as Ce,c as xt}from"./Bl70acv3.js";function Qr(e,t,n){ze(()=>{var r=Ae(()=>t(e,n?.())||{});if(n&&r?.update){var o=!1,s={};Ve(()=>{var i=n();Ke(i),o&&Xe(s,i)&&(s=i,r.update(i))}),o=!0}if(r?.destroy)return()=>r.destroy()})}function gn(e){return typeof e=="function"}function ge(e){return gn(e)?e():e}class hn{#t={width:0,height:0};#o=!1;#n;#i;#e;#a=S(()=>(m(this.#r)?.(),this.getSize().width));#s=S(()=>(m(this.#r)?.(),this.getSize().height));#r=S(()=>{const t=ge(this.#i);if(t)return Ue(n=>{if(!this.#e)return;const r=new this.#e.ResizeObserver(o=>{this.#o=!0;for(const s of o){const i=this.#n.box==="content-box"?s.contentBoxSize:s.borderBoxSize,a=Array.isArray(i)?i:[i];this.#t.width=a.reduce((l,c)=>Math.max(l,c.inlineSize),0),this.#t.height=a.reduce((l,c)=>Math.max(l,c.blockSize),0)}n()});return r.observe(t),()=>{this.#o=!1,r.disconnect()}})});constructor(t,n={box:"border-box"}){this.#e=n.window??qe,this.#n=n,this.#i=t,this.#t={width:0,height:0}}calculateSize(){const t=ge(this.#i);if(!t||!this.#e)return;const n=t.offsetWidth,r=t.offsetHeight;if(this.#n.box==="border-box")return{width:n,height:r};const o=this.#e.getComputedStyle(t),s=parseFloat(o.paddingLeft)+parseFloat(o.paddingRight),i=parseFloat(o.paddingTop)+parseFloat(o.paddingBottom),a=parseFloat(o.borderLeftWidth)+parseFloat(o.borderRightWidth),l=parseFloat(o.borderTopWidth)+parseFloat(o.borderBottomWidth),c=n-s-a,f=r-i-l;return{width:c,height:f}}getSize(){return this.#o?this.#t:this.calculateSize()??this.#t}get current(){return m(this.#r)?.(),this.getSize()}get width(){return m(this.#a)}get height(){return m(this.#s)}}function Gr(e){ht(()=>Ae(()=>e()))}const mn=["top","right","bottom","left"],vt=Math.min,J=Math.max,Lt=Math.round,Bt=Math.floor,ot=e=>({x:e,y:e}),vn={left:"right",right:"left",bottom:"top",top:"bottom"},wn={start:"end",end:"start"};function Jt(e,t,n){return J(e,vt(t,n))}function ut(e,t){return typeof e=="function"?e(t):e}function ft(e){return e.split("-")[0]}function _t(e){return e.split("-")[1]}function ee(e){return e==="x"?"y":"x"}function ne(e){return e==="y"?"height":"width"}const pn=new Set(["top","bottom"]);function rt(e){return pn.has(ft(e))?"y":"x"}function re(e){return ee(rt(e))}function yn(e,t,n){n===void 0&&(n=!1);const r=_t(e),o=re(e),s=ne(o);let i=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(i=It(i)),[i,It(i)]}function bn(e){const t=It(e);return[Qt(e),t,Qt(t)]}function Qt(e){return e.replace(/start|end/g,t=>wn[t])}const he=["left","right"],me=["right","left"],xn=["top","bottom"],On=["bottom","top"];function Pn(e,t,n){switch(e){case"top":case"bottom":return n?t?me:he:t?he:me;case"left":case"right":return t?xn:On;default:return[]}}function Sn(e,t,n,r){const o=_t(e);let s=Pn(ft(e),n==="start",r);return o&&(s=s.map(i=>i+"-"+o),t&&(s=s.concat(s.map(Qt)))),s}function It(e){return e.replace(/left|right|bottom|top/g,t=>vn[t])}function An(e){return{top:0,right:0,bottom:0,left:0,...e}}function Ee(e){return typeof e!="number"?An(e):{top:e,right:e,bottom:e,left:e}}function Nt(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function ve(e,t,n){let{reference:r,floating:o}=e;const s=rt(t),i=re(t),a=ne(i),l=ft(t),c=s==="y",f=r.x+r.width/2-o.width/2,g=r.y+r.height/2-o.height/2,d=r[a]/2-o[a]/2;let u;switch(l){case"top":u={x:f,y:r.y-o.height};break;case"bottom":u={x:f,y:r.y+r.height};break;case"right":u={x:r.x+r.width,y:g};break;case"left":u={x:r.x-o.width,y:g};break;default:u={x:r.x,y:r.y}}switch(_t(t)){case"start":u[i]-=d*(n&&c?-1:1);break;case"end":u[i]+=d*(n&&c?-1:1);break}return u}async function _n(e,t){var n;t===void 0&&(t={});const{x:r,y:o,platform:s,rects:i,elements:a,strategy:l}=e,{boundary:c="clippingAncestors",rootBoundary:f="viewport",elementContext:g="floating",altBoundary:d=!1,padding:u=0}=ut(t,e),h=Ee(u),p=a[d?g==="floating"?"reference":"floating":g],b=Nt(await s.getClippingRect({element:(n=await(s.isElement==null?void 0:s.isElement(p)))==null||n?p:p.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(a.floating)),boundary:c,rootBoundary:f,strategy:l})),x=g==="floating"?{x:r,y:o,width:i.floating.width,height:i.floating.height}:i.reference,P=await(s.getOffsetParent==null?void 0:s.getOffsetParent(a.floating)),y=await(s.isElement==null?void 0:s.isElement(P))?await(s.getScale==null?void 0:s.getScale(P))||{x:1,y:1}:{x:1,y:1},E=Nt(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:x,offsetParent:P,strategy:l}):x);return{top:(b.top-E.top+h.top)/y.y,bottom:(E.bottom-b.bottom+h.bottom)/y.y,left:(b.left-E.left+h.left)/y.x,right:(E.right-b.right+h.right)/y.x}}const Cn=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:s=[],platform:i}=n,a=s.filter(Boolean),l=await(i.isRTL==null?void 0:i.isRTL(t));let c=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:f,y:g}=ve(c,r,l),d=r,u={},h=0;for(let p=0;p({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:s,platform:i,elements:a,middlewareData:l}=t,{element:c,padding:f=0}=ut(e,t)||{};if(c==null)return{};const g=Ee(f),d={x:n,y:r},u=re(o),h=ne(u),w=await i.getDimensions(c),p=u==="y",b=p?"top":"left",x=p?"bottom":"right",P=p?"clientHeight":"clientWidth",y=s.reference[h]+s.reference[u]-d[u]-s.floating[h],E=d[u]-s.reference[u],R=await(i.getOffsetParent==null?void 0:i.getOffsetParent(c));let _=R?R[P]:0;(!_||!await(i.isElement==null?void 0:i.isElement(R)))&&(_=a.floating[P]||s.floating[h]);const M=y/2-E/2,U=_/2-w[h]/2-1,K=vt(g[b],U),Y=vt(g[x],U),j=K,q=_-w[h]-Y,L=_/2-w[h]/2+M,X=Jt(j,L,q),I=!l.arrow&&_t(o)!=null&&L!==X&&s.reference[h]/2-(LL<=0)){var Y,j;const L=(((Y=s.flip)==null?void 0:Y.index)||0)+1,X=_[L];if(X&&(!(g==="alignment"?x!==rt(X):!1)||K.every(V=>rt(V.placement)===x?V.overflows[0]>0:!0)))return{data:{index:L,overflows:K},reset:{placement:X}};let I=(j=K.filter(N=>N.overflows[0]<=0).sort((N,V)=>N.overflows[1]-V.overflows[1])[0])==null?void 0:j.placement;if(!I)switch(u){case"bestFit":{var q;const N=(q=K.filter(V=>{if(R){const Z=rt(V.placement);return Z===x||Z==="y"}return!0}).map(V=>[V.placement,V.overflows.filter(Z=>Z>0).reduce((Z,at)=>Z+at,0)]).sort((V,Z)=>V[1]-Z[1])[0])==null?void 0:q[0];N&&(I=N);break}case"initialPlacement":I=a;break}if(o!==I)return{reset:{placement:I}}}return{}}}};function we(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function pe(e){return mn.some(t=>e[t]>=0)}const Rn=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n,platform:r}=t,{strategy:o="referenceHidden",...s}=ut(e,t);switch(o){case"referenceHidden":{const i=await r.detectOverflow(t,{...s,elementContext:"reference"}),a=we(i,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:pe(a)}}}case"escaped":{const i=await r.detectOverflow(t,{...s,altBoundary:!0}),a=we(i,n.floating);return{data:{escapedOffsets:a,escaped:pe(a)}}}default:return{}}}}},Fe=new Set(["left","top"]);async function Mn(e,t){const{placement:n,platform:r,elements:o}=e,s=await(r.isRTL==null?void 0:r.isRTL(o.floating)),i=ft(n),a=_t(n),l=rt(n)==="y",c=Fe.has(i)?-1:1,f=s&&l?-1:1,g=ut(t,e);let{mainAxis:d,crossAxis:u,alignmentAxis:h}=typeof g=="number"?{mainAxis:g,crossAxis:0,alignmentAxis:null}:{mainAxis:g.mainAxis||0,crossAxis:g.crossAxis||0,alignmentAxis:g.alignmentAxis};return a&&typeof h=="number"&&(u=a==="end"?h*-1:h),l?{x:u*f,y:d*c}:{x:d*c,y:u*f}}const Dn=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:s,placement:i,middlewareData:a}=t,l=await Mn(t,e);return i===((n=a.offset)==null?void 0:n.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:o+l.x,y:s+l.y,data:{...l,placement:i}}}}},Bn=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o,platform:s}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:l={fn:b=>{let{x,y:P}=b;return{x,y:P}}},...c}=ut(e,t),f={x:n,y:r},g=await s.detectOverflow(t,c),d=rt(ft(o)),u=ee(d);let h=f[u],w=f[d];if(i){const b=u==="y"?"top":"left",x=u==="y"?"bottom":"right",P=h+g[b],y=h-g[x];h=Jt(P,h,y)}if(a){const b=d==="y"?"top":"left",x=d==="y"?"bottom":"right",P=w+g[b],y=w-g[x];w=Jt(P,w,y)}const p=l.fn({...t,[u]:h,[d]:w});return{...p,data:{x:p.x-n,y:p.y-r,enabled:{[u]:i,[d]:a}}}}}},Tn=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:s,middlewareData:i}=t,{offset:a=0,mainAxis:l=!0,crossAxis:c=!0}=ut(e,t),f={x:n,y:r},g=rt(o),d=ee(g);let u=f[d],h=f[g];const w=ut(a,t),p=typeof w=="number"?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(l){const P=d==="y"?"height":"width",y=s.reference[d]-s.floating[P]+p.mainAxis,E=s.reference[d]+s.reference[P]-p.mainAxis;uE&&(u=E)}if(c){var b,x;const P=d==="y"?"width":"height",y=Fe.has(ft(o)),E=s.reference[g]-s.floating[P]+(y&&((b=i.offset)==null?void 0:b[g])||0)+(y?0:p.crossAxis),R=s.reference[g]+s.reference[P]+(y?0:((x=i.offset)==null?void 0:x[g])||0)-(y?p.crossAxis:0);hR&&(h=R)}return{[d]:u,[g]:h}}}},kn=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,r;const{placement:o,rects:s,platform:i,elements:a}=t,{apply:l=()=>{},...c}=ut(e,t),f=await i.detectOverflow(t,c),g=ft(o),d=_t(o),u=rt(o)==="y",{width:h,height:w}=s.floating;let p,b;g==="top"||g==="bottom"?(p=g,b=d===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?"start":"end")?"left":"right"):(b=g,p=d==="end"?"top":"bottom");const x=w-f.top-f.bottom,P=h-f.left-f.right,y=vt(w-f[p],x),E=vt(h-f[b],P),R=!t.middlewareData.shift;let _=y,M=E;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(M=P),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(_=x),R&&!d){const K=J(f.left,0),Y=J(f.right,0),j=J(f.top,0),q=J(f.bottom,0);u?M=h-2*(K!==0||Y!==0?K+Y:J(f.left,f.right)):_=w-2*(j!==0||q!==0?j+q:J(f.top,f.bottom))}await l({...t,availableWidth:M,availableHeight:_});const U=await i.getDimensions(a.floating);return h!==U.width||w!==U.height?{reset:{rects:!0}}:{}}}};function Kt(){return typeof window<"u"}function Ct(e){return Re(e)?(e.nodeName||"").toLowerCase():"#document"}function Q(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function st(e){var t;return(t=(Re(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Re(e){return Kt()?e instanceof Node||e instanceof Q(e).Node:!1}function tt(e){return Kt()?e instanceof Element||e instanceof Q(e).Element:!1}function it(e){return Kt()?e instanceof HTMLElement||e instanceof Q(e).HTMLElement:!1}function ye(e){return!Kt()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Q(e).ShadowRoot}const Wn=new Set(["inline","contents"]);function Dt(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=et(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!Wn.has(o)}const Ln=new Set(["table","td","th"]);function In(e){return Ln.has(Ct(e))}const Nn=[":popover-open",":modal"];function Xt(e){return Nn.some(t=>{try{return e.matches(t)}catch{return!1}})}const Hn=["transform","translate","scale","rotate","perspective"],zn=["transform","translate","scale","rotate","perspective","filter"],Vn=["paint","layout","strict","content"];function oe(e){const t=ie(),n=tt(e)?et(e):e;return Hn.some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||zn.some(r=>(n.willChange||"").includes(r))||Vn.some(r=>(n.contain||"").includes(r))}function Kn(e){let t=wt(e);for(;it(t)&&!St(t);){if(oe(t))return t;if(Xt(t))return null;t=wt(t)}return null}function ie(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const Xn=new Set(["html","body","#document"]);function St(e){return Xn.has(Ct(e))}function et(e){return Q(e).getComputedStyle(e)}function Yt(e){return tt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function wt(e){if(Ct(e)==="html")return e;const t=e.assignedSlot||e.parentNode||ye(e)&&e.host||st(e);return ye(t)?t.host:t}function Me(e){const t=wt(e);return St(t)?e.ownerDocument?e.ownerDocument.body:e.body:it(t)&&Dt(t)?t:Me(t)}function Ft(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=Me(e),s=o===((r=e.ownerDocument)==null?void 0:r.body),i=Q(o);if(s){const a=Gt(i);return t.concat(i,i.visualViewport||[],Dt(o)?o:[],a&&n?Ft(a):[])}return t.concat(o,Ft(o,[],n))}function Gt(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function De(e){const t=et(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=it(e),s=o?e.offsetWidth:n,i=o?e.offsetHeight:r,a=Lt(n)!==s||Lt(r)!==i;return a&&(n=s,r=i),{width:n,height:r,$:a}}function se(e){return tt(e)?e:e.contextElement}function Pt(e){const t=se(e);if(!it(t))return ot(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:s}=De(t);let i=(s?Lt(n.width):n.width)/r,a=(s?Lt(n.height):n.height)/o;return(!i||!Number.isFinite(i))&&(i=1),(!a||!Number.isFinite(a))&&(a=1),{x:i,y:a}}const Yn=ot(0);function Be(e){const t=Q(e);return!ie()||!t.visualViewport?Yn:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function jn(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Q(e)?!1:t}function yt(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),s=se(e);let i=ot(1);t&&(r?tt(r)&&(i=Pt(r)):i=Pt(e));const a=jn(s,n,r)?Be(s):ot(0);let l=(o.left+a.x)/i.x,c=(o.top+a.y)/i.y,f=o.width/i.x,g=o.height/i.y;if(s){const d=Q(s),u=r&&tt(r)?Q(r):r;let h=d,w=Gt(h);for(;w&&r&&u!==h;){const p=Pt(w),b=w.getBoundingClientRect(),x=et(w),P=b.left+(w.clientLeft+parseFloat(x.paddingLeft))*p.x,y=b.top+(w.clientTop+parseFloat(x.paddingTop))*p.y;l*=p.x,c*=p.y,f*=p.x,g*=p.y,l+=P,c+=y,h=Q(w),w=Gt(h)}}return Nt({width:f,height:g,x:l,y:c})}function jt(e,t){const n=Yt(e).scrollLeft;return t?t.left+n:yt(st(e)).left+n}function Te(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-jt(e,n),o=n.top+t.scrollTop;return{x:r,y:o}}function Un(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const s=o==="fixed",i=st(r),a=t?Xt(t.floating):!1;if(r===i||a&&s)return n;let l={scrollLeft:0,scrollTop:0},c=ot(1);const f=ot(0),g=it(r);if((g||!g&&!s)&&((Ct(r)!=="body"||Dt(i))&&(l=Yt(r)),it(r))){const u=yt(r);c=Pt(r),f.x=u.x+r.clientLeft,f.y=u.y+r.clientTop}const d=i&&!g&&!s?Te(i,l):ot(0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+f.x+d.x,y:n.y*c.y-l.scrollTop*c.y+f.y+d.y}}function qn(e){return Array.from(e.getClientRects())}function Zn(e){const t=st(e),n=Yt(e),r=e.ownerDocument.body,o=J(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),s=J(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-n.scrollLeft+jt(e);const a=-n.scrollTop;return et(r).direction==="rtl"&&(i+=J(t.clientWidth,r.clientWidth)-o),{width:o,height:s,x:i,y:a}}const be=25;function Jn(e,t){const n=Q(e),r=st(e),o=n.visualViewport;let s=r.clientWidth,i=r.clientHeight,a=0,l=0;if(o){s=o.width,i=o.height;const f=ie();(!f||f&&t==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}const c=jt(r);if(c<=0){const f=r.ownerDocument,g=f.body,d=getComputedStyle(g),u=f.compatMode==="CSS1Compat"&&parseFloat(d.marginLeft)+parseFloat(d.marginRight)||0,h=Math.abs(r.clientWidth-g.clientWidth-u);h<=be&&(s-=h)}else c<=be&&(s+=c);return{width:s,height:i,x:a,y:l}}const Qn=new Set(["absolute","fixed"]);function Gn(e,t){const n=yt(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,s=it(e)?Pt(e):ot(1),i=e.clientWidth*s.x,a=e.clientHeight*s.y,l=o*s.x,c=r*s.y;return{width:i,height:a,x:l,y:c}}function xe(e,t,n){let r;if(t==="viewport")r=Jn(e,n);else if(t==="document")r=Zn(st(e));else if(tt(t))r=Gn(t,n);else{const o=Be(e);r={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return Nt(r)}function ke(e,t){const n=wt(e);return n===t||!tt(n)||St(n)?!1:et(n).position==="fixed"||ke(n,t)}function $n(e,t){const n=t.get(e);if(n)return n;let r=Ft(e,[],!1).filter(a=>tt(a)&&Ct(a)!=="body"),o=null;const s=et(e).position==="fixed";let i=s?wt(e):e;for(;tt(i)&&!St(i);){const a=et(i),l=oe(i);!l&&a.position==="fixed"&&(o=null),(s?!l&&!o:!l&&a.position==="static"&&!!o&&Qn.has(o.position)||Dt(i)&&!l&&ke(e,i))?r=r.filter(f=>f!==i):o=a,i=wt(i)}return t.set(e,r),r}function tr(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const i=[...n==="clippingAncestors"?Xt(t)?[]:$n(t,this._c):[].concat(n),r],a=i[0],l=i.reduce((c,f)=>{const g=xe(t,f,o);return c.top=J(g.top,c.top),c.right=vt(g.right,c.right),c.bottom=vt(g.bottom,c.bottom),c.left=J(g.left,c.left),c},xe(t,a,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function er(e){const{width:t,height:n}=De(e);return{width:t,height:n}}function nr(e,t,n){const r=it(t),o=st(t),s=n==="fixed",i=yt(e,!0,s,t);let a={scrollLeft:0,scrollTop:0};const l=ot(0);function c(){l.x=jt(o)}if(r||!r&&!s)if((Ct(t)!=="body"||Dt(o))&&(a=Yt(t)),r){const u=yt(t,!0,s,t);l.x=u.x+t.clientLeft,l.y=u.y+t.clientTop}else o&&c();s&&!r&&o&&c();const f=o&&!r&&!s?Te(o,a):ot(0),g=i.left+a.scrollLeft-l.x-f.x,d=i.top+a.scrollTop-l.y-f.y;return{x:g,y:d,width:i.width,height:i.height}}function Zt(e){return et(e).position==="static"}function Oe(e,t){if(!it(e)||et(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return st(e)===n&&(n=n.ownerDocument.body),n}function We(e,t){const n=Q(e);if(Xt(e))return n;if(!it(e)){let o=wt(e);for(;o&&!St(o);){if(tt(o)&&!Zt(o))return o;o=wt(o)}return n}let r=Oe(e,t);for(;r&&In(r)&&Zt(r);)r=Oe(r,t);return r&&St(r)&&Zt(r)&&!oe(r)?n:r||Kn(e)||n}const rr=async function(e){const t=this.getOffsetParent||We,n=this.getDimensions,r=await n(e.floating);return{reference:nr(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function or(e){return et(e).direction==="rtl"}const ir={convertOffsetParentRelativeRectToViewportRelativeRect:Un,getDocumentElement:st,getClippingRect:tr,getOffsetParent:We,getElementRects:rr,getClientRects:qn,getDimensions:er,getScale:Pt,isElement:tt,isRTL:or};function Le(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function sr(e,t){let n=null,r;const o=st(e);function s(){var a;clearTimeout(r),(a=n)==null||a.disconnect(),n=null}function i(a,l){a===void 0&&(a=!1),l===void 0&&(l=1),s();const c=e.getBoundingClientRect(),{left:f,top:g,width:d,height:u}=c;if(a||t(),!d||!u)return;const h=Bt(g),w=Bt(o.clientWidth-(f+d)),p=Bt(o.clientHeight-(g+u)),b=Bt(f),P={rootMargin:-h+"px "+-w+"px "+-p+"px "+-b+"px",threshold:J(0,vt(1,l))||1};let y=!0;function E(R){const _=R[0].intersectionRatio;if(_!==l){if(!y)return i();_?i(!1,_):r=setTimeout(()=>{i(!1,1e-7)},1e3)}_===1&&!Le(c,e.getBoundingClientRect())&&i(),y=!1}try{n=new IntersectionObserver(E,{...P,root:o.ownerDocument})}catch{n=new IntersectionObserver(E,P)}n.observe(e)}return i(!0),s}function ar(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:s=!0,elementResize:i=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:l=!1}=r,c=se(e),f=o||s?[...c?Ft(c):[],...Ft(t)]:[];f.forEach(b=>{o&&b.addEventListener("scroll",n,{passive:!0}),s&&b.addEventListener("resize",n)});const g=c&&a?sr(c,n):null;let d=-1,u=null;i&&(u=new ResizeObserver(b=>{let[x]=b;x&&x.target===c&&u&&(u.unobserve(t),cancelAnimationFrame(d),d=requestAnimationFrame(()=>{var P;(P=u)==null||P.observe(t)})),n()}),c&&!l&&u.observe(c),u.observe(t));let h,w=l?yt(e):null;l&&p();function p(){const b=yt(e);w&&!Le(w,b)&&n(),w=b,h=requestAnimationFrame(p)}return n(),()=>{var b;f.forEach(x=>{o&&x.removeEventListener("scroll",n),s&&x.removeEventListener("resize",n)}),g?.(),(b=u)==null||b.disconnect(),u=null,l&&cancelAnimationFrame(h)}}const lr=Dn,cr=Bn,dr=Fn,ur=kn,fr=Rn,gr=En,hr=Tn,mr=(e,t,n)=>{const r=new Map,o={platform:ir,...n},s={...o.platform,_c:r};return Cn(e,t,{...o,platform:s})};function pt(e){return typeof e=="function"?e():e}function Ie(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Pe(e,t){const n=Ie(e);return Math.round(t*n)/n}function Se(e){return{[`--bits-${e}-content-transform-origin`]:"var(--bits-floating-transform-origin)",[`--bits-${e}-content-available-width`]:"var(--bits-floating-available-width)",[`--bits-${e}-content-available-height`]:"var(--bits-floating-available-height)",[`--bits-${e}-anchor-width`]:"var(--bits-floating-anchor-width)",[`--bits-${e}-anchor-height`]:"var(--bits-floating-anchor-height)"}}function vr(e){const t=e.whileElementsMounted,n=S(()=>pt(e.open)??!0),r=S(()=>pt(e.middleware)),o=S(()=>pt(e.transform)??!0),s=S(()=>pt(e.placement)??"bottom"),i=S(()=>pt(e.strategy)??"absolute"),a=S(()=>pt(e.sideOffset)??0),l=S(()=>pt(e.alignOffset)??0),c=e.reference;let f=$(0),g=$(0);const d=mt(null);let u=$(qt(m(i))),h=$(qt(m(s))),w=$(qt({})),p=$(!1);const b=S(()=>{const _=d.current?Pe(d.current,m(f)):m(f),M=d.current?Pe(d.current,m(g)):m(g);return m(o)?{position:m(u),left:"0",top:"0",transform:`translate(${_}px, ${M}px)`,...d.current&&Ie(d.current)>=1.5&&{willChange:"transform"}}:{position:m(u),left:`${_}px`,top:`${M}px`}});let x;function P(){c.current===null||d.current===null||mr(c.current,d.current,{middleware:m(r),placement:m(s),strategy:m(i)}).then(_=>{if(!m(n)&&m(f)!==0&&m(g)!==0){const M=Math.max(Math.abs(m(a)),Math.abs(m(l)),15);if(_.x<=M&&_.y<=M)return}D(f,_.x,!0),D(g,_.y,!0),D(u,_.strategy,!0),D(h,_.placement,!0),D(w,_.middlewareData,!0),D(p,!0)})}function y(){typeof x=="function"&&(x(),x=void 0)}function E(){if(y(),t===void 0){P();return}c.current===null||d.current===null||(x=t(c.current,d.current,P))}function R(){m(n)||D(p,!1)}return ht(P),ht(E),ht(R),ht(()=>y),{floating:d,reference:c,get strategy(){return m(u)},get placement(){return m(h)},get middlewareData(){return m(w)},get isPositioned(){return m(p)},get floatingStyles(){return m(b)},get update(){return P}}}const wr={top:"bottom",right:"left",bottom:"top",left:"right"},ae=new te("Floating.Root"),$t=new te("Floating.Content"),le=new te("Floating.Root");class Ht{static create(t=!1){return t?le.set(new Ht):ae.set(new Ht)}anchorNode=mt(null);customAnchorNode=mt(null);triggerNode=mt(null);constructor(){ht(()=>{this.customAnchorNode.current?typeof this.customAnchorNode.current=="string"?this.anchorNode.current=document.querySelector(this.customAnchorNode.current):this.anchorNode.current=this.customAnchorNode.current:this.anchorNode.current=this.triggerNode.current})}}class zt{static create(t,n=!1){return n?$t.set(new zt(t,le.get())):$t.set(new zt(t,ae.get()))}opts;root;contentRef=mt(null);wrapperRef=mt(null);arrowRef=mt(null);contentAttachment=Tt(this.contentRef);wrapperAttachment=Tt(this.wrapperRef);arrowAttachment=Tt(this.arrowRef);arrowId=mt(_e());#t=S(()=>{if(typeof this.opts.style=="string")return Je(this.opts.style);if(!this.opts.style)return{}});#o=void 0;#n=new hn(()=>this.arrowRef.current??void 0);#i=S(()=>this.#n?.width??0);#e=S(()=>this.#n?.height??0);#a=S(()=>this.opts.side?.current+(this.opts.align.current!=="center"?`-${this.opts.align.current}`:""));#s=S(()=>Array.isArray(this.opts.collisionBoundary.current)?this.opts.collisionBoundary.current:[this.opts.collisionBoundary.current]);#r=S(()=>m(this.#s).length>0);get hasExplicitBoundaries(){return m(this.#r)}set hasExplicitBoundaries(t){D(this.#r,t)}#l=S(()=>({padding:this.opts.collisionPadding.current,boundary:m(this.#s).filter(Qe),altBoundary:this.hasExplicitBoundaries}));get detectOverflowOptions(){return m(this.#l)}set detectOverflowOptions(t){D(this.#l,t)}#c=$(void 0);#d=$(void 0);#u=$(void 0);#f=$(void 0);#g=S(()=>[lr({mainAxis:this.opts.sideOffset.current+m(this.#e),alignmentAxis:this.opts.alignOffset.current}),this.opts.avoidCollisions.current&&cr({mainAxis:!0,crossAxis:!1,limiter:this.opts.sticky.current==="partial"?hr():void 0,...this.detectOverflowOptions}),this.opts.avoidCollisions.current&&dr({...this.detectOverflowOptions}),ur({...this.detectOverflowOptions,apply:({rects:t,availableWidth:n,availableHeight:r})=>{const{width:o,height:s}=t.reference;D(this.#c,n,!0),D(this.#d,r,!0),D(this.#u,o,!0),D(this.#f,s,!0)}}),this.arrowRef.current&&gr({element:this.arrowRef.current,padding:this.opts.arrowPadding.current}),pr({arrowWidth:m(this.#i),arrowHeight:m(this.#e)}),this.opts.hideWhenDetached.current&&fr({strategy:"referenceHidden",...this.detectOverflowOptions})].filter(Boolean));get middleware(){return m(this.#g)}set middleware(t){D(this.#g,t)}floating;#h=S(()=>yr(this.floating.placement));get placedSide(){return m(this.#h)}set placedSide(t){D(this.#h,t)}#m=S(()=>br(this.floating.placement));get placedAlign(){return m(this.#m)}set placedAlign(t){D(this.#m,t)}#v=S(()=>this.floating.middlewareData.arrow?.x??0);get arrowX(){return m(this.#v)}set arrowX(t){D(this.#v,t)}#w=S(()=>this.floating.middlewareData.arrow?.y??0);get arrowY(){return m(this.#w)}set arrowY(t){D(this.#w,t)}#p=S(()=>this.floating.middlewareData.arrow?.centerOffset!==0);get cannotCenterArrow(){return m(this.#p)}set cannotCenterArrow(t){D(this.#p,t)}#y=$();get contentZIndex(){return m(this.#y)}set contentZIndex(t){D(this.#y,t,!0)}#b=S(()=>wr[this.placedSide]);get arrowBaseSide(){return m(this.#b)}set arrowBaseSide(t){D(this.#b,t)}#x=S(()=>({id:this.opts.wrapperId.current,"data-bits-floating-content-wrapper":"",style:{...this.floating.floatingStyles,transform:this.floating.isPositioned?this.floating.floatingStyles.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:this.contentZIndex,"--bits-floating-transform-origin":`${this.floating.middlewareData.transformOrigin?.x} ${this.floating.middlewareData.transformOrigin?.y}`,"--bits-floating-available-width":`${m(this.#c)}px`,"--bits-floating-available-height":`${m(this.#d)}px`,"--bits-floating-anchor-width":`${m(this.#u)}px`,"--bits-floating-anchor-height":`${m(this.#f)}px`,...this.floating.middlewareData.hide?.referenceHidden&&{visibility:"hidden","pointer-events":"none"},...m(this.#t)},dir:this.opts.dir.current,...this.wrapperAttachment}));get wrapperProps(){return m(this.#x)}set wrapperProps(t){D(this.#x,t)}#O=S(()=>({"data-side":this.placedSide,"data-align":this.placedAlign,style:Ge({...m(this.#t)}),...this.contentAttachment}));get props(){return m(this.#O)}set props(t){D(this.#O,t)}#P=S(()=>({position:"absolute",left:this.arrowX?`${this.arrowX}px`:void 0,top:this.arrowY?`${this.arrowY}px`:void 0,[this.arrowBaseSide]:0,"transform-origin":{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[this.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[this.placedSide],visibility:this.cannotCenterArrow?"hidden":void 0}));get arrowStyle(){return m(this.#P)}set arrowStyle(t){D(this.#P,t)}constructor(t,n){this.opts=t,this.root=n,t.customAnchor&&(this.root.customAnchorNode.current=t.customAnchor.current),ue(()=>t.customAnchor.current,r=>{this.root.customAnchorNode.current=r}),this.floating=vr({strategy:()=>this.opts.strategy.current,placement:()=>m(this.#a),middleware:()=>this.middleware,reference:this.root.anchorNode,whileElementsMounted:(...r)=>ar(...r,{animationFrame:this.#o?.current==="always"}),open:()=>this.opts.enabled.current,sideOffset:()=>this.opts.sideOffset.current,alignOffset:()=>this.opts.alignOffset.current}),ht(()=>{this.floating.isPositioned&&this.opts.onPlaced?.current()}),ue(()=>this.contentRef.current,r=>{if(!r)return;const o=$e(r);this.contentZIndex=o.getComputedStyle(r).zIndex}),ht(()=>{this.floating.floating.current=this.wrapperRef.current})}}class Ne{static create(t){return new Ne(t,$t.get())}opts;content;constructor(t,n){this.opts=t,this.content=n}#t=S(()=>({id:this.opts.id.current,style:this.content.arrowStyle,"data-side":this.content.placedSide,...this.content.arrowAttachment}));get props(){return m(this.#t)}set props(t){D(this.#t,t)}}class Vt{static create(t,n=!1){return n?new Vt(t,le.get()):new Vt(t,ae.get())}opts;root;constructor(t,n){this.opts=t,this.root=n,t.virtualEl&&t.virtualEl.current?n.triggerNode=Ze(t.virtualEl.current):n.triggerNode=t.ref}}function pr(e){return{name:"transformOrigin",options:e,fn(t){const{placement:n,rects:r,middlewareData:o}=t,i=o.arrow?.centerOffset!==0,a=i?0:e.arrowWidth,l=i?0:e.arrowHeight,[c,f]=ce(n),g={start:"0%",center:"50%",end:"100%"}[f],d=(o.arrow?.x??0)+a/2,u=(o.arrow?.y??0)+l/2;let h="",w="";return c==="bottom"?(h=i?g:`${d}px`,w=`${-l}px`):c==="top"?(h=i?g:`${d}px`,w=`${r.floating.height+l}px`):c==="right"?(h=`${-l}px`,w=i?g:`${u}px`):c==="left"&&(h=`${r.floating.width+l}px`,w=i?g:`${u}px`),{data:{x:h,y:w}}}}}function ce(e){const[t,n="center"]=e.split("-");return[t,n]}function yr(e){return ce(e)[0]}function br(e){return ce(e)[1]}function xr(e,t){T(t,!0);let n=v(t,"tooltip",3,!1);Ht.create(n());var r=F(),o=C(r);B(o,()=>t.children??H),O(e,r),k()}function Or(e,t){T(t,!0);let n=v(t,"tooltip",3,!1);Vt.create({id:A(()=>t.id),virtualEl:A(()=>t.virtualEl),ref:t.ref},n());var r=F(),o=C(r);B(o,()=>t.children??H),O(e,r),k()}function Pr(e,t){T(t,!0);let n=v(t,"side",3,"bottom"),r=v(t,"sideOffset",3,0),o=v(t,"align",3,"center"),s=v(t,"alignOffset",3,0),i=v(t,"arrowPadding",3,0),a=v(t,"avoidCollisions",3,!0),l=v(t,"collisionBoundary",19,()=>[]),c=v(t,"collisionPadding",3,0),f=v(t,"hideWhenDetached",3,!1),g=v(t,"onPlaced",3,()=>{}),d=v(t,"sticky",3,"partial"),u=v(t,"updatePositionStrategy",3,"optimized"),h=v(t,"strategy",3,"fixed"),w=v(t,"dir",3,"ltr"),p=v(t,"style",19,()=>({})),b=v(t,"wrapperId",19,_e),x=v(t,"customAnchor",3,null),P=v(t,"tooltip",3,!1);const y=zt.create({side:A(()=>n()),sideOffset:A(()=>r()),align:A(()=>o()),alignOffset:A(()=>s()),id:A(()=>t.id),arrowPadding:A(()=>i()),avoidCollisions:A(()=>a()),collisionBoundary:A(()=>l()),collisionPadding:A(()=>c()),hideWhenDetached:A(()=>f()),onPlaced:A(()=>g()),sticky:A(()=>d()),updatePositionStrategy:A(()=>u()),strategy:A(()=>h()),dir:A(()=>w()),style:A(()=>p()),enabled:A(()=>t.enabled),wrapperId:A(()=>b()),customAnchor:A(()=>x())},P()),E=S(()=>dt(y.wrapperProps,{style:{pointerEvents:"auto"}}));var R=F(),_=C(R);B(_,()=>t.content??H,()=>({props:y.props,wrapperProps:m(E)})),O(e,R),k()}function Sr(e,t){T(t,!0),Ye(()=>{t.onPlaced?.()});var n=F(),r=C(n);B(r,()=>t.content??H,()=>({props:{},wrapperProps:{}})),O(e,n),k()}function Ar(e,t){let n=v(t,"isStatic",3,!1),r=W(t,["$$slots","$$events","$$legacy","content","isStatic","onPlaced"]);var o=F(),s=C(o);{var i=l=>{Sr(l,{get content(){return t.content},get onPlaced(){return t.onPlaced}})},a=l=>{Pr(l,z({get content(){return t.content},get onPlaced(){return t.onPlaced}},()=>r))};G(s,l=>{n()?l(i):l(a,!1)})}O(e,o)}var _r=gt(" ",1);function He(e,t){T(t,!0);let n=v(t,"interactOutsideBehavior",3,"close"),r=v(t,"trapFocus",3,!0),o=v(t,"isValidEvent",3,()=>!1),s=v(t,"customAnchor",3,null),i=v(t,"isStatic",3,!1),a=v(t,"tooltip",3,!1),l=v(t,"contentPointerEvents",3,"auto"),c=W(t,["$$slots","$$events","$$legacy","popper","onEscapeKeydown","escapeKeydownBehavior","preventOverflowTextSelection","id","onPointerDown","onPointerUp","side","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPadding","sticky","hideWhenDetached","updatePositionStrategy","strategy","dir","preventScroll","wrapperId","style","onPlaced","onInteractOutside","onCloseAutoFocus","onOpenAutoFocus","onFocusOutside","interactOutsideBehavior","loop","trapFocus","isValidEvent","customAnchor","isStatic","enabled","ref","tooltip","contentPointerEvents"]);Ar(e,{get isStatic(){return i()},get id(){return t.id},get side(){return t.side},get sideOffset(){return t.sideOffset},get align(){return t.align},get alignOffset(){return t.alignOffset},get arrowPadding(){return t.arrowPadding},get avoidCollisions(){return t.avoidCollisions},get collisionBoundary(){return t.collisionBoundary},get collisionPadding(){return t.collisionPadding},get sticky(){return t.sticky},get hideWhenDetached(){return t.hideWhenDetached},get updatePositionStrategy(){return t.updatePositionStrategy},get strategy(){return t.strategy},get dir(){return t.dir},get wrapperId(){return t.wrapperId},get style(){return t.style},get onPlaced(){return t.onPlaced},get customAnchor(){return s()},get enabled(){return t.enabled},get tooltip(){return a()},content:(g,d)=>{let u=()=>d?.().props,h=()=>d?.().wrapperProps;var w=_r(),p=C(w);{var b=y=>{fe(y,{get preventScroll(){return t.preventScroll}})},x=y=>{var E=F(),R=C(E);{var _=M=>{fe(M,{get preventScroll(){return t.preventScroll}})};G(R,M=>{t.forceMount||M(_)},!0)}O(y,E)};G(p,y=>{t.forceMount&&t.enabled?y(b):y(x,!1)})}var P=je(p,2);tn(P,{get onOpenAutoFocus(){return t.onOpenAutoFocus},get onCloseAutoFocus(){return t.onCloseAutoFocus},get loop(){return t.loop},get enabled(){return t.enabled},get trapFocus(){return r()},get forceMount(){return t.forceMount},get ref(){return t.ref},focusScope:(E,R)=>{let _=()=>R?.().props;en(E,{get onEscapeKeydown(){return t.onEscapeKeydown},get escapeKeydownBehavior(){return t.escapeKeydownBehavior},get enabled(){return t.enabled},get ref(){return t.ref},children:(M,U)=>{nn(M,{get id(){return t.id},get onInteractOutside(){return t.onInteractOutside},get onFocusOutside(){return t.onFocusOutside},get interactOutsideBehavior(){return n()},get isValidEvent(){return o()},get enabled(){return t.enabled},get ref(){return t.ref},children:(Y,j)=>{let q=()=>j?.().props;rn(Y,{get id(){return t.id},get preventOverflowTextSelection(){return t.preventOverflowTextSelection},get onPointerDown(){return t.onPointerDown},get onPointerUp(){return t.onPointerUp},get enabled(){return t.enabled},get ref(){return t.ref},children:(L,X)=>{var I=F(),N=C(I);{let V=S(()=>({props:dt(c,u(),q(),_(),{style:{pointerEvents:l()}}),wrapperProps:h()}));B(N,()=>t.popper??H,()=>m(V))}O(L,I)},$$slots:{default:!0}})},$$slots:{default:!0}})},$$slots:{default:!0}})},$$slots:{focusScope:!0}}),O(g,w)},$$slots:{content:!0}}),k()}function Cr(e,t){let n=v(t,"interactOutsideBehavior",3,"close"),r=v(t,"trapFocus",3,!0),o=v(t,"isValidEvent",3,()=>!1),s=v(t,"customAnchor",3,null),i=v(t,"isStatic",3,!1),a=W(t,["$$slots","$$events","$$legacy","popper","open","onEscapeKeydown","escapeKeydownBehavior","preventOverflowTextSelection","id","onPointerDown","onPointerUp","side","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPadding","sticky","hideWhenDetached","updatePositionStrategy","strategy","dir","preventScroll","wrapperId","style","onPlaced","onInteractOutside","onCloseAutoFocus","onOpenAutoFocus","onFocusOutside","interactOutsideBehavior","loop","trapFocus","isValidEvent","customAnchor","isStatic","ref","shouldRender"]);var l=F(),c=C(l);{var f=g=>{He(g,z({get popper(){return t.popper},get onEscapeKeydown(){return t.onEscapeKeydown},get escapeKeydownBehavior(){return t.escapeKeydownBehavior},get preventOverflowTextSelection(){return t.preventOverflowTextSelection},get id(){return t.id},get onPointerDown(){return t.onPointerDown},get onPointerUp(){return t.onPointerUp},get side(){return t.side},get sideOffset(){return t.sideOffset},get align(){return t.align},get alignOffset(){return t.alignOffset},get arrowPadding(){return t.arrowPadding},get avoidCollisions(){return t.avoidCollisions},get collisionBoundary(){return t.collisionBoundary},get collisionPadding(){return t.collisionPadding},get sticky(){return t.sticky},get hideWhenDetached(){return t.hideWhenDetached},get updatePositionStrategy(){return t.updatePositionStrategy},get strategy(){return t.strategy},get dir(){return t.dir},get preventScroll(){return t.preventScroll},get wrapperId(){return t.wrapperId},get style(){return t.style},get onPlaced(){return t.onPlaced},get customAnchor(){return s()},get isStatic(){return i()},get enabled(){return t.open},get onInteractOutside(){return t.onInteractOutside},get onCloseAutoFocus(){return t.onCloseAutoFocus},get onOpenAutoFocus(){return t.onOpenAutoFocus},get interactOutsideBehavior(){return n()},get loop(){return t.loop},get trapFocus(){return r()},get isValidEvent(){return o()},get onFocusOutside(){return t.onFocusOutside},forceMount:!1,get ref(){return t.ref}},()=>a))};G(c,g=>{t.shouldRender&&g(f)})}O(e,l)}function Er(e,t){let n=v(t,"interactOutsideBehavior",3,"close"),r=v(t,"trapFocus",3,!0),o=v(t,"isValidEvent",3,()=>!1),s=v(t,"customAnchor",3,null),i=v(t,"isStatic",3,!1),a=W(t,["$$slots","$$events","$$legacy","popper","onEscapeKeydown","escapeKeydownBehavior","preventOverflowTextSelection","id","onPointerDown","onPointerUp","side","sideOffset","align","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPadding","sticky","hideWhenDetached","updatePositionStrategy","strategy","dir","preventScroll","wrapperId","style","onPlaced","onInteractOutside","onCloseAutoFocus","onOpenAutoFocus","onFocusOutside","interactOutsideBehavior","loop","trapFocus","isValidEvent","customAnchor","isStatic","enabled"]);He(e,z({get popper(){return t.popper},get onEscapeKeydown(){return t.onEscapeKeydown},get escapeKeydownBehavior(){return t.escapeKeydownBehavior},get preventOverflowTextSelection(){return t.preventOverflowTextSelection},get id(){return t.id},get onPointerDown(){return t.onPointerDown},get onPointerUp(){return t.onPointerUp},get side(){return t.side},get sideOffset(){return t.sideOffset},get align(){return t.align},get alignOffset(){return t.alignOffset},get arrowPadding(){return t.arrowPadding},get avoidCollisions(){return t.avoidCollisions},get collisionBoundary(){return t.collisionBoundary},get collisionPadding(){return t.collisionPadding},get sticky(){return t.sticky},get hideWhenDetached(){return t.hideWhenDetached},get updatePositionStrategy(){return t.updatePositionStrategy},get strategy(){return t.strategy},get dir(){return t.dir},get preventScroll(){return t.preventScroll},get wrapperId(){return t.wrapperId},get style(){return t.style},get onPlaced(){return t.onPlaced},get customAnchor(){return s()},get isStatic(){return i()},get enabled(){return t.enabled},get onInteractOutside(){return t.onInteractOutside},get onCloseAutoFocus(){return t.onCloseAutoFocus},get onOpenAutoFocus(){return t.onOpenAutoFocus},get interactOutsideBehavior(){return n()},get loop(){return t.loop},get trapFocus(){return r()},get isValidEvent(){return o()},get onFocusOutside(){return t.onFocusOutside}},()=>a,{forceMount:!0}))}var Fr=gt("
    ");function Rr(e,t){const n=Rt();T(t,!0);let r=v(t,"ref",15,null),o=v(t,"id",19,()=>Mt(n)),s=v(t,"disabled",3,!1),i=v(t,"onSelect",3,Ot),a=v(t,"closeOnSelect",3,!0),l=W(t,["$$slots","$$events","$$legacy","child","children","ref","id","disabled","onSelect","closeOnSelect"]);const c=on.create({id:A(()=>o()),disabled:A(()=>s()),onSelect:A(()=>i()),ref:A(()=>r(),w=>r(w)),closeOnSelect:A(()=>a())}),f=S(()=>dt(l,c.props));var g=F(),d=C(g);{var u=w=>{var p=F(),b=C(p);B(b,()=>t.child,()=>({props:m(f)})),O(w,p)},h=w=>{var p=Fr();nt(p,()=>({...m(f)}));var b=lt(p);B(b,()=>t.children??H),ct(p),O(w,p)};G(d,w=>{t.child?w(u):w(h,!1)})}O(e,g),k()}var Mr=gt("
    ");function Dr(e,t){const n=Rt();T(t,!0);let r=v(t,"ref",15,null),o=v(t,"id",19,()=>Mt(n)),s=W(t,["$$slots","$$events","$$legacy","ref","id","child","children"]);const i=sn.create({id:A(()=>o()),ref:A(()=>r(),d=>r(d))}),a=S(()=>dt(s,i.props));var l=F(),c=C(l);{var f=d=>{var u=F(),h=C(u);B(h,()=>t.child,()=>({props:m(a)})),O(d,u)},g=d=>{var u=Mr();nt(u,()=>({...m(a)}));var h=lt(u);B(h,()=>t.children??H),ct(u),O(d,u)};G(c,d=>{t.child?d(f):d(g,!1)})}O(e,l),k()}function Br(e,t){T(t,!0);let n=v(t,"open",15,!1),r=v(t,"dir",3,"ltr"),o=v(t,"onOpenChange",3,Ot),s=v(t,"onOpenChangeComplete",3,Ot),i=v(t,"_internal_variant",3,"dropdown-menu");const a=an.create({variant:A(()=>i()),dir:A(()=>r()),onClose:()=>{n(!1),o()(!1)}});ln.create({open:A(()=>n(),l=>{n(l),o()(l)}),onOpenChangeComplete:A(()=>s())},a),xr(e,{children:(l,c)=>{var f=F(),g=C(f);B(g,()=>t.children??H),O(l,f)},$$slots:{default:!0}}),k()}var Tr=gt("
    "),kr=gt("
    ");function Wr(e,t){const n=Rt();T(t,!0);let r=v(t,"id",19,()=>Mt(n)),o=v(t,"ref",15,null),s=v(t,"loop",3,!0),i=v(t,"onInteractOutside",3,Ot),a=v(t,"onEscapeKeydown",3,Ot),l=v(t,"onCloseAutoFocus",3,Ot),c=v(t,"forceMount",3,!1),f=v(t,"trapFocus",3,!1),g=W(t,["$$slots","$$events","$$legacy","id","child","children","ref","loop","onInteractOutside","onEscapeKeydown","onCloseAutoFocus","forceMount","trapFocus","style"]);const d=cn.create({id:A(()=>r()),loop:A(()=>s()),ref:A(()=>o(),y=>o(y)),onCloseAutoFocus:A(()=>l())}),u=S(()=>dt(g,d.props));function h(y){if(d.handleInteractOutside(y),!y.defaultPrevented&&(i()(y),!y.defaultPrevented)){if(y.target&&y.target instanceof Element){const E=`[${d.parentMenu.root.getBitsAttr("sub-content")}]`;if(y.target.closest(E))return}d.parentMenu.onClose()}}function w(y){a()(y),!y.defaultPrevented&&d.parentMenu.onClose()}var p=F(),b=C(p);{var x=y=>{Er(y,z(()=>m(u),()=>d.popperProps,{get ref(){return d.opts.ref},get enabled(){return d.parentMenu.opts.open.current},onInteractOutside:h,onEscapeKeydown:w,get trapFocus(){return f()},get loop(){return s()},forceMount:!0,get id(){return r()},get shouldRender(){return d.shouldRender},popper:(R,_)=>{let M=()=>_?.().props,U=()=>_?.().wrapperProps;const K=S(()=>dt(M(),{style:Se("dropdown-menu")},{style:t.style}));var Y=F(),j=C(Y);{var q=X=>{var I=F(),N=C(I);{let V=S(()=>({props:m(K),wrapperProps:U(),...d.snippetProps}));B(N,()=>t.child,()=>m(V))}O(X,I)},L=X=>{var I=Tr();nt(I,()=>({...U()}));var N=lt(I);nt(N,()=>({...m(K)}));var V=lt(N);B(V,()=>t.children??H),ct(N),ct(I),O(X,I)};G(j,X=>{t.child?X(q):X(L,!1)})}O(R,Y)},$$slots:{popper:!0}}))},P=y=>{var E=F(),R=C(E);{var _=M=>{Cr(M,z(()=>m(u),()=>d.popperProps,{get ref(){return d.opts.ref},get open(){return d.parentMenu.opts.open.current},onInteractOutside:h,onEscapeKeydown:w,get trapFocus(){return f()},get loop(){return s()},forceMount:!1,get id(){return r()},get shouldRender(){return d.shouldRender},popper:(K,Y)=>{let j=()=>Y?.().props,q=()=>Y?.().wrapperProps;const L=S(()=>dt(j(),{style:Se("dropdown-menu")},{style:t.style}));var X=F(),I=C(X);{var N=Z=>{var at=F(),Et=C(at);{let Ut=S(()=>({props:m(L),wrapperProps:q(),...d.snippetProps}));B(Et,()=>t.child,()=>m(Ut))}O(Z,at)},V=Z=>{var at=kr();nt(at,()=>({...q()}));var Et=lt(at);nt(Et,()=>({...m(L)}));var Ut=lt(Et);B(Ut,()=>t.children??H),ct(Et),ct(at),O(Z,at)};G(I,Z=>{t.child?Z(N):Z(V,!1)})}O(K,X)},$$slots:{popper:!0}}))};G(R,M=>{c()||M(_)},!0)}O(y,E)};G(b,y=>{c()?y(x):y(P,!1)})}O(e,p),k()}var Lr=gt("");function Ir(e,t){const n=Rt();T(t,!0);let r=v(t,"id",19,()=>Mt(n)),o=v(t,"ref",15,null),s=v(t,"disabled",3,!1),i=v(t,"type",3,"button"),a=W(t,["$$slots","$$events","$$legacy","id","ref","child","children","disabled","type"]);const l=dn.create({id:A(()=>r()),disabled:A(()=>s()??!1),ref:A(()=>o(),f=>o(f))}),c=S(()=>dt(a,l.props,{type:i()}));Or(e,{get id(){return r()},get ref(){return l.opts.ref},children:(f,g)=>{var d=F(),u=C(d);{var h=p=>{var b=F(),x=C(b);B(x,()=>t.child,()=>({props:m(c)})),O(p,b)},w=p=>{var b=Lr();nt(b,()=>({...m(c)}));var x=lt(b);B(x,()=>t.children??H),ct(b),O(p,b)};G(u,p=>{t.child?p(h):p(w,!1)})}O(f,d)},$$slots:{default:!0}}),k()}const Nr=un({component:"label",parts:["root"]});class de{static create(t){return new de(t)}opts;attachment;constructor(t){this.opts=t,this.attachment=Tt(this.opts.ref),this.onmousedown=this.onmousedown.bind(this)}onmousedown(t){t.detail>1&&t.preventDefault()}#t=S(()=>({id:this.opts.id.current,[Nr.root]:"",onmousedown:this.onmousedown,...this.attachment}));get props(){return m(this.#t)}set props(t){D(this.#t,t)}}var Hr=gt("");function zr(e,t){const n=Rt();T(t,!0);let r=v(t,"id",19,()=>Mt(n)),o=v(t,"ref",15,null),s=W(t,["$$slots","$$events","$$legacy","children","child","id","ref","for"]);const i=de.create({id:A(()=>r()),ref:A(()=>o(),d=>o(d))}),a=S(()=>dt(s,i.props,{for:t.for}));var l=F(),c=C(l);{var f=d=>{var u=F(),h=C(u);B(h,()=>t.child,()=>({props:m(a)})),O(d,u)},g=d=>{var u=Hr();nt(u,()=>({...m(a),for:t.for}));var h=lt(u);B(h,()=>t.children??H),ct(u),O(d,u)};G(c,d=>{t.child?d(f):d(g,!1)})}O(e,l),k()}function $r(e,t){T(t,!0);let n=W(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"m6 9 6 6 6-6"}]];bt(e,z({name:"chevron-down"},()=>n,{get iconNode(){return r},children:(o,s)=>{var i=F(),a=C(i);B(a,()=>t.children??H),O(o,i)},$$slots:{default:!0}})),k()}function to(e,t){T(t,!0);let n=W(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"M12 17V3"}],["path",{d:"m6 11 6 6 6-6"}],["path",{d:"M19 21H5"}]];bt(e,z({name:"arrow-down-to-line"},()=>n,{get iconNode(){return r},children:(o,s)=>{var i=F(),a=C(i);B(a,()=>t.children??H),O(o,i)},$$slots:{default:!0}})),k()}function eo(e,t){T(t,!0);let n=W(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z"}]];bt(e,z({name:"bookmark"},()=>n,{get iconNode(){return r},children:(o,s)=>{var i=F(),a=C(i);B(a,()=>t.children??H),O(o,i)},$$slots:{default:!0}})),k()}function no(e,t){T(t,!0);let n=W(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z"}],["path",{d:"m3.3 7 8.7 5 8.7-5"}],["path",{d:"M12 22V12"}]];bt(e,z({name:"box"},()=>n,{get iconNode(){return r},children:(o,s)=>{var i=F(),a=C(i);B(a,()=>t.children??H),O(o,i)},$$slots:{default:!0}})),k()}function ro(e,t){T(t,!0);let n=W(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"}]];bt(e,z({name:"heart"},()=>n,{get iconNode(){return r},children:(o,s)=>{var i=F(),a=C(i);B(a,()=>t.children??H),O(o,i)},$$slots:{default:!0}})),k()}function oo(e,t){T(t,!0);let n=W(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"}]];bt(e,z({name:"message-square"},()=>n,{get iconNode(){return r},children:(o,s)=>{var i=F(),a=C(i);B(a,()=>t.children??H),O(o,i)},$$slots:{default:!0}})),k()}function io(e,t){T(t,!0);let n=W(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"}],["path",{d:"M7 10v12"}]];bt(e,z({name:"thumbs-up"},()=>n,{get iconNode(){return r},children:(o,s)=>{var i=F(),a=C(i);B(a,()=>t.children??H),O(o,i)},$$slots:{default:!0}})),k()}var Vr=gt("
    ");function so(e,t){T(t,!0);let n=v(t,"ref",15,null),r=W(t,["$$slots","$$events","$$legacy","ref","class"]);var o=Vr();nt(o,s=>({"data-slot":"skeleton",class:s,...r}),[()=>At("bg-accent animate-pulse rounded-md",t.class)]),Ce(o,s=>n(s),()=>n()),O(e,o),k()}function ao(e){const t={attributes:!0,childList:!0,subtree:!0},n=new MutationObserver(o),r=new IntersectionObserver(s=>{s.forEach(i=>{if(i.isIntersecting){const a=i.target;a.appendChild(Kr(a))}else i.target.querySelector("video")?.remove()})},{root:null,threshold:0,rootMargin:`${e.rootMargin}px`});function o(s,i){s.forEach(a=>{a.addedNodes.length<1||a.addedNodes.forEach(l=>{if(l.nodeName.startsWith("#"))return;const c=l.querySelector("[data-asset-container]");c&&r.observe(c)})})}n.observe(e.target,t)}function Kr(e){const t=e.getAttribute("data-media"),n=document.createElement("video");n.loop=!0,n.autoplay=!1,n.muted=!0,n.poster=e.getAttribute("data-cover"),n.disablePictureInPicture=!0,n.disableRemotePlayback=!0;const r=document.createElement("source");r.src=`${t}.webm`,r.type="video/webm";const o=document.createElement("source");return o.src=`${t}.mp4`,o.type="video/mp4",n.appendChild(r),n.appendChild(o),n.addEventListener("pointerenter",()=>{n.play()},{once:!0}),n}async function Xr(e,t){let n=[],r=!1;const[o,s]=await Promise.all([fetch(kt.collections_with_media(Wt.token,e,t)),fetch(kt.get_collections_by_media_type(Wt.token,t))]);let i=[];if(o.status!==200||s.status!==200)return{collections:i,media_in_collections:n,isFavorite:r};i=await o.json();const a=await s.json();let l=0;return t==="Model"?l=a.find(c=>c.name==="Liked Models").id:l=a.find(c=>c.name==="comfyui_civit_favorites").id,i.find(c=>c.collectionId===l)&&(r=!0),n=i,{collections:i,media_in_collections:n,isFavorite:r}}async function lo(e,t,n){let r;return t?r=await fetch(kt.unfavorite_media(Wt.token,e,n)):r=await fetch(kt.favorite_media(Wt.token,e,n)),r.status!==200?{collections:[],media_in_collections:[],isFavorite:t}:await Xr(e,n)}function co(e,t){T(t,!0);let n=v(t,"open",15,!1),r=W(t,["$$slots","$$events","$$legacy","open"]);var o=F(),s=C(o);xt(s,()=>Br,(i,a)=>{a(i,z(()=>r,{get open(){return n()},set open(l){n(l)}}))}),O(e,o),k()}function Yr(e,t){let n=W(t,["$$slots","$$events","$$legacy"]);var r=F(),o=C(r);xt(o,()=>fn,(s,i)=>{i(s,z(()=>n))}),O(e,r)}function uo(e,t){T(t,!0);let n=v(t,"ref",15,null),r=v(t,"sideOffset",3,4),o=W(t,["$$slots","$$events","$$legacy","ref","sideOffset","portalProps","class"]);Yr(e,z(()=>t.portalProps,{children:(s,i)=>{var a=F(),l=C(a);{let c=S(()=>At("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--bits-dropdown-menu-content-available-height) min-w-[8rem] origin-(--bits-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md outline-none",t.class));xt(l,()=>Wr,(f,g)=>{g(f,z({"data-slot":"dropdown-menu-content",get sideOffset(){return r()},get class(){return m(c)}},()=>o,{get ref(){return n()},set ref(d){n(d)}}))})}O(s,a)},$$slots:{default:!0}})),k()}function fo(e,t){T(t,!0);let n=v(t,"ref",15,null),r=v(t,"variant",3,"default"),o=W(t,["$$slots","$$events","$$legacy","ref","class","inset","variant"]);var s=F(),i=C(s);{let a=S(()=>At("data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:data-highlighted:bg-destructive/10 dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 data-[variant=destructive]:data-highlighted:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:ps-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t.class));xt(i,()=>Rr,(l,c)=>{c(l,z({"data-slot":"dropdown-menu-item",get"data-inset"(){return t.inset},get"data-variant"(){return r()},get class(){return m(a)}},()=>o,{get ref(){return n()},set ref(f){n(f)}}))})}O(e,s),k()}var jr=gt("
    ");function go(e,t){T(t,!0);let n=v(t,"ref",15,null),r=W(t,["$$slots","$$events","$$legacy","ref","class","inset","children"]);var o=jr();nt(o,i=>({"data-slot":"dropdown-menu-label","data-inset":t.inset,class:i,...r}),[()=>At("px-2 py-1.5 text-sm font-semibold data-[inset]:ps-8",t.class)]);var s=lt(o);B(s,()=>t.children??H),ct(o),Ce(o,i=>n(i),()=>n()),O(e,o),k()}function ho(e,t){T(t,!0);let n=v(t,"ref",15,null),r=W(t,["$$slots","$$events","$$legacy","ref","class"]);var o=F(),s=C(o);{let i=S(()=>At("bg-border -mx-1 my-1 h-px",t.class));xt(s,()=>Dr,(a,l)=>{l(a,z({"data-slot":"dropdown-menu-separator",get class(){return m(i)}},()=>r,{get ref(){return n()},set ref(c){n(c)}}))})}O(e,o),k()}function mo(e,t){T(t,!0);let n=v(t,"ref",15,null),r=W(t,["$$slots","$$events","$$legacy","ref"]);var o=F(),s=C(o);xt(s,()=>Ir,(i,a)=>{a(i,z({"data-slot":"dropdown-menu-trigger"},()=>r,{get ref(){return n()},set ref(l){n(l)}}))}),O(e,o),k()}function vo(e,t){T(t,!0);let n=v(t,"ref",15,null),r=W(t,["$$slots","$$events","$$legacy","ref","class"]);var o=F(),s=C(o);{let i=S(()=>At("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t.class));xt(s,()=>zr,(a,l)=>{l(a,z({"data-slot":"label",get class(){return m(i)}},()=>r,{get ref(){return n()},set ref(c){n(c)}}))})}O(e,o),k()}export{to as A,eo as B,$r as C,mo as D,xr as F,ro as H,vo as L,oo as M,Er as P,so as S,io as T,Qr as a,uo as b,co as c,go as d,ho as e,lo as f,no as g,fo as h,ao as i,Se as j,Cr as k,Or as l,Ne as m,Kr as n,Gr as o,Xr as u}; diff --git a/front-end/build/civit/_app/immutable/chunks/CJT_YYCC.js b/front-end/build/civit/_app/immutable/chunks/CJT_YYCC.js new file mode 100644 index 0000000..da08266 --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/CJT_YYCC.js @@ -0,0 +1 @@ +import{c as M,a as e,d as rt,f as _,s as R,t as ne}from"./kT5kkkQy.js";import{p as $e,f as t,v as ue,b as me,s as Z,a as _e,o as Ne,c as N,e as J,d as a,t as F,g as r,x as Ke,r as K,j as st,y as lt,w as se}from"./DA9wTPlB.js";import{I as je,s as Be,B as le,S as Ue,g as Qe,f as he,i as we,A as Ie,u as Fe,C as ze,b as Re}from"./B8s4VlAd.js";import{s as be,r as Ee,i as Xe,b as ot,c as s,p as et}from"./Bl70acv3.js";import{l as He}from"./2XHqwiYu.js";import{u as nt,S as dt,T as tt,H as at,B as it,f as ct,D as Oe,b as Ae,M as vt,A as ut,c as Te,i as _t,d as ft,e as $t,L as xe,g as mt,h as Ve}from"./ByoH8mPx.js";import{D as Se,a as Pe,E as pt,R as gt,F as ht,L as wt,S as We,b as Ye,c as Ge,d as Ze,e as Je,C as yt,A as xt,B as Pt}from"./QtwoLSaf.js";function bt(V,o){$e(o,!0);let i=Ee(o,["$$slots","$$events","$$legacy"]);const S=[["path",{d:"m11 10 3 3"}],["path",{d:"M6.5 21A3.5 3.5 0 1 0 3 17.5a2.62 2.62 0 0 1-.708 1.792A1 1 0 0 0 3 21z"}],["path",{d:"M9.969 17.031 21.378 5.624a1 1 0 0 0-3.002-3.002L6.967 14.031"}]];je(V,be({name:"brush"},()=>i,{get iconNode(){return S},children:(j,W)=>{var p=M(),P=t(p);Be(P,()=>o.children??ue),e(j,p)},$$slots:{default:!0}})),me()}function kt(V,o){$e(o,!0);let i=Ee(o,["$$slots","$$events","$$legacy"]);const S=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M16 16s-1.5-2-4-2-4 2-4 2"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9"}]];je(V,be({name:"frown"},()=>i,{get iconNode(){return S},children:(j,W)=>{var p=M(),P=t(p);Be(P,()=>o.children??ue),e(j,p)},$$slots:{default:!0}})),me()}function Mt(V,o){$e(o,!0);let i=Ee(o,["$$slots","$$events","$$legacy"]);const S=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9"}]];je(V,be({name:"laugh"},()=>i,{get iconNode(){return S},children:(j,W)=>{var p=M(),P=t(p);Be(P,()=>o.children??ue),e(j,p)},$$slots:{default:!0}})),me()}function Ct(V,o){$e(o,!0);let i=Ee(o,["$$slots","$$events","$$legacy"]);const S=[["path",{d:"M13 7 8.7 2.7a2.41 2.41 0 0 0-3.4 0L2.7 5.3a2.41 2.41 0 0 0 0 3.4L7 13"}],["path",{d:"m8 6 2-2"}],["path",{d:"m18 16 2-2"}],["path",{d:"m17 11 4.3 4.3c.94.94.94 2.46 0 3.4l-2.6 2.6c-.94.94-2.46.94-3.4 0L11 17"}],["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"}],["path",{d:"m15 5 4 4"}]];je(V,be({name:"pencil-ruler"},()=>i,{get iconNode(){return S},children:(j,W)=>{var p=M(),P=t(p);Be(P,()=>o.children??ue),e(j,p)},$$slots:{default:!0}})),me()}const Lt=(V,o=ue,i=ue,S=ue,j=ue,W=ue,p=ue)=>{var P=M(),de=t(P);s(de,()=>Te,(H,Y)=>{Y(H,{children:(G,C)=>{var z=Nt(),O=t(z);{const c=(f,x)=>{le(f,be(()=>x?.().props,{variant:"outline",size:"sm",children:(A,te)=>{pt(A,{})},$$slots:{default:!0}}))};s(O,()=>Oe,(f,x)=>{x(f,{child:c,$$slots:{child:!0}})})}var Q=a(O,2);s(Q,()=>Ae,(c,f)=>{f(c,{class:"w-max min-w-max bg-transparent backdrop-blur-sm",children:(x,ee)=>{var A=M(),te=t(A);s(te,()=>Se,(g,q)=>{q(g,{class:"w-max flex flex-col gap-1.5",children:(U,ke)=>{var l=Dt(),h=t(l);s(h,()=>Pe,(u,v)=>{v(u,{class:"p-0 w-full",children:(w,$)=>{le(w,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(y,D)=>{var m=zt(),n=t(m);tt(n,{});var d=a(n);F(()=>R(d,` ${o()??""}`)),e(y,m)},$$slots:{default:!0}})},$$slots:{default:!0}})});var b=a(h,2);s(b,()=>Pe,(u,v)=>{v(u,{class:"p-0 w-full",children:(w,$)=>{le(w,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(y,D)=>{var m=Ot(),n=t(m);Mt(n,{});var d=a(n);F(()=>R(d,` ${i()??""}`)),e(y,m)},$$slots:{default:!0}})},$$slots:{default:!0}})});var E=a(b,2);s(E,()=>Pe,(u,v)=>{v(u,{class:"p-0 w-full",children:(w,$)=>{le(w,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(y,D)=>{var m=At(),n=t(m);at(n,{});var d=a(n);F(()=>R(d,` ${S()??""}`)),e(y,m)},$$slots:{default:!0}})},$$slots:{default:!0}})});var B=a(E,2);s(B,()=>Pe,(u,v)=>{v(u,{class:"p-0 w-full",children:(w,$)=>{le(w,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(y,D)=>{var m=Tt(),n=t(m);kt(n,{});var d=a(n);F(()=>R(d,` ${j()??""}`)),e(y,m)},$$slots:{default:!0}})},$$slots:{default:!0}})});var T=a(B,2);s(T,()=>Pe,(u,v)=>{v(u,{class:"p-0 w-full",style:"pointer-events: none;",children:(w,$)=>{le(w,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(y,D)=>{var m=St(),n=t(m);vt(n,{});var d=a(n);F(()=>R(d,` ${W()??""}`)),e(y,m)},$$slots:{default:!0}})},$$slots:{default:!0}})});var X=a(T,2);s(X,()=>Pe,(u,v)=>{v(u,{class:"p-0 w-full",style:"pointer-events: none;",children:(w,$)=>{le(w,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(y,D)=>{var m=qt(),n=t(m);ut(n,{});var d=a(n);F(()=>R(d,` ${p()??""}`)),e(y,m)},$$slots:{default:!0}})},$$slots:{default:!0}})}),e(U,l)},$$slots:{default:!0}})}),e(x,A)},$$slots:{default:!0}})}),e(G,z)},$$slots:{default:!0}})}),e(V,P)};var zt=_(" ",1),Ot=_(" ",1),At=_(" ",1),Tt=_(" ",1),St=_(" ",1),qt=_(" ",1),Dt=_(" ",1),Nt=_(" ",1),jt=_(" ",1),Bt=_('
    ');function Et(V,o){$e(o,!0);let i,S=Z(!0),j=Z(!1),W=Z(_e([]));async function p(){N(S,!0);const c=await ct(o.asset.id,r(j),"Image");N(S,!1),N(j,c.isFavorite,!0),N(W,c.media_in_collections,!0)}Ne(()=>i.addEventListener("pointerover",async c=>{const f=await nt(o.asset.id,"Image");N(S,!1),N(j,f.isFavorite,!0),N(W,f.media_in_collections,!0)},{once:!0}));var P=Bt();P.__click=c=>{c.target.closest("[data-stats]")||window.dispatchEvent(new CustomEvent("ViewMedia",{detail:o.asset}))};var de=J(P);dt(de,{class:"skeleteonLoader h-full w-full absolute top-0 left-0"});var H=a(de,2),Y=J(H),G=J(Y);le(G,{variant:"outline",size:"sm",children:(c,f)=>{var x=jt(),ee=t(x);tt(ee,{});var A=a(ee);F(()=>R(A,` ${o.asset.stats.likeCountAllTime??""}`)),e(c,x)},$$slots:{default:!0}});var C=a(G,2);Lt(C,()=>o.asset.stats.likeCountAllTime,()=>o.asset.stats.laughCountAllTime,()=>o.asset.stats.heartCountAllTime,()=>o.asset.stats.cryCountAllTime,()=>o.asset.stats.commentCountAllTime,()=>o.asset.stats.collectedCountAllTime);var z=a(C,2),O=J(z);le(O,{type:"button",get disabled(){return r(S)},onclick:p,variant:"ghost",size:"icon","aria-label":"Favorite",children:(c,f)=>{var x=M(),ee=t(x);{var A=g=>{Ue(g,{})},te=g=>{{let q=Ke(()=>r(j)?"#fff":"transparent");at(g,{get fill(){return r(q)}})}};Xe(ee,g=>{r(S)?g(A):g(te,!1)})}e(c,x)},$$slots:{default:!0}});var Q=a(O,2);le(Q,{type:"button",variant:"ghost",size:"icon","aria-label":"Collections",onclick:()=>window.dispatchEvent(new CustomEvent("openCollectionManager",{detail:{item_id:o.asset.id,collection_type:"Image"}})),children:(c,f)=>{it(c,{})},$$slots:{default:!0}}),K(z),K(Y),K(H),K(P),ot(P,c=>i=c,()=>i),F(()=>{Qe(P,"data-cover",o.asset.optimized_poster_img_url),Qe(P,"data-media",o.asset.optimized_asset_url)}),e(V,P),me()}rt(["click"]);var It=_('
    '),Ft=_(" ",1);function ma(V,o){$e(o,!0);let i=Z(_e([])),S=[],j=!1,W=Z(!1);st(()=>{const C=[];for(const z in o.filters){const O=o.filters[z];O.selected.name;const Q=O.selected.value;C.push({name:z,value:Q})}S=C,N(i,[],!0),He.reset(),P()}),Ne(async()=>{N(i,[],!0),He.reset(),await P(),window.addEventListener("scroll",p)}),lt(()=>window.removeEventListener("scroll",p));async function p(C){window.scrollY>(document.body.scrollHeight*.8||document.body.scrollHeight-3e3)&&await P()}async function P(){if(j)return;N(W,!0),j=!0;let C=await He.fetch_assets(S);j=!1,N(W,!1),C.status===200&&N(i,[...r(i),...C.assets],!0)}Ne(()=>{const C=document.getElementById("mansonary");_t({rootMargin:2500,target:C})});var de=Ft(),H=t(de);gt(H,{id:"mansonary",frameWidth:400,gap:10,children:(C,z)=>{var O=M(),Q=t(O);he(Q,17,()=>r(i),we,(c,f)=>{ht(c,{get width(){return r(f).ratio.w},get height(){return r(f).ratio.h},children:(x,ee)=>{Et(x,{get asset(){return r(f)}})},$$slots:{default:!0}})}),e(C,O)},$$slots:{default:!0}});var Y=a(H,2);{var G=C=>{var z=It(),O=J(z);Ue(O,{class:"size-8"}),K(z),e(C,z)};Xe(Y,C=>{r(W)&&C(G)})}e(V,de),me()}var Rt=_('
    '),Ht=_(" ",1),Vt=_('
    ',1),Wt=_(" ",1),Yt=_(" ",1),Gt=_('
    ',1),Zt=_(" ",1),Jt=_(" ",1),Kt=_('
    ',1),Qt=_(" ",1),Ut=_(" Filters",1),Xt=_('
    ',1),ea=_(" ",1);function ta(V,o){$e(o,!0);const i=l=>{var h=Rt(),b=J(h);xe(b,{class:"font-semibold pt-2",children:(L,re)=>{se();var I=ne("Modifiers");e(L,I)},$$slots:{default:!0}});var E=a(b,2),B=J(E);ze(B,{get checked(){return g.metadataOnly},"data-filter-modifier":"metadataOnly",onclick:()=>q("metadataOnly"),id:"filter-advanced-mo"});var T=a(B,2);xe(T,{class:"font-normal",for:"filter-advanced-mo",children:(L,re)=>{se();var I=ne("Metadata only");e(L,I)},$$slots:{default:!0}}),K(E);var X=a(E,2),u=J(X);ze(u,{get checked(){return g.requiringMeta},"data-filter-modifier":"requiringMeta",onclick:()=>q("requiringMeta"),id:"filter-advanced-rm"});var v=a(u,2);xe(v,{class:"font-normal",for:"filter-advanced-rm",children:(L,re)=>{se();var I=ne("Requiring metadata");e(L,I)},$$slots:{default:!0}}),K(X);var w=a(X,2),$=J(w);ze($,{get checked(){return g.madeOnsite},"data-filter-modifier":"madeOnsite",onclick:()=>q("madeOnsite"),id:"filter-advanced-mos"});var y=a($,2);xe(y,{class:"font-normal",for:"filter-advanced-mos",children:(L,re)=>{se();var I=ne("Made on site");e(L,I)},$$slots:{default:!0}}),K(w);var D=a(w,2),m=J(D);ze(m,{get checked(){return g.originalsOnly},"data-filter-modifier":"originalsOnly",onclick:()=>q("originalsOnly"),id:"filter-advanced-oo"});var n=a(m,2);xe(n,{class:"font-normal",for:"filter-advanced-oo",children:(L,re)=>{se();var I=ne("Originals only");e(L,I)},$$slots:{default:!0}}),K(D);var d=a(D,2),ae=J(d);ze(ae,{get checked(){return g.remixesOnly},"data-filter-modifier":"remixesOnly",onclick:()=>q("remixesOnly"),id:"filter-advanced-ro"});var k=a(ae,2);xe(k,{class:"font-normal",for:"filter-advanced-ro",children:(L,re)=>{se();var I=ne("Remixes only");e(L,I)},$$slots:{default:!0}}),K(d),K(h),e(l,h)},S=l=>{var h=M(),b=t(h);s(b,()=>Je,(E,B)=>{B(E,{type:"multiple",onValueChange:ee,get value(){return r(z)},set value(T){N(z,T,!0)},children:(T,X)=>{var u=Wt(),v=t(u);s(v,()=>We,($,y)=>{y($,{class:"w-full",children:(D,m)=>{var n=Ht(),d=t(n);mt(d,{});var ae=a(d);F(k=>R(ae,` Base Model (${k??""})`),[()=>r(c).split(",").filter(k=>k.trim().length>0).length>0?r(c).split(",").filter(k=>k.trim().length>0).length:"all"]),e(D,n)},$$slots:{default:!0}})});var w=a(v,2);s(w,()=>Ye,($,y)=>{y($,{preventScroll:!1,children:(D,m)=>{var n=Vt(),d=t(n),ae=J(d);Re(ae,{type:"text",placeholder:"Search...",class:"max-w-xs",get value(){return r(Y)},set value(L){N(Y,L,!0)}}),K(d);var k=a(d,2);s(k,()=>Ge,(L,re)=>{re(L,{children:(I,Me)=>{var ve=M(),fe=t(ve);he(fe,17,()=>r(P).filter(oe=>r(Y).trim().length>0?oe.toLowerCase().includes(r(Y).toLowerCase()):!0),we,(oe,ie)=>{var ce=M(),pe=t(ce);s(pe,()=>Ze,(ye,ge)=>{ge(ye,{get value(){return r(ie)},children:(Ce,qe)=>{se();var De=ne();F(()=>R(De,r(ie))),e(Ce,De)},$$slots:{default:!0}})}),e(oe,ce)}),e(I,ve)},$$slots:{default:!0}})}),e(D,n)},$$slots:{default:!0}})}),e(T,u)},$$slots:{default:!0}})}),e(l,h)},j=l=>{var h=M(),b=t(h);s(b,()=>Je,(E,B)=>{B(E,{type:"multiple",onValueChange:A,get value(){return r(Q)},set value(T){N(Q,T,!0)},children:(T,X)=>{var u=Zt(),v=t(u);s(v,()=>We,($,y)=>{y($,{class:"w-full",children:(D,m)=>{var n=Yt(),d=t(n);Ct(d,{});var ae=a(d);F(k=>R(ae,` Tools (${k??""})`),[()=>r(f).split(",").filter(k=>k.trim().length>0).length>0?r(f).split(",").filter(k=>k.trim().length>0).length:"all"]),e(D,n)},$$slots:{default:!0}})});var w=a(v,2);s(w,()=>Ye,($,y)=>{y($,{preventScroll:!1,children:(D,m)=>{var n=Gt(),d=t(n),ae=J(d);Re(ae,{type:"text",placeholder:"Search...",class:"max-w-xs",get value(){return r(G)},set value(L){N(G,L,!0)}}),K(d);var k=a(d,2);s(k,()=>Ge,(L,re)=>{re(L,{children:(I,Me)=>{var ve=M(),fe=t(ve);he(fe,17,()=>r(de).filter(oe=>r(G).trim().length>0?oe.name.toLowerCase().includes(r(G).toLowerCase()):!0),we,(oe,ie)=>{var ce=M(),pe=t(ce);{let ye=Ke(()=>`${r(ie).id}`);s(pe,()=>Ze,(ge,Ce)=>{Ce(ge,{get value(){return r(ye)},children:(qe,De)=>{se();var Le=ne();F(()=>R(Le,r(ie).name)),e(qe,Le)},$$slots:{default:!0}})})}e(oe,ce)}),e(I,ve)},$$slots:{default:!0}})}),e(D,n)},$$slots:{default:!0}})}),e(T,u)},$$slots:{default:!0}})}),e(l,h)},W=l=>{var h=M(),b=t(h);s(b,()=>Je,(E,B)=>{B(E,{type:"multiple",onValueChange:te,get value(){return r(O)},set value(T){N(O,T,!0)},children:(T,X)=>{var u=Qt(),v=t(u);s(v,()=>We,($,y)=>{y($,{class:"w-full",children:(D,m)=>{var n=Jt(),d=t(n);bt(d,{});var ae=a(d);F(k=>R(ae,` Techniques (${k??""})`),[()=>r(x).split(",").filter(k=>k.trim().length>0).length>0?r(x).split(",").filter(k=>k.trim().length>0).length:"all"]),e(D,n)},$$slots:{default:!0}})});var w=a(v,2);s(w,()=>Ye,($,y)=>{y($,{preventScroll:!1,children:(D,m)=>{var n=Kt(),d=t(n),ae=J(d);Re(ae,{type:"text",placeholder:"Search...",class:"max-w-xs",get value(){return r(C)},set value(L){N(C,L,!0)}}),K(d);var k=a(d,2);s(k,()=>Ge,(L,re)=>{re(L,{children:(I,Me)=>{var ve=M(),fe=t(ve);he(fe,17,()=>r(H).filter(oe=>r(C).trim().length>0?oe.name.toLowerCase().includes(r(C).toLowerCase()):!0),we,(oe,ie)=>{var ce=M(),pe=t(ce);{let ye=Ke(()=>`${r(ie).id}`);s(pe,()=>Ze,(ge,Ce)=>{Ce(ge,{get value(){return r(ye)},children:(qe,De)=>{se();var Le=ne();F(()=>R(Le,r(ie).name)),e(qe,Le)},$$slots:{default:!0}})})}e(oe,ce)}),e(I,ve)},$$slots:{default:!0}})}),e(D,n)},$$slots:{default:!0}})}),e(T,u)},$$slots:{default:!0}})}),e(l,h)},p=et(o,"filters_state",15);let P=Z(_e([])),de=Z(_e([])),H=Z(_e([])),Y=Z(""),G=Z(""),C=Z(""),z=Z(_e([])),O=Z(_e([])),Q=Z(_e([]));Ne(async()=>{fetch(Ie.get_base_models(Fe.token)).then(async l=>{l.status===200&&N(P,await l.json(),!0)}),fetch(Ie.get_tools(Fe.token)).then(async l=>{if(l.status!==200)return;let h=await l.json();N(de,h.map(b=>({id:b.id,name:b.name})),!0)}),fetch(Ie.get_techniques(Fe.token)).then(async l=>{if(l.status!==200)return;let h=await l.json();N(H,h.map(b=>({id:b.id,name:b.name,type:b.type})),!0)})});let c=Z(""),f=Z(""),x=Z("");const ee=l=>{p(p().baseModel.selected={name:"",value:l.join(",")},!0),N(c,l.join(","),!0)},A=l=>{p(p().tools.selected={name:"",value:l.join(",")},!0),N(f,l.join(","),!0)},te=l=>{p(p().techniques.selected={name:"",value:l.join(",")},!0),N(x,l.join(","),!0)},g=_e({requiringMeta:!1,metadataOnly:!1,madeOnsite:!1,originalsOnly:!1,remixesOnly:!1}),q=async l=>{await new Promise(b=>setTimeout(b,5));const h=document.querySelector(`[data-filter-modifier="${l}"]`).getAttribute("data-state")==="checked";p(p()[l].selected={name:"",value:h},!0),g[l]=h};var U=M(),ke=t(U);s(ke,()=>Te,(l,h)=>{h(l,{children:(b,E)=>{var B=ea(),T=t(B);{const u=(v,w)=>{le(v,be(()=>w?.().props,{variant:"ghost",class:"font-normal",children:(y,D)=>{var m=Ut(),n=t(m);wt(n,{}),se(),e(y,m)},$$slots:{default:!0}}))};s(T,()=>Oe,(v,w)=>{w(v,{child:u,$$slots:{child:!0}})})}var X=a(T,2);s(X,()=>Ae,(u,v)=>{v(u,{preventScroll:!1,class:"w-56",children:(w,$)=>{var y=M(),D=t(y);s(D,()=>Se,(m,n)=>{n(m,{children:(d,ae)=>{var k=Xt(),L=t(k);s(L,()=>ft,(ie,ce)=>{ce(ie,{children:(pe,ye)=>{se();var ge=ne("Filters");e(pe,ge)},$$slots:{default:!0}})});var re=a(L,2);s(re,()=>$t,(ie,ce)=>{ce(ie,{})});var I=a(re,2),Me=J(I);S(Me);var ve=a(Me,2);j(ve);var fe=a(ve,2);W(fe);var oe=a(fe,2);i(oe),K(I),e(d,k)},$$slots:{default:!0}})}),e(w,y)},$$slots:{default:!0}})}),e(b,B)},$$slots:{default:!0}})}),e(V,U),me()}var aa=_(" ",1),ra=_(" ",1),sa=_(" ",1),la=_(" ",1),oa=_(" ",1),na=_(" ",1),da=_('
    ');function pa(V,o){$e(o,!0);let i=et(o,"filters_state",15);var S=da(),j=J(S);s(j,()=>Te,(H,Y)=>{Y(H,{children:(G,C)=>{var z=ra(),O=t(z);s(O,()=>Oe,(c,f)=>{f(c,{children:(x,ee)=>{le(x,{variant:"ghost",class:"font-normal",children:(A,te)=>{var g=aa(),q=t(g);yt(q,{});var U=a(q);F(()=>R(U,` ${i().period.selected.name??""}`)),e(A,g)},$$slots:{default:!0}})},$$slots:{default:!0}})});var Q=a(O,2);s(Q,()=>Ae,(c,f)=>{f(c,{children:(x,ee)=>{var A=M(),te=t(A);s(te,()=>Se,(g,q)=>{q(g,{children:(U,ke)=>{var l=M(),h=t(l);he(h,17,()=>i().period.options,we,(b,E)=>{var B=M(),T=t(B);s(T,()=>Ve,(X,u)=>{u(X,{onclick:()=>{i(i().period.selected=r(E),!0)},children:(v,w)=>{se();var $=ne();F(()=>R($,r(E).name)),e(v,$)},$$slots:{default:!0}})}),e(b,B)}),e(U,l)},$$slots:{default:!0}})}),e(x,A)},$$slots:{default:!0}})}),e(G,z)},$$slots:{default:!0}})});var W=a(j,2);s(W,()=>Te,(H,Y)=>{Y(H,{children:(G,C)=>{var z=la(),O=t(z);s(O,()=>Oe,(c,f)=>{f(c,{children:(x,ee)=>{le(x,{variant:"ghost",class:"font-normal",children:(A,te)=>{var g=sa(),q=t(g);xt(q,{});var U=a(q);F(()=>R(U,` ${i().sort.selected.name??""}`)),e(A,g)},$$slots:{default:!0}})},$$slots:{default:!0}})});var Q=a(O,2);s(Q,()=>Ae,(c,f)=>{f(c,{children:(x,ee)=>{var A=M(),te=t(A);s(te,()=>Se,(g,q)=>{q(g,{children:(U,ke)=>{var l=M(),h=t(l);he(h,17,()=>i().sort.options,we,(b,E)=>{var B=M(),T=t(B);s(T,()=>Ve,(X,u)=>{u(X,{onclick:()=>{i(i().sort.selected=r(E),!0)},children:(v,w)=>{se();var $=ne();F(()=>R($,r(E).name)),e(v,$)},$$slots:{default:!0}})}),e(b,B)}),e(U,l)},$$slots:{default:!0}})}),e(x,A)},$$slots:{default:!0}})}),e(G,z)},$$slots:{default:!0}})});var p=a(W,2);s(p,()=>Te,(H,Y)=>{Y(H,{children:(G,C)=>{var z=na(),O=t(z);s(O,()=>Oe,(c,f)=>{f(c,{children:(x,ee)=>{le(x,{variant:"ghost",class:"font-normal",children:(A,te)=>{var g=oa(),q=t(g);Pt(q,{});var U=a(q);F(()=>R(U,` ${i().browsingLevel.selected.name??""}`)),e(A,g)},$$slots:{default:!0}})},$$slots:{default:!0}})});var Q=a(O,2);s(Q,()=>Ae,(c,f)=>{f(c,{children:(x,ee)=>{var A=M(),te=t(A);s(te,()=>Se,(g,q)=>{q(g,{children:(U,ke)=>{var l=M(),h=t(l);he(h,17,()=>i().browsingLevel.options,we,(b,E)=>{var B=M(),T=t(B);s(T,()=>Ve,(X,u)=>{u(X,{onclick:()=>{i(i().browsingLevel.selected=r(E),!0)},children:(v,w)=>{se();var $=ne();F(()=>R($,r(E).name)),e(v,$)},$$slots:{default:!0}})}),e(b,B)}),e(U,l)},$$slots:{default:!0}})}),e(x,A)},$$slots:{default:!0}})}),e(G,z)},$$slots:{default:!0}})});var P=a(p,2),de=J(P);ta(de,{get filters_state(){return i()},set filters_state(H){i(H)}}),K(P),K(S),e(V,S),me()}let ga={period:{selected:{name:"Month",value:"Month"},options:[{name:"Day",value:"Day"},{name:"Week",value:"Week"},{name:"Month",value:"Month"},{name:"Year",value:"Year"},{name:"All Time",value:"AllTime"}]},sort:{selected:{name:"Most Reactions",value:"Most Reactions"},options:[{name:"Most Reactions",value:"Most Reactions"},{name:"Most Comments",value:"Most Comments"},{name:"Most Collected",value:"Most Collected"},{name:"Newest",value:"Newest"},{name:"Oldest",value:"Oldest"}]},browsingLevel:{selected:{name:"Hide Nsfw",value:"0"},options:[{name:"Hide Nsfw",value:"0"},{name:"Include Nsfw",value:"31"},{name:"Only Nsfw",value:"100"}]},baseModel:{selected:{name:"",value:""},options:[]},tools:{selected:{name:"",value:""},options:[]},techniques:{selected:{name:"",value:""},options:[]},requiringMeta:{selected:{name:"",value:"false"},options:[]},metadataOnly:{selected:{name:"",value:"false"},options:[]},madeOnsite:{selected:{name:"",value:"false"},options:[]},originalsOnly:{selected:{name:"",value:"false"},options:[]},remixesOnly:{selected:{name:"",value:"false"},options:[]}};export{ma as A,pa as M,ga as m}; diff --git a/front-end/build/civit/_app/immutable/chunks/CUg-vmQ0.js b/front-end/build/civit/_app/immutable/chunks/CUg-vmQ0.js new file mode 100644 index 0000000..37ae24f --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/CUg-vmQ0.js @@ -0,0 +1 @@ +import{h as g,u as d,i as c,j as i,k as m,g as p,l as b,m as h,n as k,q as v}from"./DA9wTPlB.js";function x(t=!1){const s=g,e=s.l.u;if(!e)return;let f=()=>h(s.s);if(t){let a=0,n={};const _=k(()=>{let l=!1;const r=s.s;for(const o in r)r[o]!==n[o]&&(n[o]=r[o],l=!0);return l&&a++,a});f=()=>p(_)}e.b.length&&d(()=>{u(s,f),c(e.b)}),i(()=>{const a=m(()=>e.m.map(b));return()=>{for(const n of a)typeof n=="function"&&n()}}),e.a.length&&i(()=>{u(s,f),c(e.a)})}function u(t,s){if(t.l.s)for(const e of t.l.s)p(e);s()}v();export{x as i}; diff --git a/front-end/build/civit/_app/immutable/chunks/DA9wTPlB.js b/front-end/build/civit/_app/immutable/chunks/DA9wTPlB.js new file mode 100644 index 0000000..547b1fe --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/DA9wTPlB.js @@ -0,0 +1 @@ +var Vt=Array.isArray,Bt=Array.prototype.indexOf,jn=Array.from,Ln=Object.defineProperty,ue=Object.getOwnPropertyDescriptor,Gt=Object.getOwnPropertyDescriptors,Kt=Object.prototype,zt=Array.prototype,lt=Object.getPrototypeOf,tt=Object.isExtensible;function qn(e){return typeof e=="function"}const Yn=()=>{};function Hn(e){return e()}function $t(e){for(var t=0;t{e=r,t=s});return{promise:n,resolve:e,reject:t}}function Un(e,t){if(Array.isArray(e))return e;if(!(Symbol.iterator in e))return Array.from(e);const n=[];for(const r of e)if(n.push(r),n.length===t)break;return n}const y=2,He=4,Se=8,ut=1<<24,j=16,L=32,$=64,Ue=128,N=512,g=1024,A=2048,q=4096,P=8192,H=16384,Ve=32768,we=65536,Ie=1<<17,ct=1<<18,ie=1<<19,_t=1<<20,te=32768,Me=1<<21,Be=1<<22,U=1<<23,Q=Symbol("$state"),Vn=Symbol("legacy props"),Bn=Symbol(""),re=new class extends Error{name="StaleReactionError";message="The reaction that called `getAbortSignal()` was re-run or destroyed"},Kn=1,Ge=3,vt=8;function Xt(e){throw new Error("https://svelte.dev/e/experimental_async_required")}function Ke(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function Zt(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Wt(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Jt(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Qt(e){throw new Error("https://svelte.dev/e/effect_orphan")}function en(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function tn(){throw new Error("https://svelte.dev/e/fork_discarded")}function nn(){throw new Error("https://svelte.dev/e/fork_timing")}function zn(){throw new Error("https://svelte.dev/e/hydration_failed")}function $n(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function rn(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function sn(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function fn(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Xn(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Zn=1,Wn=2,Jn=4,Qn=8,er=16,tr=1,nr=2,rr=4,sr=8,fr=16,ir=1,ar=2,an="[",ln="[!",on="]",ze={},m=Symbol(),lr="http://www.w3.org/1999/xhtml",or="http://www.w3.org/2000/svg",ur="@attach";function $e(e){console.warn("https://svelte.dev/e/hydration_mismatch")}function cr(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function _r(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}let G=!1;function vr(e){G=e}let k;function se(e){if(e===null)throw $e(),ze;return k=e}function dr(){return se(X(k))}function hr(e){if(G){if(X(k)!==null)throw $e(),ze;k=e}}function pr(e=1){if(G){for(var t=e,n=k;t--;)n=X(n);k=n}}function wr(e=!0){for(var t=0,n=k;;){if(n.nodeType===vt){var r=n.data;if(r===on){if(t===0)return n;t-=1}else(r===an||r===ln)&&(t+=1)}var s=X(n);e&&n.remove(),n=s}}function yr(e){if(!e||e.nodeType!==vt)throw $e(),ze;return e.data}function dt(e){return e===this.v}function un(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function ht(e){return!un(e,this.v)}let de=!1;function Er(){de=!0}let w=null;function ye(e){w=e}function mr(e){return Re().get(e)}function gr(e,t){return Re().set(e,t),t}function br(e){return Re().has(e)}function Tr(){return Re()}function Ar(e,t=!1,n){w={p:w,i:!1,c:null,e:null,s:e,x:null,l:de&&!t?{s:null,u:null,$:[]}:null}}function xr(e){var t=w,n=t.e;if(n!==null){t.e=null;for(var r of n)Ot(r)}return t.i=!0,w=t.p,{}}function he(){return!de||w!==null&&w.l===null}function Re(e){return w===null&&Ke(),w.c??=new Map(cn(w)||void 0)}function cn(e){let t=e.p;for(;t!==null;){const n=t.c;if(n!==null)return n;t=t.p}return null}let W=[];function pt(){var e=W;W=[],$t(e)}function wt(e){if(W.length===0&&!ce){var t=W;queueMicrotask(()=>{t===W&&pt()})}W.push(e)}function _n(){for(;W.length>0;)pt()}function vn(e){var t=h;if(t===null)return _.f|=U,e;if((t.f&Ve)===0){if((t.f&Ue)===0)throw e;t.b.error(e)}else Ee(e,t)}function Ee(e,t){for(;t!==null;){if((t.f&Ue)!==0)try{t.b.error(e);return}catch(n){e=n}t=t.parent}throw e}const J=new Set;let p=null,Ce=null,T=null,R=[],Oe=null,Fe=!1,ce=!1;class F{committed=!1;current=new Map;previous=new Map;#r=new Set;#s=new Set;#t=0;#n=0;#a=null;#f=[];#i=[];skipped_effects=new Set;is_fork=!1;is_deferred(){return this.is_fork||this.#n>0}process(t){R=[],Ce=null,this.apply();var n={parent:null,effect:null,effects:[],render_effects:[],block_effects:[]};for(const r of t)this.#l(r,n);this.is_fork||this.#u(),this.is_deferred()?(this.#e(n.effects),this.#e(n.render_effects),this.#e(n.block_effects)):(Ce=this,p=null,nt(n.render_effects),nt(n.effects),Ce=null,this.#a?.resolve()),T=null}#l(t,n){t.f^=g;for(var r=t.first;r!==null;){var s=r.f,f=(s&(L|$))!==0,o=f&&(s&g)!==0,l=o||(s&P)!==0||this.skipped_effects.has(r);if((r.f&Ue)!==0&&r.b?.is_pending()&&(n={parent:n,effect:r,effects:[],render_effects:[],block_effects:[]}),!l&&r.fn!==null){f?r.f^=g:(s&He)!==0?n.effects.push(r):pe(r)&&((r.f&j)!==0&&n.block_effects.push(r),ve(r));var i=r.first;if(i!==null){r=i;continue}}var a=r.parent;for(r=r.next;r===null&&a!==null;)a===n.effect&&(this.#e(n.effects),this.#e(n.render_effects),this.#e(n.block_effects),n=n.parent),r=a.next,a=a.parent}}#e(t){for(const n of t)((n.f&A)!==0?this.#f:this.#i).push(n),this.#o(n.deps),E(n,g)}#o(t){if(t!==null)for(const n of t)(n.f&y)===0||(n.f&te)===0||(n.f^=te,this.#o(n.deps))}capture(t,n){this.previous.has(t)||this.previous.set(t,n),(t.f&U)===0&&(this.current.set(t,t.v),T?.set(t,t.v))}activate(){p=this,this.apply()}deactivate(){p===this&&(p=null,T=null)}flush(){if(this.activate(),R.length>0){if(Le(),p!==null&&p!==this)return}else this.#t===0&&this.process([]);this.deactivate()}discard(){for(const t of this.#s)t(this);this.#s.clear()}#u(){if(this.#n===0){for(const t of this.#r)t();this.#r.clear()}this.#t===0&&this.#c()}#c(){if(J.size>1){this.previous.clear();var t=T,n=!0,r={parent:null,effect:null,effects:[],render_effects:[],block_effects:[]};for(const f of J){if(f===this){n=!1;continue}const o=[];for(const[i,a]of this.current){if(f.current.has(i))if(n&&a!==f.current.get(i))f.current.set(i,a);else continue;o.push(i)}if(o.length===0)continue;const l=[...f.current.keys()].filter(i=>!this.current.has(i));if(l.length>0){var s=R;R=[];const i=new Set,a=new Map;for(const u of o)yt(u,l,i,a);if(R.length>0){p=f,f.apply();for(const u of R)f.#l(u,r);f.deactivate()}R=s}}p=null,T=t}this.committed=!0,J.delete(this)}increment(t){this.#t+=1,t&&(this.#n+=1)}decrement(t){this.#t-=1,t&&(this.#n-=1),this.revive()}revive(){for(const t of this.#f)E(t,A),ne(t);for(const t of this.#i)E(t,q),ne(t);this.#f=[],this.#i=[],this.flush()}oncommit(t){this.#r.add(t)}ondiscard(t){this.#s.add(t)}settled(){return(this.#a??=ot()).promise}static ensure(){if(p===null){const t=p=new F;J.add(p),ce||F.enqueue(()=>{p===t&&t.flush()})}return p}static enqueue(t){wt(t)}apply(){}}function je(e){var t=ce;ce=!0;try{var n;for(e&&(p!==null&&Le(),n=e());;){if(_n(),R.length===0&&(p?.flush(),R.length===0))return Oe=null,n;Le()}}finally{ce=t}}function Le(){var e=B;Fe=!0;var t=null;try{var n=0;for(xe(!0);R.length>0;){var r=F.ensure();if(n++>1e3){var s,f;dn()}r.process(R),V.clear()}}finally{Fe=!1,xe(e),Oe=null}}function dn(){try{en()}catch(e){Ee(e,Oe)}}let I=null;function nt(e){var t=e.length;if(t!==0){for(var n=0;n0)){V.clear();for(const s of I){if((s.f&(H|P))!==0)continue;const f=[s];let o=s.parent;for(;o!==null;)I.has(o)&&(I.delete(o),f.push(o)),o=o.parent;for(let l=f.length-1;l>=0;l--){const i=f[l];(i.f&(H|P))===0&&ve(i)}}I.clear()}}I=null}}function yt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const s of e.reactions){const f=s.f;(f&y)!==0?yt(s,t,n,r):(f&(Be|j))!==0&&(f&A)===0&&mt(s,t,r)&&(E(s,A),ne(s))}}function Et(e,t){if(e.reactions!==null)for(const n of e.reactions){const r=n.f;(r&y)!==0?Et(n,t):(r&Ie)!==0&&(E(n,A),t.add(n))}}function mt(e,t,n){const r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const s of e.deps){if(t.includes(s))return!0;if((s.f&y)!==0&&mt(s,t,n))return n.set(s,!0),!0}return n.set(e,!1),!1}function ne(e){for(var t=Oe=e;t.parent!==null;){t=t.parent;var n=t.f;if(Fe&&t===h&&(n&j)!==0&&(n&ct)===0)return;if((n&($|L))!==0){if((n&g)===0)return;t.f^=g}}R.push(t)}function kr(e){Xt(),p!==null&&nn();var t=F.ensure();t.is_fork=!0,T=new Map;var n=!1,r=t.settled();je(e),T=null;for(var[s,f]of t.previous)s.v=f;return{commit:async()=>{if(n){await r;return}J.has(t)||tn(),n=!0,t.is_fork=!1;for(var[o,l]of t.current)o.v=l;je(()=>{var i=new Set;for(var a of t.current.keys())Et(a,i);mn(i),At()}),t.revive(),await r},discard:()=>{!n&&J.has(t)&&(J.delete(t),t.discard())}}}function hn(e,t,n,r){const s=he()?Xe:yn;if(n.length===0&&e.length===0){r(t.map(s));return}var f=p,o=h,l=pn();function i(){Promise.all(n.map(a=>wn(a))).then(a=>{l();try{r([...t.map(s),...a])}catch(u){(o.f&H)===0&&Ee(u,o)}f?.deactivate(),me()}).catch(a=>{Ee(a,o)})}e.length>0?Promise.all(e).then(()=>{l();try{return i()}finally{f?.deactivate(),me()}}):i()}function pn(){var e=h,t=_,n=w,r=p;return function(f=!0){fe(e),z(t),ye(n),f&&r?.activate()}}function me(){fe(null),z(null),ye(null)}function Xe(e){var t=y|A,n=_!==null&&(_.f&y)!==0?_:null;return h!==null&&(h.f|=ie),{ctx:w,deps:null,effects:null,equals:dt,f:t,fn:e,reactions:null,rv:0,v:m,wv:0,parent:n??h,ac:null}}function wn(e,t){let n=h;n===null&&Zt();var r=n.b,s=void 0,f=We(m),o=!_,l=new Map;return Sn(()=>{var i=ot();s=i.promise;try{Promise.resolve(e()).then(i.resolve,i.reject).then(()=>{a===p&&a.committed&&a.deactivate(),me()})}catch(c){i.reject(c),me()}var a=p;if(o){var u=!r.is_pending();r.update_pending_count(1),a.increment(u),l.get(a)?.reject(re),l.delete(a),l.set(a,i)}const v=(c,d=void 0)=>{if(a.activate(),d)d!==re&&(f.f|=U,qe(f,d));else{(f.f&U)!==0&&(f.f^=U),qe(f,c);for(const[D,De]of l){if(l.delete(D),D===a)break;De.reject(re)}}o&&(r.update_pending_count(-1),a.decrement(u))};i.promise.then(v,c=>v(null,c||"unknown"))}),xn(()=>{for(const i of l.values())i.reject(re)}),new Promise(i=>{function a(u){function v(){u===s?i(f):a(s)}u.then(v,v)}a(s)})}function Sr(e){const t=Xe(e);return Mt(t),t}function yn(e){const t=Xe(e);return t.equals=ht,t}function gt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n0&&!Tt&&At()}return t}function At(){Tt=!1;var e=B;xe(!0);const t=Array.from(ge);try{for(const n of t)(n.f&g)!==0&&E(n,q),pe(n)&&ve(n)}finally{xe(e)}ge.clear()}function Pe(e){Z(e,e.v+1)}function xt(e,t){var n=e.reactions;if(n!==null)for(var r=he(),s=n.length,f=0;f{if(ee===f)return l();var i=_,a=ee;z(null),at(f);var u=l();return z(i),at(a),u};return r&&n.set("length",Y(e.length)),new Proxy(e,{defineProperty(l,i,a){(!("value"in a)||a.configurable===!1||a.enumerable===!1||a.writable===!1)&&rn();var u=n.get(i);return u===void 0?u=o(()=>{var v=Y(a.value);return n.set(i,v),v}):Z(u,a.value,!0),!0},deleteProperty(l,i){var a=n.get(i);if(a===void 0){if(i in l){const u=o(()=>Y(m));n.set(i,u),Pe(s)}}else Z(a,m),Pe(s);return!0},get(l,i,a){if(i===Q)return e;var u=n.get(i),v=i in l;if(u===void 0&&(!v||ue(l,i)?.writable)&&(u=o(()=>{var d=le(v?l[i]:m),D=Y(d);return D}),n.set(i,u)),u!==void 0){var c=oe(u);return c===m?void 0:c}return Reflect.get(l,i,a)},getOwnPropertyDescriptor(l,i){var a=Reflect.getOwnPropertyDescriptor(l,i);if(a&&"value"in a){var u=n.get(i);u&&(a.value=oe(u))}else if(a===void 0){var v=n.get(i),c=v?.v;if(v!==void 0&&c!==m)return{enumerable:!0,configurable:!0,value:c,writable:!0}}return a},has(l,i){if(i===Q)return!0;var a=n.get(i),u=a!==void 0&&a.v!==m||Reflect.has(l,i);if(a!==void 0||h!==null&&(!u||ue(l,i)?.writable)){a===void 0&&(a=o(()=>{var c=u?le(l[i]):m,d=Y(c);return d}),n.set(i,a));var v=oe(a);if(v===m)return!1}return u},set(l,i,a,u){var v=n.get(i),c=i in l;if(r&&i==="length")for(var d=a;dY(m)),n.set(d+"",D))}if(v===void 0)(!c||ue(l,i)?.writable)&&(v=o(()=>Y(void 0)),Z(v,le(a)),n.set(i,v));else{c=v.v!==m;var De=o(()=>le(a));Z(v,De)}var Qe=Reflect.getOwnPropertyDescriptor(l,i);if(Qe?.set&&Qe.set.call(u,a),!c){if(r&&typeof i=="string"){var et=n.get("length"),Ne=Number(i);Number.isInteger(Ne)&&Ne>=et.v&&Z(et,Ne+1)}Pe(s)}return!0},ownKeys(l){oe(s);var i=Reflect.ownKeys(l).filter(v=>{var c=n.get(v);return c===void 0||c.v!==m});for(var[a,u]of n)u.v!==m&&!(a in l)&&i.push(a);return i},setPrototypeOf(){sn()}})}function rt(e){try{if(e!==null&&typeof e=="object"&&Q in e)return e[Q]}catch{}return e}function Or(e,t){return Object.is(rt(e),rt(t))}var st,gn,kt,St;function Dr(){if(st===void 0){st=window,gn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;kt=ue(t,"firstChild").get,St=ue(t,"nextSibling").get,tt(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),tt(n)&&(n.__t=void 0)}}function be(e=""){return document.createTextNode(e)}function Te(e){return kt.call(e)}function X(e){return St.call(e)}function Nr(e,t){if(!G)return Te(e);var n=Te(k);if(n===null)n=k.appendChild(be());else if(t&&n.nodeType!==Ge){var r=be();return n?.before(r),se(r),r}return se(n),n}function Cr(e,t=!1){if(!G){var n=Te(e);return n instanceof Comment&&n.data===""?X(n):n}if(t&&k?.nodeType!==Ge){var r=be();return k?.before(r),se(r),r}return k}function Pr(e,t=1,n=!1){let r=G?k:e;for(var s;t--;)s=r,r=X(r);if(!G)return r;if(n&&r?.nodeType!==Ge){var f=be();return r===null?s?.after(f):r.before(f),se(f),f}return se(r),r}function bn(e){e.textContent=""}function Ir(){return!1}function Mr(e,t){if(t){const n=document.body;e.autofocus=!0,wt(()=>{document.activeElement===n&&e.focus()})}}function Fr(e){G&&Te(e)!==null&&bn(e)}let ft=!1;function Tn(){ft||(ft=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(const t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function Je(e){var t=_,n=h;z(null),fe(null);try{return e()}finally{z(t),fe(n)}}function jr(e,t,n,r=n){e.addEventListener(t,()=>Je(n));const s=e.__on_r;s?e.__on_r=()=>{s(),r(!0)}:e.__on_r=()=>r(!0),Tn()}function Rt(e){h===null&&(_===null&&Qt(),Jt()),ae&&Wt()}function An(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function O(e,t,n){var r=h;r!==null&&(r.f&P)!==0&&(e|=P);var s={ctx:w,deps:null,nodes_start:null,nodes_end:null,f:e|A|N,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,transitions:null,wv:0,ac:null};if(n)try{ve(s),s.f|=Ve}catch(l){throw K(s),l}else t!==null&&ne(s);var f=s;if(n&&f.deps===null&&f.teardown===null&&f.nodes_start===null&&f.first===f.last&&(f.f&ie)===0&&(f=f.first,(e&j)!==0&&(e&we)!==0&&f!==null&&(f.f|=we)),f!==null&&(f.parent=r,r!==null&&An(f,r),_!==null&&(_.f&y)!==0&&(e&$)===0)){var o=_;(o.effects??=[]).push(f)}return s}function Ae(){return _!==null&&!C}function xn(e){const t=O(Se,null,!1);return E(t,g),t.teardown=e,t}function kn(e){Rt();var t=h.f,n=!_&&(t&L)!==0&&(t&Ve)===0;if(n){var r=w;(r.e??=[]).push(e)}else return Ot(e)}function Ot(e){return O(He|_t,e,!1)}function Lr(e){return Rt(),O(Se|_t,e,!0)}function qr(e){F.ensure();const t=O($|ie,e,!0);return()=>{K(t)}}function Yr(e){F.ensure();const t=O($|ie,e,!0);return(n={})=>new Promise(r=>{n.outro?Dn(t,()=>{K(t),r(void 0)}):(K(t),r(void 0))})}function Hr(e){return O(He,e,!1)}function Sn(e){return O(Be|ie,e,!0)}function Ur(e,t=0){return O(Se|t,e,!0)}function Vr(e,t=[],n=[],r=[]){hn(r,t,n,s=>{O(Se,()=>e(...s.map(oe)),!0)})}function Br(e,t=0){var n=O(j|t,e,!0);return n}function Gr(e,t=0){var n=O(ut|t,e,!0);return n}function Kr(e){return O(L|ie,e,!0)}function Dt(e){var t=e.teardown;if(t!==null){const n=ae,r=_;it(!0),z(null);try{t.call(null)}finally{it(n),z(r)}}}function Nt(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const s=n.ac;s!==null&&Je(()=>{s.abort(re)});var r=n.next;(n.f&$)!==0?n.parent=null:K(n,t),n=r}}function Rn(e){for(var t=e.first;t!==null;){var n=t.next;(t.f&L)===0&&K(t),t=n}}function K(e,t=!0){var n=!1;(t||(e.f&ct)!==0)&&e.nodes_start!==null&&e.nodes_end!==null&&(On(e.nodes_start,e.nodes_end),n=!0),Nt(e,t&&!n),ke(e,0),E(e,H);var r=e.transitions;if(r!==null)for(const f of r)f.stop();Dt(e);var s=e.parent;s!==null&&s.first!==null&&Ct(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes_start=e.nodes_end=e.ac=null}function On(e,t){for(;e!==null;){var n=e===t?null:X(e);e.remove(),e=n}}function Ct(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Dn(e,t,n=!0){var r=[];Pt(e,r,!0),Nn(r,()=>{n&&K(e),t&&t()})}function Nn(e,t){var n=e.length;if(n>0){var r=()=>--n||t();for(var s of e)s.out(r)}else t()}function Pt(e,t,n){if((e.f&P)===0){if(e.f^=P,e.transitions!==null)for(const o of e.transitions)(o.is_global||n)&&t.push(o);for(var r=e.first;r!==null;){var s=r.next,f=(r.f&we)!==0||(r.f&L)!==0&&(e.f&j)!==0;Pt(r,t,f?n:!1),r=s}}}function zr(e){It(e,!0)}function It(e,t){if((e.f&P)!==0){e.f^=P,(e.f&g)===0&&(E(e,A),ne(e));for(var n=e.first;n!==null;){var r=n.next,s=(n.f&we)!==0||(n.f&L)!==0;It(n,s?t:!1),n=r}if(e.transitions!==null)for(const f of e.transitions)(f.is_global||t)&&f.in()}}function $r(e,t){for(var n=e.nodes_start,r=e.nodes_end;n!==null;){var s=n===r?null:X(n);t.append(n),n=s}}let B=!1;function xe(e){B=e}let ae=!1;function it(e){ae=e}let _=null,C=!1;function z(e){_=e}let h=null;function fe(e){h=e}let M=null;function Mt(e){_!==null&&(M===null?M=[e]:M.push(e))}let b=null,x=0,S=null;function Cn(e){S=e}let Ft=1,_e=0,ee=_e;function at(e){ee=e}function jt(){return++Ft}function pe(e){var t=e.f;if((t&A)!==0)return!0;if(t&y&&(e.f&=~te),(t&q)!==0){var n=e.deps;if(n!==null)for(var r=n.length,s=0;se.wv)return!0}(t&N)!==0&&T===null&&E(e,g)}return!1}function Lt(e,t,n=!0){var r=e.reactions;if(r!==null&&!M?.includes(e))for(var s=0;s{e.ac.abort(re)}),e.ac=null);try{e.f|=Me;var u=e.fn,v=u(),c=e.deps;if(b!==null){var d;if(ke(e,x),c!==null&&x>0)for(c.length=x+b.length,d=0;d{const t=Ut(e);if(typeof t=="function")return t})}function Jr(e){w===null&&Ke(),Mn(()=>()=>Ut(e))}function Fn(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}export{$n as $,Ln as A,Rr as B,Xr as C,p as D,zr as E,K as F,Dn as G,be as H,Kr as I,G as J,k as K,Vn as L,$r as M,Ir as N,Br as O,dr as P,we as Q,yr as R,ln as S,wr as T,se as U,vr as V,Hr as W,Ur as X,wt as Y,Q as Z,ue as _,le as a,Or as a$,rr as a0,yn as a1,ae as a2,h as a3,H as a4,sr as a5,de as a6,nr as a7,tr as a8,qn as a9,an as aA,X as aB,ze as aC,zn as aD,bn as aE,jn as aF,Yr as aG,on as aH,$e as aI,un as aJ,Vt as aK,lt as aL,Kt as aM,Wn as aN,Zn as aO,er as aP,Jn as aQ,P as aR,Qn as aS,Pt as aT,Nn as aU,ur as aV,he as aW,Kn as aX,or as aY,Gr as aZ,cr as a_,fr as aa,Ae as ab,We as ac,Pe as ad,vt as ae,F as af,fe as ag,z as ah,ye as ai,vn as aj,_ as ak,qe as al,Ee as am,Xn as an,ie as ao,Ue as ap,_r as aq,Je as ar,xn as as,Te as at,gn as au,ir as av,ar as aw,Ve as ax,Ge as ay,Dr as az,xr as b,lr as b0,Gt as b1,hn as b2,Mr as b3,m as b4,Tn as b5,Bn as b6,jr as b7,Ce as b8,Un as b9,ee as ba,br as bb,mr as bc,gr as bd,Tr as be,qr as bf,On as bg,ct as bh,st as bi,Fr as bj,kr as bk,Zr as bl,Z as c,Pr as d,Nr as e,Cr as f,oe as g,w as h,$t as i,kn as j,Ut as k,Hn as l,Wr as m,Xe as n,Mn as o,Ar as p,Er as q,hr as r,Y as s,Vr as t,Lr as u,Yn as v,pr as w,Sr as x,Jr as y,je as z}; diff --git a/front-end/build/civit/_app/immutable/chunks/DKXk1_Gk.js b/front-end/build/civit/_app/immutable/chunks/DKXk1_Gk.js new file mode 100644 index 0000000..6e3e3cb --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/DKXk1_Gk.js @@ -0,0 +1 @@ +import{c as d,a as c}from"./kT5kkkQy.js";import{p as f,f as l,v as u,b as g}from"./DA9wTPlB.js";import{I as x,s as h,t as k,e as N,a as z,c as A}from"./B8s4VlAd.js";import{s as y,r as b,p as m,b as M}from"./Bl70acv3.js";function I(n,e){f(e,!0);let r=b(e,["$$slots","$$events","$$legacy"]);const s=[["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z"}],["path",{d:"M17 14V2"}]];x(n,y({name:"thumbs-down"},()=>r,{get iconNode(){return s},children:(i,o)=>{var a=d(),t=l(a);h(t,()=>e.children??u),c(i,a)},$$slots:{default:!0}})),g()}function T(n,e){f(e,!0);let r=b(e,["$$slots","$$events","$$legacy"]);const s=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"}]];x(n,y({name:"zap"},()=>r,{get iconNode(){return s},children:(i,o)=>{var a=d(),t=l(a);h(t,()=>e.children??u),c(i,a)},$$slots:{default:!0}})),g()}const P=k({base:"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] [&>svg]:pointer-events-none [&>svg]:size-3",variants:{variant:{default:"bg-primary text-primary-foreground [a&]:hover:bg-primary/90 border-transparent",secondary:"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 border-transparent",destructive:"bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-white",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function $(n,e){f(e,!0);let r=m(e,"ref",15,null),s=m(e,"variant",3,"default"),i=b(e,["$$slots","$$events","$$legacy","ref","href","class","variant","children"]);var o=d(),a=l(o);N(a,()=>e.href?"a":"span",!1,(t,_)=>{M(t,v=>r(v),()=>r()),z(t,v=>({"data-slot":"badge",href:e.href,class:v,...i}),[()=>A(P({variant:s()}),e.class)]);var p=d(),w=l(p);h(w,()=>e.children??u),c(_,p)}),c(n,o),g()}export{$ as B,I as T,T as Z}; diff --git a/front-end/build/civit/_app/immutable/chunks/QtwoLSaf.js b/front-end/build/civit/_app/immutable/chunks/QtwoLSaf.js new file mode 100644 index 0000000..048b8a4 --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/QtwoLSaf.js @@ -0,0 +1 @@ +import{o as yt,c as w,a as g,p as et,f as F,t as Yt,s as Jt}from"./kT5kkkQy.js";import{x as b,g as d,c as T,s as U,j as bt,u as Qt,p as M,f as m,b as A,e as W,v as R,r as K,d as tt,C as Xt,t as Zt}from"./DA9wTPlB.js";import{H as $t,J as te,j as wt,k as dt,K as _t,L as ee,M as lt,N as ft,E as At,m as vt,O as Ot,Q as Vt,R as Dt,U as Et,V as Ft,W as re,X as oe,Y as se,Z as ne,l as zt,q as Ut,_ as ie,o as ae,w as q,$ as le,a0 as de,x as j,a1 as he,a2 as Ht,a3 as Wt,P as ce,n as _,p as ue,a4 as fe,r as rt,v as Z,s as k,a as L,a5 as ge,a6 as pe,a7 as ve,f as me,I as ht,c as ot,a8 as ye,a9 as Kt,e as Lt,G as be}from"./B8s4VlAd.js";import{p as f,i as V,s as B,r as O,c as Y}from"./Bl70acv3.js";import{j as we,P as _e,k as Se,o as Ne,F as Ce,l as Pe,a as xe,C as Gt}from"./ByoH8mPx.js";import"./CUg-vmQ0.js";class Te{#t=()=>{};#e=b(()=>this.#t());constructor(t,e){let r;e!==void 0&&(r=e),this.#t=()=>{try{return r}finally{r=t()}}}get current(){return d(this.#e)}}class ke{#t;#e=b(()=>this.#t.candidateValues());#r;constructor(t){this.#t=t,this.#r=$t("",{afterMs:1e3,getWindow:this.#t.getWindow}),this.handleTypeaheadSearch=this.handleTypeaheadSearch.bind(this),this.resetTypeahead=this.resetTypeahead.bind(this)}handleTypeaheadSearch(t){if(!this.#t.enabled()||!d(this.#e).length)return;this.#r.current=this.#r.current+t;const e=this.#t.getCurrentItem(),r=d(this.#e).find(n=>n===e)??"",s=d(this.#e).map(n=>n??""),a=te(s,this.#r.current,r),o=d(this.#e).find(n=>n===a);return o&&this.#t.onMatch(o),o}resetTypeahead(){this.#r.current=""}}const Ie=[ft,Vt,Dt],Me=[lt,Et,Ft],Ae=[...Ie,...Me],Oe=ue({component:"select",parts:["trigger","content","item","viewport","scroll-up-button","scroll-down-button","group","group-label","separator","arrow","input","content-wrapper","item-text","value"]}),ct=new wt("Select.Root | Combobox.Root"),He=new wt("Select.Group | Combobox.Group"),gt=new wt("Select.Content | Combobox.Content");class qt{opts;#t=U(!1);get touchedInput(){return d(this.#t)}set touchedInput(t){T(this.#t,t,!0)}#e=U(null);get inputNode(){return d(this.#e)}set inputNode(t){T(this.#e,t,!0)}#r=U(null);get contentNode(){return d(this.#r)}set contentNode(t){T(this.#r,t,!0)}contentPresence;#o=U(null);get viewportNode(){return d(this.#o)}set viewportNode(t){T(this.#o,t,!0)}#s=U(null);get triggerNode(){return d(this.#s)}set triggerNode(t){T(this.#s,t,!0)}#n=U("");get valueId(){return d(this.#n)}set valueId(t){T(this.#n,t,!0)}#i=U(null);get highlightedNode(){return d(this.#i)}set highlightedNode(t){T(this.#i,t,!0)}#a=b(()=>this.highlightedNode?this.highlightedNode.getAttribute("data-value"):null);get highlightedValue(){return d(this.#a)}set highlightedValue(t){T(this.#a,t)}#l=b(()=>{if(this.highlightedNode)return this.highlightedNode.id});get highlightedId(){return d(this.#l)}set highlightedId(t){T(this.#l,t)}#d=b(()=>this.highlightedNode?this.highlightedNode.getAttribute("data-label"):null);get highlightedLabel(){return d(this.#d)}set highlightedLabel(t){T(this.#d,t)}isUsingKeyboard=!1;isCombobox=!1;domContext=new _t(()=>null);constructor(t){this.opts=t,this.isCombobox=t.isCombobox,this.contentPresence=new ce({ref:_(()=>this.contentNode),open:this.opts.open,onComplete:()=>{this.opts.onOpenChangeComplete.current(this.opts.open.current)}}),Qt(()=>{this.opts.open.current||this.setHighlightedNode(null)})}setHighlightedNode(t,e=!1){this.highlightedNode=t,t&&(this.isUsingKeyboard||e)&&t.scrollIntoView({block:this.opts.scrollAlignment.current})}getCandidateNodes(){const t=this.contentNode;return t?Array.from(t.querySelectorAll(`[${this.getBitsAttr("item")}]:not([data-disabled])`)):[]}setHighlightedToFirstCandidate(t=!1){this.setHighlightedNode(null);let e=this.getCandidateNodes();if(e.length){if(this.viewportNode){const r=this.viewportNode.getBoundingClientRect();e=e.filter(s=>{if(!this.viewportNode)return!1;const a=s.getBoundingClientRect();return a.rightr.left&&a.bottomr.top})}this.setHighlightedNode(e[0],t)}}getNodeByValue(t){return this.getCandidateNodes().find(r=>r.dataset.value===t)??null}setOpen(t){this.opts.open.current=t}toggleOpen(){this.opts.open.current=!this.opts.open.current}handleOpen(){this.setOpen(!0)}handleClose(){this.setHighlightedNode(null),this.setOpen(!1)}toggleMenu(){this.toggleOpen()}getBitsAttr=t=>Oe.getAttr(t,this.isCombobox?"combobox":void 0)}class Re extends qt{opts;isMulti=!1;#t=b(()=>this.opts.value.current!=="");get hasValue(){return d(this.#t)}set hasValue(t){T(this.#t,t)}#e=b(()=>this.opts.items.current.length?this.opts.items.current.find(t=>t.value===this.opts.value.current)?.label??"":"");get currentLabel(){return d(this.#e)}set currentLabel(t){T(this.#e,t)}#r=b(()=>this.opts.items.current.length?this.opts.items.current.filter(e=>!e.disabled).map(e=>e.label):[]);get candidateLabels(){return d(this.#r)}set candidateLabels(t){T(this.#r,t)}#o=b(()=>!(this.isMulti||this.opts.items.current.length===0));get dataTypeaheadEnabled(){return d(this.#o)}set dataTypeaheadEnabled(t){T(this.#o,t)}constructor(t){super(t),this.opts=t,bt(()=>{!this.opts.open.current&&this.highlightedNode&&this.setHighlightedNode(null)}),q(()=>this.opts.open.current,()=>{this.opts.open.current&&this.setInitialHighlightedNode()})}includesItem(t){return this.opts.value.current===t}toggleItem(t,e=t){const r=this.includesItem(t)?"":t;this.opts.value.current=r,r!==""&&(this.opts.inputValue.current=e)}setInitialHighlightedNode(){Wt(()=>{if(!(this.highlightedNode&&this.domContext.getDocument().contains(this.highlightedNode))){if(this.opts.value.current!==""){const t=this.getNodeByValue(this.opts.value.current);if(t){this.setHighlightedNode(t,!0);return}}this.setHighlightedToFirstCandidate(!0)}})}}class Be extends qt{opts;isMulti=!0;#t=b(()=>this.opts.value.current.length>0);get hasValue(){return d(this.#t)}set hasValue(t){T(this.#t,t)}constructor(t){super(t),this.opts=t,bt(()=>{!this.opts.open.current&&this.highlightedNode&&this.setHighlightedNode(null)}),q(()=>this.opts.open.current,()=>{this.opts.open.current&&this.setInitialHighlightedNode()})}includesItem(t){return this.opts.value.current.includes(t)}toggleItem(t,e=t){this.includesItem(t)?this.opts.value.current=this.opts.value.current.filter(r=>r!==t):this.opts.value.current=[...this.opts.value.current,t],this.opts.inputValue.current=e}setInitialHighlightedNode(){Wt(()=>{if(this.domContext&&!(this.highlightedNode&&this.domContext.getDocument().contains(this.highlightedNode))){if(this.opts.value.current.length&&this.opts.value.current[0]!==""){const t=this.getNodeByValue(this.opts.value.current[0]);if(t){this.setHighlightedNode(t,!0);return}}this.setHighlightedToFirstCandidate(!0)}})}}class Ve{static create(t){const{type:e,...r}=t,s=e==="single"?new Re(r):new Be(r);return ct.set(s)}}class St{static create(t){return new St(t,ct.get())}opts;root;attachment;#t;#e;constructor(t,e){this.opts=t,this.root=e,this.attachment=dt(t.ref,r=>this.root.triggerNode=r),this.root.domContext=new _t(t.ref),this.#t=new ee({getCurrentItem:()=>this.root.highlightedNode,onMatch:r=>{this.root.setHighlightedNode(r)},getActiveElement:()=>this.root.domContext.getActiveElement(),getWindow:()=>this.root.domContext.getWindow()}),this.#e=new ke({getCurrentItem:()=>this.root.isMulti?"":this.root.currentLabel,onMatch:r=>{if(this.root.isMulti||!this.root.opts.items.current)return;const s=this.root.opts.items.current.find(a=>a.label===r);s&&(this.root.opts.value.current=s.value)},enabled:()=>!this.root.isMulti&&this.root.dataTypeaheadEnabled,candidateValues:()=>this.root.isMulti?[]:this.root.candidateLabels,getWindow:()=>this.root.domContext.getWindow()}),this.onkeydown=this.onkeydown.bind(this),this.onpointerdown=this.onpointerdown.bind(this),this.onpointerup=this.onpointerup.bind(this),this.onclick=this.onclick.bind(this)}#r(){this.root.opts.open.current=!0,this.#e.resetTypeahead(),this.#t.resetTypeahead()}#o(t){this.#r()}#s(){const t=this.root.highlightedValue===this.root.opts.value.current;return!this.root.opts.allowDeselect.current&&t&&!this.root.isMulti?(this.root.handleClose(),!0):(this.root.highlightedValue!==null&&this.root.toggleItem(this.root.highlightedValue,this.root.highlightedLabel??void 0),!this.root.isMulti&&!t?(this.root.handleClose(),!0):!1)}onkeydown(t){if(this.root.isUsingKeyboard=!0,(t.key===lt||t.key===ft)&&t.preventDefault(),!this.root.opts.open.current){if(t.key===At||t.key===vt||t.key===ft||t.key===lt)t.preventDefault(),this.root.handleOpen();else if(!this.root.isMulti&&this.root.dataTypeaheadEnabled){this.#e.handleTypeaheadSearch(t.key);return}if(this.root.hasValue)return;const o=this.root.getCandidateNodes();if(!o.length)return;if(t.key===ft){const n=o[0];this.root.setHighlightedNode(n)}else if(t.key===lt){const n=o[o.length-1];this.root.setHighlightedNode(n)}return}if(t.key===Ot){this.root.handleClose();return}if((t.key===At||t.key===vt&&this.#t.search==="")&&!t.isComposing&&(t.preventDefault(),this.#s()))return;if(t.key===lt&&t.altKey&&this.root.handleClose(),Ae.includes(t.key)){t.preventDefault();const o=this.root.getCandidateNodes(),n=this.root.highlightedNode,c=n?o.indexOf(n):-1,h=this.root.opts.loop.current;let u;if(t.key===ft?u=re(o,c,h):t.key===lt?u=oe(o,c,h):t.key===Et?u=se(o,c,10,h):t.key===Vt?u=ne(o,c,10,h):t.key===Dt?u=o[0]:t.key===Ft&&(u=o[o.length-1]),!u)return;this.root.setHighlightedNode(u);return}const e=t.ctrlKey||t.altKey||t.metaKey,r=t.key.length===1,s=t.key===vt,a=this.root.getCandidateNodes();if(t.key!==Ot){if(!e&&(r||s)){!this.#t.handleTypeaheadSearch(t.key,a)&&s&&(t.preventDefault(),this.#s());return}this.root.highlightedNode||this.root.setHighlightedToFirstCandidate()}}onclick(t){t.currentTarget.focus()}onpointerdown(t){if(this.root.opts.disabled.current)return;if(t.pointerType==="touch")return t.preventDefault();const e=t.target;e?.hasPointerCapture(t.pointerId)&&e?.releasePointerCapture(t.pointerId),t.button===0&&t.ctrlKey===!1&&(this.root.opts.open.current===!1?this.#o(t):this.root.handleClose())}onpointerup(t){this.root.opts.disabled.current||(t.preventDefault(),t.pointerType==="touch"&&(this.root.opts.open.current===!1?this.#o(t):this.root.handleClose()))}#n=b(()=>({id:this.opts.id.current,disabled:this.root.opts.disabled.current?!0:void 0,"aria-haspopup":"listbox","aria-expanded":ie(this.root.opts.open.current),"aria-activedescendant":this.root.highlightedId,"data-state":Ut(this.root.opts.open.current),"data-disabled":zt(this.root.opts.disabled.current),"data-placeholder":this.root.hasValue?void 0:"",[this.root.getBitsAttr("trigger")]:"",onpointerdown:this.onpointerdown,onkeydown:this.onkeydown,onclick:this.onclick,onpointerup:this.onpointerup,...this.attachment}));get props(){return d(this.#n)}set props(t){T(this.#n,t)}}class Nt{static create(t){return gt.set(new Nt(t,ct.get()))}opts;root;attachment;#t=U(!1);get isPositioned(){return d(this.#t)}set isPositioned(t){T(this.#t,t,!0)}domContext;constructor(t,e){this.opts=t,this.root=e,this.attachment=dt(t.ref,r=>this.root.contentNode=r),this.domContext=new _t(this.opts.ref),this.root.domContext===null&&(this.root.domContext=this.domContext),ae(()=>{this.root.contentNode=null,this.isPositioned=!1}),q(()=>this.root.opts.open.current,()=>{this.root.opts.open.current||(this.isPositioned=!1)}),this.onpointermove=this.onpointermove.bind(this)}onpointermove(t){this.root.isUsingKeyboard=!1}#e=b(()=>we(this.root.isCombobox?"combobox":"select"));onInteractOutside=t=>{if(t.target===this.root.triggerNode||t.target===this.root.inputNode){t.preventDefault();return}this.opts.onInteractOutside.current(t),!t.defaultPrevented&&this.root.handleClose()};onEscapeKeydown=t=>{this.opts.onEscapeKeydown.current(t),!t.defaultPrevented&&this.root.handleClose()};onOpenAutoFocus=t=>{t.preventDefault()};onCloseAutoFocus=t=>{t.preventDefault()};get shouldRender(){return this.root.contentPresence.shouldRender}#r=b(()=>({open:this.root.opts.open.current}));get snippetProps(){return d(this.#r)}set snippetProps(t){T(this.#r,t)}#o=b(()=>({id:this.opts.id.current,role:"listbox","aria-multiselectable":this.root.isMulti?"true":void 0,"data-state":Ut(this.root.opts.open.current),[this.root.getBitsAttr("content")]:"",style:{display:"flex",flexDirection:"column",outline:"none",boxSizing:"border-box",pointerEvents:"auto",...d(this.#e)},onpointermove:this.onpointermove,...this.attachment}));get props(){return d(this.#o)}set props(t){T(this.#o,t)}popperProps={onInteractOutside:this.onInteractOutside,onEscapeKeydown:this.onEscapeKeydown,onOpenAutoFocus:this.onOpenAutoFocus,onCloseAutoFocus:this.onCloseAutoFocus,trapFocus:!1,loop:!1,onPlaced:()=>{this.root.opts.open.current&&(this.isPositioned=!0)}}}class Ct{static create(t){return new Ct(t,ct.get())}opts;root;attachment;#t=b(()=>this.root.includesItem(this.opts.value.current));get isSelected(){return d(this.#t)}set isSelected(t){T(this.#t,t)}#e=b(()=>this.root.highlightedValue===this.opts.value.current);get isHighlighted(){return d(this.#e)}set isHighlighted(t){T(this.#e,t)}prevHighlighted=new Te(()=>this.isHighlighted);#r=U(!1);get mounted(){return d(this.#r)}set mounted(t){T(this.#r,t,!0)}constructor(t,e){this.opts=t,this.root=e,this.attachment=dt(t.ref),q([()=>this.isHighlighted,()=>this.prevHighlighted.current],()=>{this.isHighlighted?this.opts.onHighlight.current():this.prevHighlighted.current&&this.opts.onUnhighlight.current()}),q(()=>this.mounted,()=>{this.mounted&&this.root.setInitialHighlightedNode()}),this.onpointerdown=this.onpointerdown.bind(this),this.onpointerup=this.onpointerup.bind(this),this.onpointermove=this.onpointermove.bind(this)}handleSelect(){if(this.opts.disabled.current)return;const t=this.opts.value.current===this.root.opts.value.current;if(!this.root.opts.allowDeselect.current&&t&&!this.root.isMulti){this.root.handleClose();return}this.root.toggleItem(this.opts.value.current,this.opts.label.current),!this.root.isMulti&&!t&&this.root.handleClose()}#o=b(()=>({selected:this.isSelected,highlighted:this.isHighlighted}));get snippetProps(){return d(this.#o)}set snippetProps(t){T(this.#o,t)}onpointerdown(t){t.preventDefault()}onpointerup(t){if(!(t.defaultPrevented||!this.opts.ref.current)){if(t.pointerType==="touch"&&!de){yt(this.opts.ref.current,"click",()=>{this.handleSelect(),this.root.setHighlightedNode(this.opts.ref.current)},{once:!0});return}t.preventDefault(),this.handleSelect(),t.pointerType==="touch"&&this.root.setHighlightedNode(this.opts.ref.current)}}onpointermove(t){t.pointerType!=="touch"&&this.root.highlightedNode!==this.opts.ref.current&&this.root.setHighlightedNode(this.opts.ref.current)}#s=b(()=>({id:this.opts.id.current,role:"option","aria-selected":this.root.includesItem(this.opts.value.current)?"true":void 0,"data-value":this.opts.value.current,"data-disabled":zt(this.opts.disabled.current),"data-highlighted":this.root.highlightedValue===this.opts.value.current&&!this.opts.disabled.current?"":void 0,"data-selected":this.root.includesItem(this.opts.value.current)?"":void 0,"data-label":this.opts.label.current,[this.root.getBitsAttr("item")]:"",onpointermove:this.onpointermove,onpointerdown:this.onpointerdown,onpointerup:this.onpointerup,...this.attachment}));get props(){return d(this.#s)}set props(t){T(this.#s,t)}}class Pt{static create(t){return He.set(new Pt(t,ct.get()))}opts;root;#t=U(null);get labelNode(){return d(this.#t)}set labelNode(t){T(this.#t,t,!0)}attachment;constructor(t,e){this.opts=t,this.root=e,this.attachment=dt(t.ref)}#e=b(()=>({id:this.opts.id.current,role:"group",[this.root.getBitsAttr("group")]:"","aria-labelledby":this.labelNode?.id??void 0,...this.attachment}));get props(){return d(this.#e)}set props(t){T(this.#e,t)}}class xt{static create(t){return new xt(t,ct.get())}opts;root;#t=b(()=>this.root.opts.name.current!=="");get shouldRender(){return d(this.#t)}set shouldRender(t){T(this.#t,t)}constructor(t,e){this.opts=t,this.root=e,this.onfocus=this.onfocus.bind(this)}onfocus(t){t.preventDefault(),this.root.isCombobox?this.root.inputNode?.focus():this.root.triggerNode?.focus()}#e=b(()=>({disabled:Ht(this.root.opts.disabled.current),required:Ht(this.root.opts.required.current),name:this.root.opts.name.current,value:this.opts.value.current,onfocus:this.onfocus}));get props(){return d(this.#e)}set props(t){T(this.#e,t)}}class Tt{static create(t){return new Tt(t,gt.get())}opts;content;root;attachment;#t=U(0);get prevScrollTop(){return d(this.#t)}set prevScrollTop(t){T(this.#t,t,!0)}constructor(t,e){this.opts=t,this.content=e,this.root=e.root,this.attachment=dt(t.ref,r=>{this.root.viewportNode=r})}#e=b(()=>({id:this.opts.id.current,role:"presentation",[this.root.getBitsAttr("viewport")]:"",style:{position:"relative",flex:1,overflow:"auto"},...this.attachment}));get props(){return d(this.#e)}set props(t){T(this.#e,t)}}class jt{opts;content;root;attachment;autoScrollTimer=null;userScrollTimer=-1;isUserScrolling=!1;onAutoScroll=j;#t=U(!1);get mounted(){return d(this.#t)}set mounted(t){T(this.#t,t,!0)}constructor(t,e){this.opts=t,this.content=e,this.root=e.root,this.attachment=dt(t.ref),q([()=>this.mounted],()=>{if(!this.mounted){this.isUserScrolling=!1;return}this.isUserScrolling}),bt(()=>{this.mounted||this.clearAutoScrollInterval()}),this.onpointerdown=this.onpointerdown.bind(this),this.onpointermove=this.onpointermove.bind(this),this.onpointerleave=this.onpointerleave.bind(this)}handleUserScroll(){this.content.domContext.clearTimeout(this.userScrollTimer),this.isUserScrolling=!0,this.userScrollTimer=this.content.domContext.setTimeout(()=>{this.isUserScrolling=!1},200)}clearAutoScrollInterval(){this.autoScrollTimer!==null&&(this.content.domContext.clearTimeout(this.autoScrollTimer),this.autoScrollTimer=null)}onpointerdown(t){if(this.autoScrollTimer!==null)return;const e=r=>{this.onAutoScroll(),this.autoScrollTimer=this.content.domContext.setTimeout(()=>e(r+1),this.opts.delay.current(r))};this.autoScrollTimer=this.content.domContext.setTimeout(()=>e(1),this.opts.delay.current(0))}onpointermove(t){this.onpointerdown(t)}onpointerleave(t){this.clearAutoScrollInterval()}#e=b(()=>({id:this.opts.id.current,"aria-hidden":he(!0),style:{flexShrink:0},onpointerdown:this.onpointerdown,onpointermove:this.onpointermove,onpointerleave:this.onpointerleave,...this.attachment}));get props(){return d(this.#e)}set props(t){T(this.#e,t)}}class kt{static create(t){return new kt(new jt(t,gt.get()))}scrollButtonState;content;root;#t=U(!1);get canScrollDown(){return d(this.#t)}set canScrollDown(t){T(this.#t,t,!0)}scrollIntoViewTimer=null;constructor(t){this.scrollButtonState=t,this.content=t.content,this.root=t.root,this.scrollButtonState.onAutoScroll=this.handleAutoScroll,q([()=>this.root.viewportNode,()=>this.content.isPositioned],()=>{if(!(!this.root.viewportNode||!this.content.isPositioned))return this.handleScroll(!0),yt(this.root.viewportNode,"scroll",()=>this.handleScroll())}),q([()=>this.root.opts.inputValue.current,()=>this.root.viewportNode,()=>this.content.isPositioned],()=>{!this.root.viewportNode||!this.content.isPositioned||this.handleScroll(!0)}),q(()=>this.scrollButtonState.mounted,()=>{this.scrollButtonState.mounted&&(this.scrollIntoViewTimer&&clearTimeout(this.scrollIntoViewTimer),this.scrollIntoViewTimer=le(5,()=>{this.root.highlightedNode?.scrollIntoView({block:this.root.opts.scrollAlignment.current})}))})}handleScroll=(t=!1)=>{if(t||this.scrollButtonState.handleUserScroll(),!this.root.viewportNode)return;const e=this.root.viewportNode.scrollHeight-this.root.viewportNode.clientHeight,r=Number.parseInt(getComputedStyle(this.root.viewportNode).paddingTop,10);this.canScrollDown=Math.ceil(this.root.viewportNode.scrollTop){const t=this.root.viewportNode,e=this.root.highlightedNode;!t||!e||(t.scrollTop=t.scrollTop+e.offsetHeight)};#e=b(()=>({...this.scrollButtonState.props,[this.root.getBitsAttr("scroll-down-button")]:""}));get props(){return d(this.#e)}set props(t){T(this.#e,t)}}class It{static create(t){return new It(new jt(t,gt.get()))}scrollButtonState;content;root;#t=U(!1);get canScrollUp(){return d(this.#t)}set canScrollUp(t){T(this.#t,t,!0)}constructor(t){this.scrollButtonState=t,this.content=t.content,this.root=t.root,this.scrollButtonState.onAutoScroll=this.handleAutoScroll,q([()=>this.root.viewportNode,()=>this.content.isPositioned],()=>{if(!(!this.root.viewportNode||!this.content.isPositioned))return this.handleScroll(!0),yt(this.root.viewportNode,"scroll",()=>this.handleScroll())})}handleScroll=(t=!1)=>{if(t||this.scrollButtonState.handleUserScroll(),!this.root.viewportNode)return;const e=Number.parseInt(getComputedStyle(this.root.viewportNode).paddingTop,10);this.canScrollUp=this.root.viewportNode.scrollTop-e>.1};handleAutoScroll=()=>{!this.root.viewportNode||!this.root.highlightedNode||(this.root.viewportNode.scrollTop=this.root.viewportNode.scrollTop-this.root.highlightedNode.offsetHeight)};#e=b(()=>({...this.scrollButtonState.props,[this.root.getBitsAttr("scroll-up-button")]:""}));get props(){return d(this.#e)}set props(t){T(this.#e,t)}}function mt(i,t){M(t,!0);let e=f(t,"value",15);const r=xt.create({value:_(()=>e())});var s=w(),a=m(s);{var o=n=>{fe(n,B(()=>r.props,{get autocomplete(){return t.autocomplete},get value(){return e()},set value(c){e(c)}}))};V(a,n=>{r.shouldRender&&n(o)})}g(i,s),A()}var De=F("
    "),Ee=F("
    ");function Fe(i,t){const e=et();M(t,!0);let r=f(t,"id",19,()=>rt(e)),s=f(t,"ref",15,null),a=f(t,"forceMount",3,!1),o=f(t,"side",3,"bottom"),n=f(t,"onInteractOutside",3,j),c=f(t,"onEscapeKeydown",3,j),h=f(t,"preventScroll",3,!1),u=O(t,["$$slots","$$events","$$legacy","id","ref","forceMount","side","onInteractOutside","onEscapeKeydown","children","child","preventScroll","style"]);const v=Nt.create({id:_(()=>r()),ref:_(()=>s(),x=>s(x)),onInteractOutside:_(()=>n()),onEscapeKeydown:_(()=>c())}),l=b(()=>Z(u,v.props));var p=w(),S=m(p);{var I=x=>{_e(x,B(()=>d(l),()=>v.popperProps,{get ref(){return v.opts.ref},get side(){return o()},get enabled(){return v.root.opts.open.current},get id(){return r()},get preventScroll(){return h()},forceMount:!0,get shouldRender(){return v.shouldRender},popper:(y,P)=>{let D=()=>P?.().props,C=()=>P?.().wrapperProps;const E=b(()=>Z(D(),{style:v.props.style},{style:t.style}));var z=w(),$=m(z);{var it=G=>{var Q=w(),X=m(Q);{let st=b(()=>({props:d(E),wrapperProps:C(),...v.snippetProps}));k(X,()=>t.child,()=>d(st))}g(G,Q)},J=G=>{var Q=De();L(Q,()=>({...C()}));var X=W(Q);L(X,()=>({...d(E)}));var st=W(X);k(st,()=>t.children??R),K(X),K(Q),g(G,Q)};V($,G=>{t.child?G(it):G(J,!1)})}g(y,z)},$$slots:{popper:!0}}))},H=x=>{var N=w(),y=m(N);{var P=D=>{Se(D,B(()=>d(l),()=>v.popperProps,{get ref(){return v.opts.ref},get side(){return o()},get open(){return v.root.opts.open.current},get id(){return r()},get preventScroll(){return h()},forceMount:!1,get shouldRender(){return v.shouldRender},popper:(E,z)=>{let $=()=>z?.().props,it=()=>z?.().wrapperProps;const J=b(()=>Z($(),{style:v.props.style},{style:t.style}));var G=w(),Q=m(G);{var X=at=>{var nt=w(),ut=m(nt);{let pt=b(()=>({props:d(J),wrapperProps:it(),...v.snippetProps}));k(ut,()=>t.child,()=>d(pt))}g(at,nt)},st=at=>{var nt=Ee();L(nt,()=>({...it()}));var ut=W(nt);L(ut,()=>({...d(J)}));var pt=W(ut);k(pt,()=>t.children??R),K(ut),K(nt),g(at,nt)};V(Q,at=>{t.child?at(X):at(st,!1)})}g(E,G)},$$slots:{popper:!0}}))};V(y,D=>{a()||D(P)},!0)}g(x,N)};V(S,x=>{a()?x(I):x(H,!1)})}g(i,p),A()}function Mt(i,t){M(t,!0);let e=f(t,"mounted",15,!1),r=f(t,"onMountedChange",3,j);Ne(()=>(e(!0),r()(!0),()=>{e(!1),r()(!1)})),A()}var ze=F("
    "),Ue=F(" ",1);function We(i,t){const e=et();M(t,!0);let r=f(t,"id",19,()=>rt(e)),s=f(t,"ref",15,null),a=f(t,"label",19,()=>t.value),o=f(t,"disabled",3,!1),n=f(t,"onHighlight",3,j),c=f(t,"onUnhighlight",3,j),h=O(t,["$$slots","$$events","$$legacy","id","ref","value","label","disabled","children","child","onHighlight","onUnhighlight"]);const u=Ct.create({id:_(()=>r()),ref:_(()=>s(),x=>s(x)),value:_(()=>t.value),disabled:_(()=>o()),label:_(()=>a()),onHighlight:_(()=>n()),onUnhighlight:_(()=>c())}),v=b(()=>Z(h,u.props));var l=Ue(),p=m(l);{var S=x=>{var N=w(),y=m(N);{let P=b(()=>({props:d(v),...u.snippetProps}));k(y,()=>t.child,()=>d(P))}g(x,N)},I=x=>{var N=ze();L(N,()=>({...d(v)}));var y=W(N);k(y,()=>t.children??R,()=>u.snippetProps),K(N),g(x,N)};V(p,x=>{t.child?x(S):x(I,!1)})}var H=tt(p,2);Mt(H,{get mounted(){return u.mounted},set mounted(x){u.mounted=x}}),g(i,l),A()}var Ke=F("
    ");function Le(i,t){const e=et();M(t,!0);let r=f(t,"id",19,()=>rt(e)),s=f(t,"ref",15,null),a=O(t,["$$slots","$$events","$$legacy","id","ref","children","child"]);const o=Pt.create({id:_(()=>r()),ref:_(()=>s(),l=>s(l))}),n=b(()=>Z(a,o.props));var c=w(),h=m(c);{var u=l=>{var p=w(),S=m(p);k(S,()=>t.child,()=>({props:d(n)})),g(l,p)},v=l=>{var p=Ke();L(p,()=>({...d(n)}));var S=W(p);k(S,()=>t.children??R),K(p),g(l,p)};V(h,l=>{t.child?l(u):l(v,!1)})}g(i,c),A()}var Ge=F("
    ");function qe(i,t){const e=et();M(t,!0);let r=f(t,"id",19,()=>rt(e)),s=f(t,"ref",15,null),a=O(t,["$$slots","$$events","$$legacy","id","ref","children","child"]);const o=Tt.create({id:_(()=>r()),ref:_(()=>s(),l=>s(l))}),n=b(()=>Z(a,o.props));var c=w(),h=m(c);{var u=l=>{var p=w(),S=m(p);k(S,()=>t.child,()=>({props:d(n)})),g(l,p)},v=l=>{var p=Ge();L(p,()=>({...d(n)}));var S=W(p);k(S,()=>t.children??R),K(p),g(l,p)};V(h,l=>{t.child?l(u):l(v,!1)})}g(i,c),A()}var je=F("
    "),Ye=F(" ",1);function Je(i,t){const e=et();M(t,!0);let r=f(t,"id",19,()=>rt(e)),s=f(t,"ref",15,null),a=f(t,"delay",3,()=>50),o=O(t,["$$slots","$$events","$$legacy","id","ref","delay","child","children"]);const n=kt.create({id:_(()=>r()),ref:_(()=>s(),l=>s(l)),delay:_(()=>a())}),c=b(()=>Z(o,n.props));var h=w(),u=m(h);{var v=l=>{var p=Ye(),S=m(p);Mt(S,{get mounted(){return n.scrollButtonState.mounted},set mounted(N){n.scrollButtonState.mounted=N}});var I=tt(S,2);{var H=N=>{var y=w(),P=m(y);k(P,()=>t.child,()=>({props:o})),g(N,y)},x=N=>{var y=je();L(y,()=>({...d(c)}));var P=W(y);k(P,()=>t.children??R),K(y),g(N,y)};V(I,N=>{t.child?N(H):N(x,!1)})}g(l,p)};V(u,l=>{n.canScrollDown&&l(v)})}g(i,h),A()}var Qe=F("
    "),Xe=F(" ",1);function Ze(i,t){const e=et();M(t,!0);let r=f(t,"id",19,()=>rt(e)),s=f(t,"ref",15,null),a=f(t,"delay",3,()=>50),o=O(t,["$$slots","$$events","$$legacy","id","ref","delay","child","children"]);const n=It.create({id:_(()=>r()),ref:_(()=>s(),l=>s(l)),delay:_(()=>a())}),c=b(()=>Z(o,n.props));var h=w(),u=m(h);{var v=l=>{var p=Xe(),S=m(p);Mt(S,{get mounted(){return n.scrollButtonState.mounted},set mounted(N){n.scrollButtonState.mounted=N}});var I=tt(S,2);{var H=N=>{var y=w(),P=m(y);k(P,()=>t.child,()=>({props:o})),g(N,y)},x=N=>{var y=Qe();L(y,()=>({...d(c)}));var P=W(y);k(P,()=>t.children??R),K(y),g(N,y)};V(I,N=>{t.child?N(H):N(x,!1)})}g(l,p)};V(u,l=>{n.canScrollUp&&l(v)})}g(i,h),A()}var $e=F("
    ");function tr(i,t){const e=et();M(t,!0);let r=f(t,"ref",15,null),s=f(t,"id",19,()=>rt(e)),a=O(t,["$$slots","$$events","$$legacy","children","child","ref","id"]);const o=ge.create({id:_(()=>s()),ref:_(()=>r(),l=>r(l))}),n=b(()=>Z(a,o.props));var c=w(),h=m(c);{var u=l=>{var p=w(),S=m(p);k(S,()=>t.child,()=>({props:d(n)})),g(l,p)},v=l=>{var p=$e();L(p,()=>({...d(n)}));var S=W(p);k(S,()=>t.children??R),K(p),g(l,p)};V(h,l=>{t.child?l(u):l(v,!1)})}g(i,c),A()}var er=F("
    ");function rr(i,t){const e=et();M(t,!0);let r=f(t,"ref",15,null),s=f(t,"checked",15,!1),a=f(t,"id",19,()=>rt(e)),o=f(t,"onCheckedChange",3,j),n=f(t,"disabled",3,!1),c=f(t,"onSelect",3,j),h=f(t,"closeOnSelect",3,!0),u=f(t,"indeterminate",15,!1),v=f(t,"onIndeterminateChange",3,j),l=f(t,"value",3,""),p=O(t,["$$slots","$$events","$$legacy","child","children","ref","checked","id","onCheckedChange","disabled","onSelect","closeOnSelect","indeterminate","onIndeterminateChange","value"]);const S=pe.getOr(null);S&&l()&&(S.opts.value.current.includes(l())?s(!0):s(!1)),q.pre(()=>l(),()=>{S&&l()&&(S.opts.value.current.includes(l())?s(!0):s(!1))});const I=ve.create({checked:_(()=>s(),C=>{C!==s()&&(s(C),o()(C))}),id:_(()=>a()),disabled:_(()=>n()),onSelect:_(()=>H),ref:_(()=>r(),C=>r(C)),closeOnSelect:_(()=>h()),indeterminate:_(()=>u(),C=>{C!==u()&&(u(C),v()(C))}),value:_(()=>l())},S);function H(C){c()(C),!C.defaultPrevented&&I.toggleChecked()}const x=b(()=>Z(p,I.props));var N=w(),y=m(N);{var P=C=>{var E=w(),z=m(E);k(z,()=>t.child,()=>({checked:s(),indeterminate:u(),props:d(x)})),g(C,E)},D=C=>{var E=er();L(E,()=>({...d(x)}));var z=W(E);k(z,()=>t.children??R,()=>({checked:s(),indeterminate:u()})),K(E),g(C,E)};V(y,C=>{t.child?C(P):C(D,!1)})}g(i,N),A()}var or=F(" ",1);function sr(i,t){M(t,!0);let e=f(t,"value",15),r=f(t,"onValueChange",3,j),s=f(t,"name",3,""),a=f(t,"disabled",3,!1),o=f(t,"open",15,!1),n=f(t,"onOpenChange",3,j),c=f(t,"onOpenChangeComplete",3,j),h=f(t,"loop",3,!1),u=f(t,"scrollAlignment",3,"nearest"),v=f(t,"required",3,!1),l=f(t,"items",19,()=>[]),p=f(t,"allowDeselect",3,!1);function S(){e()===void 0&&e(t.type==="single"?"":[])}S(),q.pre(()=>e(),()=>{S()});let I=U("");const H=Ve.create({type:t.type,value:_(()=>e(),C=>{e(C),r()(C)}),disabled:_(()=>a()),required:_(()=>v()),open:_(()=>o(),C=>{o(C),n()(C)}),loop:_(()=>h()),scrollAlignment:_(()=>u()),name:_(()=>s()),isCombobox:!1,items:_(()=>l()),allowDeselect:_(()=>p()),inputValue:_(()=>d(I),C=>T(I,C,!0)),onOpenChangeComplete:_(()=>c())});var x=or(),N=m(x);Ce(N,{children:(C,E)=>{var z=w(),$=m(z);k($,()=>t.children??R),g(C,z)},$$slots:{default:!0}});var y=tt(N,2);{var P=C=>{var E=w(),z=m(E);{var $=J=>{mt(J,{get autocomplete(){return t.autocomplete}})},it=J=>{var G=w(),Q=m(G);me(Q,16,()=>H.opts.value.current,X=>X,(X,st)=>{mt(X,{get value(){return st},get autocomplete(){return t.autocomplete}})}),g(J,G)};V(z,J=>{H.opts.value.current.length===0?J($):J(it,!1)})}g(C,E)},D=C=>{mt(C,{get autocomplete(){return t.autocomplete},get value(){return H.opts.value.current},set value(E){H.opts.value.current=E}})};V(y,C=>{Array.isArray(H.opts.value.current)?C(P):C(D,!1)})}g(i,x),A()}var nr=F("");function ir(i,t){const e=et();M(t,!0);let r=f(t,"id",19,()=>rt(e)),s=f(t,"ref",15,null),a=f(t,"type",3,"button"),o=O(t,["$$slots","$$events","$$legacy","id","ref","child","children","type"]);const n=St.create({id:_(()=>r()),ref:_(()=>s(),v=>s(v))}),c=b(()=>Z(o,n.props,{type:a()}));var h=w(),u=m(h);Y(u,()=>Pe,(v,l)=>{l(v,{get id(){return r()},get ref(){return n.opts.ref},children:(p,S)=>{var I=w(),H=m(I);{var x=y=>{var P=w(),D=m(P);k(D,()=>t.child,()=>({props:d(c)})),g(y,P)},N=y=>{var P=nr();L(P,()=>({...d(c)}));var D=W(P);k(D,()=>t.children??R),K(P),g(y,P)};V(H,y=>{t.child?y(x):y(N,!1)})}g(p,I)},$$slots:{default:!0}})}),g(i,h),A()}function Pr(i,t){M(t,!0);let e=O(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"m3 16 4 4 4-4"}],["path",{d:"M7 20V4"}],["path",{d:"M11 4h10"}],["path",{d:"M11 8h7"}],["path",{d:"M11 12h4"}]];ht(i,B({name:"arrow-down-wide-narrow"},()=>e,{get iconNode(){return r},children:(s,a)=>{var o=w(),n=m(o);k(n,()=>t.children??R),g(s,o)},$$slots:{default:!0}})),A()}function xr(i,t){M(t,!0);let e=O(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"M4.929 4.929 19.07 19.071"}],["circle",{cx:"12",cy:"12",r:"10"}]];ht(i,B({name:"ban"},()=>e,{get iconNode(){return r},children:(s,a)=>{var o=w(),n=m(o);k(n,()=>t.children??R),g(s,o)},$$slots:{default:!0}})),A()}function Tr(i,t){M(t,!0);let e=O(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"m14 18 4-4 4 4"}],["path",{d:"M16 2v4"}],["path",{d:"M18 22v-8"}],["path",{d:"M21 11.343V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h9"}],["path",{d:"M3 10h18"}],["path",{d:"M8 2v4"}]];ht(i,B({name:"calendar-arrow-up"},()=>e,{get iconNode(){return r},children:(s,a)=>{var o=w(),n=m(o);k(n,()=>t.children??R),g(s,o)},$$slots:{default:!0}})),A()}function ar(i,t){M(t,!0);let e=O(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"m18 15-6-6-6 6"}]];ht(i,B({name:"chevron-up"},()=>e,{get iconNode(){return r},children:(s,a)=>{var o=w(),n=m(o);k(n,()=>t.children??R),g(s,o)},$$slots:{default:!0}})),A()}function kr(i,t){M(t,!0);let e=O(t,["$$slots","$$events","$$legacy"]);const r=[["circle",{cx:"12",cy:"12",r:"1"}],["circle",{cx:"12",cy:"5",r:"1"}],["circle",{cx:"12",cy:"19",r:"1"}]];ht(i,B({name:"ellipsis-vertical"},()=>e,{get iconNode(){return r},children:(s,a)=>{var o=w(),n=m(o);k(n,()=>t.children??R),g(s,o)},$$slots:{default:!0}})),A()}function Ir(i,t){M(t,!0);let e=O(t,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"M2 5h20"}],["path",{d:"M6 12h12"}],["path",{d:"M9 19h6"}]];ht(i,B({name:"list-filter"},()=>e,{get iconNode(){return r},children:(s,a)=>{var o=w(),n=m(o);k(n,()=>t.children??R),g(s,o)},$$slots:{default:!0}})),A()}var lr=F(' ',1);function Mr(i,t){M(t,!0);let e=f(t,"ref",15,null),r=f(t,"checked",15,!1),s=f(t,"indeterminate",15,!1),a=O(t,["$$slots","$$events","$$legacy","ref","checked","indeterminate","class","children"]);var o=w(),n=m(o);{const c=(u,v)=>{let l=()=>v?.().checked,p=()=>v?.().indeterminate;var S=lr(),I=m(S),H=W(I);{var x=P=>{ye(P,{class:"size-4"})},N=P=>{{let D=b(()=>ot("size-4",!l()&&"text-transparent"));Kt(P,{get class(){return d(D)}})}};V(H,P=>{p()?P(x):P(N,!1)})}K(I);var y=tt(I,2);k(y,()=>t.children??R),g(u,S)};let h=b(()=>ot("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 ps-8 pe-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t.class));Y(n,()=>rr,(u,v)=>{v(u,B({"data-slot":"dropdown-menu-checkbox-item",get class(){return d(h)}},()=>a,{get ref(){return e()},set ref(l){e(l)},get checked(){return r()},set checked(l){r(l)},get indeterminate(){return s()},set indeterminate(l){s(l)},children:c,$$slots:{default:!0}}))})}g(i,o),A()}function Ar(i,t){M(t,!0);let e=f(t,"ref",15,null),r=O(t,["$$slots","$$events","$$legacy","ref"]);var s=w(),a=m(s);Y(a,()=>tr,(o,n)=>{n(o,B({"data-slot":"dropdown-menu-group"},()=>r,{get ref(){return e()},set ref(c){e(c)}}))}),g(i,s),A()}const dr=(i,t)=>{let{type:e,disabled:r}=t,s=null;function a(){!r&&!s&&(s=new e(i))}function o(){s&&(s.destroy(),s=null)}return a(),{update(n){(n.type!==e||n.disabled!==r)&&(o(),e=n.type,r=n.disabled,a())},destroy:o}};function Rt(i,t,e){if(i.length>0){if(i[0].target===t)return i[0].contentRect.width;if(i.length===2&&i[1].target===t)return i[1].contentRect.width}return e}class hr{constructor(t){this.container=t;const e=getComputedStyle(t),r=document.createElement("div");t.append(r);const s=new ResizeObserver(c=>{const h=Rt(c,t,this.containerWidth),u=Rt(c,r,this.frameWidth);let v=this.gap;if((v===-1||u!==this.frameWidth)&&(v=parseFloat(e.gap),isNaN(v)&&(v=0)),v===this.gap&&h===this.containerWidth&&u===this.frameWidth)return;this.containerWidth=h,this.frameWidth=u;const l=Math.round((h+v)/(u+v));if(this.columnsCount===l&&v===this.gap){n(),this.resizeHeight(),o();return}this.gap=v,this.columnsCount=l,n(),this.reflow(),o()}),a=new MutationObserver(()=>{n(),t.append(r),this.columnsCount>0&&this.reflow(!0),o()}),o=()=>{a.observe(t,{childList:!0,attributeFilter:["style"],subtree:!0})},n=()=>{a.disconnect()};this.marker=r,this.mutationObserver=a,this.resizeObserver=s,s.observe(t),s.observe(r),o()}gap=-1;frameWidth=-1;containerWidth=-1;columnsCount=-1;containerAspectRatio=-1;framesPositionsMap=new WeakMap;resizeObserver;mutationObserver;marker;resizeHeight(){const{container:t,containerAspectRatio:e}=this;e!==-1?t.style.height=`${this.containerWidth*e}px`:t.style.removeProperty("height")}getFrameAspectRatio(t){const e=parseFloat(t.style.getPropertyValue("--width"));return parseFloat(t.style.getPropertyValue("--height"))/e}getFramePosition(t,e,r){const{gap:s,columnsCount:a,frameWidth:o}=this,n=this.getFrameAspectRatio(t),c=n*o,h=r+c+(e>=a?s:0);return{aspectRatio:n,realIndex:e,virtualIndex:e,height:c,realBottom:h,virtualBottom:h,width:o}}getFramePositionAndCache(t,e,r){const s=this.getFramePosition(t,e,r);return this.framesPositionsMap.set(t,s),s}getCachedScaledFramePosition(t,e,r){const{frameWidth:s}=this,a=this.getFrameAspectRatio(t),o=this.framesPositionsMap.get(t);if(!o||o.realIndex!==e||o.virtualIndex>=r||o.aspectRatio!==a)return null;const n=s/o.width;return o.height*=n,o.realBottom*=n,o.virtualBottom*=n,o.width=s,o}destroy(){const{resizeObserver:t,mutationObserver:e,marker:r,container:s,framesPositionsMap:a}=this;t.disconnect(),e.disconnect(),r.remove();const o=s.children;s.style.removeProperty("height");for(let n=0,c,h=o.length;n=e){const S=s.get(a[h-e]),I=l-S.virtualBottom;if(I!==0){const H=I*100/p.height*-1;u.style.transform=`translateY(${H}%)`,p.virtualBottom-=I}else u.style.removeProperty("transform")}else u.style.removeProperty("transform");v=Math.max(v,p.realBottom),n=Math.max(n,p.virtualBottom)}n===-1?(r.style.removeProperty("height"),this.containerAspectRatio=-1):(r.style.height=`${n}px`,this.containerAspectRatio=n/this.containerWidth)}}function Bt(i){return i===void 0?"":typeof i=="number"?`${i}px`:i}function ur(i,t){M(t,!0);let e=f(t,"as",3,"div"),r=O(t,["$$slots","$$events","$$legacy","type","disabled","as","frameWidth","gap","style","children"]),s=b(()=>{let n="display: grid; overflow: hidden;";return t.frameWidth!==void 0&&(n+=`grid-template-columns: repeat(auto-fill, minmax(${Bt(t.frameWidth)}, 1fr));`),t.gap!==void 0&&(n+=`gap: ${Bt(t.gap)};`),t.style&&(n+=t.style),n});var a=w(),o=m(a);Lt(o,e,!1,(n,c)=>{xe(n,(v,l)=>dr?.(v,l),()=>({type:t.type,disabled:t.disabled})),L(n,()=>({style:d(s),...r}));var h=w(),u=m(h);k(u,()=>t.children??R),g(c,h)}),g(i,a),A()}function Or(i,t){let e=O(t,["$$slots","$$events","$$legacy"]);ur(i,B({get type(){return cr}},()=>e))}function Hr(i,t){let e=f(t,"as",3,"div"),r=O(t,["$$slots","$$events","$$legacy","as","width","height","style","children"]),s=b(()=>{let n=`--width: ${t.width}; --height: ${t.height}; aspect-ratio: var(--width) / var(--height);`;return t.style&&(n+=t.style),n});var a=w(),o=m(a);Lt(o,e,!1,(n,c)=>{L(n,()=>({style:d(s),...r}));var h=w(),u=m(h);k(u,()=>t.children??R),g(c,h)}),g(i,a)}function Rr(i,t="body"){let e;async function r(a){if(t=a,typeof t=="string"){if(e=document.querySelector(t),e===null&&(await Xt(),e=document.querySelector(t)),e===null)throw new Error(`No element found matching css selector: "${t}"`)}else if(t instanceof HTMLElement)e=t;else throw new TypeError(`Unknown portal target type: ${t===null?"null":typeof t}. Allowed types: string (CSS selector) or HTMLElement.`);e.appendChild(i),i.hidden=!1}function s(){i.parentNode&&i.parentNode.removeChild(i)}return r(t),{update:r,destroy:s}}function Br(i,t){M(t,!0);let e=f(t,"open",15,!1),r=f(t,"value",15),s=O(t,["$$slots","$$events","$$legacy","open","value"]);var a=w(),o=m(a);Y(o,()=>sr,(n,c)=>{c(n,B(()=>s,{get open(){return e()},set open(h){e(h)},get value(){return r()},set value(h){r(h)}}))}),g(i,a),A()}function Vr(i,t){M(t,!0);let e=f(t,"ref",15,null),r=O(t,["$$slots","$$events","$$legacy","ref"]);var s=w(),a=m(s);Y(a,()=>Le,(o,n)=>{n(o,B({"data-slot":"select-group"},()=>r,{get ref(){return e()},set ref(c){e(c)}}))}),g(i,s),A()}var fr=F(' ',1);function Dr(i,t){M(t,!0);let e=f(t,"ref",15,null),r=O(t,["$$slots","$$events","$$legacy","ref","class","value","label","children"]);var s=w(),a=m(s);{const o=(c,h)=>{let u=()=>h?.().selected,v=()=>h?.().highlighted;var l=fr(),p=m(l),S=W(p);{var I=y=>{Kt(y,{class:"size-4"})};V(S,y=>{u()&&y(I)})}K(p);var H=tt(p,2);{var x=y=>{var P=w(),D=m(P);k(D,()=>t.children,()=>({selected:u(),highlighted:v()})),g(y,P)},N=y=>{var P=Yt();Zt(()=>Jt(P,t.label||t.value)),g(y,P)};V(H,y=>{t.children?y(x):y(N,!1)})}g(c,l)};let n=b(()=>ot("data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 ps-2 pe-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t.class));Y(a,()=>We,(c,h)=>{h(c,B({get value(){return t.value},"data-slot":"select-item",get class(){return d(n)}},()=>r,{get ref(){return e()},set ref(u){e(u)},children:o,$$slots:{default:!0}}))})}g(i,s),A()}function gr(i,t){let e=O(t,["$$slots","$$events","$$legacy"]);var r=w(),s=m(r);Y(s,()=>be,(a,o)=>{o(a,B(()=>e))}),g(i,r)}function pr(i,t){M(t,!0);let e=f(t,"ref",15,null),r=O(t,["$$slots","$$events","$$legacy","ref","class"]);var s=w(),a=m(s);{let o=b(()=>ot("flex cursor-default items-center justify-center py-1",t.class));Y(a,()=>Ze,(n,c)=>{c(n,B({"data-slot":"select-scroll-up-button",get class(){return d(o)}},()=>r,{get ref(){return e()},set ref(h){e(h)},children:(h,u)=>{ar(h,{class:"size-4"})},$$slots:{default:!0}}))})}g(i,s),A()}function vr(i,t){M(t,!0);let e=f(t,"ref",15,null),r=O(t,["$$slots","$$events","$$legacy","ref","class"]);var s=w(),a=m(s);{let o=b(()=>ot("flex cursor-default items-center justify-center py-1",t.class));Y(a,()=>Je,(n,c)=>{c(n,B({"data-slot":"select-scroll-down-button",get class(){return d(o)}},()=>r,{get ref(){return e()},set ref(h){e(h)},children:(h,u)=>{Gt(h,{class:"size-4"})},$$slots:{default:!0}}))})}g(i,s),A()}var mr=F(" ",1);function Er(i,t){M(t,!0);let e=f(t,"ref",15,null),r=f(t,"sideOffset",3,4),s=f(t,"preventScroll",3,!0),a=O(t,["$$slots","$$events","$$legacy","ref","class","sideOffset","portalProps","children","preventScroll"]);gr(i,B(()=>t.portalProps,{children:(o,n)=>{var c=w(),h=m(c);{let u=b(()=>ot("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--bits-select-content-available-height) min-w-[8rem] origin-(--bits-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t.class));Y(h,()=>Fe,(v,l)=>{l(v,B({get sideOffset(){return r()},get preventScroll(){return s()},"data-slot":"select-content",get class(){return d(u)}},()=>a,{get ref(){return e()},set ref(p){e(p)},children:(p,S)=>{var I=mr(),H=m(I);pr(H,{});var x=tt(H,2);{let y=b(()=>ot("h-(--bits-select-anchor-height) w-full min-w-(--bits-select-anchor-width) scroll-my-1 p-1"));Y(x,()=>qe,(P,D)=>{D(P,{get class(){return d(y)},children:(C,E)=>{var z=w(),$=m(z);k($,()=>t.children??R),g(C,z)},$$slots:{default:!0}})})}var N=tt(x,2);vr(N,{}),g(p,I)},$$slots:{default:!0}}))})}g(o,c)},$$slots:{default:!0}})),A()}var yr=F(" ",1);function Fr(i,t){M(t,!0);let e=f(t,"ref",15,null),r=f(t,"size",3,"default"),s=O(t,["$$slots","$$events","$$legacy","ref","class","children","size"]);var a=w(),o=m(a);{let n=b(()=>ot("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none select-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t.class));Y(o,()=>ir,(c,h)=>{h(c,B({"data-slot":"select-trigger",get"data-size"(){return r()},get class(){return d(n)}},()=>s,{get ref(){return e()},set ref(u){e(u)},children:(u,v)=>{var l=yr(),p=m(l);k(p,()=>t.children??R);var S=tt(p,2);Gt(S,{class:"size-4 opacity-50"}),g(u,l)},$$slots:{default:!0}}))})}g(i,a),A()}export{Pr as A,xr as B,Tr as C,Ar as D,kr as E,Hr as F,Ir as L,Or as R,Fr as S,Mr as a,Er as b,Vr as c,Dr as d,Br as e,Rr as p}; diff --git a/front-end/build/civit/_app/immutable/chunks/kT5kkkQy.js b/front-end/build/civit/_app/immutable/chunks/kT5kkkQy.js new file mode 100644 index 0000000..b868eaf --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/kT5kkkQy.js @@ -0,0 +1,2 @@ +import{ab as Q,g as j,ac as U,X as Z,k as ee,ad as H,Y as W,K as o,J as d,a3 as v,O as te,P as B,ae as M,S as re,I as p,af as R,G as C,H as T,ag as L,ah as y,ai as $,aj as ne,ak as x,h as G,M as se,al as ie,F as D,U as A,w as ae,T as oe,am as q,an as ue,Q as le,ao as fe,ap as ce,aq as de,ar as he,A as _e,as as pe,at as N,au as ve,av as ge,aw as Ee,ax as me,ay as ye,az as F,aA as be,aB as we,aC as I,V as S,aD as Te,aE as Ae,aF as Ne,aG as ke,p as Re,aH as Se,aI as Le,b as Me}from"./DA9wTPlB.js";function Oe(t){let e=0,r=U(0),i;return()=>{Q()&&(j(r),Z(()=>(e===0&&(i=ee(()=>t(()=>H(r)))),e+=1,()=>{W(()=>{e-=1,e===0&&(i?.(),i=void 0,H(r))})})))}}var Ce=le|fe|ce;function De(t,e,r){new xe(t,e,r)}class xe{parent;#r=!1;#t;#v=d?o:null;#s;#c;#i;#n=null;#e=null;#a=null;#o=null;#u=null;#d=0;#l=0;#h=!1;#f=null;#m=Oe(()=>(this.#f=U(this.#d),()=>{this.#f=null}));constructor(e,r,i){this.#t=e,this.#s=r,this.#c=i,this.parent=v.b,this.#r=!!this.#s.pending,this.#i=te(()=>{if(v.b=this,d){const n=this.#v;B(),n.nodeType===M&&n.data===re?this.#b():this.#y()}else{var s=this.#g();try{this.#n=p(()=>i(s))}catch(n){this.error(n)}this.#l>0?this.#p():this.#r=!1}return()=>{this.#u?.remove()}},Ce),d&&(this.#t=o)}#y(){try{this.#n=p(()=>this.#c(this.#t))}catch(e){this.error(e)}this.#r=!1}#b(){const e=this.#s.pending;e&&(this.#e=p(()=>e(this.#t)),R.enqueue(()=>{var r=this.#g();this.#n=this.#_(()=>(R.ensure(),p(()=>this.#c(r)))),this.#l>0?this.#p():(C(this.#e,()=>{this.#e=null}),this.#r=!1)}))}#g(){var e=this.#t;return this.#r&&(this.#u=T(),this.#t.before(this.#u),e=this.#u),e}is_pending(){return this.#r||!!this.parent&&this.parent.is_pending()}has_pending_snippet(){return!!this.#s.pending}#_(e){var r=v,i=x,s=G;L(this.#i),y(this.#i),$(this.#i.ctx);try{return e()}catch(n){return ne(n),null}finally{L(r),y(i),$(s)}}#p(){const e=this.#s.pending;this.#n!==null&&(this.#o=document.createDocumentFragment(),this.#o.append(this.#u),se(this.#n,this.#o)),this.#e===null&&(this.#e=p(()=>e(this.#t)))}#E(e){if(!this.has_pending_snippet()){this.parent&&this.parent.#E(e);return}this.#l+=e,this.#l===0&&(this.#r=!1,this.#e&&C(this.#e,()=>{this.#e=null}),this.#o&&(this.#t.before(this.#o),this.#o=null))}update_pending_count(e){this.#E(e),this.#d+=e,this.#f&&ie(this.#f,this.#d)}get_effect_pending(){return this.#m(),j(this.#f)}error(e){var r=this.#s.onerror;let i=this.#s.failed;if(this.#h||!r&&!i)throw e;this.#n&&(D(this.#n),this.#n=null),this.#e&&(D(this.#e),this.#e=null),this.#a&&(D(this.#a),this.#a=null),d&&(A(this.#v),ae(),A(oe()));var s=!1,n=!1;const a=()=>{if(s){de();return}s=!0,n&&ue(),R.ensure(),this.#d=0,this.#a!==null&&C(this.#a,()=>{this.#a=null}),this.#r=this.has_pending_snippet(),this.#n=this.#_(()=>(this.#h=!1,p(()=>this.#c(this.#t)))),this.#l>0?this.#p():this.#r=!1};var c=x;try{y(null),n=!0,r?.(e,a),n=!1}catch(u){q(u,this.#i&&this.#i.parent)}finally{y(c)}i&&W(()=>{this.#a=this.#_(()=>{R.ensure(),this.#h=!0;try{return p(()=>{i(this.#t,()=>e,()=>a)})}catch(u){return q(u,this.#i.parent),null}finally{this.#h=!1}})})}}function Ye(t){return t.endsWith("capture")&&t!=="gotpointercapture"&&t!=="lostpointercapture"}const Fe=["beforeinput","click","change","dblclick","contextmenu","focusin","focusout","input","keydown","keyup","mousedown","mousemove","mouseout","mouseover","mouseup","pointerdown","pointermove","pointerout","pointerover","pointerup","touchend","touchmove","touchstart"];function je(t){return Fe.includes(t)}const Ie={formnovalidate:"formNoValidate",ismap:"isMap",nomodule:"noModule",playsinline:"playsInline",readonly:"readOnly",defaultvalue:"defaultValue",defaultchecked:"defaultChecked",srcobject:"srcObject",novalidate:"noValidate",allowfullscreen:"allowFullscreen",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback"};function Ue(t){return t=t.toLowerCase(),Ie[t]??t}const Pe=["touchstart","touchmove"];function Ve(t){return Pe.includes(t)}const We=["textarea","script","style","title"];function Ge(t){return We.includes(t)}const X=new Set,P=new Set;function Xe(t){if(!d)return;t.removeAttribute("onload"),t.removeAttribute("onerror");const e=t.__e;e!==void 0&&(t.__e=void 0,queueMicrotask(()=>{t.isConnected&&t.dispatchEvent(e)}))}function z(t,e,r,i={}){function s(n){if(i.capture||w.call(e,n),!n.cancelBubble)return he(()=>r?.call(this,n))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?W(()=>{e.addEventListener(t,s,i)}):e.addEventListener(t,s,i),s}function ze(t,e,r,i={}){var s=z(e,t,r,i);return()=>{t.removeEventListener(e,s,i)}}function Je(t,e,r,i,s){var n={capture:i,passive:s},a=z(t,e,r,n);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&pe(()=>{e.removeEventListener(t,a,n)})}function Ke(t){for(var e=0;e{throw k});throw l}}finally{t.__root=e,delete t.currentTarget,y(O),L(_)}}}function J(t){var e=document.createElement("template");return e.innerHTML=t.replaceAll("",""),e.content}function h(t,e){var r=v;r.nodes_start===null&&(r.nodes_start=t,r.nodes_end=e)}function Qe(t,e){var r=(e&ge)!==0,i=(e&Ee)!==0,s,n=!t.startsWith("");return()=>{if(d)return h(o,null),o;s===void 0&&(s=J(n?t:""+t),r||(s=N(s)));var a=i||ve?document.importNode(s,!0):s.cloneNode(!0);if(r){var c=N(a),u=a.lastChild;h(c,u)}else h(a,a);return a}}function Be(t,e,r="svg"){var i=!t.startsWith(""),s=`<${r}>${i?t:""+t}`,n;return()=>{if(d)return h(o,null),o;if(!n){var a=J(s),c=N(a);n=N(c)}var u=n.cloneNode(!0);return h(u,u),u}}function Ze(t,e){return Be(t,e,"svg")}function et(t=""){if(!d){var e=T(t+"");return h(e,e),e}var r=o;return r.nodeType!==ye&&(r.before(r=T()),A(r)),h(r,r),r}function tt(){if(d)return h(o,null),o;var t=document.createDocumentFragment(),e=document.createComment(""),r=T();return t.append(e,r),h(e,r),t}function rt(t,e){if(d){var r=v;((r.f&me)===0||r.nodes_end===null)&&(r.nodes_end=o),B();return}t!==null&&t.before(e)}function nt(){if(d&&o&&o.nodeType===M&&o.textContent?.startsWith("$")){const t=o.textContent.substring(1);return B(),t}return(window.__svelte??={}).uid??=1,`c${window.__svelte.uid++}`}function st(t,e){var r=e==null?"":typeof e=="object"?e+"":e;r!==(t.__t??=t.nodeValue)&&(t.__t=r,t.nodeValue=r+"")}function He(t,e){return K(t,e)}function it(t,e){F(),e.intro=e.intro??!1;const r=e.target,i=d,s=o;try{for(var n=N(r);n&&(n.nodeType!==M||n.data!==be);)n=we(n);if(!n)throw I;S(!0),A(n);const a=K(t,{...e,anchor:n});return S(!1),a}catch(a){if(a instanceof Error&&a.message.split(` +`).some(c=>c.startsWith("https://svelte.dev/e/")))throw a;return a!==I&&console.warn("Failed to hydrate: ",a),e.recover===!1&&Te(),F(),Ae(r),S(!1),He(t,e)}finally{S(i),A(s)}}const m=new Map;function K(t,{target:e,anchor:r,props:i={},events:s,context:n,intro:a=!0}){F();var c=new Set,u=_=>{for(var l=0;l<_.length;l++){var f=_[l];if(!c.has(f)){c.add(f);var E=Ve(f);e.addEventListener(f,w,{passive:E});var b=m.get(f);b===void 0?(document.addEventListener(f,w,{passive:E}),m.set(f,1)):m.set(f,b+1)}}};u(Ne(X)),P.add(u);var g=void 0,O=ke(()=>{var _=r??e.appendChild(T());return De(_,{pending:()=>{}},l=>{if(n){Re({});var f=G;f.c=n}if(s&&(i.$$events=s),d&&h(l,null),g=t(l,i)||{},d&&(v.nodes_end=o,o===null||o.nodeType!==M||o.data!==Se))throw Le(),I;n&&Me()}),()=>{for(var l of c){e.removeEventListener(l,w);var f=m.get(l);--f===0?(document.removeEventListener(l,w),m.delete(l)):m.set(l,f)}P.delete(u),_!==r&&_.parentNode?.removeChild(_)}});return V.set(g,O),g}let V=new WeakMap;function at(t,e){const r=V.get(t);return r?(V.delete(t),r(e)):Promise.resolve()}const $e="5";typeof window<"u"&&((window.__svelte??={}).v??=new Set).add($e);export{rt as a,Oe as b,tt as c,Ke as d,h as e,Qe as f,Ye as g,it as h,Ge as i,z as j,je as k,Ze as l,He as m,Ue as n,ze as o,nt as p,J as q,Je as r,st as s,et as t,at as u,Xe as v}; diff --git a/front-end/build/civit/_app/immutable/chunks/l9gpCeXC.js b/front-end/build/civit/_app/immutable/chunks/l9gpCeXC.js new file mode 100644 index 0000000..0f105b4 --- /dev/null +++ b/front-end/build/civit/_app/immutable/chunks/l9gpCeXC.js @@ -0,0 +1 @@ +import{s as D,a as bt,g as l,c as p,k as yt,x as _,p as m,f as g,b,e as N,v as C,r as B,d as st,w as Et}from"./DA9wTPlB.js";import{p as nt,c as P,a as d,f as I}from"./kT5kkkQy.js";import{p as c,i as K,r as y,s as E,c as G,b as Z}from"./Bl70acv3.js";import{j as At,k as et,l as rt,m as Ft,E as zt,w as dt,P as wt,n as x,o as Rt,p as jt,q as Kt,r as it,s as v,a as A,v as Y,x as Q,F as Gt,y as Yt,D as Zt,T as Ht,z as Pt,G as Ut,c as R,I as Ct}from"./B8s4VlAd.js";function ke(...i){return i.filter(Boolean).join(" ")}const qt=typeof document<"u";let _t=0;class Wt{#t=D(bt([]));get toasts(){return l(this.#t)}set toasts(t){p(this.#t,t,!0)}#e=D(bt([]));get heights(){return l(this.#e)}set heights(t){p(this.#e,t,!0)}#o=t=>{const e=this.toasts.findIndex(s=>s.id===t);return e===-1?null:e};addToast=t=>{qt&&this.toasts.unshift(t)};updateToast=({id:t,data:e,type:s,message:o})=>{const n=this.toasts.findIndex(a=>a.id===t),r=this.toasts[n];this.toasts[n]={...r,...e,id:t,title:o,type:s,updated:!0}};create=t=>{const{message:e,...s}=t,o=typeof t?.id=="number"||t.id&&t.id?.length>0?t.id:_t++,n=t.dismissable===void 0?!0:t.dismissable,r=t.type===void 0?"default":t.type;return yt(()=>{this.toasts.find(f=>f.id===o)?this.updateToast({id:o,data:t,type:r,message:e,dismissable:n}):this.addToast({...s,id:o,title:e,dismissable:n,type:r})}),o};dismiss=t=>(yt(()=>{if(t===void 0){this.toasts=this.toasts.map(s=>({...s,dismiss:!0}));return}const e=this.toasts.findIndex(s=>s.id===t);this.toasts[e]&&(this.toasts[e]={...this.toasts[e],dismiss:!0})}),t);remove=t=>{if(t===void 0){this.toasts=[];return}const e=this.#o(t);if(e!==null)return this.toasts.splice(e,1),t};message=(t,e)=>this.create({...e,type:"default",message:t});error=(t,e)=>this.create({...e,type:"error",message:t});success=(t,e)=>this.create({...e,type:"success",message:t});info=(t,e)=>this.create({...e,type:"info",message:t});warning=(t,e)=>this.create({...e,type:"warning",message:t});loading=(t,e)=>this.create({...e,type:"loading",message:t});promise=(t,e)=>{if(!e)return;let s;e.loading!==void 0&&(s=this.create({...e,promise:t,type:"loading",message:typeof e.loading=="string"?e.loading:e.loading()}));const o=t instanceof Promise?t:t();let n=s!==void 0;return o.then(r=>{if(typeof r=="object"&&r&&"ok"in r&&typeof r.ok=="boolean"&&!r.ok){n=!1;const a=Xt(r);this.create({id:s,type:"error",message:a})}else if(e.success!==void 0){n=!1;const a=typeof e.success=="function"?e.success(r):e.success;this.create({id:s,type:"success",message:a})}}).catch(r=>{if(e.error!==void 0){n=!1;const a=typeof e.error=="function"?e.error(r):e.error;this.create({id:s,type:"error",message:a})}}).finally(()=>{n&&(this.dismiss(s),s=void 0),e.finally?.()}),s};custom=(t,e)=>{const s=e?.id||_t++;return this.create({component:t,id:s,...e}),s};removeHeight=t=>{this.heights=this.heights.filter(e=>e.toastId!==t)};setHeight=t=>{const e=this.#o(t.toastId);if(e===null){this.heights.push(t);return}this.heights[e]=t};reset=()=>{this.toasts=[],this.heights=[]}}function Xt(i){return i&&typeof i=="object"&&"status"in i?`HTTP error! Status: ${i.status}`:`Error! ${i}`}const T=new Wt;function Jt(i,t){return T.create({message:i,...t})}class Ne{#t=_(()=>T.toasts.filter(t=>!t.dismiss));get toasts(){return l(this.#t)}}const Lt=Jt,Be=Object.assign(Lt,{success:T.success,info:T.info,warning:T.warning,error:T.error,custom:T.custom,message:T.message,promise:T.promise,dismiss:T.dismiss,loading:T.loading,getActiveToasts:()=>T.toasts.filter(i=>!i.dismiss)}),Qt=jt({component:"dialog",parts:["content","trigger","overlay","title","description","close","cancel","action"]}),X=new At("Dialog.Root | AlertDialog.Root");class ut{static create(t){const e=X.getOr(null);return X.set(new ut(t,e))}opts;#t=D(null);get triggerNode(){return l(this.#t)}set triggerNode(t){p(this.#t,t,!0)}#e=D(null);get contentNode(){return l(this.#e)}set contentNode(t){p(this.#e,t,!0)}#o=D(null);get overlayNode(){return l(this.#o)}set overlayNode(t){p(this.#o,t,!0)}#s=D(null);get descriptionNode(){return l(this.#s)}set descriptionNode(t){p(this.#s,t,!0)}#r=D(void 0);get contentId(){return l(this.#r)}set contentId(t){p(this.#r,t,!0)}#n=D(void 0);get titleId(){return l(this.#n)}set titleId(t){p(this.#n,t,!0)}#i=D(void 0);get triggerId(){return l(this.#i)}set triggerId(t){p(this.#i,t,!0)}#a=D(void 0);get descriptionId(){return l(this.#a)}set descriptionId(t){p(this.#a,t,!0)}#l=D(null);get cancelNode(){return l(this.#l)}set cancelNode(t){p(this.#l,t,!0)}#c=D(0);get nestedOpenCount(){return l(this.#c)}set nestedOpenCount(t){p(this.#c,t,!0)}depth;parent;contentPresence;overlayPresence;constructor(t,e){this.opts=t,this.parent=e,this.depth=e?e.depth+1:0,this.handleOpen=this.handleOpen.bind(this),this.handleClose=this.handleClose.bind(this),this.contentPresence=new wt({ref:x(()=>this.contentNode),open:this.opts.open,enabled:!0,onComplete:()=>{this.opts.onOpenChangeComplete.current(this.opts.open.current)}}),this.overlayPresence=new wt({ref:x(()=>this.overlayNode),open:this.opts.open,enabled:!0}),dt(()=>this.opts.open.current,s=>{this.parent&&(s?this.parent.incrementNested():this.parent.decrementNested())},{lazy:!0}),Rt(()=>{this.opts.open.current&&this.parent?.decrementNested()})}handleOpen(){this.opts.open.current||(this.opts.open.current=!0)}handleClose(){this.opts.open.current&&(this.opts.open.current=!1)}getBitsAttr=t=>Qt.getAttr(t,this.opts.variant.current);incrementNested(){this.nestedOpenCount++,this.parent?.incrementNested()}decrementNested(){this.nestedOpenCount!==0&&(this.nestedOpenCount--,this.parent?.decrementNested())}#d=_(()=>({"data-state":Kt(this.opts.open.current)}));get sharedProps(){return l(this.#d)}set sharedProps(t){p(this.#d,t)}}class ht{static create(t){return new ht(t,X.get())}opts;root;attachment;constructor(t,e){this.opts=t,this.root=e,this.attachment=et(this.opts.ref),this.onclick=this.onclick.bind(this),this.onkeydown=this.onkeydown.bind(this)}onclick(t){this.opts.disabled.current||t.button>0||this.root.handleClose()}onkeydown(t){this.opts.disabled.current||(t.key===Ft||t.key===zt)&&(t.preventDefault(),this.root.handleClose())}#t=_(()=>({id:this.opts.id.current,[this.root.getBitsAttr(this.opts.variant.current)]:"",onclick:this.onclick,onkeydown:this.onkeydown,disabled:this.opts.disabled.current?!0:void 0,tabindex:0,...this.root.sharedProps,...this.attachment}));get props(){return l(this.#t)}set props(t){p(this.#t,t)}}class ft{static create(t){return new ft(t,X.get())}opts;root;attachment;constructor(t,e){this.opts=t,this.root=e,this.root.titleId=this.opts.id.current,this.attachment=et(this.opts.ref),dt.pre(()=>this.opts.id.current,s=>{this.root.titleId=s})}#t=_(()=>({id:this.opts.id.current,role:"heading","aria-level":this.opts.level.current,[this.root.getBitsAttr("title")]:"",...this.root.sharedProps,...this.attachment}));get props(){return l(this.#t)}set props(t){p(this.#t,t)}}class It{static create(t){return new It(t,X.get())}opts;root;attachment;constructor(t,e){this.opts=t,this.root=e,this.root.descriptionId=this.opts.id.current,this.attachment=et(this.opts.ref,s=>{this.root.descriptionNode=s}),dt.pre(()=>this.opts.id.current,s=>{this.root.descriptionId=s})}#t=_(()=>({id:this.opts.id.current,[this.root.getBitsAttr("description")]:"",...this.root.sharedProps,...this.attachment}));get props(){return l(this.#t)}set props(t){p(this.#t,t)}}class gt{static create(t){return new gt(t,X.get())}opts;root;attachment;constructor(t,e){this.opts=t,this.root=e,this.attachment=et(this.opts.ref,s=>{this.root.contentNode=s,this.root.contentId=s?.id})}#t=_(()=>({open:this.root.opts.open.current}));get snippetProps(){return l(this.#t)}set snippetProps(t){p(this.#t,t)}#e=_(()=>({id:this.opts.id.current,role:this.root.opts.variant.current==="alert-dialog"?"alertdialog":"dialog","aria-modal":"true","aria-describedby":this.root.descriptionId,"aria-labelledby":this.root.titleId,[this.root.getBitsAttr("content")]:"",style:{pointerEvents:"auto",outline:this.root.opts.variant.current==="alert-dialog"?"none":void 0,"--bits-dialog-depth":this.root.depth,"--bits-dialog-nested-count":this.root.nestedOpenCount,contain:"layout style paint"},tabindex:this.root.opts.variant.current==="alert-dialog"?-1:void 0,"data-nested-open":rt(this.root.nestedOpenCount>0),"data-nested":rt(this.root.parent!==null),...this.root.sharedProps,...this.attachment}));get props(){return l(this.#e)}set props(t){p(this.#e,t)}get shouldRender(){return this.root.contentPresence.shouldRender}}class pt{static create(t){return new pt(t,X.get())}opts;root;attachment;constructor(t,e){this.opts=t,this.root=e,this.attachment=et(this.opts.ref,s=>this.root.overlayNode=s)}#t=_(()=>({open:this.root.opts.open.current}));get snippetProps(){return l(this.#t)}set snippetProps(t){p(this.#t,t)}#e=_(()=>({id:this.opts.id.current,[this.root.getBitsAttr("overlay")]:"",style:{pointerEvents:"auto","--bits-dialog-depth":this.root.depth,"--bits-dialog-nested-count":this.root.nestedOpenCount},"data-nested-open":rt(this.root.nestedOpenCount>0),"data-nested":rt(this.root.parent!==null),...this.root.sharedProps,...this.attachment}));get props(){return l(this.#e)}set props(t){p(this.#e,t)}get shouldRender(){return this.root.overlayPresence.shouldRender}}var Vt=I("
    ");function $t(i,t){const e=nt();m(t,!0);let s=c(t,"id",19,()=>it(e)),o=c(t,"ref",15,null),n=c(t,"level",3,2),r=y(t,["$$slots","$$events","$$legacy","id","ref","child","children","level"]);const a=ft.create({id:x(()=>s()),level:x(()=>n()),ref:x(()=>o(),h=>o(h))}),f=_(()=>Y(r,a.props));var M=P(),F=g(M);{var S=h=>{var u=P(),w=g(u);v(w,()=>t.child,()=>({props:l(f)})),d(h,u)},O=h=>{var u=Vt();A(u,()=>({...l(f)}));var w=N(u);v(w,()=>t.children??C),B(u),d(h,u)};K(F,h=>{t.child?h(S):h(O,!1)})}d(i,M),b()}var te=I("
    ");function ee(i,t){const e=nt();m(t,!0);let s=c(t,"id",19,()=>it(e)),o=c(t,"forceMount",3,!1),n=c(t,"ref",15,null),r=y(t,["$$slots","$$events","$$legacy","id","forceMount","child","children","ref"]);const a=pt.create({id:x(()=>s()),ref:x(()=>n(),O=>n(O))}),f=_(()=>Y(r,a.props));var M=P(),F=g(M);{var S=O=>{var h=P(),u=g(h);{var w=j=>{var z=P(),k=g(z);{let U=_(()=>({props:Y(l(f)),...a.snippetProps}));v(k,()=>t.child,()=>l(U))}d(j,z)},H=j=>{var z=te();A(z,U=>({...U}),[()=>Y(l(f))]);var k=N(z);v(k,()=>t.children??C,()=>a.snippetProps),B(z),d(j,z)};K(u,j=>{t.child?j(w):j(H,!1)})}d(O,h)};K(F,O=>{(a.shouldRender||o())&&O(S)})}d(i,M),b()}function oe(i,t){m(t,!0);let e=c(t,"open",15,!1),s=c(t,"onOpenChange",3,Q),o=c(t,"onOpenChangeComplete",3,Q);ut.create({variant:x(()=>"dialog"),open:x(()=>e(),a=>{e(a),s()(a)}),onOpenChangeComplete:x(()=>o())});var n=P(),r=g(n);v(r,()=>t.children??C),d(i,n),b()}var se=I("");function Ot(i,t){const e=nt();m(t,!0);let s=c(t,"id",19,()=>it(e)),o=c(t,"ref",15,null),n=c(t,"disabled",3,!1),r=y(t,["$$slots","$$events","$$legacy","children","child","id","ref","disabled"]);const a=ht.create({variant:x(()=>"close"),id:x(()=>s()),ref:x(()=>o(),h=>o(h)),disabled:x(()=>!!n())}),f=_(()=>Y(r,a.props));var M=P(),F=g(M);{var S=h=>{var u=P(),w=g(u);v(w,()=>t.child,()=>({props:l(f)})),d(h,u)},O=h=>{var u=se();A(u,()=>({...l(f)}));var w=N(u);v(w,()=>t.children??C),B(u),d(h,u)};K(F,h=>{t.child?h(S):h(O,!1)})}d(i,M),b()}var re=I(" ",1),ne=I("
    ",1);function ie(i,t){const e=nt();m(t,!0);let s=c(t,"id",19,()=>it(e)),o=c(t,"ref",15,null),n=c(t,"forceMount",3,!1),r=c(t,"onCloseAutoFocus",3,Q),a=c(t,"onOpenAutoFocus",3,Q),f=c(t,"onEscapeKeydown",3,Q),M=c(t,"onInteractOutside",3,Q),F=c(t,"trapFocus",3,!0),S=c(t,"preventScroll",3,!0),O=c(t,"restoreScrollDelay",3,null),h=y(t,["$$slots","$$events","$$legacy","id","children","child","ref","forceMount","onCloseAutoFocus","onOpenAutoFocus","onEscapeKeydown","onInteractOutside","trapFocus","preventScroll","restoreScrollDelay"]);const u=gt.create({id:x(()=>s()),ref:x(()=>o(),k=>o(k))}),w=_(()=>Y(h,u.props));var H=P(),j=g(H);{var z=k=>{Gt(k,{get ref(){return u.opts.ref},loop:!0,get trapFocus(){return F()},get enabled(){return u.root.opts.open.current},get onOpenAutoFocus(){return a()},get onCloseAutoFocus(){return r()},focusScope:(at,lt)=>{let ot=()=>lt?.().props;Yt(at,E(()=>l(w),{get enabled(){return u.root.opts.open.current},get ref(){return u.opts.ref},onEscapeKeydown:J=>{f()(J),!J.defaultPrevented&&u.root.handleClose()},children:(J,Nt)=>{Zt(J,E(()=>l(w),{get ref(){return u.opts.ref},get enabled(){return u.root.opts.open.current},onInteractOutside:q=>{M()(q),!q.defaultPrevented&&u.root.handleClose()},children:(q,vt)=>{Ht(q,E(()=>l(w),{get ref(){return u.opts.ref},get enabled(){return u.root.opts.open.current},children:(Bt,Me)=>{var mt=P(),St=g(mt);{var Dt=L=>{var V=re(),$=g(V);{var tt=W=>{Pt(W,{get preventScroll(){return S()},get restoreScrollDelay(){return O()}})};K($,W=>{u.root.opts.open.current&&W(tt)})}var ct=st($,2);{let W=_(()=>({props:Y(l(w),ot()),...u.snippetProps}));v(ct,()=>t.child,()=>l(W))}d(L,V)},Tt=L=>{var V=ne(),$=g(V);Pt($,{get preventScroll(){return S()}});var tt=st($,2);A(tt,W=>({...W}),[()=>Y(l(w),ot())]);var ct=N(tt);v(ct,()=>t.children??C),B(tt),d(L,V)};K(St,L=>{t.child?L(Dt):L(Tt,!1)})}d(Bt,mt)},$$slots:{default:!0}}))},$$slots:{default:!0}}))},$$slots:{default:!0}}))},$$slots:{focusScope:!0}})};K(j,k=>{(u.shouldRender||n())&&k(z)})}d(i,H),b()}function Se(i,t){m(t,!0);let e=c(t,"open",15,!1),s=y(t,["$$slots","$$events","$$legacy","open"]);var o=P(),n=g(o);G(n,()=>oe,(r,a)=>{a(r,E(()=>s,{get open(){return e()},set open(f){e(f)}}))}),d(i,o),b()}function ae(i,t){let e=y(t,["$$slots","$$events","$$legacy"]);var s=P(),o=g(s);G(o,()=>Ut,(n,r)=>{r(n,E(()=>e))}),d(i,s)}function De(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class"]);var o=P(),n=g(o);{let r=_(()=>R("text-lg leading-none font-semibold",t.class));G(n,()=>$t,(a,f)=>{f(a,E({"data-slot":"dialog-title",get class(){return l(r)}},()=>s,{get ref(){return e()},set ref(M){e(M)}}))})}d(i,o),b()}var le=I("
    ");function Te(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=le();A(o,r=>({"data-slot":"dialog-footer",class:r,...s}),[()=>R("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t.class)]);var n=N(o);v(n,()=>t.children??C),B(o),Z(o,r=>e(r),()=>e()),d(i,o),b()}var ce=I("
    ");function Ee(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=ce();A(o,r=>({"data-slot":"dialog-header",class:r,...s}),[()=>R("flex flex-col gap-2 text-center sm:text-start",t.class)]);var n=N(o);v(n,()=>t.children??C),B(o),Z(o,r=>e(r),()=>e()),d(i,o),b()}function de(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class"]);var o=P(),n=g(o);{let r=_(()=>R("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t.class));G(n,()=>ee,(a,f)=>{f(a,E({"data-slot":"dialog-overlay",get class(){return l(r)}},()=>s,{get ref(){return e()},set ref(M){e(M)}}))})}d(i,o),b()}function ue(i,t){m(t,!0);let e=y(t,["$$slots","$$events","$$legacy"]);const s=[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]];Ct(i,E({name:"x"},()=>e,{get iconNode(){return s},children:(o,n)=>{var r=P(),a=g(r);v(a,()=>t.children??C),d(o,r)},$$slots:{default:!0}})),b()}var he=I(' Close',1),fe=I(" ",1),ge=I(" ",1);function Ae(i,t){m(t,!0);let e=c(t,"ref",15,null),s=c(t,"showCloseButton",3,!0),o=y(t,["$$slots","$$events","$$legacy","ref","class","portalProps","children","showCloseButton"]);ae(i,E(()=>t.portalProps,{children:(n,r)=>{var a=ge(),f=g(a);G(f,()=>de,(F,S)=>{S(F,{})});var M=st(f,2);{let F=_(()=>R("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",t.class));G(M,()=>ie,(S,O)=>{O(S,E({"data-slot":"dialog-content",get class(){return l(F)}},()=>o,{get ref(){return e()},set ref(h){e(h)},children:(h,u)=>{var w=fe(),H=g(w);v(H,()=>t.children??C);var j=st(H,2);{var z=k=>{var U=P(),at=g(U);G(at,()=>Ot,(lt,ot)=>{ot(lt,{class:"ring-offset-background focus:ring-ring absolute end-4 top-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:(J,Nt)=>{var q=he(),vt=g(q);ue(vt,{}),Et(2),d(J,q)},$$slots:{default:!0}})}),d(k,U)};K(j,k=>{s()&&k(z)})}d(h,w)},$$slots:{default:!0}}))})}d(n,a)},$$slots:{default:!0}})),b()}function Fe(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref"]);var o=P(),n=g(o);G(n,()=>Ot,(r,a)=>{a(r,E({"data-slot":"dialog-close"},()=>s,{get ref(){return e()},set ref(f){e(f)}}))}),d(i,o),b()}var pe=I('
    ');function ze(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=pe(),n=N(o);A(n,a=>({"data-slot":"table",class:a,...s}),[()=>R("w-full caption-bottom text-sm",t.class)]);var r=N(n);v(r,()=>t.children??C),B(n),Z(n,a=>e(a),()=>e()),B(o),d(i,o),b()}var ve=I("");function Re(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=ve();A(o,r=>({"data-slot":"table-body",class:r,...s}),[()=>R("[&_tr:last-child]:border-0",t.class)]);var n=N(o);v(n,()=>t.children??C),B(o),Z(o,r=>e(r),()=>e()),d(i,o),b()}var me=I("");function je(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=me();A(o,r=>({"data-slot":"table-cell",class:r,...s}),[()=>R("bg-clip-padding p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pe-0",t.class)]);var n=N(o);v(n,()=>t.children??C),B(o),Z(o,r=>e(r),()=>e()),d(i,o),b()}var be=I("");function Ke(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=be();A(o,r=>({"data-slot":"table-head",class:r,...s}),[()=>R("text-foreground h-10 bg-clip-padding px-2 text-start align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pe-0",t.class)]);var n=N(o);v(n,()=>t.children??C),B(o),Z(o,r=>e(r),()=>e()),d(i,o),b()}var ye=I("");function Ge(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=ye();A(o,r=>({"data-slot":"table-header",class:r,...s}),[()=>R("[&_tr]:border-b",t.class)]);var n=N(o);v(n,()=>t.children??C),B(o),Z(o,r=>e(r),()=>e()),d(i,o),b()}var we=I("");function Ye(i,t){m(t,!0);let e=c(t,"ref",15,null),s=y(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=we();A(o,r=>({"data-slot":"table-row",class:r,...s}),[()=>R("hover:[&,&>svelte-css-wrapper]:[&>th,td]:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",t.class)]);var n=N(o);v(n,()=>t.children??C),B(o),Z(o,r=>e(r),()=>e()),d(i,o),b()}let kt={};const Mt=new WeakMap,xt={metric:[{from:0,to:1e3,unit:"B",long:"bytes"},{from:1e3,to:1e6,unit:"kB",long:"kilobytes"},{from:1e6,to:1e9,unit:"MB",long:"megabytes"},{from:1e9,to:1e12,unit:"GB",long:"gigabytes"},{from:1e12,to:1e15,unit:"TB",long:"terabytes"},{from:1e15,to:1e18,unit:"PB",long:"petabytes"},{from:1e18,to:1e21,unit:"EB",long:"exabytes"},{from:1e21,to:1e24,unit:"ZB",long:"zettabytes"},{from:1e24,to:1e27,unit:"YB",long:"yottabytes"}],metric_octet:[{from:0,to:1e3,unit:"o",long:"octets"},{from:1e3,to:1e6,unit:"ko",long:"kilooctets"},{from:1e6,to:1e9,unit:"Mo",long:"megaoctets"},{from:1e9,to:1e12,unit:"Go",long:"gigaoctets"},{from:1e12,to:1e15,unit:"To",long:"teraoctets"},{from:1e15,to:1e18,unit:"Po",long:"petaoctets"},{from:1e18,to:1e21,unit:"Eo",long:"exaoctets"},{from:1e21,to:1e24,unit:"Zo",long:"zettaoctets"},{from:1e24,to:1e27,unit:"Yo",long:"yottaoctets"}],iec:[{from:0,to:Math.pow(1024,1),unit:"B",long:"bytes"},{from:Math.pow(1024,1),to:Math.pow(1024,2),unit:"KiB",long:"kibibytes"},{from:Math.pow(1024,2),to:Math.pow(1024,3),unit:"MiB",long:"mebibytes"},{from:Math.pow(1024,3),to:Math.pow(1024,4),unit:"GiB",long:"gibibytes"},{from:Math.pow(1024,4),to:Math.pow(1024,5),unit:"TiB",long:"tebibytes"},{from:Math.pow(1024,5),to:Math.pow(1024,6),unit:"PiB",long:"pebibytes"},{from:Math.pow(1024,6),to:Math.pow(1024,7),unit:"EiB",long:"exbibytes"},{from:Math.pow(1024,7),to:Math.pow(1024,8),unit:"ZiB",long:"zebibytes"},{from:Math.pow(1024,8),to:Math.pow(1024,9),unit:"YiB",long:"yobibytes"}],iec_octet:[{from:0,to:Math.pow(1024,1),unit:"o",long:"octets"},{from:Math.pow(1024,1),to:Math.pow(1024,2),unit:"Kio",long:"kibioctets"},{from:Math.pow(1024,2),to:Math.pow(1024,3),unit:"Mio",long:"mebioctets"},{from:Math.pow(1024,3),to:Math.pow(1024,4),unit:"Gio",long:"gibioctets"},{from:Math.pow(1024,4),to:Math.pow(1024,5),unit:"Tio",long:"tebioctets"},{from:Math.pow(1024,5),to:Math.pow(1024,6),unit:"Pio",long:"pebioctets"},{from:Math.pow(1024,6),to:Math.pow(1024,7),unit:"Eio",long:"exbioctets"},{from:Math.pow(1024,7),to:Math.pow(1024,8),unit:"Zio",long:"zebioctets"},{from:Math.pow(1024,8),to:Math.pow(1024,9),unit:"Yio",long:"yobioctets"}]};class Pe{constructor(t,e){e=Object.assign({units:"metric",precision:1,locale:void 0},kt,e),Mt.set(this,e),Object.assign(xt,e.customUnits);const s=t<0?"-":"";t=Math.abs(t);const o=xt[e.units];if(o){const n=o.find(r=>t>=r.from&&te,{get iconNode(){return s},children:(o,n)=>{var r=P(),a=g(r);v(a,()=>t.children??C),d(o,r)},$$slots:{default:!0}})),b()}export{Ae as D,Ze as P,Ne as S,Ge as T,ue as X,Ee as a,De as b,Te as c,Fe as d,Se as e,Ye as f,Ke as g,Re as h,je as i,_e as j,ze as k,T as l,ke as m,It as n,oe as o,ee as p,ie as q,Ot as r,$t as s,Be as t}; diff --git a/front-end/build/civit/_app/immutable/entry/app.y4nMZL3p.js b/front-end/build/civit/_app/immutable/entry/app.y4nMZL3p.js new file mode 100644 index 0000000..b064c1b --- /dev/null +++ b/front-end/build/civit/_app/immutable/entry/app.y4nMZL3p.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.DiUNHnii.js","../chunks/kT5kkkQy.js","../chunks/DA9wTPlB.js","../chunks/Bl70acv3.js","../chunks/B8s4VlAd.js","../chunks/CUg-vmQ0.js","../chunks/l9gpCeXC.js","../chunks/ByoH8mPx.js","../chunks/DKXk1_Gk.js","../chunks/2XHqwiYu.js","../assets/0.scA15517.css","../nodes/1.-b-81hB6.js","../chunks/BxiYE_8e.js","../nodes/2.DTEYGkA8.js","../chunks/CJT_YYCC.js","../chunks/QtwoLSaf.js","../assets/select-trigger.CV-KWLNP.css","../assets/media.DcDX5w35.css","../nodes/3.BXTAZADF.js","../nodes/4.v9b78c3f.js","../nodes/5.BDyd8OI1.js","../assets/5.BU9B4D3Q.css","../nodes/6.BISt8zal.js"])))=>i.map(i=>d[i]); +import{c as L,L as z,g as d,z as G,A as W,B as Y,p as F,u as H,j as J,o as K,s as k,C as Q,f as w,d as X,b as Z,x,e as $,r as ee,t as te}from"../chunks/DA9wTPlB.js";import{h as re,m as se,u as ne,f as V,a as b,c as A,t as ae,s as oe}from"../chunks/kT5kkkQy.js";import{p as j,i as S,c as C,b as T}from"../chunks/Bl70acv3.js";function ce(o){return class extends ie{constructor(e){super({component:o,...e})}}}class ie{#t;#e;constructor(e){var n=new Map,i=(r,t)=>{var s=Y(t,!1,!1);return n.set(r,s),s};const l=new Proxy({...e.props||{},$$events:{}},{get(r,t){return d(n.get(t)??i(t,Reflect.get(r,t)))},has(r,t){return t===z?!0:(d(n.get(t)??i(t,Reflect.get(r,t))),Reflect.has(r,t))},set(r,t,s){return L(n.get(t)??i(t,s),s),Reflect.set(r,t,s)}});this.#e=(e.hydrate?re:se)(e.component,{target:e.target,anchor:e.anchor,props:l,context:e.context,intro:e.intro??!1,recover:e.recover}),(!e?.props?.$$host||e.sync===!1)&&G(),this.#t=l.$$events;for(const r of Object.keys(this.#e))r==="$set"||r==="$destroy"||r==="$on"||W(this,r,{get(){return this.#e[r]},set(t){this.#e[r]=t},enumerable:!0});this.#e.$set=r=>{Object.assign(l,r)},this.#e.$destroy=()=>{ne(this.#e)}}$set(e){this.#e.$set(e)}$on(e,n){this.#t[e]=this.#t[e]||[];const i=(...l)=>n.call(this,...l);return this.#t[e].push(i),()=>{this.#t[e]=this.#t[e].filter(l=>l!==i)}}$destroy(){this.#e.$destroy()}}const le="modulepreload",ue=function(o,e){return new URL(o,e).href},I={},E=function(e,n,i){let l=Promise.resolve();if(n&&n.length>0){let O=function(c){return Promise.all(c.map(m=>Promise.resolve(m).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};const t=document.getElementsByTagName("link"),s=document.querySelector("meta[property=csp-nonce]"),R=s?.nonce||s?.getAttribute("nonce");l=O(n.map(c=>{if(c=ue(c,i),c in I)return;I[c]=!0;const m=c.endsWith(".css"),f=m?'[rel="stylesheet"]':"";if(i)for(let _=t.length-1;_>=0;_--){const a=t[_];if(a.href===c&&(!m||a.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${f}`))return;const u=document.createElement("link");if(u.rel=m?"stylesheet":le,m||(u.as="script"),u.crossOrigin="",u.href=c,R&&u.setAttribute("nonce",R),document.head.appendChild(u),m)return new Promise((_,a)=>{u.addEventListener("load",_),u.addEventListener("error",()=>a(new Error(`Unable to preload CSS for ${c}`)))})}))}function r(t){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=t,window.dispatchEvent(s),!s.defaultPrevented)throw t}return l.then(t=>{for(const s of t||[])s.status==="rejected"&&r(s.reason);return e().catch(r)})},ye={};var me=V('
    '),de=V(" ",1);function fe(o,e){F(e,!0);let n=j(e,"components",23,()=>[]),i=j(e,"data_0",3,null),l=j(e,"data_1",3,null);H(()=>e.stores.page.set(e.page)),J(()=>{e.stores,e.page,e.constructors,n(),e.form,i(),l(),e.stores.page.notify()});let r=k(!1),t=k(!1),s=k(null);K(()=>{const a=e.stores.page.subscribe(()=>{d(r)&&(L(t,!0),Q().then(()=>{L(s,document.title||"untitled page",!0)}))});return L(r,!0),a});const R=x(()=>e.constructors[1]);var O=de(),c=w(O);{var m=a=>{const h=x(()=>e.constructors[0]);var v=A(),P=w(v);C(P,()=>d(h),(g,y)=>{T(y(g,{get data(){return i()},get form(){return e.form},get params(){return e.page.params},children:(p,he)=>{var D=A(),N=w(D);C(N,()=>d(R),(q,B)=>{T(B(q,{get data(){return l()},get form(){return e.form},get params(){return e.page.params}}),U=>n()[1]=U,()=>n()?.[1])}),b(p,D)},$$slots:{default:!0}}),p=>n()[0]=p,()=>n()?.[0])}),b(a,v)},f=a=>{const h=x(()=>e.constructors[0]);var v=A(),P=w(v);C(P,()=>d(h),(g,y)=>{T(y(g,{get data(){return i()},get form(){return e.form},get params(){return e.page.params}}),p=>n()[0]=p,()=>n()?.[0])}),b(a,v)};S(c,a=>{e.constructors[1]?a(m):a(f,!1)})}var u=X(c,2);{var _=a=>{var h=me(),v=$(h);{var P=g=>{var y=ae();te(()=>oe(y,d(s))),b(g,y)};S(v,g=>{d(t)&&g(P)})}ee(h),b(a,h)};S(u,a=>{d(r)&&a(_)})}b(o,O),Z()}const be=ce(fe),Pe=[()=>E(()=>import("../nodes/0.DiUNHnii.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]),import.meta.url),()=>E(()=>import("../nodes/1.-b-81hB6.js"),__vite__mapDeps([11,1,2,5,12]),import.meta.url),()=>E(()=>import("../nodes/2.DTEYGkA8.js"),__vite__mapDeps([13,1,2,3,7,4,5,14,9,15,16,17]),import.meta.url),()=>E(()=>import("../nodes/3.BXTAZADF.js"),__vite__mapDeps([18,1,2,4,3,5,6]),import.meta.url),()=>E(()=>import("../nodes/4.v9b78c3f.js"),__vite__mapDeps([19,1,2,3,7,4,5,14,9,15,16,17]),import.meta.url),()=>E(()=>import("../nodes/5.BDyd8OI1.js"),__vite__mapDeps([20,1,2,3,7,4,5,15,16,8,21]),import.meta.url),()=>E(()=>import("../nodes/6.BISt8zal.js"),__vite__mapDeps([22,1,2,3,7,4,5,14,9,15,16,17]),import.meta.url)],pe=[],Re={"/":[2],"/downloads":[3],"/images":[4],"/models":[5],"/video":[6]},M={handleError:(({error:o})=>{console.error(o)}),reroute:(()=>{}),transport:{}},_e=Object.fromEntries(Object.entries(M.transport).map(([o,e])=>[o,e.decode])),Oe=Object.fromEntries(Object.entries(M.transport).map(([o,e])=>[o,e.encode])),we=!1,Le=(o,e)=>_e[o](e);export{Le as decode,_e as decoders,Re as dictionary,Oe as encoders,we as hash,M as hooks,ye as matchers,Pe as nodes,be as root,pe as server_loads}; diff --git a/front-end/build/civit/_app/immutable/entry/start.D_k-G3o6.js b/front-end/build/civit/_app/immutable/entry/start.D_k-G3o6.js new file mode 100644 index 0000000..d173429 --- /dev/null +++ b/front-end/build/civit/_app/immutable/entry/start.D_k-G3o6.js @@ -0,0 +1 @@ +import{l as o,a as r}from"../chunks/BxiYE_8e.js";export{o as load_css,r as start}; diff --git a/front-end/build/civit/_app/immutable/nodes/0.DiUNHnii.js b/front-end/build/civit/_app/immutable/nodes/0.DiUNHnii.js new file mode 100644 index 0000000..e6476d5 --- /dev/null +++ b/front-end/build/civit/_app/immutable/nodes/0.DiUNHnii.js @@ -0,0 +1,10 @@ +import{e as Go,q as As,c as b,a as l,f as A,b as tr,o as De,r as Sr,d as Ca,t as Dt,s as Rt,l as kn,p as Oe,v as Cs}from"../chunks/kT5kkkQy.js";import{t as It,J as Vn,P as Ko,a3 as Es,bg as Is,K as Br,ae as Ea,aB as Hr,aI as Ds,aC as Os,U as Ur,at as Rn,H as ks,O as Ms,bh as Ns,V as qo,p as q,f,b as Y,v as mt,e as M,r as O,bb as Ia,bc as fr,bd as eo,s as wt,a as Xe,j as qe,c as C,g as i,x as N,k as Dn,o as fn,d as D,u as nn,bf as no,w as xt,y as Da,bi as $s,a1 as Ls,bj as zs}from"../chunks/DA9wTPlB.js";import{s as Pt,r as st,p as y,i as ot,b as ne,c as T}from"../chunks/Bl70acv3.js";import{I as ke,s as X,f as Ve,ao as rn,ap as Ze,g as Gt,h as Wn,a as Mt,aq as Fs,ar as Rs,A as gn,u as mn,j as Sn,k as Fe,P as Yn,n as dt,l as hn,q as vn,p as An,m as ro,E as oo,_ as hr,w as Je,a3 as Oa,as as Bs,r as Me,x as Ye,v as ve,K as ao,ad as ka,a1 as Hs,at as Us,au as En,av as vr,aw as Vs,o as Ws,ab as Ma,ax as js,c as Bt,G as so,C as gr,i as cn,B as be,b as io,d as Na,t as er,S as Pn,ay as mr,az as $a,aA as ln,aB as Gs,aC as Ks,aD as qs}from"../chunks/B8s4VlAd.js";import{l as ze,m as un,S as Ys,n as Xs,k as pr,T as La,f as on,g as Ke,h as _r,i as le,j as lo,D as Ar,a as za,b as Fa,c as Ra,d as Ba,e as Cr,t as Bn,X as Ha,o as Zs,p as Js,q as Qs,r as ti,s as ei,P as ni}from"../chunks/l9gpCeXC.js";import{i as Ua}from"../chunks/CUg-vmQ0.js";import{m as ri,P as Va,k as Wa,j as br,l as ja,F as Ga,o as oi,C as Ka,A as In,T as qa,a as ai,n as si,M as ii,S as li,u as ci,H as di,B as ui,f as fi,c as hi,D as vi,b as gi,d as mi,e as Yo,h as Xo,g as pi,L as Zo}from"../chunks/ByoH8mPx.js";import{T as Ya,Z as _i,B as cr}from"../chunks/DKXk1_Gk.js";import{l as bi}from"../chunks/2XHqwiYu.js";function yr(r,t,e=!1,n=!1,o=!1){var s=r,a="";It(()=>{var c=Es;if(a===(a=t()??"")){Vn&&Ko();return}if(c.nodes_start!==null&&(Is(c.nodes_start,c.nodes_end),c.nodes_start=c.nodes_end=null),a!==""){if(Vn){Br.data;for(var d=Ko(),u=d;d!==null&&(d.nodeType!==Ea||d.data!=="");)u=d,d=Hr(d);if(d===null)throw Ds(),Os;Go(Br,u),s=Ur(d);return}var p=a+"";e?p=`${p}`:n&&(p=`${p}`);var g=As(p);if((e||n)&&(g=Rn(g)),Go(Rn(g),g.lastChild),e||n)for(;Rn(g);)s.before(Rn(g));else s.before(g)}})}function Xa(r,t){let e=null,n=Vn;var o;if(Vn){e=Br;for(var s=Rn(document.head);s!==null&&(s.nodeType!==Ea||s.data!==r);)s=Hr(s);if(s===null)qo(!1);else{var a=Hr(s);s.remove(),Ur(a)}}Vn||(o=document.head.appendChild(ks()));try{Ms(()=>t(o),Ns)}finally{n&&(qo(!0),Ur(e))}}const yi=!0,gg=Object.freeze(Object.defineProperty({__proto__:null,prerender:yi},Symbol.toStringTag,{value:"Module"}));function wi(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m9 12 2 2 4-4"}]];ke(r,Pt({name:"circle-check"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function xi(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M12 16v-4"}],["path",{d:"M12 8h.01"}]];ke(r,Pt({name:"info"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Pi(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"m15 9-6 6"}],["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z"}],["path",{d:"m9 9 6 6"}]];ke(r,Pt({name:"octagon-x"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Ti(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"}],["path",{d:"M12 9v4"}],["path",{d:"M12 17h.01"}]];ke(r,Pt({name:"triangle-alert"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}const Si=Array(12).fill(0);var Ai=A('
    '),Ci=A('
    ');function Ei(r,t){q(t,!0);var e=Ci(),n=M(e);Ve(n,23,()=>Si,(o,s)=>`spinner-bar-${s}`,(o,s)=>{var a=Ai();l(o,a)}),O(n),O(e),It(o=>{Ze(e,1,o),Gt(e,"data-visible",t.visible)},[()=>rn(["sonner-loading-wrapper",t.class].filter(Boolean).join(" "))]),l(r,e),Y()}const Ii=typeof window<"u"?window:void 0;function Di(r){let t=r.activeElement;for(;t?.shadowRoot;){const e=t.shadowRoot.activeElement;if(e===t)break;t=e}return t}class Oi{#t;#e;constructor(t,e){this.#t=t,this.#e=tr(e)}get current(){return this.#e(),this.#t()}}const ki=/\(.+\)/,Mi=new Set(["all","print","screen","and","or","not","only"]);class Za extends Oi{constructor(t,e){let n=ki.test(t)||t.split(/[\s,]+/).some(s=>Mi.has(s.trim()))?t:`(${t})`;const o=window.matchMedia(n);super(()=>o.matches,s=>De(o,"change",s))}}let Ni=class{#t;#e;constructor(t={}){const{window:e=Ii,document:n=e?.document}=t;e!==void 0&&(this.#t=n,this.#e=tr(o=>{const s=De(e,"focusin",o),a=De(e,"focusout",o);return()=>{s(),a()}}))}get current(){return this.#e?.(),this.#t?Di(this.#t):null}};new Ni;class $i{#t;#e;constructor(t){this.#t=t,this.#e=Symbol(t)}get key(){return this.#e}exists(){return Ia(this.#e)}get(){const t=fr(this.#e);if(t===void 0)throw new Error(`Context "${this.#t}" not found`);return t}getOr(t){const e=fr(this.#e);return e===void 0?t:e}set(t){return eo(this.#e,t)}}const Li=new $i("");function ar(r){return r.label!==void 0}function zi(){let r=wt(Xe(typeof document<"u"?document.hidden:!1));return qe(()=>De(document,"visibilitychange",()=>{C(r,document.hidden,!0)})),{get current(){return i(r)}}}const Jo=4e3,Fi=14,Ri=45,Bi=200,Hi=.05,Ui={toast:"",title:"",description:"",loader:"",closeButton:"",cancelButton:"",actionButton:"",action:"",warning:"",error:"",success:"",default:"",info:"",loading:""};function Vi(r){const[t,e]=r.split("-"),n=[];return t&&n.push(t),e&&n.push(e),n}function Qo(r){return 1/(1.5+Math.abs(r)/20)}var Wi=A("
    "),ji=A(''),Gi=A('
    '),Ki=A('
    '),qi=A(''),Yi=A(''),Xi=A('
    ',1),Zi=A('
  • ');function Ji(r,t){q(t,!0);const e=bt=>{var Ot=b(),kt=f(Ot);{var Ct=$t=>{var Ut=Wi(),ge=M(Ut);X(ge,()=>t.loadingIcon),O(Ut),It(we=>{Ze(Ut,1,we),Gt(Ut,"data-visible",i(I)==="loading")},[()=>rn(un(i(J)?.loader,t.toast?.classes?.loader,"sonner-loader"))]),l($t,Ut)},Nt=$t=>{{let Ut=N(()=>un(i(J)?.loader,t.toast.classes?.loader)),ge=N(()=>i(I)==="loading");Ei($t,{get class(){return i(Ut)},get visible(){return i(ge)}})}};ot(kt,$t=>{t.loadingIcon?$t(Ct):$t(Nt,!1)})}l(bt,Ot)};let n=y(t,"cancelButtonStyle",3,""),o=y(t,"actionButtonStyle",3,""),s=y(t,"descriptionClass",3,""),a=y(t,"unstyled",3,!1),c=y(t,"defaultRichColors",3,!1);const d={...Ui};let u=wt(!1),p=wt(!1),g=wt(!1),m=wt(!1),x=wt(!1),h=wt(0),v=wt(0),S=t.toast.duration||t.duration||Jo,_=wt(void 0),P=wt(null),E=wt(null);const z=N(()=>t.index===0),j=N(()=>t.index+1<=t.visibleToasts),I=N(()=>t.toast.type),$=N(()=>t.toast.dismissable!==!1),H=N(()=>t.toast.class||""),U=N(()=>t.toast.descriptionClass||""),Z=N(()=>ze.heights.findIndex(bt=>bt.toastId===t.toast.id)||0),W=N(()=>t.toast.closeButton??t.closeButton),ct=N(()=>t.toast.duration??t.duration??Jo);let it=null;const ht=N(()=>t.position.split("-")),Q=N(()=>ze.heights.reduce((bt,Ot,kt)=>kt>=i(Z)?bt:bt+Ot.height,0)),lt=zi(),tt=N(()=>t.toast.invert||t.invert),at=N(()=>i(I)==="loading"),J=N(()=>({...d,...t.classes})),ut=N(()=>t.toast.title),V=N(()=>t.toast.description);let R=wt(0),F=wt(0);const k=N(()=>Math.round(i(Z)*Fi+i(Q)));qe(()=>{i(ut),i(V);let bt;t.expanded||t.expandByDefault?bt=1:bt=1-t.index*Hi;const Ot=Dn(()=>i(_));if(Ot===void 0)return;Ot.style.setProperty("height","auto");const kt=Ot.offsetHeight,Ct=Ot.getBoundingClientRect().height,Nt=Math.round(Ct/bt+Number.EPSILON&100)/100;Ot.style.removeProperty("height");let $t;Math.abs(Nt-kt)<1?$t=Nt:$t=kt,C(v,$t,!0),ze.setHeight({toastId:t.toast.id,height:$t})});function L(){C(p,!0),C(h,i(k),!0),ze.removeHeight(t.toast.id),setTimeout(()=>{ze.remove(t.toast.id)},Bi)}let G;const K=N(()=>t.toast.promise&&i(I)==="loading"||t.toast.duration===Number.POSITIVE_INFINITY);function et(){C(R,new Date().getTime(),!0),G=setTimeout(()=>{t.toast.onAutoClose?.(t.toast),L()},S)}function gt(){if(i(F){t.toast.updated&&(clearTimeout(G),S=i(ct),et())}),qe(()=>(i(K)||(t.expanded||t.interacting||lt.current?gt():et()),()=>clearTimeout(G))),fn(()=>{C(u,!0);const bt=i(_)?.getBoundingClientRect().height;return C(v,bt,!0),ze.setHeight({toastId:t.toast.id,height:bt}),()=>{ze.removeHeight(t.toast.id)}}),qe(()=>{t.toast.delete&&Dn(()=>{L(),t.toast.onDismiss?.(t.toast)})});const pt=bt=>{if(i(at))return;C(h,i(k),!0);const Ot=bt.target;Ot.setPointerCapture(bt.pointerId),Ot.tagName!=="BUTTON"&&(C(g,!0),it={x:bt.clientX,y:bt.clientY})},ft=()=>{if(i(m)||!i($))return;it=null;const bt=Number(i(_)?.style.getPropertyValue("--swipe-amount-x").replace("px","")||0),Ot=Number(i(_)?.style.getPropertyValue("--swipe-amount-y").replace("px","")||0),kt=new Date().getTime()-0,Ct=i(P)==="x"?bt:Ot,Nt=Math.abs(Ct)/kt;if(Math.abs(Ct)>=Ri||Nt>.11){C(h,i(k),!0),t.toast.onDismiss?.(t.toast),i(P)==="x"?C(E,bt>0?"right":"left",!0):C(E,Ot>0?"down":"up",!0),L(),C(m,!0);return}else i(_)?.style.setProperty("--swipe-amount-x","0px"),i(_)?.style.setProperty("--swipe-amount-y","0px");C(x,!1),C(g,!1),C(P,null)},B=bt=>{if(!it||!i($)||(window.getSelection()?.toString().length??-1)>0)return;const kt=bt.clientY-it.y,Ct=bt.clientX-it.x,Nt=t.swipeDirections??Vi(t.position);!i(P)&&(Math.abs(Ct)>1||Math.abs(kt)>1)&&C(P,Math.abs(Ct)>Math.abs(kt)?"x":"y",!0);let $t={x:0,y:0};if(i(P)==="y"){if(Nt.includes("top")||Nt.includes("bottom"))if(Nt.includes("top")&&kt<0||Nt.includes("bottom")&&kt>0)$t.y=kt;else{const Ut=kt*Qo(kt);$t.y=Math.abs(Ut)0)$t.x=Ct;else{const Ut=Ct*Qo(Ct);$t.x=Math.abs(Ut)0||Math.abs($t.y)>0)&&C(x,!0),i(_)?.style.setProperty("--swipe-amount-x",`${$t.x}px`),i(_)?.style.setProperty("--swipe-amount-y",`${$t.y}px`)},vt=()=>{C(g,!1),C(P,null),it=null},yt=N(()=>t.toast.icon?t.toast.icon:i(I)==="success"?t.successIcon:i(I)==="error"?t.errorIcon:i(I)==="warning"?t.warningIcon:i(I)==="info"?t.infoIcon:i(I)==="loading"?t.loadingIcon:null);var nt=Zi();Gt(nt,"tabindex",0);let At;nt.__pointermove=B,nt.__pointerup=ft,nt.__pointerdown=pt;var Lt=M(nt);{var Ht=bt=>{var Ot=ji();Ot.__click=()=>{i(at)||!i($)||(L(),t.toast.onDismiss?.(t.toast))};var kt=M(Ot);X(kt,()=>t.closeIcon??mt),O(Ot),It(Ct=>{Gt(Ot,"aria-label",t.closeButtonAriaLabel),Gt(Ot,"data-disabled",i(at)),Ze(Ot,1,Ct)},[()=>rn(un(i(J)?.closeButton,t.toast?.classes?.closeButton))]),l(bt,Ot)};ot(Lt,bt=>{i(W)&&!t.toast.component&&i(I)!=="loading"&&t.closeIcon!==null&&bt(Ht)})}var Kt=D(Lt,2);{var re=bt=>{const Ot=N(()=>t.toast.component);var kt=b(),Ct=f(kt);T(Ct,()=>i(Ot),(Nt,$t)=>{$t(Nt,Pt(()=>t.toast.componentProps,{closeToast:L}))}),l(bt,kt)},Vt=bt=>{var Ot=Xi(),kt=f(Ot);{var Ct=Wt=>{var St=Gi(),zt=M(St);{var Zt=jt=>{var Jt=b(),de=f(Jt);{var se=qt=>{var ee=b(),Ae=f(ee);T(Ae,()=>t.toast.icon,(Ee,pe)=>{pe(Ee,{})}),l(qt,ee)},Ft=qt=>{e(qt)};ot(de,qt=>{t.toast.icon?qt(se):qt(Ft,!1)})}l(jt,Jt)};ot(zt,jt=>{(t.toast.promise||i(I)==="loading")&&jt(Zt)})}var te=D(zt,2);{var Tt=jt=>{var Jt=b(),de=f(Jt);{var se=qt=>{var ee=b(),Ae=f(ee);T(Ae,()=>t.toast.icon,(Ee,pe)=>{pe(Ee,{})}),l(qt,ee)},Ft=qt=>{var ee=b(),Ae=f(ee);{var Ee=ue=>{var Ie=b(),Qt=f(Ie);X(Qt,()=>t.successIcon??mt),l(ue,Ie)},pe=ue=>{var Ie=b(),Qt=f(Ie);{var oe=he=>{var Xt=b(),Ne=f(Xt);X(Ne,()=>t.errorIcon??mt),l(he,Xt)},fe=he=>{var Xt=b(),Ne=f(Xt);{var Ce=$e=>{var Re=b(),xe=f(Re);X(xe,()=>t.warningIcon??mt),l($e,Re)},He=$e=>{var Re=b(),xe=f(Re);{var tn=_t=>{var w=b(),rt=f(w);X(rt,()=>t.infoIcon??mt),l(_t,w)};ot(xe,_t=>{i(I)==="info"&&_t(tn)},!0)}l($e,Re)};ot(Ne,$e=>{i(I)==="warning"?$e(Ce):$e(He,!1)},!0)}l(he,Xt)};ot(Qt,he=>{i(I)==="error"?he(oe):he(fe,!1)},!0)}l(ue,Ie)};ot(Ae,ue=>{i(I)==="success"?ue(Ee):ue(pe,!1)},!0)}l(qt,ee)};ot(de,qt=>{t.toast.icon?qt(se):qt(Ft,!1)})}l(jt,Jt)};ot(te,jt=>{t.toast.type!=="loading"&&jt(Tt)})}O(St),It(jt=>Ze(St,1,jt),[()=>rn(un(i(J)?.icon,t.toast?.classes?.icon))]),l(Wt,St)};ot(kt,Wt=>{(i(I)||t.toast.icon||t.toast.promise)&&t.toast.icon!==null&&(i(yt)!==null||t.toast.icon)&&Wt(Ct)})}var Nt=D(kt,2),$t=M(Nt),Ut=M($t);{var ge=Wt=>{var St=b(),zt=f(St);{var Zt=Tt=>{const jt=N(()=>t.toast.title);var Jt=b(),de=f(Jt);T(de,()=>i(jt),(se,Ft)=>{Ft(se,Pt(()=>t.toast.componentProps))}),l(Tt,Jt)},te=Tt=>{var jt=Dt();It(()=>Rt(jt,t.toast.title)),l(Tt,jt)};ot(zt,Tt=>{typeof t.toast.title!="string"?Tt(Zt):Tt(te,!1)})}l(Wt,St)};ot(Ut,Wt=>{t.toast.title&&Wt(ge)})}O($t);var we=D($t,2);{var Se=Wt=>{var St=Ki(),zt=M(St);{var Zt=Tt=>{const jt=N(()=>t.toast.description);var Jt=b(),de=f(Jt);T(de,()=>i(jt),(se,Ft)=>{Ft(se,Pt(()=>t.toast.componentProps))}),l(Tt,Jt)},te=Tt=>{var jt=Dt();It(()=>Rt(jt,t.toast.description)),l(Tt,jt)};ot(zt,Tt=>{typeof t.toast.description!="string"?Tt(Zt):Tt(te,!1)})}O(St),It(Tt=>Ze(St,1,Tt),[()=>rn(un(s(),i(U),i(J)?.description,t.toast.classes?.description))]),l(Wt,St)};ot(we,Wt=>{t.toast.description&&Wt(Se)})}O(Nt);var ce=D(Nt,2);{var ae=Wt=>{var St=b(),zt=f(St);{var Zt=Tt=>{var jt=b(),Jt=f(jt);T(Jt,()=>t.toast.cancel,(de,se)=>{se(de,{})}),l(Tt,jt)},te=Tt=>{var jt=b(),Jt=f(jt);{var de=se=>{var Ft=qi();Ft.__click=ee=>{ar(t.toast.cancel)&&i($)&&(t.toast.cancel?.onClick?.(ee),L())};var qt=M(Ft,!0);O(Ft),It(ee=>{Wn(Ft,t.toast.cancelButtonStyle??n()),Ze(Ft,1,ee),Rt(qt,t.toast.cancel.label)},[()=>rn(un(i(J)?.cancelButton,t.toast?.classes?.cancelButton))]),l(se,Ft)};ot(Jt,se=>{ar(t.toast.cancel)&&se(de)},!0)}l(Tt,jt)};ot(zt,Tt=>{typeof t.toast.cancel=="function"?Tt(Zt):Tt(te,!1)})}l(Wt,St)};ot(ce,Wt=>{t.toast.cancel&&Wt(ae)})}var me=D(ce,2);{var ie=Wt=>{var St=b(),zt=f(St);{var Zt=Tt=>{var jt=b(),Jt=f(jt);T(Jt,()=>t.toast.action,(de,se)=>{se(de,{})}),l(Tt,jt)},te=Tt=>{var jt=b(),Jt=f(jt);{var de=se=>{var Ft=Yi();Ft.__click=ee=>{ar(t.toast.action)&&(t.toast.action?.onClick(ee),!ee.defaultPrevented&&L())};var qt=M(Ft,!0);O(Ft),It(ee=>{Wn(Ft,t.toast.actionButtonStyle??o()),Ze(Ft,1,ee),Rt(qt,t.toast.action.label)},[()=>rn(un(i(J)?.actionButton,t.toast?.classes?.actionButton))]),l(se,Ft)};ot(Jt,se=>{ar(t.toast.action)&&se(de)},!0)}l(Tt,jt)};ot(zt,Tt=>{typeof t.toast.action=="function"?Tt(Zt):Tt(te,!1)})}l(Wt,St)};ot(me,Wt=>{t.toast.action&&Wt(ie)})}It(Wt=>Ze($t,1,Wt),[()=>rn(un(i(J)?.title,t.toast?.classes?.title))]),l(bt,Ot)};ot(Kt,bt=>{t.toast.component?bt(re):bt(Vt,!1)})}O(nt),ne(nt,bt=>C(_,bt),()=>i(_)),It((bt,Ot,kt)=>{Ze(nt,1,bt),Gt(nt,"data-rich-colors",t.toast.richColors??c()),Gt(nt,"data-styled",!(t.toast.component||t.toast.unstyled||a())),Gt(nt,"data-mounted",i(u)),Gt(nt,"data-promise",Ot),Gt(nt,"data-swiped",i(x)),Gt(nt,"data-removed",i(p)),Gt(nt,"data-visible",i(j)),Gt(nt,"data-y-position",i(ht)[0]),Gt(nt,"data-x-position",i(ht)[1]),Gt(nt,"data-index",t.index),Gt(nt,"data-front",i(z)),Gt(nt,"data-swiping",i(g)),Gt(nt,"data-dismissable",i($)),Gt(nt,"data-type",i(I)),Gt(nt,"data-invert",i(tt)),Gt(nt,"data-swipe-out",i(m)),Gt(nt,"data-swipe-direction",i(E)),Gt(nt,"data-expanded",kt),At=Wn(nt,`${t.style} ${t.toast.style}`,At,{"--index":t.index,"--toasts-before":t.index,"--z-index":ze.toasts.length-t.index,"--offset":`${i(p)?i(h):i(k)}px`,"--initial-height":t.expandByDefault?"auto":`${i(v)}px`})},[()=>rn(un(t.class,i(H),i(J)?.toast,t.toast?.classes?.toast,i(J)?.[i(I)],t.toast?.classes?.[i(I)])),()=>!!t.toast.promise,()=>!!(t.expanded||t.expandByDefault&&i(u))]),Sr("dragend",nt,vt),l(r,nt),Y()}Ca(["pointermove","pointerup","pointerdown","click"]);var Qi=kn('');function tl(r){var t=Qi();l(r,t)}var el=kn('');function nl(r){var t=el();l(r,t)}var rl=kn('');function ol(r){var t=rl();l(r,t)}var al=kn('');function sl(r){var t=al();l(r,t)}var il=kn('');function ll(r){var t=il();l(r,t)}const cl=3,Ja="24px",Qa="16px",dl=4e3,ul=356,fl=14,kr="dark",sr="light";function hl(r,t){const e={};return[r,t].forEach((n,o)=>{const s=o===1,a=s?"--mobile-offset":"--offset",c=s?Qa:Ja;function d(u){["top","right","bottom","left"].forEach(p=>{e[`${a}-${p}`]=typeof u=="number"?`${u}px`:u})}typeof n=="number"||typeof n=="string"?d(n):typeof n=="object"?["top","right","bottom","left"].forEach(u=>{const p=n[u];p===void 0?e[`${a}-${u}`]=c:e[`${a}-${u}`]=typeof p=="number"?`${p}px`:p}):d(c)}),e}var vl=A("
      "),gl=A('
      ');function ml(r,t){q(t,!0);function e(k){return k!=="system"?k:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?kr:sr}let n=y(t,"invert",3,!1),o=y(t,"position",3,"bottom-right"),s=y(t,"hotkey",19,()=>["altKey","KeyT"]),a=y(t,"expand",3,!1),c=y(t,"closeButton",3,!1),d=y(t,"offset",3,Ja),u=y(t,"mobileOffset",3,Qa),p=y(t,"theme",3,"light"),g=y(t,"richColors",3,!1),m=y(t,"duration",3,dl),x=y(t,"visibleToasts",3,cl),h=y(t,"toastOptions",19,()=>({})),v=y(t,"dir",7,"auto"),S=y(t,"gap",3,fl),_=y(t,"containerAriaLabel",3,"Notifications"),P=y(t,"closeButtonAriaLabel",3,"Close toast"),E=st(t,["$$slots","$$events","$$legacy","invert","position","hotkey","expand","closeButton","offset","mobileOffset","theme","richColors","duration","visibleToasts","toastOptions","dir","gap","loadingIcon","successIcon","errorIcon","warningIcon","closeIcon","infoIcon","containerAriaLabel","class","closeButtonAriaLabel","onblur","onfocus","onmouseenter","onmousemove","onmouseleave","ondragend","onpointerdown","onpointerup"]);function z(){if(v()!=="auto")return v();if(typeof window>"u"||typeof document>"u")return"ltr";const k=document.documentElement.getAttribute("dir");return k==="auto"||!k?(Dn(()=>v(window.getComputedStyle(document.documentElement).direction??"ltr")),v()):(Dn(()=>v(k)),k)}const j=N(()=>Array.from(new Set([o(),...ze.toasts.filter(k=>k.position).map(k=>k.position)].filter(Boolean))));let I=wt(!1),$=wt(!1),H=wt(Xe(e(p()))),U=wt(void 0),Z=wt(null),W=wt(!1);const ct=N(()=>s().join("+").replace(/Key/g,"").replace(/Digit/g,""));qe(()=>{ze.toasts.length<=1&&C(I,!1)}),qe(()=>{const k=ze.toasts.filter(L=>L.dismiss&&!L.delete);if(k.length>0){const L=ze.toasts.map(G=>k.find(et=>et.id===G.id)?{...G,delete:!0}:G);ze.toasts=L}}),qe(()=>()=>{i(U)&&i(Z)&&(i(Z).focus({preventScroll:!0}),C(Z,null),C(W,!1))}),fn(()=>(ze.reset(),De(document,"keydown",L=>{s().every(K=>L[K]||L.code===K)&&(C(I,!0),i(U)?.focus()),L.code==="Escape"&&(document.activeElement===i(U)||i(U)?.contains(document.activeElement))&&C(I,!1)}))),qe(()=>{if(p()!=="system"&&C(H,p()),typeof window<"u"){p()==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?C(H,kr):C(H,sr));const k=window.matchMedia("(prefers-color-scheme: dark)"),L=({matches:G})=>{C(H,G?kr:sr,!0)};"addEventListener"in k?k.addEventListener("change",L):k.addListener(L)}});const it=k=>{t.onblur?.(k),i(W)&&!k.currentTarget.contains(k.relatedTarget)&&(C(W,!1),i(Z)&&(i(Z).focus({preventScroll:!0}),C(Z,null)))},ht=k=>{t.onfocus?.(k),!(k.target instanceof HTMLElement&&k.target.dataset.dismissable==="false")&&(i(W)||(C(W,!0),C(Z,k.relatedTarget,!0)))},Q=k=>{t.onpointerdown?.(k),!(k.target instanceof HTMLElement&&k.target.dataset.dismissable==="false")&&C($,!0)},lt=k=>{t.onmouseenter?.(k),C(I,!0)},tt=k=>{t.onmouseleave?.(k),i($)||C(I,!1)},at=k=>{t.onmousemove?.(k),C(I,!0)},J=k=>{t.ondragend?.(k),C(I,!1)},ut=k=>{t.onpointerup?.(k),C($,!1)};Li.set(new Ys);var V=gl();Gt(V,"tabindex",-1);var R=M(V);{var F=k=>{var L=b(),G=f(L);Ve(G,18,()=>i(j),K=>K,(K,et,gt,pt)=>{const ft=N(()=>{const[yt,nt]=et.split("-");return{y:yt,x:nt}}),B=N(()=>hl(d(),u()));var vt=vl();Mt(vt,yt=>({tabindex:-1,dir:yt,class:t.class,"data-sonner-toaster":!0,"data-sonner-theme":i(H),"data-y-position":i(ft).y,"data-x-position":i(ft).x,style:t.style,onblur:it,onfocus:ht,onmouseenter:lt,onmousemove:at,onmouseleave:tt,ondragend:J,onpointerdown:Q,onpointerup:ut,...E,[Fs]:{"--front-toast-height":`${ze.heights[0]?.height}px`,"--width":`${ul}px`,"--gap":`${S()}px`,"--offset-top":i(B)["--offset-top"],"--offset-right":i(B)["--offset-right"],"--offset-bottom":i(B)["--offset-bottom"],"--offset-left":i(B)["--offset-left"],"--mobile-offset-top":i(B)["--mobile-offset-top"],"--mobile-offset-right":i(B)["--mobile-offset-right"],"--mobile-offset-bottom":i(B)["--mobile-offset-bottom"],"--mobile-offset-left":i(B)["--mobile-offset-left"]}}),[z],void 0,void 0,"svelte-nbs0zk"),Ve(vt,23,()=>ze.toasts.filter(yt=>!yt.position&&i(gt)===0||yt.position===et),yt=>yt.id,(yt,nt,At,Lt)=>{{const Ht=ce=>{var ae=b(),me=f(ae);{var ie=St=>{var zt=b(),Zt=f(zt);X(Zt,()=>t.successIcon??mt),l(St,zt)},Wt=St=>{var zt=b(),Zt=f(zt);{var te=Tt=>{tl(Tt)};ot(Zt,Tt=>{t.successIcon!==null&&Tt(te)},!0)}l(St,zt)};ot(me,St=>{t.successIcon?St(ie):St(Wt,!1)})}l(ce,ae)},Kt=ce=>{var ae=b(),me=f(ae);{var ie=St=>{var zt=b(),Zt=f(zt);X(Zt,()=>t.errorIcon??mt),l(St,zt)},Wt=St=>{var zt=b(),Zt=f(zt);{var te=Tt=>{nl(Tt)};ot(Zt,Tt=>{t.errorIcon!==null&&Tt(te)},!0)}l(St,zt)};ot(me,St=>{t.errorIcon?St(ie):St(Wt,!1)})}l(ce,ae)},re=ce=>{var ae=b(),me=f(ae);{var ie=St=>{var zt=b(),Zt=f(zt);X(Zt,()=>t.warningIcon??mt),l(St,zt)},Wt=St=>{var zt=b(),Zt=f(zt);{var te=Tt=>{ol(Tt)};ot(Zt,Tt=>{t.warningIcon!==null&&Tt(te)},!0)}l(St,zt)};ot(me,St=>{t.warningIcon?St(ie):St(Wt,!1)})}l(ce,ae)},Vt=ce=>{var ae=b(),me=f(ae);{var ie=St=>{var zt=b(),Zt=f(zt);X(Zt,()=>t.infoIcon??mt),l(St,zt)},Wt=St=>{var zt=b(),Zt=f(zt);{var te=Tt=>{sl(Tt)};ot(Zt,Tt=>{t.infoIcon!==null&&Tt(te)},!0)}l(St,zt)};ot(me,St=>{t.infoIcon?St(ie):St(Wt,!1)})}l(ce,ae)},bt=ce=>{var ae=b(),me=f(ae);{var ie=St=>{var zt=b(),Zt=f(zt);X(Zt,()=>t.closeIcon??mt),l(St,zt)},Wt=St=>{var zt=b(),Zt=f(zt);{var te=Tt=>{ll(Tt)};ot(Zt,Tt=>{t.closeIcon!==null&&Tt(te)},!0)}l(St,zt)};ot(me,St=>{t.closeIcon?St(ie):St(Wt,!1)})}l(ce,ae)};let Ot=N(()=>h()?.duration??m()),kt=N(()=>h()?.class??""),Ct=N(()=>h()?.descriptionClass||""),Nt=N(()=>h()?.style??""),$t=N(()=>h().classes||{}),Ut=N(()=>h().unstyled??!1),ge=N(()=>h()?.cancelButtonStyle??""),we=N(()=>h()?.actionButtonStyle??""),Se=N(()=>h()?.closeButtonAriaLabel??P());Ji(yt,{get index(){return i(At)},get toast(){return i(nt)},get defaultRichColors(){return g()},get duration(){return i(Ot)},get class(){return i(kt)},get descriptionClass(){return i(Ct)},get invert(){return n()},get visibleToasts(){return x()},get closeButton(){return c()},get interacting(){return i($)},get position(){return et},get style(){return i(Nt)},get classes(){return i($t)},get unstyled(){return i(Ut)},get cancelButtonStyle(){return i(ge)},get actionButtonStyle(){return i(we)},get closeButtonAriaLabel(){return i(Se)},get expandByDefault(){return a()},get expanded(){return i(I)},get loadingIcon(){return t.loadingIcon},successIcon:Ht,errorIcon:Kt,warningIcon:re,infoIcon:Vt,closeIcon:bt,$$slots:{successIcon:!0,errorIcon:!0,warningIcon:!0,infoIcon:!0,closeIcon:!0}})}}),O(vt),ne(vt,yt=>C(U,yt),()=>i(U)),It(()=>vt.dir=vt.dir),l(K,vt)}),l(k,L)};ot(R,k=>{ze.toasts.length>0&&k(F)})}O(V),It(()=>Gt(V,"aria-label",`${_()??""} ${i(ct)??""}`)),l(r,V),Y()}const ts=typeof window<"u"?window:void 0;function pl(r){let t=r.activeElement;for(;t?.shadowRoot;){const e=t.shadowRoot.activeElement;if(e===t)break;t=e}return t}let _l=class{#t;#e;constructor(t={}){const{window:e=ts,document:n=e?.document}=t;e!==void 0&&(this.#t=n,this.#e=tr(o=>{const s=De(e,"focusin",o),a=De(e,"focusout",o);return()=>{s(),a()}}))}get current(){return this.#e?.(),this.#t?pl(this.#t):null}};new _l;function bl(r,t){switch(r){case"post":qe(t);break;case"pre":nn(t);break}}function es(r,t,e,n={}){const{lazy:o=!1}=n;let s=!o,a=Array.isArray(r)?[]:void 0;bl(t,()=>{const c=Array.isArray(r)?r.map(u=>u()):r();if(!s){s=!0,a=c;return}const d=Dn(()=>e(c,a));return a=c,d})}function co(r,t,e){es(r,"post",t,e)}function yl(r,t,e){es(r,"pre",t,e)}co.pre=yl;function wl(r,t){switch(r){case"local":return t.localStorage;case"session":return t.sessionStorage}}class ns{#t;#e;#n;#r;#o;#a=wt(0);constructor(t,e,n={}){const{storage:o="local",serializer:s={serialize:JSON.stringify,deserialize:JSON.parse},syncTabs:a=!0,window:c=ts}=n;if(this.#t=e,this.#e=t,this.#n=s,c===void 0)return;const d=wl(o,c);this.#r=d;const u=d.getItem(t);u!==null?this.#t=this.#s(u):this.#l(e),a&&o==="local"&&(this.#o=tr(()=>De(c,"storage",this.#i)))}get current(){this.#o?.(),i(this.#a);const t=this.#s(this.#r?.getItem(this.#e))??this.#t,e=new WeakMap,n=o=>{if(o===null||o?.constructor.name==="Date"||typeof o!="object")return o;let s=e.get(o);return s||(s=new Proxy(o,{get:(a,c)=>(i(this.#a),n(Reflect.get(a,c))),set:(a,c,d)=>(C(this.#a,i(this.#a)+1),Reflect.set(a,c,d),this.#l(t),!0)}),e.set(o,s)),s};return n(t)}set current(t){this.#l(t),C(this.#a,i(this.#a)+1)}#i=t=>{t.key!==this.#e||t.newValue===null||(this.#t=this.#s(t.newValue),C(this.#a,i(this.#a)+1))};#s(t){try{return this.#n.deserialize(t)}catch(e){console.error(`Error when parsing "${t}" from persisted store "${this.#e}"`,e);return}}#l(t){try{t!=null&&this.#r?.setItem(this.#e,this.#n.serialize(t))}catch(e){console.error(`Error when writing value from persisted store "${this.#e}" to ${this.#r}`,e)}}}function ta(r){return r.filter(t=>t.length>0)}const rs={getItem:r=>null,setItem:(r,t)=>{}},nr=typeof document<"u";function xl(r){return typeof r=="function"}function Pl(r){return r!==null&&typeof r=="object"}const Xn=Symbol("box"),uo=Symbol("is-writable");function Tl(r){return Pl(r)&&Xn in r}function Sl(r){return Te.isBox(r)&&uo in r}function Te(r){let t=wt(Xe(r));return{[Xn]:!0,[uo]:!0,get current(){return i(t)},set current(e){C(t,e,!0)}}}function Al(r,t){const e=N(r);return t?{[Xn]:!0,[uo]:!0,get current(){return i(e)},set current(n){t(n)}}:{[Xn]:!0,get current(){return r()}}}function Cl(r){return Te.isBox(r)?r:xl(r)?Te.with(r):Te(r)}function El(r){return Object.entries(r).reduce((t,[e,n])=>Te.isBox(n)?(Te.isWritableBox(n)?Object.defineProperty(t,e,{get(){return n.current},set(o){n.current=o}}):Object.defineProperty(t,e,{get(){return n.current}}),t):Object.assign(t,{[e]:n}),{})}function Il(r){return Te.isWritableBox(r)?{[Xn]:!0,get current(){return r.current}}:r}Te.from=Cl;Te.with=Al;Te.flatten=El;Te.readonly=Il;Te.isBox=Tl;Te.isWritableBox=Sl;function Dl(r,t){const e=RegExp(r,"g");return n=>{if(typeof n!="string")throw new TypeError(`expected an argument of type string, but got ${typeof n}`);return n.match(e)?n.replace(e,t):n}}const Ol=Dl(/[A-Z]/,r=>`-${r.toLowerCase()}`);function kl(r){if(!r||typeof r!="object"||Array.isArray(r))throw new TypeError(`expected an argument of type object, but got ${typeof r}`);return Object.keys(r).map(t=>`${Ol(t)}: ${r[t]};`).join(` +`)}function Ml(r={}){return kl(r).replace(` +`," ")}const Nl={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",transform:"translateX(-100%)"};Ml(Nl);const $l=typeof window<"u"?window:void 0;function Ll(r){let t=r.activeElement;for(;t?.shadowRoot;){const e=t.shadowRoot.activeElement;if(e===t)break;t=e}return t}class zl{#t;#e;constructor(t={}){const{window:e=$l,document:n=e?.document}=t;e!==void 0&&(this.#t=n,this.#e=tr(o=>{const s=De(e,"focusin",o),a=De(e,"focusout",o);return()=>{s(),a()}}))}get current(){return this.#e?.(),this.#t?Ll(this.#t):null}}new zl;const _n=Te("mode-watcher-mode"),bn=Te("mode-watcher-theme"),Fl=["dark","light","system"];function Vr(r){return typeof r!="string"?!1:Fl.includes(r)}class Rl{#t="system";#e=nr?localStorage:rs;#n=this.#e.getItem(_n.current);#r=Vr(this.#n)?this.#n:this.#t;#o=wt(Xe(this.#a()));#a(t=this.#r){return new ns(_n.current,t,{serializer:{serialize:e=>e,deserialize:e=>Vr(e)?e:this.#t}})}constructor(){no(()=>co.pre(()=>_n.current,(t,e)=>{const n=i(this.#o).current;C(this.#o,this.#a(n),!0),e&&localStorage.removeItem(e)}))}get current(){return i(this.#o).current}set current(t){i(this.#o).current=t}}class Bl{#t=void 0;#e=!0;#n=wt(Xe(this.#t));#r=typeof window<"u"&&typeof window.matchMedia=="function"?new Za("prefers-color-scheme: light"):{current:!1};query(){nr&&C(this.#n,this.#r.current?"light":"dark",!0)}tracking(t){this.#e=t}constructor(){no(()=>{nn(()=>{this.#e&&this.query()})}),this.query=this.query.bind(this),this.tracking=this.tracking.bind(this)}get current(){return i(this.#n)}}const wr=new Rl,Wr=new Bl;class Hl{#t=nr?localStorage:rs;#e=this.#t.getItem(bn.current);#n=this.#e===null||this.#e===void 0?"":this.#e;#r=wt(Xe(this.#o()));#o(t=this.#n){return new ns(bn.current,t,{serializer:{serialize:e=>typeof e!="string"?"":e,deserialize:e=>e}})}constructor(){no(()=>co.pre(()=>bn.current,(t,e)=>{const n=i(this.#r).current;C(this.#r,this.#o(n),!0),e&&localStorage.removeItem(e)}))}get current(){return i(this.#r).current}set current(t){i(this.#r).current=t}}const dr=new Hl;let ea,na,ra=!1,Mn=null;function Ul(){return Mn||(Mn=document.createElement("style"),Mn.appendChild(document.createTextNode(`* { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + -ms-transition: none !important; + transition: none !important; + }`)),Mn)}function os(r,t=!1){if(typeof document>"u")return;if(!ra){ra=!0,r();return}if(typeof window<"u"&&window.__vitest_worker__){r();return}clearTimeout(ea),clearTimeout(na);const n=Ul(),o=()=>document.head.appendChild(n),s=()=>{n.parentNode&&document.head.removeChild(n)};function a(){r(),window.requestAnimationFrame(s)}if(typeof window.requestAnimationFrame<"u"){o(),t?a():window.requestAnimationFrame(()=>{a()});return}o(),ea=window.setTimeout(()=>{r(),na=window.setTimeout(s,16)},16)}const pn=Te(void 0),xr=Te(!0),Pr=Te(!1),jr=Te([]),Gr=Te([]);function Vl(){const r=N(()=>{if(!nr)return;const t=wr.current==="system"?Wr.current:wr.current,e=ta(jr.current),n=ta(Gr.current);function o(){const s=document.documentElement,a=document.querySelector('meta[name="theme-color"]');t==="light"?(e.length&&s.classList.remove(...e),n.length&&s.classList.add(...n),s.style.colorScheme="light",a&&pn.current&&a.setAttribute("content",pn.current.light)):(n.length&&s.classList.remove(...n),e.length&&s.classList.add(...e),s.style.colorScheme="dark",a&&pn.current&&a.setAttribute("content",pn.current.dark))}return xr.current?os(o,Pr.current):o(),t});return{get current(){return i(r)}}}function Wl(){const r=N(()=>{if(dr.current,!nr)return;function t(){document.documentElement.setAttribute("data-theme",dr.current)}return xr.current?os(t,Dn(()=>Pr.current)):t(),dr.current});return{get current(){return i(r)}}}const fo=Vl(),jl=Wl();function as(){wr.current=fo.current==="dark"?"light":"dark"}function Gl(r){wr.current=r}function Kl(r){dr.current=r}function ql({defaultMode:r="system",themeColors:t,darkClassNames:e=["dark"],lightClassNames:n=[],defaultTheme:o="",modeStorageKey:s="mode-watcher-mode",themeStorageKey:a="mode-watcher-theme"}){const c=document.documentElement,d=localStorage.getItem(s)??r,u=localStorage.getItem(a)??o,p=d==="light"||d==="system"&&window.matchMedia("(prefers-color-scheme: light)").matches;if(p?(e.length&&c.classList.remove(...e.filter(Boolean)),n.length&&c.classList.add(...n.filter(Boolean))):(n.length&&c.classList.remove(...n.filter(Boolean)),e.length&&c.classList.add(...e.filter(Boolean))),c.style.colorScheme=p?"light":"dark",t){const g=document.querySelector('meta[name="theme-color"]');g&&g.setAttribute("content",d==="light"?t.light:t.dark)}u&&(c.setAttribute("data-theme",u),localStorage.setItem(a,u)),localStorage.setItem(s,d)}var Yl=A('');function Xl(r,t){q(t,!0);var e=b(),n=f(e);{var o=s=>{var a=Yl();It(()=>Gt(a,"content",t.themeColors.dark)),l(s,a)};ot(n,s=>{t.themeColors&&s(o)})}l(r,e),Y()}var Zl=A(''),Jl=A(" ",1);function Ql(r,t){q(t,!0);let e=y(t,"trueNonce",3,"");Xa("1funsus",n=>{var o=Jl(),s=f(o);{var a=d=>{var u=Zl();It(()=>Gt(u,"content",t.themeColors.dark)),l(d,u)};ot(s,d=>{t.themeColors&&d(a)})}var c=D(s,2);yr(c,()=>`(`+ql.toString()+")("+JSON.stringify(t.initConfig)+");<\/script>"),l(n,o)}),Y()}function tc(r,t){q(t,!0);let e=y(t,"track",3,!0),n=y(t,"defaultMode",3,"system"),o=y(t,"disableTransitions",3,!0),s=y(t,"darkClassNames",19,()=>["dark"]),a=y(t,"lightClassNames",19,()=>[]),c=y(t,"defaultTheme",3,""),d=y(t,"nonce",3,""),u=y(t,"themeStorageKey",3,"mode-watcher-theme"),p=y(t,"modeStorageKey",3,"mode-watcher-mode"),g=y(t,"disableHeadScriptInjection",3,!1),m=y(t,"synchronousModeChanges",3,!1);_n.current=p(),bn.current=u(),jr.current=s(),Gr.current=a(),xr.current=o(),pn.current=t.themeColors,Pr.current=m(),nn(()=>{Pr.current=m()}),nn(()=>{xr.current=o()}),nn(()=>{pn.current=t.themeColors}),nn(()=>{jr.current=s()}),nn(()=>{Gr.current=a()}),nn(()=>{_n.current=p()}),nn(()=>{bn.current=u()}),nn(()=>{fo.current,_n.current,bn.current,jl.current}),fn(()=>{Wr.tracking(e()),Wr.query();const E=localStorage.getItem(_n.current);Gl(Vr(E)?E:n());const z=localStorage.getItem(bn.current);Kl(z||c())});const x={defaultMode:n(),themeColors:t.themeColors,darkClassNames:s(),lightClassNames:a(),defaultTheme:c(),modeStorageKey:p(),themeStorageKey:u()},h=N(()=>typeof window>"u"?d():"");var v=b(),S=f(v);{var _=E=>{Xl(E,{get themeColors(){return pn.current}})},P=E=>{Ql(E,{get trueNonce(){return i(h)},get initConfig(){return x},get themeColors(){return pn.current}})};ot(S,E=>{g()?E(_):E(P,!1)})}l(r,v),Y()}function ec(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);ml(r,Pt({get theme(){return fo.current},class:"toaster group",style:"--normal-bg: var(--color-popover); --normal-text: var(--color-popover-foreground); --normal-border: var(--color-border);"},()=>e,{loadingIcon:d=>{Rs(d,{class:"size-4 animate-spin"})},successIcon:d=>{wi(d,{class:"size-4"})},errorIcon:d=>{Pi(d,{class:"size-4"})},infoIcon:d=>{xi(d,{class:"size-4"})},warningIcon:d=>{Ti(d,{class:"size-4"})},$$slots:{loadingIcon:!0,successIcon:!0,errorIcon:!0,infoIcon:!0,warningIcon:!0}})),Y()}const nc="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='107'%20height='128'%20viewBox='0%200%20107%20128'%3e%3ctitle%3esvelte-logo%3c/title%3e%3cpath%20d='M94.157%2022.819c-10.4-14.885-30.94-19.297-45.792-9.835L22.282%2029.608A29.92%2029.92%200%200%200%208.764%2049.65a31.5%2031.5%200%200%200%203.108%2020.231%2030%2030%200%200%200-4.477%2011.183%2031.9%2031.9%200%200%200%205.448%2024.116c10.402%2014.887%2030.942%2019.297%2045.791%209.835l26.083-16.624A29.92%2029.92%200%200%200%2098.235%2078.35a31.53%2031.53%200%200%200-3.105-20.232%2030%2030%200%200%200%204.474-11.182%2031.88%2031.88%200%200%200-5.447-24.116'%20style='fill:%23ff3e00'/%3e%3cpath%20d='M45.817%20106.582a20.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.503%2018%2018%200%200%201%20.624-2.435l.49-1.498%201.337.981a33.6%2033.6%200%200%200%2010.203%205.098l.97.294-.09.968a5.85%205.85%200%200%200%201.052%203.878%206.24%206.24%200%200%200%206.695%202.485%205.8%205.8%200%200%200%201.603-.704L69.27%2076.28a5.43%205.43%200%200%200%202.45-3.631%205.8%205.8%200%200%200-.987-4.371%206.24%206.24%200%200%200-6.698-2.487%205.7%205.7%200%200%200-1.6.704l-9.953%206.345a19%2019%200%200%201-5.296%202.326%2020.72%2020.72%200%200%201-22.237-8.243%2019.17%2019.17%200%200%201-3.277-14.502%2017.99%2017.99%200%200%201%208.13-12.052l26.081-16.623a19%2019%200%200%201%205.3-2.329%2020.72%2020.72%200%200%201%2022.237%208.243%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-.624%202.435l-.49%201.498-1.337-.98a33.6%2033.6%200%200%200-10.203-5.1l-.97-.294.09-.968a5.86%205.86%200%200%200-1.052-3.878%206.24%206.24%200%200%200-6.696-2.485%205.8%205.8%200%200%200-1.602.704L37.73%2051.72a5.42%205.42%200%200%200-2.449%203.63%205.79%205.79%200%200%200%20.986%204.372%206.24%206.24%200%200%200%206.698%202.486%205.8%205.8%200%200%200%201.602-.704l9.952-6.342a19%2019%200%200%201%205.295-2.328%2020.72%2020.72%200%200%201%2022.237%208.242%2019.17%2019.17%200%200%201%203.277%2014.503%2018%2018%200%200%201-8.13%2012.053l-26.081%2016.622a19%2019%200%200%201-5.3%202.328'%20style='fill:%23fff'/%3e%3c/svg%3e";function rc(r){r.forEach(t=>{fetch(gn.download_model_by_id(mn.token,t.id,t.type,t.cover,t.base_model,t.model_name,t.author_name,t.published_at,t.based_on_model,t.file_name,t.stats))})}const On=An({component:"accordion",parts:["root","trigger","content","item","header"]}),ss=new Sn("Accordion.Root"),Er=new Sn("Accordion.Item");class is{opts;rovingFocusGroup;attachment;constructor(t){this.opts=t,this.rovingFocusGroup=new Bs({rootNode:this.opts.ref,candidateAttr:On.trigger,loop:this.opts.loop,orientation:this.opts.orientation}),this.attachment=Fe(this.opts.ref)}#t=N(()=>({id:this.opts.id.current,"data-orientation":this.opts.orientation.current,"data-disabled":hn(this.opts.disabled.current),[On.root]:"",...this.attachment}));get props(){return i(this.#t)}set props(t){C(this.#t,t)}}class oc extends is{opts;isMulti=!1;constructor(t){super(t),this.opts=t,this.includesItem=this.includesItem.bind(this),this.toggleItem=this.toggleItem.bind(this)}includesItem(t){return this.opts.value.current===t}toggleItem(t){this.opts.value.current=this.includesItem(t)?"":t}}class ac extends is{#t;isMulti=!0;constructor(t){super(t),this.#t=t.value,this.includesItem=this.includesItem.bind(this),this.toggleItem=this.toggleItem.bind(this)}includesItem(t){return this.#t.current.includes(t)}toggleItem(t){this.#t.current=this.includesItem(t)?this.#t.current.filter(e=>e!==t):[...this.#t.current,t]}}class sc{static create(t){const{type:e,...n}=t,o=e==="single"?new oc(n):new ac(n);return ss.set(o)}}class ho{static create(t){return Er.set(new ho({...t,rootState:ss.get()}))}opts;root;#t=N(()=>this.root.includesItem(this.opts.value.current));get isActive(){return i(this.#t)}set isActive(t){C(this.#t,t)}#e=N(()=>this.opts.disabled.current||this.root.opts.disabled.current);get isDisabled(){return i(this.#e)}set isDisabled(t){C(this.#e,t)}attachment;#n=wt(null);get contentNode(){return i(this.#n)}set contentNode(t){C(this.#n,t,!0)}contentPresence;constructor(t){this.opts=t,this.root=t.rootState,this.updateValue=this.updateValue.bind(this),this.attachment=Fe(this.opts.ref),this.contentPresence=new Yn({ref:dt(()=>this.contentNode),open:dt(()=>this.isActive)})}updateValue(){this.root.toggleItem(this.opts.value.current)}#r=N(()=>({id:this.opts.id.current,"data-state":vn(this.isActive),"data-disabled":hn(this.isDisabled),"data-orientation":this.root.opts.orientation.current,[On.item]:"",...this.attachment}));get props(){return i(this.#r)}set props(t){C(this.#r,t)}}class vo{opts;itemState;#t;#e=N(()=>this.opts.disabled.current||this.itemState.opts.disabled.current||this.#t.opts.disabled.current);attachment;constructor(t,e){this.opts=t,this.itemState=e,this.#t=e.root,this.onclick=this.onclick.bind(this),this.onkeydown=this.onkeydown.bind(this),this.attachment=Fe(this.opts.ref)}static create(t){return new vo(t,Er.get())}onclick(t){if(i(this.#e)||t.button!==0){t.preventDefault();return}this.itemState.updateValue()}onkeydown(t){if(!i(this.#e)){if(t.key===ro||t.key===oo){t.preventDefault(),this.itemState.updateValue();return}this.#t.rovingFocusGroup.handleKeydown(this.opts.ref.current,t)}}#n=N(()=>({id:this.opts.id.current,disabled:i(this.#e),"aria-expanded":hr(this.itemState.isActive),"aria-disabled":hr(i(this.#e)),"data-disabled":hn(i(this.#e)),"data-state":vn(this.itemState.isActive),"data-orientation":this.#t.opts.orientation.current,[On.trigger]:"",tabindex:this.opts.tabindex.current,onclick:this.onclick,onkeydown:this.onkeydown,...this.attachment}));get props(){return i(this.#n)}set props(t){C(this.#n,t)}}class go{opts;item;attachment;#t=void 0;#e=!1;#n=wt(Xe({width:0,height:0}));#r=N(()=>this.opts.hiddenUntilFound.current?this.item.isActive:this.opts.forceMount.current||this.item.isActive);get open(){return i(this.#r)}set open(t){C(this.#r,t)}constructor(t,e){this.opts=t,this.item=e,this.#e=this.item.isActive,this.attachment=Fe(this.opts.ref,n=>this.item.contentNode=n),qe(()=>{const n=requestAnimationFrame(()=>{this.#e=!1});return()=>cancelAnimationFrame(n)}),Je.pre([()=>this.opts.ref.current,()=>this.opts.hiddenUntilFound.current],([n,o])=>!n||!o?void 0:De(n,"beforematch",()=>{this.item.isActive||requestAnimationFrame(()=>{this.item.updateValue()})})),Je([()=>this.open,()=>this.opts.ref.current],this.#o)}static create(t){return new go(t,Er.get())}#o=([t,e])=>{e&&Oa(()=>{const n=this.opts.ref.current;if(!n)return;this.#t??={transitionDuration:n.style.transitionDuration,animationName:n.style.animationName},n.style.transitionDuration="0s",n.style.animationName="none";const o=n.getBoundingClientRect();C(this.#n,{width:o.width,height:o.height},!0),!this.#e&&this.#t&&(n.style.transitionDuration=this.#t.transitionDuration,n.style.animationName=this.#t.animationName)})};get shouldRender(){return this.item.contentPresence.shouldRender}#a=N(()=>({open:this.item.isActive}));get snippetProps(){return i(this.#a)}set snippetProps(t){C(this.#a,t)}#i=N(()=>({id:this.opts.id.current,"data-state":vn(this.item.isActive),"data-disabled":hn(this.item.isDisabled),"data-orientation":this.item.root.opts.orientation.current,[On.content]:"",style:{"--bits-accordion-content-height":`${i(this.#n).height}px`,"--bits-accordion-content-width":`${i(this.#n).width}px`},hidden:this.opts.hiddenUntilFound.current&&!this.item.isActive?"until-found":void 0,...this.opts.hiddenUntilFound.current&&!this.shouldRender?{}:{hidden:this.opts.hiddenUntilFound.current?!this.shouldRender:this.opts.forceMount.current?void 0:!this.shouldRender},...this.attachment}));get props(){return i(this.#i)}set props(t){C(this.#i,t)}}class mo{opts;item;attachment;constructor(t,e){this.opts=t,this.item=e,this.attachment=Fe(this.opts.ref)}static create(t){return new mo(t,Er.get())}#t=N(()=>({id:this.opts.id.current,role:"heading","aria-level":this.opts.level.current,"data-heading-level":this.opts.level.current,"data-state":vn(this.item.isActive),"data-orientation":this.item.root.opts.orientation.current,[On.header]:"",...this.attachment}));get props(){return i(this.#t)}set props(t){C(this.#t,t)}}var ic=A("
      ");function lc(r,t){const e=Oe();q(t,!0);let n=y(t,"disabled",3,!1),o=y(t,"value",15),s=y(t,"ref",15,null),a=y(t,"id",19,()=>Me(e)),c=y(t,"onValueChange",3,Ye),d=y(t,"loop",3,!0),u=y(t,"orientation",3,"vertical"),p=st(t,["$$slots","$$events","$$legacy","disabled","children","child","type","value","ref","id","onValueChange","loop","orientation"]);function g(){o()===void 0&&o(t.type==="single"?"":[])}g(),Je.pre(()=>o(),()=>{g()});const m=sc.create({type:t.type,value:dt(()=>o(),P=>{o(P),c()(P)}),id:dt(()=>a()),disabled:dt(()=>n()),loop:dt(()=>d()),orientation:dt(()=>u()),ref:dt(()=>s(),P=>s(P))}),x=N(()=>ve(p,m.props));var h=b(),v=f(h);{var S=P=>{var E=b(),z=f(E);X(z,()=>t.child,()=>({props:i(x)})),l(P,E)},_=P=>{var E=ic();Mt(E,()=>({...i(x)}));var z=M(E);X(z,()=>t.children??mt),O(E),l(P,E)};ot(v,P=>{t.child?P(S):P(_,!1)})}l(r,h),Y()}var cc=A("
      ");function dc(r,t){const e=Oe();q(t,!0);const n=Me(e);let o=y(t,"id",3,n),s=y(t,"disabled",3,!1),a=y(t,"value",3,n),c=y(t,"ref",15,null),d=st(t,["$$slots","$$events","$$legacy","id","disabled","value","children","child","ref"]);const u=ho.create({value:dt(()=>a()),disabled:dt(()=>s()),id:dt(()=>o()),ref:dt(()=>c(),v=>c(v))}),p=N(()=>ve(d,u.props));var g=b(),m=f(g);{var x=v=>{var S=b(),_=f(S);X(_,()=>t.child,()=>({props:i(p)})),l(v,S)},h=v=>{var S=cc();Mt(S,()=>({...i(p)}));var _=M(S);X(_,()=>t.children??mt),O(S),l(v,S)};ot(m,v=>{t.child?v(x):v(h,!1)})}l(r,g),Y()}var uc=A("
      ");function fc(r,t){const e=Oe();q(t,!0);let n=y(t,"id",19,()=>Me(e)),o=y(t,"level",3,2),s=y(t,"ref",15,null),a=st(t,["$$slots","$$events","$$legacy","id","level","children","child","ref"]);const c=mo.create({id:dt(()=>n()),level:dt(()=>o()),ref:dt(()=>s(),x=>s(x))}),d=N(()=>ve(a,c.props));var u=b(),p=f(u);{var g=x=>{var h=b(),v=f(h);X(v,()=>t.child,()=>({props:i(d)})),l(x,h)},m=x=>{var h=uc();Mt(h,()=>({...i(d)}));var v=M(h);X(v,()=>t.children??mt),O(h),l(x,h)};ot(p,x=>{t.child?x(g):x(m,!1)})}l(r,u),Y()}var hc=A("");function vc(r,t){const e=Oe();q(t,!0);let n=y(t,"disabled",3,!1),o=y(t,"ref",15,null),s=y(t,"id",19,()=>Me(e)),a=y(t,"tabindex",3,0),c=st(t,["$$slots","$$events","$$legacy","disabled","ref","id","tabindex","children","child"]);const d=vo.create({disabled:dt(()=>n()),id:dt(()=>s()),tabindex:dt(()=>a()??0),ref:dt(()=>o(),h=>o(h))}),u=N(()=>ve(c,d.props));var p=b(),g=f(p);{var m=h=>{var v=b(),S=f(v);X(S,()=>t.child,()=>({props:i(u)})),l(h,v)},x=h=>{var v=hc();Mt(v,()=>({type:"button",...i(u)}));var S=M(v);X(S,()=>t.children??mt),O(v),l(h,v)};ot(g,h=>{t.child?h(m):h(x,!1)})}l(r,p),Y()}var gc=A("
      ");function mc(r,t){const e=Oe();q(t,!0);let n=y(t,"ref",15,null),o=y(t,"id",19,()=>Me(e)),s=y(t,"forceMount",3,!1),a=y(t,"hiddenUntilFound",3,!1),c=st(t,["$$slots","$$events","$$legacy","child","ref","id","forceMount","children","hiddenUntilFound"]);const d=go.create({forceMount:dt(()=>s()),id:dt(()=>o()),ref:dt(()=>n(),h=>n(h)),hiddenUntilFound:dt(()=>a())}),u=N(()=>ve(c,d.props));var p=b(),g=f(p);{var m=h=>{var v=b(),S=f(v);{let _=N(()=>({props:i(u),...d.snippetProps}));X(S,()=>t.child,()=>i(_))}l(h,v)},x=h=>{var v=gc();Mt(v,()=>({...i(u)}));var S=M(v);X(S,()=>t.children??mt),O(v),l(h,v)};ot(g,h=>{t.child?h(m):h(x,!1)})}l(r,p),Y()}var pc=A("
      ");function ls(r,t){const e=Oe();q(t,!0);let n=y(t,"id",19,()=>Me(e)),o=y(t,"ref",15,null),s=st(t,["$$slots","$$events","$$legacy","id","children","child","ref"]);const a=Xs.create({id:dt(()=>n()),ref:dt(()=>o(),m=>o(m))}),c=N(()=>ve(s,a.props));var d=b(),u=f(d);{var p=m=>{var x=b(),h=f(x);X(h,()=>t.child,()=>({props:i(c)})),l(m,x)},g=m=>{var x=pc();Mt(x,()=>({...i(c)}));var h=M(x);X(h,()=>t.children??mt),O(x),l(m,x)};ot(u,m=>{t.child?m(p):m(g,!1)})}l(r,d),Y()}const _c=An({component:"aspect-ratio",parts:["root"]});class po{static create(t){return new po(t)}opts;attachment;constructor(t){this.opts=t,this.attachment=Fe(this.opts.ref)}#t=N(()=>({id:this.opts.id.current,style:{position:"absolute",top:0,right:0,bottom:0,left:0},[_c.root]:"",...this.attachment}));get props(){return i(this.#t)}set props(t){C(this.#t,t)}}var bc=A("
      "),yc=A("
      ");function wc(r,t){const e=Oe();q(t,!0);let n=y(t,"ref",15,null),o=y(t,"id",19,()=>Me(e)),s=y(t,"ratio",3,1),a=st(t,["$$slots","$$events","$$legacy","ref","id","ratio","children","child"]);const c=po.create({id:dt(()=>o()),ref:dt(()=>n(),h=>n(h)),ratio:dt(()=>s())}),d=N(()=>ve(a,c.props));var u=yc();let p;var g=M(u);{var m=h=>{var v=b(),S=f(v);X(S,()=>t.child,()=>({props:i(d)})),l(h,v)},x=h=>{var v=bc();Mt(v,()=>({...i(d)}));var S=M(v);X(S,()=>t.children??mt),O(v),l(h,v)};ot(g,h=>{t.child?h(m):h(x,!1)})}O(u),It(()=>p=Wn(u,"",p,{position:"relative",width:"100%","padding-bottom":`${s()?100/s():0}%`})),l(r,u),Y()}const _o=An({component:"avatar",parts:["root","image","fallback"]}),bo=new Sn("Avatar.Root");class yo{static create(t){return bo.set(new yo(t))}opts;domContext;attachment;constructor(t){this.opts=t,this.domContext=new ao(this.opts.ref),this.loadImage=this.loadImage.bind(this),this.attachment=Fe(this.opts.ref)}loadImage(t,e,n){if(this.opts.loadingStatus.current==="loaded")return;let o;const s=new Image;return s.src=t,e!==void 0&&(s.crossOrigin=e),n&&(s.referrerPolicy=n),this.opts.loadingStatus.current="loading",s.onload=()=>{o=this.domContext.setTimeout(()=>{this.opts.loadingStatus.current="loaded"},this.opts.delayMs.current)},s.onerror=()=>{this.opts.loadingStatus.current="error"},()=>{o&&this.domContext.clearTimeout(o)}}#t=N(()=>({id:this.opts.id.current,[_o.root]:"","data-status":this.opts.loadingStatus.current,...this.attachment}));get props(){return i(this.#t)}set props(t){C(this.#t,t)}}class wo{static create(t){return new wo(t,bo.get())}opts;root;attachment;constructor(t,e){this.opts=t,this.root=e,this.attachment=Fe(this.opts.ref),Je.pre([()=>this.opts.src.current,()=>this.opts.crossOrigin.current],([n,o])=>{if(!n){this.root.opts.loadingStatus.current="error";return}this.root.loadImage(n,o,this.opts.referrerPolicy.current)})}#t=N(()=>({id:this.opts.id.current,style:{display:this.root.opts.loadingStatus.current==="loaded"?"block":"none"},"data-status":this.root.opts.loadingStatus.current,[_o.image]:"",src:this.opts.src.current,crossorigin:this.opts.crossOrigin.current,referrerpolicy:this.opts.referrerPolicy.current,...this.attachment}));get props(){return i(this.#t)}set props(t){C(this.#t,t)}}class xo{static create(t){return new xo(t,bo.get())}opts;root;attachment;constructor(t,e){this.opts=t,this.root=e,this.attachment=Fe(this.opts.ref)}#t=N(()=>this.root.opts.loadingStatus.current==="loaded"?{display:"none"}:void 0);get style(){return i(this.#t)}set style(t){C(this.#t,t)}#e=N(()=>({style:this.style,"data-status":this.root.opts.loadingStatus.current,[_o.fallback]:"",...this.attachment}));get props(){return i(this.#e)}set props(t){C(this.#e,t)}}var xc=A("
      ");function Pc(r,t){const e=Oe();q(t,!0);let n=y(t,"delayMs",3,0),o=y(t,"loadingStatus",15,"loading"),s=y(t,"id",19,()=>Me(e)),a=y(t,"ref",15,null),c=st(t,["$$slots","$$events","$$legacy","delayMs","loadingStatus","onLoadingStatusChange","child","children","id","ref"]);const d=yo.create({delayMs:dt(()=>n()),loadingStatus:dt(()=>o(),h=>{o()!==h&&(o(h),t.onLoadingStatusChange?.(h))}),id:dt(()=>s()),ref:dt(()=>a(),h=>a(h))}),u=N(()=>ve(c,d.props));var p=b(),g=f(p);{var m=h=>{var v=b(),S=f(v);X(S,()=>t.child,()=>({props:i(u)})),l(h,v)},x=h=>{var v=xc();Mt(v,()=>({...i(u)}));var S=M(v);X(S,()=>t.children??mt),O(v),l(h,v)};ot(g,h=>{t.child?h(m):h(x,!1)})}l(r,p),Y()}var Tc=A("");function Sc(r,t){const e=Oe();q(t,!0);let n=y(t,"id",19,()=>Me(e)),o=y(t,"ref",15,null),s=y(t,"crossorigin",3,void 0),a=y(t,"referrerpolicy",3,void 0),c=st(t,["$$slots","$$events","$$legacy","src","child","id","ref","crossorigin","referrerpolicy"]);const d=wo.create({src:dt(()=>t.src),id:dt(()=>n()),ref:dt(()=>o(),h=>o(h)),crossOrigin:dt(()=>s()),referrerPolicy:dt(()=>a())}),u=N(()=>ve(c,d.props));var p=b(),g=f(p);{var m=h=>{var v=b(),S=f(v);X(S,()=>t.child,()=>({props:i(u)})),l(h,v)},x=h=>{var v=Tc();Mt(v,()=>({...i(u),src:t.src})),Cs(v),l(h,v)};ot(g,h=>{t.child?h(m):h(x,!1)})}l(r,p),Y()}var Ac=A("");function Cc(r,t){const e=Oe();q(t,!0);let n=y(t,"id",19,()=>Me(e)),o=y(t,"ref",15,null),s=st(t,["$$slots","$$events","$$legacy","children","child","id","ref"]);const a=xo.create({id:dt(()=>n()),ref:dt(()=>o(),m=>o(m))}),c=N(()=>ve(s,a.props));var d=b(),u=f(d);{var p=m=>{var x=b(),h=f(x);X(h,()=>t.child,()=>({props:i(c)})),l(m,x)},g=m=>{var x=Ac();Mt(x,()=>({...i(c)}));var h=M(x);X(h,()=>t.children??mt),O(x),l(m,x)};ot(u,m=>{t.child?m(p):m(g,!1)})}l(r,d),Y()}const Po=An({component:"collapsible",parts:["root","content","trigger"]}),To=new Sn("Collapsible.Root");class So{static create(t){return To.set(new So(t))}opts;attachment;#t=wt(null);get contentNode(){return i(this.#t)}set contentNode(t){C(this.#t,t,!0)}contentPresence;#e=wt(void 0);get contentId(){return i(this.#e)}set contentId(t){C(this.#e,t,!0)}constructor(t){this.opts=t,this.toggleOpen=this.toggleOpen.bind(this),this.attachment=Fe(this.opts.ref),this.contentPresence=new Yn({ref:dt(()=>this.contentNode),open:this.opts.open,onComplete:()=>{this.opts.onOpenChangeComplete.current(this.opts.open.current)}})}toggleOpen(){this.opts.open.current=!this.opts.open.current}#n=N(()=>({id:this.opts.id.current,"data-state":vn(this.opts.open.current),"data-disabled":hn(this.opts.disabled.current),[Po.root]:"",...this.attachment}));get props(){return i(this.#n)}set props(t){C(this.#n,t)}}class Ao{static create(t){return new Ao(t,To.get())}opts;root;attachment;#t=N(()=>this.opts.hiddenUntilFound.current?this.root.opts.open.current:this.opts.forceMount.current||this.root.opts.open.current);get present(){return i(this.#t)}set present(t){C(this.#t,t)}#e;#n=wt(!1);#r=wt(0);#o=wt(0);constructor(t,e){this.opts=t,this.root=e,C(this.#n,e.opts.open.current,!0),this.root.contentId=this.opts.id.current,this.attachment=Fe(this.opts.ref,n=>this.root.contentNode=n),Je.pre(()=>this.opts.id.current,n=>{this.root.contentId=n}),nn(()=>{const n=requestAnimationFrame(()=>{C(this.#n,!1)});return()=>{cancelAnimationFrame(n)}}),Je.pre([()=>this.opts.ref.current,()=>this.opts.hiddenUntilFound.current],([n,o])=>!n||!o?void 0:De(n,"beforematch",()=>{this.root.opts.open.current||requestAnimationFrame(()=>{this.root.opts.open.current=!0})})),Je([()=>this.opts.ref.current,()=>this.present],([n])=>{n&&Oa(()=>{if(!this.opts.ref.current)return;this.#e=this.#e||{transitionDuration:n.style.transitionDuration,animationName:n.style.animationName},n.style.transitionDuration="0s",n.style.animationName="none";const o=n.getBoundingClientRect();if(C(this.#o,o.height,!0),C(this.#r,o.width,!0),!i(this.#n)){const{animationName:s,transitionDuration:a}=this.#e;n.style.transitionDuration=a,n.style.animationName=s}})})}get shouldRender(){return this.root.contentPresence.shouldRender}#a=N(()=>({open:this.root.opts.open.current}));get snippetProps(){return i(this.#a)}set snippetProps(t){C(this.#a,t)}#i=N(()=>({id:this.opts.id.current,style:{"--bits-collapsible-content-height":i(this.#o)?`${i(this.#o)}px`:void 0,"--bits-collapsible-content-width":i(this.#r)?`${i(this.#r)}px`:void 0},hidden:this.opts.hiddenUntilFound.current&&!this.root.opts.open.current?"until-found":void 0,"data-state":vn(this.root.opts.open.current),"data-disabled":hn(this.root.opts.disabled.current),[Po.content]:"",...this.opts.hiddenUntilFound.current&&!this.shouldRender?{}:{hidden:this.opts.hiddenUntilFound.current?!this.shouldRender:this.opts.forceMount.current?void 0:!this.shouldRender},...this.attachment}));get props(){return i(this.#i)}set props(t){C(this.#i,t)}}class Co{static create(t){return new Co(t,To.get())}opts;root;attachment;#t=N(()=>this.opts.disabled.current||this.root.opts.disabled.current);constructor(t,e){this.opts=t,this.root=e,this.attachment=Fe(this.opts.ref),this.onclick=this.onclick.bind(this),this.onkeydown=this.onkeydown.bind(this)}onclick(t){if(!i(this.#t)){if(t.button!==0)return t.preventDefault();this.root.toggleOpen()}}onkeydown(t){i(this.#t)||(t.key===ro||t.key===oo)&&(t.preventDefault(),this.root.toggleOpen())}#e=N(()=>({id:this.opts.id.current,type:"button",disabled:i(this.#t),"aria-controls":this.root.contentId,"aria-expanded":hr(this.root.opts.open.current),"data-state":vn(this.root.opts.open.current),"data-disabled":hn(i(this.#t)),[Po.trigger]:"",onclick:this.onclick,onkeydown:this.onkeydown,...this.attachment}));get props(){return i(this.#e)}set props(t){C(this.#e,t)}}var Ec=A("
      ");function Ic(r,t){const e=Oe();q(t,!0);let n=y(t,"id",19,()=>Me(e)),o=y(t,"ref",15,null),s=y(t,"open",15,!1),a=y(t,"disabled",3,!1),c=y(t,"onOpenChange",3,Ye),d=y(t,"onOpenChangeComplete",3,Ye),u=st(t,["$$slots","$$events","$$legacy","children","child","id","ref","open","disabled","onOpenChange","onOpenChangeComplete"]);const p=So.create({open:dt(()=>s(),S=>{s(S),c()(S)}),disabled:dt(()=>a()),id:dt(()=>n()),ref:dt(()=>o(),S=>o(S)),onOpenChangeComplete:dt(()=>d())}),g=N(()=>ve(u,p.props));var m=b(),x=f(m);{var h=S=>{var _=b(),P=f(_);X(P,()=>t.child,()=>({props:i(g)})),l(S,_)},v=S=>{var _=Ec();Mt(_,()=>({...i(g)}));var P=M(_);X(P,()=>t.children??mt),O(_),l(S,_)};ot(x,S=>{t.child?S(h):S(v,!1)})}l(r,m),Y()}var Dc=A("
      ");function Oc(r,t){const e=Oe();q(t,!0);let n=y(t,"ref",15,null),o=y(t,"forceMount",3,!1),s=y(t,"hiddenUntilFound",3,!1),a=y(t,"id",19,()=>Me(e)),c=st(t,["$$slots","$$events","$$legacy","child","ref","forceMount","hiddenUntilFound","children","id"]);const d=Ao.create({id:dt(()=>a()),forceMount:dt(()=>o()),hiddenUntilFound:dt(()=>s()),ref:dt(()=>n(),h=>n(h))}),u=N(()=>ve(c,d.props));var p=b(),g=f(p);{var m=h=>{var v=b(),S=f(v);{let _=N(()=>({...d.snippetProps,props:i(u)}));X(S,()=>t.child,()=>i(_))}l(h,v)},x=h=>{var v=Dc();Mt(v,()=>({...i(u)}));var S=M(v);X(S,()=>t.children??mt),O(v),l(h,v)};ot(g,h=>{t.child?h(m):h(x,!1)})}l(r,p),Y()}var kc=A("");function Mc(r,t){const e=Oe();q(t,!0);let n=y(t,"ref",15,null),o=y(t,"id",19,()=>Me(e)),s=y(t,"disabled",3,!1),a=st(t,["$$slots","$$events","$$legacy","children","child","ref","id","disabled"]);const c=Co.create({id:dt(()=>o()),ref:dt(()=>n(),x=>n(x)),disabled:dt(()=>s())}),d=N(()=>ve(a,c.props));var u=b(),p=f(u);{var g=x=>{var h=b(),v=f(h);X(v,()=>t.child,()=>({props:i(d)})),l(x,h)},m=x=>{var h=kc();Mt(h,()=>({...i(d)}));var v=M(h);X(v,()=>t.children??mt),O(h),l(x,h)};ot(p,x=>{t.child?x(g):x(m,!1)})}l(r,u),Y()}var Nc=kn(''),$c=A("");function Lc(r,t){q(t,!0);let e=y(t,"id",19,ka),n=y(t,"width",3,10),o=y(t,"height",3,5),s=st(t,["$$slots","$$events","$$legacy","id","children","child","width","height"]);const a=N(()=>ve(s,{id:e()}));var c=b(),d=f(c);{var u=g=>{var m=b(),x=f(m);X(x,()=>t.child,()=>({props:i(a)})),l(g,m)},p=g=>{var m=$c();Mt(m,()=>({...i(a)}));var x=M(m);{var h=S=>{var _=b(),P=f(_);X(P,()=>t.children??mt),l(S,_)},v=S=>{var _=Nc();It(()=>{Gt(_,"width",n()),Gt(_,"height",o())}),l(S,_)};ot(x,S=>{t.children?S(h):S(v,!1)})}O(m),l(g,m)};ot(d,g=>{t.child?g(u):g(p,!1)})}l(r,c),Y()}function zc(r,t){q(t,!0);let e=y(t,"id",19,ka),n=y(t,"ref",15,null),o=st(t,["$$slots","$$events","$$legacy","id","ref"]);const s=ri.create({id:dt(()=>e()),ref:dt(()=>n(),c=>n(c))}),a=N(()=>ve(o,s.props));Lc(r,Pt(()=>i(a))),Y()}const Fc=An({component:"separator",parts:["root"]});class Eo{static create(t){return new Eo(t)}opts;attachment;constructor(t){this.opts=t,this.attachment=Fe(t.ref)}#t=N(()=>({id:this.opts.id.current,role:this.opts.decorative.current?"none":"separator","aria-orientation":this.opts.orientation.current,"aria-hidden":Hs(this.opts.decorative.current),"data-orientation":this.opts.orientation.current,[Fc.root]:"",...this.attachment}));get props(){return i(this.#t)}set props(t){C(this.#t,t)}}var Rc=A("
      ");function Bc(r,t){const e=Oe();q(t,!0);let n=y(t,"id",19,()=>Me(e)),o=y(t,"ref",15,null),s=y(t,"decorative",3,!1),a=y(t,"orientation",3,"horizontal"),c=st(t,["$$slots","$$events","$$legacy","id","ref","child","children","decorative","orientation"]);const d=Eo.create({ref:dt(()=>o(),h=>o(h)),id:dt(()=>n()),decorative:dt(()=>s()),orientation:dt(()=>a())}),u=N(()=>ve(c,d.props));var p=b(),g=f(p);{var m=h=>{var v=b(),S=f(v);X(S,()=>t.child,()=>({props:i(u)})),l(h,v)},x=h=>{var v=Rc();Mt(v,()=>({...i(u)}));var S=M(v);X(S,()=>t.children??mt),O(v),l(h,v)};ot(g,h=>{t.child?h(m):h(x,!1)})}l(r,p),Y()}function oa(r,t){const[e,n]=r;let o=!1;const s=t.length;for(let a=0,c=s-1;a=n!=g>=n&&e<=(p-d)*(n-u)/(g-u)+d&&(o=!o)}return o}function aa(r,t){return r[0]>=t.left&&r[0]<=t.right&&r[1]>=t.top&&r[1]<=t.bottom}function Hc(r,t){const e=r.left+r.width/2,n=r.top+r.height/2,o=t.left+t.width/2,s=t.top+t.height/2,a=o-e,c=s-n;return Math.abs(a)>Math.abs(c)?a>0?"right":"left":c>0?"bottom":"top"}class cs{#t;#e;#n=null;#r=null;constructor(t){this.#t=t,this.#e=t.buffer??1,Je([t.triggerNode,t.contentNode,t.enabled],([e,n,o])=>{if(!e||!n||!o){this.#n=null,this.#r=null;return}const s=Us(e),a=g=>{this.#o(g,e,n)},c=g=>{const m=g.relatedTarget;En(m)&&n.contains(m)||(this.#n=[g.clientX,g.clientY],this.#r="content")},d=()=>{this.#n=null,this.#r=null},u=()=>{this.#n=null,this.#r=null},p=g=>{const m=g.relatedTarget;En(m)&&e.contains(m)||(this.#n=[g.clientX,g.clientY],this.#r="trigger")};return[De(s,"pointermove",a),De(e,"pointerleave",c),De(e,"pointerenter",d),De(n,"pointerenter",u),De(n,"pointerleave",p)].reduce((g,m)=>()=>{g(),m()},()=>{})})}#o(t,e,n){if(!this.#n||!this.#r)return;const o=[t.clientX,t.clientY],s=e.getBoundingClientRect(),a=n.getBoundingClientRect();if(this.#r==="content"&&aa(o,a)){this.#n=null,this.#r=null;return}if(this.#r==="trigger"&&aa(o,s)){this.#n=null,this.#r=null;return}const c=Hc(s,a),d=this.#a(s,a,c);if(d&&oa(o,d))return;const u=this.#r==="content"?a:s,p=this.#i(this.#n,u,c,this.#r);oa(o,p)||(this.#n=null,this.#r=null,this.#t.onPointerExit())}#a(t,e,n){const o=this.#e;switch(n){case"top":return[[Math.min(t.left,e.left)-o,t.top],[Math.min(t.left,e.left)-o,e.bottom],[Math.max(t.right,e.right)+o,e.bottom],[Math.max(t.right,e.right)+o,t.top]];case"bottom":return[[Math.min(t.left,e.left)-o,t.bottom],[Math.min(t.left,e.left)-o,e.top],[Math.max(t.right,e.right)+o,e.top],[Math.max(t.right,e.right)+o,t.bottom]];case"left":return[[t.left,Math.min(t.top,e.top)-o],[e.right,Math.min(t.top,e.top)-o],[e.right,Math.max(t.bottom,e.bottom)+o],[t.left,Math.max(t.bottom,e.bottom)+o]];case"right":return[[t.right,Math.min(t.top,e.top)-o],[e.left,Math.min(t.top,e.top)-o],[e.left,Math.max(t.bottom,e.bottom)+o],[t.right,Math.max(t.bottom,e.bottom)+o]]}}#i(t,e,n,o){const s=this.#e*4,[a,c]=t;switch(o==="trigger"?this.#s(n):n){case"top":return[[a-s,c+s],[a+s,c+s],[e.right+s,e.bottom],[e.right+s,e.top],[e.left-s,e.top],[e.left-s,e.bottom]];case"bottom":return[[a-s,c-s],[a+s,c-s],[e.right+s,e.top],[e.right+s,e.bottom],[e.left-s,e.bottom],[e.left-s,e.top]];case"left":return[[a+s,c-s],[a+s,c+s],[e.right,e.bottom+s],[e.left,e.bottom+s],[e.left,e.top-s],[e.right,e.top-s]];case"right":return[[a-s,c-s],[a-s,c+s],[e.left,e.bottom+s],[e.right,e.bottom+s],[e.right,e.top-s],[e.left,e.top-s]]}}#s(t){switch(t){case"top":return"bottom";case"bottom":return"top";case"left":return"right";case"right":return"left"}}}const Kr=An({component:"popover",parts:["root","trigger","content","close","overlay"]}),Io=new Sn("Popover.Root");class Do{static create(t){return Io.set(new Do(t))}opts;#t=wt(null);get contentNode(){return i(this.#t)}set contentNode(t){C(this.#t,t,!0)}contentPresence;#e=wt(null);get triggerNode(){return i(this.#e)}set triggerNode(t){C(this.#e,t,!0)}#n=wt(null);get overlayNode(){return i(this.#n)}set overlayNode(t){C(this.#n,t,!0)}overlayPresence;#r=wt(!1);get openedViaHover(){return i(this.#r)}set openedViaHover(t){C(this.#r,t,!0)}#o=wt(!1);get hasInteractedWithContent(){return i(this.#o)}set hasInteractedWithContent(t){C(this.#o,t,!0)}#a=wt(!1);get hoverCooldown(){return i(this.#a)}set hoverCooldown(t){C(this.#a,t,!0)}#i=wt(0);get closeDelay(){return i(this.#i)}set closeDelay(t){C(this.#i,t,!0)}#s=null;#l=null;constructor(t){this.opts=t,this.contentPresence=new Yn({ref:dt(()=>this.contentNode),open:this.opts.open,onComplete:()=>{this.opts.onOpenChangeComplete.current(this.opts.open.current)}}),this.overlayPresence=new Yn({ref:dt(()=>this.overlayNode),open:this.opts.open}),Je(()=>this.opts.open.current,e=>{e||(this.openedViaHover=!1,this.hasInteractedWithContent=!1,this.#c())})}setDomContext(t){this.#l=t}#c(){this.#s!==null&&this.#l&&(this.#l.clearTimeout(this.#s),this.#s=null)}toggleOpen(){this.#c(),this.opts.open.current=!this.opts.open.current}handleClose(){this.#c(),this.opts.open.current&&(this.opts.open.current=!1)}handleHoverOpen(){this.#c(),!this.opts.open.current&&(this.openedViaHover=!0,this.opts.open.current=!0)}handleHoverClose(){this.opts.open.current&&this.openedViaHover&&!this.hasInteractedWithContent&&(this.opts.open.current=!1)}handleDelayedHoverClose(){this.opts.open.current&&(!this.openedViaHover||this.hasInteractedWithContent||(this.#c(),this.closeDelay<=0?this.opts.open.current=!1:this.#l&&(this.#s=this.#l.setTimeout(()=>{this.openedViaHover&&!this.hasInteractedWithContent&&(this.opts.open.current=!1),this.#s=null},this.closeDelay))))}cancelDelayedClose(){this.#c()}markInteraction(){this.hasInteractedWithContent=!0,this.#c()}}class Oo{static create(t){return new Oo(t,Io.get())}opts;root;attachment;domContext;#t=null;#e=null;#n=wt(!1);constructor(t,e){this.opts=t,this.root=e,this.attachment=Fe(this.opts.ref,n=>this.root.triggerNode=n),this.domContext=new ao(t.ref),this.root.setDomContext(this.domContext),this.onclick=this.onclick.bind(this),this.onkeydown=this.onkeydown.bind(this),this.onpointerenter=this.onpointerenter.bind(this),this.onpointerleave=this.onpointerleave.bind(this),Je(()=>this.opts.closeDelay.current,n=>{this.root.closeDelay=n})}#r(){this.#t!==null&&(this.domContext.clearTimeout(this.#t),this.#t=null)}#o(){this.#e!==null&&(this.domContext.clearTimeout(this.#e),this.#e=null)}#a(){this.#r(),this.#o()}onpointerenter(t){if(this.opts.disabled.current||!this.opts.openOnHover.current||vr(t)||(C(this.#n,!0),this.#o(),this.root.cancelDelayedClose(),this.root.opts.open.current||this.root.hoverCooldown))return;const e=this.opts.openDelay.current;e<=0?this.root.handleHoverOpen():this.#t=this.domContext.setTimeout(()=>{this.root.handleHoverOpen(),this.#t=null},e)}onpointerleave(t){this.opts.disabled.current||this.opts.openOnHover.current&&(vr(t)||(C(this.#n,!1),this.#r(),this.root.hoverCooldown=!1))}onclick(t){if(!this.opts.disabled.current&&t.button===0){if(this.#a(),i(this.#n)&&this.root.opts.open.current&&this.root.openedViaHover){this.root.openedViaHover=!1,this.root.hasInteractedWithContent=!0;return}i(this.#n)&&this.opts.openOnHover.current&&this.root.opts.open.current&&(this.root.hoverCooldown=!0),this.root.hoverCooldown&&!this.root.opts.open.current&&(this.root.hoverCooldown=!1),this.root.toggleOpen()}}onkeydown(t){this.opts.disabled.current||(t.key===oo||t.key===ro)&&(t.preventDefault(),this.#a(),this.root.toggleOpen())}#i(){if(this.root.opts.open.current&&this.root.contentNode?.id)return this.root.contentNode?.id}#s=N(()=>({id:this.opts.id.current,"aria-haspopup":"dialog","aria-expanded":hr(this.root.opts.open.current),"data-state":vn(this.root.opts.open.current),"aria-controls":this.#i(),[Kr.trigger]:"",disabled:this.opts.disabled.current,onkeydown:this.onkeydown,onclick:this.onclick,onpointerenter:this.onpointerenter,onpointerleave:this.onpointerleave,...this.attachment}));get props(){return i(this.#s)}set props(t){C(this.#s,t)}}class ko{static create(t){return new ko(t,Io.get())}opts;root;attachment;constructor(t,e){this.opts=t,this.root=e,this.attachment=Fe(this.opts.ref,n=>this.root.contentNode=n),this.onpointerdown=this.onpointerdown.bind(this),this.onfocusin=this.onfocusin.bind(this),this.onpointerenter=this.onpointerenter.bind(this),this.onpointerleave=this.onpointerleave.bind(this),new cs({triggerNode:()=>this.root.triggerNode,contentNode:()=>this.root.contentNode,enabled:()=>this.root.opts.open.current&&this.root.openedViaHover&&!this.root.hasInteractedWithContent,onPointerExit:()=>{this.root.handleDelayedHoverClose()}})}onpointerdown(t){this.root.markInteraction()}onfocusin(t){const e=t.target;En(e)&&Vs(e)&&this.root.markInteraction()}onpointerenter(t){vr(t)||this.root.cancelDelayedClose()}onpointerleave(t){vr(t)}onInteractOutside=t=>{if(this.opts.onInteractOutside.current(t),t.defaultPrevented||!En(t.target))return;const e=t.target.closest(Kr.selector("trigger"));if(!(e&&e===this.root.triggerNode)){if(this.opts.customAnchor.current){if(En(this.opts.customAnchor.current)){if(this.opts.customAnchor.current.contains(t.target))return}else if(typeof this.opts.customAnchor.current=="string"){const n=document.querySelector(this.opts.customAnchor.current);if(n&&n.contains(t.target))return}}this.root.handleClose()}};onEscapeKeydown=t=>{this.opts.onEscapeKeydown.current(t),!t.defaultPrevented&&this.root.handleClose()};get shouldRender(){return this.root.contentPresence.shouldRender}get shouldTrapFocus(){return!(this.root.openedViaHover&&!this.root.hasInteractedWithContent)}#t=N(()=>({open:this.root.opts.open.current}));get snippetProps(){return i(this.#t)}set snippetProps(t){C(this.#t,t)}#e=N(()=>({id:this.opts.id.current,tabindex:-1,"data-state":vn(this.root.opts.open.current),[Kr.content]:"",style:{pointerEvents:"auto",contain:"layout style paint"},onpointerdown:this.onpointerdown,onfocusin:this.onfocusin,onpointerenter:this.onpointerenter,onpointerleave:this.onpointerleave,...this.attachment}));get props(){return i(this.#e)}set props(t){C(this.#e,t)}popperProps={onInteractOutside:this.onInteractOutside,onEscapeKeydown:this.onEscapeKeydown}}var Uc=A("
      "),Vc=A("
      ");function Wc(r,t){const e=Oe();q(t,!0);let n=y(t,"ref",15,null),o=y(t,"id",19,()=>Me(e)),s=y(t,"forceMount",3,!1),a=y(t,"onOpenAutoFocus",3,Ye),c=y(t,"onCloseAutoFocus",3,Ye),d=y(t,"onEscapeKeydown",3,Ye),u=y(t,"onInteractOutside",3,Ye),p=y(t,"trapFocus",3,!0),g=y(t,"preventScroll",3,!1),m=y(t,"customAnchor",3,null),x=st(t,["$$slots","$$events","$$legacy","child","children","ref","id","forceMount","onOpenAutoFocus","onCloseAutoFocus","onEscapeKeydown","onInteractOutside","trapFocus","preventScroll","customAnchor","style"]);const h=ko.create({id:dt(()=>o()),ref:dt(()=>n(),I=>n(I)),onInteractOutside:dt(()=>u()),onEscapeKeydown:dt(()=>d()),customAnchor:dt(()=>m())}),v=N(()=>ve(x,h.props)),S=N(()=>p()&&h.shouldTrapFocus);function _(I){h.shouldTrapFocus||I.preventDefault(),a()(I)}var P=b(),E=f(P);{var z=I=>{Va(I,Pt(()=>i(v),()=>h.popperProps,{get ref(){return h.opts.ref},get enabled(){return h.root.opts.open.current},get id(){return o()},get trapFocus(){return i(S)},get preventScroll(){return g()},loop:!0,forceMount:!0,get customAnchor(){return m()},onOpenAutoFocus:_,get onCloseAutoFocus(){return c()},get shouldRender(){return h.shouldRender},popper:(H,U)=>{let Z=()=>U?.().props,W=()=>U?.().wrapperProps;const ct=N(()=>ve(Z(),{style:br("popover")},{style:t.style}));var it=b(),ht=f(it);{var Q=tt=>{var at=b(),J=f(at);{let ut=N(()=>({props:i(ct),wrapperProps:W(),...h.snippetProps}));X(J,()=>t.child,()=>i(ut))}l(tt,at)},lt=tt=>{var at=Uc();Mt(at,()=>({...W()}));var J=M(at);Mt(J,()=>({...i(ct)}));var ut=M(J);X(ut,()=>t.children??mt),O(J),O(at),l(tt,at)};ot(ht,tt=>{t.child?tt(Q):tt(lt,!1)})}l(H,it)},$$slots:{popper:!0}}))},j=I=>{var $=b(),H=f($);{var U=Z=>{Wa(Z,Pt(()=>i(v),()=>h.popperProps,{get ref(){return h.opts.ref},get open(){return h.root.opts.open.current},get id(){return o()},get trapFocus(){return i(S)},get preventScroll(){return g()},loop:!0,forceMount:!1,get customAnchor(){return m()},onOpenAutoFocus:_,get onCloseAutoFocus(){return c()},get shouldRender(){return h.shouldRender},popper:(ct,it)=>{let ht=()=>it?.().props,Q=()=>it?.().wrapperProps;const lt=N(()=>ve(ht(),{style:br("popover")},{style:t.style}));var tt=b(),at=f(tt);{var J=V=>{var R=b(),F=f(R);{let k=N(()=>({props:i(lt),wrapperProps:Q(),...h.snippetProps}));X(F,()=>t.child,()=>i(k))}l(V,R)},ut=V=>{var R=Vc();Mt(R,()=>({...Q()}));var F=M(R);Mt(F,()=>({...i(lt)}));var k=M(F);X(k,()=>t.children??mt),O(F),O(R),l(V,R)};ot(at,V=>{t.child?V(J):V(ut,!1)})}l(ct,tt)},$$slots:{popper:!0}}))};ot(H,Z=>{s()||Z(U)},!0)}l(I,$)};ot(E,I=>{s()?I(z):I(j,!1)})}l(r,P),Y()}var jc=A("");function Gc(r,t){const e=Oe();q(t,!0);let n=y(t,"id",19,()=>Me(e)),o=y(t,"ref",15,null),s=y(t,"type",3,"button"),a=y(t,"disabled",3,!1),c=y(t,"openOnHover",3,!1),d=y(t,"openDelay",3,700),u=y(t,"closeDelay",3,300),p=st(t,["$$slots","$$events","$$legacy","children","child","id","ref","type","disabled","openOnHover","openDelay","closeDelay"]);const g=Oo.create({id:dt(()=>n()),ref:dt(()=>o(),x=>o(x)),disabled:dt(()=>!!a()),openOnHover:dt(()=>c()),openDelay:dt(()=>d()),closeDelay:dt(()=>u())}),m=N(()=>ve(p,g.props,{type:s()}));ja(r,{get id(){return n()},get ref(){return g.opts.ref},children:(x,h)=>{var v=b(),S=f(v);{var _=E=>{var z=b(),j=f(z);X(j,()=>t.child,()=>({props:i(m)})),l(E,z)},P=E=>{var z=jc();Mt(z,()=>({...i(m)}));var j=M(z);X(j,()=>t.children??mt),O(z),l(E,z)};ot(S,E=>{t.child?E(_):E(P,!1)})}l(x,v)},$$slots:{default:!0}}),Y()}function Kc(r,t){q(t,!0);let e=y(t,"open",15,!1),n=y(t,"onOpenChange",3,Ye),o=y(t,"onOpenChangeComplete",3,Ye);Do.create({open:dt(()=>e(),s=>{e(s),n()(s)}),onOpenChangeComplete:dt(()=>o())}),Ga(r,{children:(s,a)=>{var c=b(),d=f(c);X(d,()=>t.children??mt),l(s,c)},$$slots:{default:!0}}),Y()}class qr{#t;#e;#n=null;constructor(t,e){this.#e=t,this.#t=e,this.stop=this.stop.bind(this),this.start=this.start.bind(this),Ws(this.stop)}#r(){this.#n!==null&&(window.clearTimeout(this.#n),this.#n=null)}stop(){this.#r()}start(...t){this.#r(),this.#n=window.setTimeout(()=>{this.#n=null,this.#e(...t)},this.#t)}}const ds=An({component:"tooltip",parts:["content","trigger"]}),us=new Sn("Tooltip.Provider"),Mo=new Sn("Tooltip.Root");class No{static create(t){return us.set(new No(t))}opts;#t=wt(!0);get isOpenDelayed(){return i(this.#t)}set isOpenDelayed(t){C(this.#t,t,!0)}isPointerInTransit=Ma(!1);#e;#n=wt(null);constructor(t){this.opts=t,this.#e=new qr(()=>{this.isOpenDelayed=!0},this.opts.skipDelayDuration.current)}#r=()=>{this.opts.skipDelayDuration.current!==0&&this.#e.start()};#o=()=>{this.#e.stop()};onOpen=t=>{i(this.#n)&&i(this.#n)!==t&&i(this.#n).handleClose(),this.#o(),this.isOpenDelayed=!1,C(this.#n,t,!0)};onClose=t=>{i(this.#n)===t&&C(this.#n,null),this.#r()};isTooltipOpen=t=>i(this.#n)===t}class $o{static create(t){return Mo.set(new $o(t,us.get()))}opts;provider;#t=N(()=>this.opts.delayDuration.current??this.provider.opts.delayDuration.current);get delayDuration(){return i(this.#t)}set delayDuration(t){C(this.#t,t)}#e=N(()=>this.opts.disableHoverableContent.current??this.provider.opts.disableHoverableContent.current);get disableHoverableContent(){return i(this.#e)}set disableHoverableContent(t){C(this.#e,t)}#n=N(()=>this.opts.disableCloseOnTriggerClick.current??this.provider.opts.disableCloseOnTriggerClick.current);get disableCloseOnTriggerClick(){return i(this.#n)}set disableCloseOnTriggerClick(t){C(this.#n,t)}#r=N(()=>this.opts.disabled.current??this.provider.opts.disabled.current);get disabled(){return i(this.#r)}set disabled(t){C(this.#r,t)}#o=N(()=>this.opts.ignoreNonKeyboardFocus.current??this.provider.opts.ignoreNonKeyboardFocus.current);get ignoreNonKeyboardFocus(){return i(this.#o)}set ignoreNonKeyboardFocus(t){C(this.#o,t)}#a=wt(null);get contentNode(){return i(this.#a)}set contentNode(t){C(this.#a,t,!0)}contentPresence;#i=wt(null);get triggerNode(){return i(this.#i)}set triggerNode(t){C(this.#i,t,!0)}#s=wt(!1);#l;#c=N(()=>this.opts.open.current?i(this.#s)?"delayed-open":"instant-open":"closed");get stateAttr(){return i(this.#c)}set stateAttr(t){C(this.#c,t)}constructor(t,e){this.opts=t,this.provider=e,this.#l=new qr(()=>{C(this.#s,!0),this.opts.open.current=!0},this.delayDuration??0),this.contentPresence=new Yn({open:this.opts.open,ref:dt(()=>this.contentNode),onComplete:()=>{this.opts.onOpenChangeComplete.current(this.opts.open.current)}}),Je(()=>this.delayDuration,()=>{this.delayDuration!==void 0&&(this.#l=new qr(()=>{C(this.#s,!0),this.opts.open.current=!0},this.delayDuration))}),Je(()=>this.opts.open.current,n=>{n?this.provider.onOpen(this):this.provider.onClose(this)},{lazy:!0})}handleOpen=()=>{this.#l.stop(),C(this.#s,!1),this.opts.open.current=!0};handleClose=()=>{this.#l.stop(),this.opts.open.current=!1};#d=()=>{this.#l.stop();const t=!this.provider.isOpenDelayed,e=this.delayDuration??0;t||e===0?(C(this.#s,e>0&&t,!0),this.opts.open.current=!0):this.#l.start()};onTriggerEnter=()=>{this.#d()};onTriggerLeave=()=>{this.disableHoverableContent?this.handleClose():this.#l.stop()}}class Lo{static create(t){return new Lo(t,Mo.get())}opts;root;attachment;#t=Ma(!1);#e=wt(!1);#n=N(()=>this.opts.disabled.current||this.root.disabled);domContext;#r=null;constructor(t,e){this.opts=t,this.root=e,this.domContext=new ao(t.ref),this.attachment=Fe(this.opts.ref,n=>this.root.triggerNode=n)}#o=()=>{this.#r!==null&&(clearTimeout(this.#r),this.#r=null)};handlePointerUp=()=>{this.#t.current=!1};#a=()=>{i(this.#n)||(this.#t.current=!1)};#i=()=>{i(this.#n)||(this.#t.current=!0,this.domContext.getDocument().addEventListener("pointerup",()=>{this.handlePointerUp()},{once:!0}))};#s=t=>{if(!i(this.#n)&&t.pointerType!=="touch"){if(this.root.provider.isPointerInTransit.current){this.#o(),this.#r=window.setTimeout(()=>{this.root.provider.isPointerInTransit.current&&(this.root.provider.isPointerInTransit.current=!1,this.root.onTriggerEnter(),C(this.#e,!0))},250);return}this.root.onTriggerEnter(),C(this.#e,!0)}};#l=t=>{i(this.#n)||t.pointerType!=="touch"&&(i(this.#e)||(this.#o(),this.root.provider.isPointerInTransit.current=!1,this.root.onTriggerEnter(),C(this.#e,!0)))};#c=()=>{i(this.#n)||(this.#o(),this.root.onTriggerLeave(),C(this.#e,!1))};#d=t=>{this.#t.current||i(this.#n)||this.root.ignoreNonKeyboardFocus&&!js(t.currentTarget)||this.root.handleOpen()};#f=()=>{i(this.#n)||this.root.handleClose()};#h=()=>{this.root.disableCloseOnTriggerClick||i(this.#n)||this.root.handleClose()};#u=N(()=>({id:this.opts.id.current,"aria-describedby":this.root.opts.open.current?this.root.contentNode?.id:void 0,"data-state":this.root.stateAttr,"data-disabled":hn(i(this.#n)),"data-delay-duration":`${this.root.delayDuration}`,[ds.trigger]:"",tabindex:i(this.#n)?void 0:this.opts.tabindex.current,disabled:this.opts.disabled.current,onpointerup:this.#a,onpointerdown:this.#i,onpointerenter:this.#s,onpointermove:this.#l,onpointerleave:this.#c,onfocus:this.#d,onblur:this.#f,onclick:this.#h,...this.attachment}));get props(){return i(this.#u)}set props(t){C(this.#u,t)}}class zo{static create(t){return new zo(t,Mo.get())}opts;root;attachment;constructor(t,e){this.opts=t,this.root=e,this.attachment=Fe(this.opts.ref,n=>this.root.contentNode=n),new cs({triggerNode:()=>this.root.triggerNode,contentNode:()=>this.root.contentNode,enabled:()=>this.root.opts.open.current&&!this.root.disableHoverableContent,onPointerExit:()=>{this.root.provider.isTooltipOpen(this.root)&&this.root.handleClose()}}),oi(()=>De(window,"scroll",n=>{const o=n.target;o&&o.contains(this.root.triggerNode)&&this.root.handleClose()}))}onInteractOutside=t=>{if(En(t.target)&&this.root.triggerNode?.contains(t.target)&&this.root.disableCloseOnTriggerClick){t.preventDefault();return}this.opts.onInteractOutside.current(t),!t.defaultPrevented&&this.root.handleClose()};onEscapeKeydown=t=>{this.opts.onEscapeKeydown.current?.(t),!t.defaultPrevented&&this.root.handleClose()};onOpenAutoFocus=t=>{t.preventDefault()};onCloseAutoFocus=t=>{t.preventDefault()};get shouldRender(){return this.root.contentPresence.shouldRender}#t=N(()=>({open:this.root.opts.open.current}));get snippetProps(){return i(this.#t)}set snippetProps(t){C(this.#t,t)}#e=N(()=>({id:this.opts.id.current,"data-state":this.root.stateAttr,"data-disabled":hn(this.root.disabled),style:{outline:"none"},[ds.content]:"",...this.attachment}));get props(){return i(this.#e)}set props(t){C(this.#e,t)}popperProps={onInteractOutside:this.onInteractOutside,onEscapeKeydown:this.onEscapeKeydown,onOpenAutoFocus:this.onOpenAutoFocus,onCloseAutoFocus:this.onCloseAutoFocus}}function qc(r,t){q(t,!0);let e=y(t,"open",15,!1),n=y(t,"onOpenChange",3,Ye),o=y(t,"onOpenChangeComplete",3,Ye);$o.create({open:dt(()=>e(),s=>{e(s),n()(s)}),delayDuration:dt(()=>t.delayDuration),disableCloseOnTriggerClick:dt(()=>t.disableCloseOnTriggerClick),disableHoverableContent:dt(()=>t.disableHoverableContent),ignoreNonKeyboardFocus:dt(()=>t.ignoreNonKeyboardFocus),disabled:dt(()=>t.disabled),onOpenChangeComplete:dt(()=>o())}),Ga(r,{tooltip:!0,children:(s,a)=>{var c=b(),d=f(c);X(d,()=>t.children??mt),l(s,c)},$$slots:{default:!0}}),Y()}var Yc=A("
      "),Xc=A("
      ");function Zc(r,t){const e=Oe();q(t,!0);let n=y(t,"id",19,()=>Me(e)),o=y(t,"ref",15,null),s=y(t,"side",3,"top"),a=y(t,"sideOffset",3,0),c=y(t,"align",3,"center"),d=y(t,"avoidCollisions",3,!0),u=y(t,"arrowPadding",3,0),p=y(t,"sticky",3,"partial"),g=y(t,"hideWhenDetached",3,!1),m=y(t,"collisionPadding",3,0),x=y(t,"onInteractOutside",3,Ye),h=y(t,"onEscapeKeydown",3,Ye),v=y(t,"forceMount",3,!1),S=st(t,["$$slots","$$events","$$legacy","children","child","id","ref","side","sideOffset","align","avoidCollisions","arrowPadding","sticky","strategy","hideWhenDetached","collisionPadding","onInteractOutside","onEscapeKeydown","forceMount","style"]);const _=zo.create({id:dt(()=>n()),ref:dt(()=>o(),H=>o(H)),onInteractOutside:dt(()=>x()),onEscapeKeydown:dt(()=>h())}),P=N(()=>({side:s(),sideOffset:a(),align:c(),avoidCollisions:d(),arrowPadding:u(),sticky:p(),hideWhenDetached:g(),collisionPadding:m(),strategy:t.strategy})),E=N(()=>ve(S,i(P),_.props));var z=b(),j=f(z);{var I=H=>{{const U=(W,ct)=>{let it=()=>ct?.().props,ht=()=>ct?.().wrapperProps;const Q=N(()=>ve(it(),{style:br("tooltip")},{style:t.style}));var lt=b(),tt=f(lt);{var at=ut=>{var V=b(),R=f(V);{let F=N(()=>({props:i(Q),wrapperProps:ht(),..._.snippetProps}));X(R,()=>t.child,()=>i(F))}l(ut,V)},J=ut=>{var V=Yc();Mt(V,()=>({...ht()}));var R=M(V);Mt(R,()=>({...i(Q)}));var F=M(R);X(F,()=>t.children??mt),O(R),O(V),l(ut,V)};ot(tt,ut=>{t.child?ut(at):ut(J,!1)})}l(W,lt)};let Z=N(()=>_.root.disableHoverableContent?"none":"auto");Va(H,Pt(()=>i(E),()=>_.popperProps,{get enabled(){return _.root.opts.open.current},get id(){return n()},trapFocus:!1,loop:!1,preventScroll:!1,forceMount:!0,get ref(){return _.opts.ref},tooltip:!0,get shouldRender(){return _.shouldRender},get contentPointerEvents(){return i(Z)},popper:U,$$slots:{popper:!0}}))}},$=H=>{var U=b(),Z=f(U);{var W=ct=>{{const it=(Q,lt)=>{let tt=()=>lt?.().props,at=()=>lt?.().wrapperProps;const J=N(()=>ve(tt(),{style:br("tooltip")},{style:t.style}));var ut=b(),V=f(ut);{var R=k=>{var L=b(),G=f(L);{let K=N(()=>({props:i(J),wrapperProps:at(),..._.snippetProps}));X(G,()=>t.child,()=>i(K))}l(k,L)},F=k=>{var L=Xc();Mt(L,()=>({...at()}));var G=M(L);Mt(G,()=>({...i(J)}));var K=M(G);X(K,()=>t.children??mt),O(G),O(L),l(k,L)};ot(V,k=>{t.child?k(R):k(F,!1)})}l(Q,ut)};let ht=N(()=>_.root.disableHoverableContent?"none":"auto");Wa(ct,Pt(()=>i(E),()=>_.popperProps,{get open(){return _.root.opts.open.current},get id(){return n()},trapFocus:!1,loop:!1,preventScroll:!1,forceMount:!1,get ref(){return _.opts.ref},tooltip:!0,get shouldRender(){return _.shouldRender},get contentPointerEvents(){return i(ht)},popper:it,$$slots:{popper:!0}}))}};ot(Z,ct=>{v()||ct(W)},!0)}l(H,U)};ot(j,H=>{v()?H(I):H($,!1)})}l(r,z),Y()}var Jc=A("");function Qc(r,t){const e=Oe();q(t,!0);let n=y(t,"id",19,()=>Me(e)),o=y(t,"disabled",3,!1),s=y(t,"type",3,"button"),a=y(t,"tabindex",3,0),c=y(t,"ref",15,null),d=st(t,["$$slots","$$events","$$legacy","children","child","id","disabled","type","tabindex","ref"]);const u=Lo.create({id:dt(()=>n()),disabled:dt(()=>o()??!1),tabindex:dt(()=>a()??0),ref:dt(()=>c(),g=>c(g))}),p=N(()=>ve(d,u.props,{type:s()}));ja(r,{get id(){return n()},get ref(){return u.opts.ref},tooltip:!0,children:(g,m)=>{var x=b(),h=f(x);{var v=_=>{var P=b(),E=f(P);X(E,()=>t.child,()=>({props:i(p)})),l(_,P)},S=_=>{var P=Jc();Mt(P,()=>({...i(p)}));var E=M(P);X(E,()=>t.children??mt),O(P),l(_,P)};ot(h,_=>{t.child?_(v):_(S,!1)})}l(g,x)},$$slots:{default:!0}}),Y()}function td(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref"]);zc(r,Pt(()=>n,{get ref(){return e()},set ref(o){e(o)}})),Y()}function ed(r,t){q(t,!0);let e=y(t,"delayDuration",3,700),n=y(t,"disableCloseOnTriggerClick",3,!1),o=y(t,"disableHoverableContent",3,!1),s=y(t,"disabled",3,!1),a=y(t,"ignoreNonKeyboardFocus",3,!1),c=y(t,"skipDelayDuration",3,300);No.create({delayDuration:dt(()=>e()),disableCloseOnTriggerClick:dt(()=>n()),disableHoverableContent:dt(()=>o()),disabled:dt(()=>s()),ignoreNonKeyboardFocus:dt(()=>a()),skipDelayDuration:dt(()=>c())});var d=b(),u=f(d);X(u,()=>t.children??mt),l(r,d),Y()}function Fo(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class"]);var o=b(),s=f(o);{let a=N(()=>Bt("text-muted-foreground text-sm",t.class));T(s,()=>ls,(c,d)=>{d(c,Pt({"data-slot":"dialog-description",get class(){return i(a)}},()=>n,{get ref(){return e()},set ref(u){e(u)}}))})}l(r,o),Y()}function jn(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"value",15),o=st(t,["$$slots","$$events","$$legacy","ref","value"]);var s=b(),a=f(s);T(a,()=>lc,(c,d)=>{d(c,Pt({"data-slot":"accordion"},()=>o,{get ref(){return e()},set ref(u){e(u)},get value(){return n()},set value(u){n(u)}}))}),l(r,s),Y()}var nd=A("
      ");function yn(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=b(),s=f(o);T(s,()=>mc,(a,c)=>{c(a,Pt({"data-slot":"accordion-content",class:"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm"},()=>n,{get ref(){return e()},set ref(d){e(d)},children:(d,u)=>{var p=nd(),g=M(p);X(g,()=>t.children??mt),O(p),It(m=>Ze(p,1,m),[()=>rn(Bt("pt-0 pb-4",t.class))]),l(d,p)},$$slots:{default:!0}}))}),l(r,o),Y()}function wn(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class"]);var o=b(),s=f(o);{let a=N(()=>Bt("border-b last:border-b-0",t.class));T(s,()=>dc,(c,d)=>{d(c,Pt({"data-slot":"accordion-item",get class(){return i(a)}},()=>n,{get ref(){return e()},set ref(u){e(u)}}))})}l(r,o),Y()}var rd=A(" ",1);function xn(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"level",3,3),o=st(t,["$$slots","$$events","$$legacy","ref","class","level","children"]);var s=b(),a=f(s);T(a,()=>fc,(c,d)=>{d(c,{get level(){return n()},class:"flex",children:(u,p)=>{var g=b(),m=f(g);{let x=N(()=>Bt("focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-start text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",t.class));T(m,()=>vc,(h,v)=>{v(h,Pt({"data-slot":"accordion-trigger",get class(){return i(x)}},()=>o,{get ref(){return e()},set ref(S){e(S)},children:(S,_)=>{var P=rd(),E=f(P);X(E,()=>t.children??mt);var z=D(E,2);Ka(z,{class:"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"}),l(S,P)},$$slots:{default:!0}}))})}l(u,g)},$$slots:{default:!0}})}),l(r,s),Y()}function od(r,t){q(t,!0);let e=y(t,"open",15,!1),n=st(t,["$$slots","$$events","$$legacy","open"]);var o=b(),s=f(o);T(s,()=>Kc,(a,c)=>{c(a,Pt(()=>n,{get open(){return e()},set open(d){e(d)}}))}),l(r,o),Y()}function ad(r,t){let e=st(t,["$$slots","$$events","$$legacy"]);var n=b(),o=f(n);T(o,()=>so,(s,a)=>{a(s,Pt(()=>e))}),l(r,n)}function sd(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"sideOffset",3,4),o=y(t,"align",3,"center"),s=st(t,["$$slots","$$events","$$legacy","ref","class","sideOffset","align","portalProps"]);ad(r,Pt(()=>t.portalProps,{children:(a,c)=>{var d=b(),u=f(d);{let p=N(()=>Bt("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--bits-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",t.class));T(u,()=>Wc,(g,m)=>{m(g,Pt({"data-slot":"popover-content",get sideOffset(){return n()},get align(){return o()},get class(){return i(p)}},()=>s,{get ref(){return e()},set ref(x){e(x)}}))})}l(a,d)},$$slots:{default:!0}})),Y()}function id(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class"]);var o=b(),s=f(o);{let a=N(()=>Bt("",t.class));T(s,()=>Gc,(c,d)=>{d(c,Pt({"data-slot":"popover-trigger",get class(){return i(a)}},()=>n,{get ref(){return e()},set ref(u){e(u)}}))})}l(r,o),Y()}const{entries:fs,setPrototypeOf:sa,isFrozen:ld,getPrototypeOf:cd,getOwnPropertyDescriptor:dd}=Object;let{freeze:We,seal:Qe,create:Yr}=Object,{apply:Xr,construct:Zr}=typeof Reflect<"u"&&Reflect;We||(We=function(t){return t});Qe||(Qe=function(t){return t});Xr||(Xr=function(t,e){for(var n=arguments.length,o=new Array(n>2?n-2:0),s=2;s1?e-1:0),o=1;o1?e-1:0),o=1;o2&&arguments[2]!==void 0?arguments[2]:ur;sa&&sa(r,null);let n=t.length;for(;n--;){let o=t[n];if(typeof o=="string"){const s=e(o);s!==o&&(ld(t)||(t[n]=s),o=s)}r[o]=!0}return r}function md(r){for(let t=0;t/gm),wd=Qe(/\$\{[\w\W]*/gm),xd=Qe(/^data-[\-\w.\u00B7-\uFFFF]+$/),Pd=Qe(/^aria-[\-\w]+$/),hs=Qe(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Td=Qe(/^(?:\w+script|data):/i),Sd=Qe(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),vs=Qe(/^html$/i),Ad=Qe(/^[a-z][.\w]*(-[.\w]+)+$/i);var fa=Object.freeze({__proto__:null,ARIA_ATTR:Pd,ATTR_WHITESPACE:Sd,CUSTOM_ELEMENT:Ad,DATA_ATTR:xd,DOCTYPE_NAME:vs,ERB_EXPR:yd,IS_ALLOWED_URI:hs,IS_SCRIPT_OR_DATA:Td,MUSTACHE_EXPR:bd,TMPLIT_EXPR:wd});const Fn={element:1,text:3,progressingInstruction:7,comment:8,document:9},Cd=function(){return typeof window>"u"?null:window},Ed=function(t,e){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let n=null;const o="data-tt-policy-suffix";e&&e.hasAttribute(o)&&(n=e.getAttribute(o));const s="dompurify"+(n?"#"+n:"");try{return t.createPolicy(s,{createHTML(a){return a},createScriptURL(a){return a}})}catch{return console.warn("TrustedTypes policy "+s+" could not be created."),null}},ha=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function gs(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Cd();const t=_t=>gs(_t);if(t.version="3.3.1",t.removed=[],!r||!r.document||r.document.nodeType!==Fn.document||!r.Element)return t.isSupported=!1,t;let{document:e}=r;const n=e,o=n.currentScript,{DocumentFragment:s,HTMLTemplateElement:a,Node:c,Element:d,NodeFilter:u,NamedNodeMap:p=r.NamedNodeMap||r.MozNamedAttrMap,HTMLFormElement:g,DOMParser:m,trustedTypes:x}=r,h=d.prototype,v=zn(h,"cloneNode"),S=zn(h,"remove"),_=zn(h,"nextSibling"),P=zn(h,"childNodes"),E=zn(h,"parentNode");if(typeof a=="function"){const _t=e.createElement("template");_t.content&&_t.content.ownerDocument&&(e=_t.content.ownerDocument)}let z,j="";const{implementation:I,createNodeIterator:$,createDocumentFragment:H,getElementsByTagName:U}=e,{importNode:Z}=n;let W=ha();t.isSupported=typeof fs=="function"&&typeof E=="function"&&I&&I.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:ct,ERB_EXPR:it,TMPLIT_EXPR:ht,DATA_ATTR:Q,ARIA_ATTR:lt,IS_SCRIPT_OR_DATA:tt,ATTR_WHITESPACE:at,CUSTOM_ELEMENT:J}=fa;let{IS_ALLOWED_URI:ut}=fa,V=null;const R=Yt({},[...la,...$r,...Lr,...zr,...ca]);let F=null;const k=Yt({},[...da,...Fr,...ua,...lr]);let L=Object.seal(Yr(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),G=null,K=null;const et=Object.seal(Yr(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let gt=!0,pt=!0,ft=!1,B=!0,vt=!1,yt=!0,nt=!1,At=!1,Lt=!1,Ht=!1,Kt=!1,re=!1,Vt=!0,bt=!1;const Ot="user-content-";let kt=!0,Ct=!1,Nt={},$t=null;const Ut=Yt({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let ge=null;const we=Yt({},["audio","video","img","source","image","track"]);let Se=null;const ce=Yt({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ae="http://www.w3.org/1998/Math/MathML",me="http://www.w3.org/2000/svg",ie="http://www.w3.org/1999/xhtml";let Wt=ie,St=!1,zt=null;const Zt=Yt({},[ae,me,ie],Mr);let te=Yt({},["mi","mo","mn","ms","mtext"]),Tt=Yt({},["annotation-xml"]);const jt=Yt({},["title","style","font","a","script"]);let Jt=null;const de=["application/xhtml+xml","text/html"],se="text/html";let Ft=null,qt=null;const ee=e.createElement("form"),Ae=function(w){return w instanceof RegExp||w instanceof Function},Ee=function(){let w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(qt&&qt===w)){if((!w||typeof w!="object")&&(w={}),w=sn(w),Jt=de.indexOf(w.PARSER_MEDIA_TYPE)===-1?se:w.PARSER_MEDIA_TYPE,Ft=Jt==="application/xhtml+xml"?Mr:ur,V=en(w,"ALLOWED_TAGS")?Yt({},w.ALLOWED_TAGS,Ft):R,F=en(w,"ALLOWED_ATTR")?Yt({},w.ALLOWED_ATTR,Ft):k,zt=en(w,"ALLOWED_NAMESPACES")?Yt({},w.ALLOWED_NAMESPACES,Mr):Zt,Se=en(w,"ADD_URI_SAFE_ATTR")?Yt(sn(ce),w.ADD_URI_SAFE_ATTR,Ft):ce,ge=en(w,"ADD_DATA_URI_TAGS")?Yt(sn(we),w.ADD_DATA_URI_TAGS,Ft):we,$t=en(w,"FORBID_CONTENTS")?Yt({},w.FORBID_CONTENTS,Ft):Ut,G=en(w,"FORBID_TAGS")?Yt({},w.FORBID_TAGS,Ft):sn({}),K=en(w,"FORBID_ATTR")?Yt({},w.FORBID_ATTR,Ft):sn({}),Nt=en(w,"USE_PROFILES")?w.USE_PROFILES:!1,gt=w.ALLOW_ARIA_ATTR!==!1,pt=w.ALLOW_DATA_ATTR!==!1,ft=w.ALLOW_UNKNOWN_PROTOCOLS||!1,B=w.ALLOW_SELF_CLOSE_IN_ATTR!==!1,vt=w.SAFE_FOR_TEMPLATES||!1,yt=w.SAFE_FOR_XML!==!1,nt=w.WHOLE_DOCUMENT||!1,Ht=w.RETURN_DOM||!1,Kt=w.RETURN_DOM_FRAGMENT||!1,re=w.RETURN_TRUSTED_TYPE||!1,Lt=w.FORCE_BODY||!1,Vt=w.SANITIZE_DOM!==!1,bt=w.SANITIZE_NAMED_PROPS||!1,kt=w.KEEP_CONTENT!==!1,Ct=w.IN_PLACE||!1,ut=w.ALLOWED_URI_REGEXP||hs,Wt=w.NAMESPACE||ie,te=w.MATHML_TEXT_INTEGRATION_POINTS||te,Tt=w.HTML_INTEGRATION_POINTS||Tt,L=w.CUSTOM_ELEMENT_HANDLING||{},w.CUSTOM_ELEMENT_HANDLING&&Ae(w.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(L.tagNameCheck=w.CUSTOM_ELEMENT_HANDLING.tagNameCheck),w.CUSTOM_ELEMENT_HANDLING&&Ae(w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(L.attributeNameCheck=w.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),w.CUSTOM_ELEMENT_HANDLING&&typeof w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(L.allowCustomizedBuiltInElements=w.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),vt&&(pt=!1),Kt&&(Ht=!0),Nt&&(V=Yt({},ca),F=[],Nt.html===!0&&(Yt(V,la),Yt(F,da)),Nt.svg===!0&&(Yt(V,$r),Yt(F,Fr),Yt(F,lr)),Nt.svgFilters===!0&&(Yt(V,Lr),Yt(F,Fr),Yt(F,lr)),Nt.mathMl===!0&&(Yt(V,zr),Yt(F,ua),Yt(F,lr))),w.ADD_TAGS&&(typeof w.ADD_TAGS=="function"?et.tagCheck=w.ADD_TAGS:(V===R&&(V=sn(V)),Yt(V,w.ADD_TAGS,Ft))),w.ADD_ATTR&&(typeof w.ADD_ATTR=="function"?et.attributeCheck=w.ADD_ATTR:(F===k&&(F=sn(F)),Yt(F,w.ADD_ATTR,Ft))),w.ADD_URI_SAFE_ATTR&&Yt(Se,w.ADD_URI_SAFE_ATTR,Ft),w.FORBID_CONTENTS&&($t===Ut&&($t=sn($t)),Yt($t,w.FORBID_CONTENTS,Ft)),w.ADD_FORBID_CONTENTS&&($t===Ut&&($t=sn($t)),Yt($t,w.ADD_FORBID_CONTENTS,Ft)),kt&&(V["#text"]=!0),nt&&Yt(V,["html","head","body"]),V.table&&(Yt(V,["tbody"]),delete G.tbody),w.TRUSTED_TYPES_POLICY){if(typeof w.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ln('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof w.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ln('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');z=w.TRUSTED_TYPES_POLICY,j=z.createHTML("")}else z===void 0&&(z=Ed(x,o)),z!==null&&typeof j=="string"&&(j=z.createHTML(""));We&&We(w),qt=w}},pe=Yt({},[...$r,...Lr,...pd]),ue=Yt({},[...zr,..._d]),Ie=function(w){let rt=E(w);(!rt||!rt.tagName)&&(rt={namespaceURI:Wt,tagName:"template"});const Et=ur(w.tagName),_e=ur(rt.tagName);return zt[w.namespaceURI]?w.namespaceURI===me?rt.namespaceURI===ie?Et==="svg":rt.namespaceURI===ae?Et==="svg"&&(_e==="annotation-xml"||te[_e]):!!pe[Et]:w.namespaceURI===ae?rt.namespaceURI===ie?Et==="math":rt.namespaceURI===me?Et==="math"&&Tt[_e]:!!ue[Et]:w.namespaceURI===ie?rt.namespaceURI===me&&!Tt[_e]||rt.namespaceURI===ae&&!te[_e]?!1:!ue[Et]&&(jt[Et]||!pe[Et]):!!(Jt==="application/xhtml+xml"&&zt[w.namespaceURI]):!1},Qt=function(w){Nn(t.removed,{element:w});try{E(w).removeChild(w)}catch{S(w)}},oe=function(w,rt){try{Nn(t.removed,{attribute:rt.getAttributeNode(w),from:rt})}catch{Nn(t.removed,{attribute:null,from:rt})}if(rt.removeAttribute(w),w==="is")if(Ht||Kt)try{Qt(rt)}catch{}else try{rt.setAttribute(w,"")}catch{}},fe=function(w){let rt=null,Et=null;if(Lt)w=""+w;else{const Pe=Nr(w,/^[\r\n\t ]+/);Et=Pe&&Pe[0]}Jt==="application/xhtml+xml"&&Wt===ie&&(w=''+w+"");const _e=z?z.createHTML(w):w;if(Wt===ie)try{rt=new m().parseFromString(_e,Jt)}catch{}if(!rt||!rt.documentElement){rt=I.createDocument(Wt,"template",null);try{rt.documentElement.innerHTML=St?j:_e}catch{}}const Be=rt.body||rt.documentElement;return w&&Et&&Be.insertBefore(e.createTextNode(Et),Be.childNodes[0]||null),Wt===ie?U.call(rt,nt?"html":"body")[0]:nt?rt.documentElement:Be},he=function(w){return $.call(w.ownerDocument||w,w,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},Xt=function(w){return w instanceof g&&(typeof w.nodeName!="string"||typeof w.textContent!="string"||typeof w.removeChild!="function"||!(w.attributes instanceof p)||typeof w.removeAttribute!="function"||typeof w.setAttribute!="function"||typeof w.namespaceURI!="string"||typeof w.insertBefore!="function"||typeof w.hasChildNodes!="function")},Ne=function(w){return typeof c=="function"&&w instanceof c};function Ce(_t,w,rt){ir(_t,Et=>{Et.call(t,w,rt,qt)})}const He=function(w){let rt=null;if(Ce(W.beforeSanitizeElements,w,null),Xt(w))return Qt(w),!0;const Et=Ft(w.nodeName);if(Ce(W.uponSanitizeElement,w,{tagName:Et,allowedTags:V}),yt&&w.hasChildNodes()&&!Ne(w.firstElementChild)&&Ue(/<[/\w!]/g,w.innerHTML)&&Ue(/<[/\w!]/g,w.textContent)||w.nodeType===Fn.progressingInstruction||yt&&w.nodeType===Fn.comment&&Ue(/<[/\w]/g,w.data))return Qt(w),!0;if(!(et.tagCheck instanceof Function&&et.tagCheck(Et))&&(!V[Et]||G[Et])){if(!G[Et]&&Re(Et)&&(L.tagNameCheck instanceof RegExp&&Ue(L.tagNameCheck,Et)||L.tagNameCheck instanceof Function&&L.tagNameCheck(Et)))return!1;if(kt&&!$t[Et]){const _e=E(w)||w.parentNode,Be=P(w)||w.childNodes;if(Be&&_e){const Pe=Be.length;for(let Ge=Pe-1;Ge>=0;--Ge){const dn=v(Be[Ge],!0);dn.__removalCount=(w.__removalCount||0)+1,_e.insertBefore(dn,_(w))}}}return Qt(w),!0}return w instanceof d&&!Ie(w)||(Et==="noscript"||Et==="noembed"||Et==="noframes")&&Ue(/<\/no(script|embed|frames)/i,w.innerHTML)?(Qt(w),!0):(vt&&w.nodeType===Fn.text&&(rt=w.textContent,ir([ct,it,ht],_e=>{rt=$n(rt,_e," ")}),w.textContent!==rt&&(Nn(t.removed,{element:w.cloneNode()}),w.textContent=rt)),Ce(W.afterSanitizeElements,w,null),!1)},$e=function(w,rt,Et){if(Vt&&(rt==="id"||rt==="name")&&(Et in e||Et in ee))return!1;if(!(pt&&!K[rt]&&Ue(Q,rt))){if(!(gt&&Ue(lt,rt))){if(!(et.attributeCheck instanceof Function&&et.attributeCheck(rt,w))){if(!F[rt]||K[rt]){if(!(Re(w)&&(L.tagNameCheck instanceof RegExp&&Ue(L.tagNameCheck,w)||L.tagNameCheck instanceof Function&&L.tagNameCheck(w))&&(L.attributeNameCheck instanceof RegExp&&Ue(L.attributeNameCheck,rt)||L.attributeNameCheck instanceof Function&&L.attributeNameCheck(rt,w))||rt==="is"&&L.allowCustomizedBuiltInElements&&(L.tagNameCheck instanceof RegExp&&Ue(L.tagNameCheck,Et)||L.tagNameCheck instanceof Function&&L.tagNameCheck(Et))))return!1}else if(!Se[rt]){if(!Ue(ut,$n(Et,at,""))){if(!((rt==="src"||rt==="xlink:href"||rt==="href")&&w!=="script"&&hd(Et,"data:")===0&&ge[w])){if(!(ft&&!Ue(tt,$n(Et,at,"")))){if(Et)return!1}}}}}}}return!0},Re=function(w){return w!=="annotation-xml"&&Nr(w,J)},xe=function(w){Ce(W.beforeSanitizeAttributes,w,null);const{attributes:rt}=w;if(!rt||Xt(w))return;const Et={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:F,forceKeepAttr:void 0};let _e=rt.length;for(;_e--;){const Be=rt[_e],{name:Pe,namespaceURI:Ge,value:dn}=Be,Cn=Ft(Pe),Or=dn;let Le=Pe==="value"?Or:vd(Or);if(Et.attrName=Cn,Et.attrValue=Le,Et.keepAttr=!0,Et.forceKeepAttr=void 0,Ce(W.uponSanitizeAttribute,w,Et),Le=Et.attrValue,bt&&(Cn==="id"||Cn==="name")&&(oe(Pe,w),Le=Ot+Le),yt&&Ue(/((--!?|])>)|<\/(style|title|textarea)/i,Le)){oe(Pe,w);continue}if(Cn==="attributename"&&Nr(Le,"href")){oe(Pe,w);continue}if(Et.forceKeepAttr)continue;if(!Et.keepAttr){oe(Pe,w);continue}if(!B&&Ue(/\/>/i,Le)){oe(Pe,w);continue}vt&&ir([ct,it,ht],jo=>{Le=$n(Le,jo," ")});const Wo=Ft(w.nodeName);if(!$e(Wo,Cn,Le)){oe(Pe,w);continue}if(z&&typeof x=="object"&&typeof x.getAttributeType=="function"&&!Ge)switch(x.getAttributeType(Wo,Cn)){case"TrustedHTML":{Le=z.createHTML(Le);break}case"TrustedScriptURL":{Le=z.createScriptURL(Le);break}}if(Le!==Or)try{Ge?w.setAttributeNS(Ge,Pe,Le):w.setAttribute(Pe,Le),Xt(w)?Qt(w):ia(t.removed)}catch{oe(Pe,w)}}Ce(W.afterSanitizeAttributes,w,null)},tn=function _t(w){let rt=null;const Et=he(w);for(Ce(W.beforeSanitizeShadowDOM,w,null);rt=Et.nextNode();)Ce(W.uponSanitizeShadowNode,rt,null),He(rt),xe(rt),rt.content instanceof s&&_t(rt.content);Ce(W.afterSanitizeShadowDOM,w,null)};return t.sanitize=function(_t){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},rt=null,Et=null,_e=null,Be=null;if(St=!_t,St&&(_t=""),typeof _t!="string"&&!Ne(_t))if(typeof _t.toString=="function"){if(_t=_t.toString(),typeof _t!="string")throw Ln("dirty is not a string, aborting")}else throw Ln("toString is not a function");if(!t.isSupported)return _t;if(At||Ee(w),t.removed=[],typeof _t=="string"&&(Ct=!1),Ct){if(_t.nodeName){const dn=Ft(_t.nodeName);if(!V[dn]||G[dn])throw Ln("root node is forbidden and cannot be sanitized in-place")}}else if(_t instanceof c)rt=fe(""),Et=rt.ownerDocument.importNode(_t,!0),Et.nodeType===Fn.element&&Et.nodeName==="BODY"||Et.nodeName==="HTML"?rt=Et:rt.appendChild(Et);else{if(!Ht&&!vt&&!nt&&_t.indexOf("<")===-1)return z&&re?z.createHTML(_t):_t;if(rt=fe(_t),!rt)return Ht?null:re?j:""}rt&&Lt&&Qt(rt.firstChild);const Pe=he(Ct?_t:rt);for(;_e=Pe.nextNode();)He(_e),xe(_e),_e.content instanceof s&&tn(_e.content);if(Ct)return _t;if(Ht){if(Kt)for(Be=H.call(rt.ownerDocument);rt.firstChild;)Be.appendChild(rt.firstChild);else Be=rt;return(F.shadowroot||F.shadowrootmode)&&(Be=Z.call(n,Be,!0)),Be}let Ge=nt?rt.outerHTML:rt.innerHTML;return nt&&V["!doctype"]&&rt.ownerDocument&&rt.ownerDocument.doctype&&rt.ownerDocument.doctype.name&&Ue(vs,rt.ownerDocument.doctype.name)&&(Ge=" +`+Ge),vt&&ir([ct,it,ht],dn=>{Ge=$n(Ge,dn," ")}),z&&re?z.createHTML(Ge):Ge},t.setConfig=function(){let _t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ee(_t),At=!0},t.clearConfig=function(){qt=null,At=!1},t.isValidAttribute=function(_t,w,rt){qt||Ee({});const Et=Ft(_t),_e=Ft(w);return $e(Et,_e,rt)},t.addHook=function(_t,w){typeof w=="function"&&Nn(W[_t],w)},t.removeHook=function(_t,w){if(w!==void 0){const rt=ud(W[_t],w);return rt===-1?void 0:fd(W[_t],rt,1)[0]}return ia(W[_t])},t.removeHooks=function(_t){W[_t]=[]},t.removeAllHooks=function(){W=ha()},t}var Hn=gs();function ms(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"m12 19-7-7 7-7"}],["path",{d:"M19 12H5"}]];ke(r,Pt({name:"arrow-left"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Id(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"M5 12h14"}],["path",{d:"m12 5 7 7-7 7"}]];ke(r,Pt({name:"arrow-right"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Dd(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"m9 18 6-6-6-6"}]];ke(r,Pt({name:"chevron-right"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Od(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"m7 15 5 5 5-5"}],["path",{d:"m7 9 5-5 5 5"}]];ke(r,Pt({name:"chevrons-up-down"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function kd(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"M11 10.27 7 3.34"}],["path",{d:"m11 13.73-4 6.93"}],["path",{d:"M12 22v-2"}],["path",{d:"M12 2v2"}],["path",{d:"M14 12h8"}],["path",{d:"m17 20.66-1-1.73"}],["path",{d:"m17 3.34-1 1.73"}],["path",{d:"M2 12h2"}],["path",{d:"m20.66 17-1.73-1"}],["path",{d:"m20.66 7-1.73 1"}],["path",{d:"m3.34 17 1.73-1"}],["path",{d:"m3.34 7 1.73 1"}],["circle",{cx:"12",cy:"12",r:"2"}],["circle",{cx:"12",cy:"12",r:"8"}]];ke(r,Pt({name:"cog"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Md(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"}],["circle",{cx:"9",cy:"9",r:"2"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"}]];ke(r,Pt({name:"image"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Nd(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"m16 17 5-5-5-5"}],["path",{d:"M21 12H9"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}]];ke(r,Pt({name:"log-out"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function ps(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"}]];ke(r,Pt({name:"moon"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function $d(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}],["path",{d:"M9 3v18"}]];ke(r,Pt({name:"panel-left"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Ld(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z"}],["path",{d:"M6 12h16"}]];ke(r,Pt({name:"send-horizontal"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function zd(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"}]];ke(r,Pt({name:"star"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function _s(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["circle",{cx:"12",cy:"12",r:"4"}],["path",{d:"M12 2v2"}],["path",{d:"M12 20v2"}],["path",{d:"m4.93 4.93 1.41 1.41"}],["path",{d:"m17.66 17.66 1.41 1.41"}],["path",{d:"M2 12h2"}],["path",{d:"M20 12h2"}],["path",{d:"m6.34 17.66-1.41 1.41"}],["path",{d:"m19.07 4.93-1.41 1.41"}]];ke(r,Pt({name:"sun"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Fd(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2"}]];ke(r,Pt({name:"video"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}function Rd(r,t){q(t,!0);let e=st(t,["$$slots","$$events","$$legacy"]);const n=[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2"}]];ke(r,Pt({name:"workflow"},()=>e,{get iconNode(){return n},children:(o,s)=>{var a=b(),c=f(a);X(c,()=>t.children??mt),l(o,a)},$$slots:{default:!0}})),Y()}const Bd=(r,t=mt)=>{var e=b(),n=f(e);T(n,()=>od,(o,s)=>{s(o,{children:(a,c)=>{var d=Wd(),u=f(d);T(u,()=>id,(g,m)=>{m(g,{class:"hover:underline",children:(x,h)=>{xt();var v=Dt();It(()=>Rt(v,t().length)),l(x,v)},$$slots:{default:!0}})});var p=D(u,2);T(p,()=>sd,(g,m)=>{m(g,{class:"text-wrap ",style:"max-width: 50vw; width: max-content;",children:(x,h)=>{var v=b(),S=f(v);T(S,()=>pr,(_,P)=>{P(_,{children:(E,z)=>{var j=Vd(),I=f(j);T(I,()=>La,(H,U)=>{U(H,{children:(Z,W)=>{var ct=b(),it=f(ct);T(it,()=>on,(ht,Q)=>{Q(ht,{children:(lt,tt)=>{var at=Hd(),J=f(at);T(J,()=>Ke,(k,L)=>{L(k,{children:(G,K)=>{xt();var et=Dt("Name");l(G,et)},$$slots:{default:!0}})});var ut=D(J,2);T(ut,()=>Ke,(k,L)=>{L(k,{children:(G,K)=>{xt();var et=Dt("Format");l(G,et)},$$slots:{default:!0}})});var V=D(ut,2);T(V,()=>Ke,(k,L)=>{L(k,{children:(G,K)=>{xt();var et=Dt("FP");l(G,et)},$$slots:{default:!0}})});var R=D(V,2);T(R,()=>Ke,(k,L)=>{L(k,{children:(G,K)=>{xt();var et=Dt("Size");l(G,et)},$$slots:{default:!0}})});var F=D(R,2);T(F,()=>Ke,(k,L)=>{L(k,{children:(G,K)=>{xt();var et=Dt("Size");l(G,et)},$$slots:{default:!0}})}),l(lt,at)},$$slots:{default:!0}})}),l(Z,ct)},$$slots:{default:!0}})});var $=D(I,2);T($,()=>_r,(H,U)=>{U(H,{children:(Z,W)=>{var ct=b(),it=f(ct);Ve(it,17,t,cn,(ht,Q)=>{var lt=b(),tt=f(lt);T(tt,()=>on,(at,J)=>{J(at,{children:(ut,V)=>{var R=Ud(),F=f(R);T(F,()=>le,(et,gt)=>{gt(et,{children:(pt,ft)=>{xt();var B=Dt();It(()=>Rt(B,i(Q).name)),l(pt,B)},$$slots:{default:!0}})});var k=D(F,2);T(k,()=>le,(et,gt)=>{gt(et,{children:(pt,ft)=>{xt();var B=Dt();It(()=>Rt(B,i(Q).metadata.format)),l(pt,B)},$$slots:{default:!0}})});var L=D(k,2);T(L,()=>le,(et,gt)=>{gt(et,{children:(pt,ft)=>{xt();var B=Dt();It(()=>Rt(B,i(Q).metadata.fp)),l(pt,B)},$$slots:{default:!0}})});var G=D(L,2);T(G,()=>le,(et,gt)=>{gt(et,{children:(pt,ft)=>{xt();var B=Dt();It(()=>Rt(B,i(Q).metadata.size)),l(pt,B)},$$slots:{default:!0}})});var K=D(G,2);T(K,()=>le,(et,gt)=>{gt(et,{children:(pt,ft)=>{xt();var B=Dt();It(vt=>Rt(B,vt),[()=>lo(Math.round(i(Q).sizeKB)*1024).toString()]),l(pt,B)},$$slots:{default:!0}})}),l(ut,R)},$$slots:{default:!0}})}),l(ht,lt)}),l(Z,ct)},$$slots:{default:!0}})}),l(E,j)},$$slots:{default:!0}})}),l(x,v)},$$slots:{default:!0}})}),l(a,d)},$$slots:{default:!0}})}),l(r,e)};var Hd=A(" ",1),Ud=A(" ",1),Vd=A(" ",1),Wd=A(" ",1),jd=A(" ",1),Gd=A('
      '),Kd=A('
      '),qd=A(" ",1),Yd=A('
      ',1),Xd=A(" ",1),Zd=A(" ",1);function Jd(r,t){q(t,!0);const e={year:"numeric",month:"long",day:"numeric"};var n=b(),o=f(n);T(o,()=>pr,(s,a)=>{a(s,{id:"ModelVersionsTable",children:(c,d)=>{var u=Zd(),p=f(u);T(p,()=>La,(m,x)=>{x(m,{children:(h,v)=>{var S=b(),_=f(S);T(_,()=>on,(P,E)=>{E(P,{children:(z,j)=>{var I=jd(),$=f(I);T($,()=>Ke,(Q,lt)=>{lt(Q,{children:(tt,at)=>{gr(tt,{"data-version-id":"headerCheckbox",get onclick(){return t.callback}})},$$slots:{default:!0}})});var H=D($,2);T(H,()=>Ke,(Q,lt)=>{lt(Q,{class:"w-25",children:(tt,at)=>{xt();var J=Dt("Name");l(tt,J)},$$slots:{default:!0}})});var U=D(H,2);T(U,()=>Ke,(Q,lt)=>{lt(Q,{children:(tt,at)=>{xt();var J=Dt("Base Model");l(tt,J)},$$slots:{default:!0}})});var Z=D(U,2);T(Z,()=>Ke,(Q,lt)=>{lt(Q,{class:"text-center",children:(tt,at)=>{xt();var J=Dt("Files");l(tt,J)},$$slots:{default:!0}})});var W=D(Z,2);T(W,()=>Ke,(Q,lt)=>{lt(Q,{children:(tt,at)=>{xt();var J=Dt("Stats");l(tt,J)},$$slots:{default:!0}})});var ct=D(W,2);T(ct,()=>Ke,(Q,lt)=>{lt(Q,{class:"text-center",children:(tt,at)=>{xt();var J=Dt("Type");l(tt,J)},$$slots:{default:!0}})});var it=D(ct,2);T(it,()=>Ke,(Q,lt)=>{lt(Q,{class:"text-center",children:(tt,at)=>{xt();var J=Dt("Total Size");l(tt,J)},$$slots:{default:!0}})});var ht=D(it,2);T(ht,()=>Ke,(Q,lt)=>{lt(Q,{class:"text-end",children:(tt,at)=>{xt();var J=Dt("Published at");l(tt,J)},$$slots:{default:!0}})}),l(z,I)},$$slots:{default:!0}})}),l(h,S)},$$slots:{default:!0}})});var g=D(p,2);T(g,()=>_r,(m,x)=>{x(m,{children:(h,v)=>{var S=b(),_=f(S);Ve(_,17,()=>t.data.modelVersions,cn,(P,E)=>{var z=Xd(),j=f(z);{let $=N(()=>i(E).name.toLowerCase().includes(t.needle.toLowerCase())?"":"position: absolute; scale: 0");T(j,()=>on,(H,U)=>{U(H,{get style(){return i($)},children:(Z,W)=>{var ct=qd(),it=f(ct);T(it,()=>le,(R,F)=>{F(R,{children:(k,L)=>{gr(k,{get"data-version-id"(){return i(E).id},get onclick(){return t.callback}})},$$slots:{default:!0}})});var ht=D(it,2);T(ht,()=>le,(R,F)=>{F(R,{children:(k,L)=>{xt();var G=Dt();It(()=>Rt(G,i(E).name)),l(k,G)},$$slots:{default:!0}})});var Q=D(ht,2);T(Q,()=>le,(R,F)=>{F(R,{children:(k,L)=>{xt();var G=Dt();It(()=>Rt(G,i(E).baseModel)),l(k,G)},$$slots:{default:!0}})});var lt=D(Q,2);T(lt,()=>le,(R,F)=>{F(R,{class:"text-center",children:(k,L)=>{Bd(k,()=>i(E).files)},$$slots:{default:!0}})});var tt=D(lt,2);T(tt,()=>le,(R,F)=>{F(R,{children:(k,L)=>{var G=Gd(),K=M(G),et=M(K);In(et,{size:16,strokeWidth:2});var gt=D(et);O(K);var pt=D(K,2),ft=M(pt);qa(ft,{size:16,strokeWidth:2});var B=D(ft);O(pt);var vt=D(pt,2),yt=M(vt);Ya(yt,{size:16,strokeWidth:2});var nt=D(yt);O(vt),O(G),It(()=>{Rt(gt,` ${i(E).stats.downloadCount??""}`),Rt(B,` ${i(E).stats.thumbsUpCount??""}`),Rt(nt,` ${i(E).stats.thumbsDownCount??""}`)}),l(k,G)},$$slots:{default:!0}})});var at=D(tt,2);T(at,()=>le,(R,F)=>{F(R,{class:"text-center",children:(k,L)=>{xt();var G=Dt();It(()=>Rt(G,t.data.type)),l(k,G)},$$slots:{default:!0}})});var J=D(at,2);T(J,()=>le,(R,F)=>{F(R,{class:"text-center",children:(k,L)=>{xt();var G=Dt();It(K=>Rt(G,K),[()=>lo(Math.round(i(E).files.reduce((K,et)=>K+et.sizeKB,0))*1024).toString()]),l(k,G)},$$slots:{default:!0}})});var ut=D(J,2);T(ut,()=>le,(R,F)=>{F(R,{class:"text-end",children:(k,L)=>{xt();var G=Dt();It(K=>Rt(G,K),[()=>new Date(i(E).publishedAt).toLocaleDateString("en-UK",e)]),l(k,G)},$$slots:{default:!0}})});var V=D(ut,2);T(V,()=>le,(R,F)=>{F(R,{class:"flex",children:(k,L)=>{var G=Kd(),K=M(G),et=M(K);{var gt=pt=>{be(pt,{variant:"ghost",size:"icon","aria-label":"Submit",onclick:ft=>{ft.target.closest("tr").nextElementSibling.querySelector(".trigger").click()},children:(ft,B)=>{Ka(ft,{})},$$slots:{default:!0}})};ot(et,pt=>{i(E).description&&i(E).description.trim().length>0&&pt(gt)})}O(K),O(G),l(k,G)},$$slots:{default:!0}})}),l(Z,ct)},$$slots:{default:!0}})})}var I=D(j,2);T(I,()=>on,($,H)=>{H($,{class:"modelTableRow",children:(U,Z)=>{var W=b(),ct=f(W);T(ct,()=>le,(it,ht)=>{ht(it,{class:"modelTableCell",colspan:9,children:(Q,lt)=>{var tt=b(),at=f(tt);T(at,()=>jn,(J,ut)=>{ut(J,{type:"single",children:(V,R)=>{var F=b(),k=f(F);T(k,()=>wn,(L,G)=>{G(L,{value:"item-1","data-state":"open",children:(K,et)=>{var gt=Yd(),pt=f(gt),ft=M(pt);T(ft,()=>xn,(vt,yt)=>{yt(vt,{class:"trigger"})}),O(pt);var B=D(pt,2);T(B,()=>yn,(vt,yt)=>{yt(vt,{class:"py-2 text-wrap",children:(nt,At)=>{var Lt=b(),Ht=f(Lt);yr(Ht,()=>Hn.sanitize(i(E).description)),l(nt,Lt)},$$slots:{default:!0}})}),l(K,gt)},$$slots:{default:!0}})}),l(V,F)},$$slots:{default:!0}})}),l(Q,tt)},$$slots:{default:!0}})}),l(U,W)},$$slots:{default:!0}})}),l(P,z)}),l(h,S)},$$slots:{default:!0}})}),l(c,u)},$$slots:{default:!0}})}),l(r,n),Y()}var Qd=A('
      ',1),tu=A('
      ',1),eu=A('
      ',1),nu=A("
      ");function ru(r,t){q(t,!0);let e=wt(Xe({modelVersions:[]})),n=wt(!1),o=wt(""),s=Xe({total:0,selected:0});fn(()=>{window.addEventListener("DownloadManagerShowModelVersions",p=>{C(e,{modelVersions:[]},!0),C(n,!1);const{ModelData:g}=p.detail;C(e,g,!0),C(n,!0),C(o,""),a({target:null})})});async function a(p){await new Promise(v=>setTimeout(v,10));const g=Array.from(document.querySelectorAll("#ModelVersionsTable [data-version-id]")).filter(v=>v.getAttribute("data-version-id")!=="headerCheckbox"),m=g.filter(v=>v.getAttribute("data-state")==="checked"),h=p.target?.getAttribute("data-version-id");if(s.total=g.length,s.selected=m.length,h==="headerCheckbox"){if(!h)return;s.total!==s.selected?g.filter(v=>v.getAttribute("data-state")!=="checked").forEach(v=>{v.click()}):g.forEach(v=>v.click())}}function c(){const g=Array.from(document.querySelectorAll("#ModelVersionsTable [data-version-id]")).filter(v=>v.getAttribute("data-version-id")!=="headerCheckbox").filter(v=>v.getAttribute("data-state")==="checked");if(g.length<1)return;const m=g.map(v=>v.getAttribute("data-version-id")||"").filter(v=>v.trim().length>1);if(m.length<1)return;let x=i(e).modelVersions.filter(v=>m.includes(`${v.id}`)),h=[];x.forEach(v=>{v.files.forEach(S=>{h.push({id:parseInt(S.downloadUrl.split("download/models/")[1]),type:i(e).type,model_name:v.name,base_model:i(e).name,file_name:S.name,based_on_model:v.baseModel,cover:v.images[0].url||"",author_name:i(e).creator.username,published_at:v.publishedAt||"",stats:JSON.stringify(i(e).stats)})})}),C(n,!1),rc(h)}var d=b(),u=f(d);T(u,()=>Cr,(p,g)=>{g(p,{get open(){return i(n)},children:(m,x)=>{var h=nu(),v=M(h);T(v,()=>Ar,(S,_)=>{_(S,{style:"max-width: 80vw;",class:"z-102",children:(P,E)=>{var z=eu(),j=f(z);T(j,()=>za,(U,Z)=>{Z(U,{class:"flex flex-row items-center",children:(W,ct)=>{var it=Qd(),ht=f(it),Q=M(ht);T(Q,()=>Fa,(J,ut)=>{ut(J,{children:(V,R)=>{xt();var F=Dt("Download Model");l(V,F)},$$slots:{default:!0}})});var lt=D(Q,2);T(lt,()=>Fo,(J,ut)=>{ut(J,{class:"pt-2",children:(V,R)=>{xt();var F=Dt("Select which files you which to download");l(V,F)},$$slots:{default:!0}})}),O(ht);var tt=D(ht,2),at=M(tt);io(at,{type:"text",placeholder:"Search by model name",class:"ml-auto",style:"max-width: 400px;",get value(){return i(o)},set value(J){C(o,J,!0)}}),O(tt),l(W,it)},$$slots:{default:!0}})});var I=D(j,2),$=M(I);Jd($,{get data(){return i(e)},get needle(){return i(o)},callback:a}),O(I);var H=D(I,2);T(H,()=>Ra,(U,Z)=>{Z(U,{class:"w-full flex flex-row justify-between! items-center",children:(W,ct)=>{var it=tu(),ht=f(it),Q=M(ht);O(ht);var lt=D(ht,2),tt=M(lt);{let J=N(()=>Na({variant:"outline"}));T(tt,()=>Ba,(ut,V)=>{V(ut,{get class(){return i(J)},children:(R,F)=>{xt();var k=Dt("Cancel");l(R,k)},$$slots:{default:!0}})})}var at=D(tt,2);{let J=N(()=>s.selected<1);be(at,{type:"submit",onclick:c,get disabled(){return i(J)},children:(ut,V)=>{xt();var R=Dt("Download Models");l(ut,R)},$$slots:{default:!0}})}O(lt),It(()=>Rt(Q,`${s.selected??""} of ${s.total??""} Version(s) selected`)),l(W,it)},$$slots:{default:!0}})}),l(P,z)},$$slots:{default:!0}})}),O(h),l(m,h)},$$slots:{default:!0}})}),l(r,d),Y()}var ou=A("
      ");function au(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=ou();Mt(o,a=>({"data-slot":"card",class:a,...n}),[()=>Bt("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var su=A("
      ");function iu(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=su();Mt(o,a=>({"data-slot":"card-content",class:a,...n}),[()=>Bt("px-6",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}const Jr=Symbol("EMBLA_CAROUSEL_CONTEXT");function lu(r){return eo(Jr,r),r}function Ir(r="This component"){if(!Ia(Jr))throw new Error(`${r} must be used within a component`);return fr(Jr)}var cu=A("
      ");function va(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"opts",19,()=>({})),o=y(t,"plugins",19,()=>[]),s=y(t,"setApi",3,()=>{}),a=y(t,"orientation",3,"horizontal"),c=st(t,["$$slots","$$events","$$legacy","ref","opts","plugins","setApi","orientation","class","children"]),d=Xe({api:void 0,scrollPrev:u,scrollNext:p,orientation:a(),canScrollNext:!1,canScrollPrev:!1,handleKeyDown:x,options:n(),plugins:o(),onInit:h,scrollSnaps:[],selectedIndex:0,scrollTo:g});lu(d);function u(){d.api?.scrollPrev()}function p(){d.api?.scrollNext()}function g(_,P){d.api?.scrollTo(_,P)}function m(){d.api&&(d.selectedIndex=d.api.selectedScrollSnap(),d.canScrollNext=d.api.canScrollNext(),d.canScrollPrev=d.api.canScrollPrev())}function x(_){_.key==="ArrowLeft"?(_.preventDefault(),u()):_.key==="ArrowRight"&&(_.preventDefault(),p())}function h(_){d.api=_.detail,s()(d.api),d.scrollSnaps=d.api.scrollSnapList(),d.api.on("select",m),m()}qe(()=>()=>{d.api?.off("select",m)});var v=cu();Mt(v,_=>({"data-slot":"carousel",class:_,role:"region","aria-roledescription":"carousel",...c}),[()=>Bt("relative",t.class)]);var S=M(v);X(S,()=>t.children??mt),O(v),ne(v,_=>e(_),()=>e()),l(r,v),Y()}function du(r){return Object.prototype.toString.call(r)==="[object Object]"}function ga(r){return du(r)||Array.isArray(r)}function uu(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Ro(r,t){const e=Object.keys(r),n=Object.keys(t);if(e.length!==n.length)return!1;const o=JSON.stringify(Object.keys(r.breakpoints||{})),s=JSON.stringify(Object.keys(t.breakpoints||{}));return o!==s?!1:e.every(a=>{const c=r[a],d=t[a];return typeof c=="function"?`${c}`==`${d}`:!ga(c)||!ga(d)?c===d:Ro(c,d)})}function ma(r){return r.concat().sort((t,e)=>t.name>e.name?1:-1).map(t=>t.options)}function fu(r,t){if(r.length!==t.length)return!1;const e=ma(r),n=ma(t);return e.every((o,s)=>{const a=n[s];return Ro(o,a)})}function Bo(r){return typeof r=="number"}function Qr(r){return typeof r=="string"}function Dr(r){return typeof r=="boolean"}function pa(r){return Object.prototype.toString.call(r)==="[object Object]"}function ye(r){return Math.abs(r)}function Ho(r){return Math.sign(r)}function Gn(r,t){return ye(r-t)}function hu(r,t){if(r===0||t===0||ye(r)<=ye(t))return 0;const e=Gn(ye(r),ye(t));return ye(e/r)}function vu(r){return Math.round(r*100)/100}function Zn(r){return Jn(r).map(Number)}function an(r){return r[rr(r)]}function rr(r){return Math.max(0,r.length-1)}function Uo(r,t){return t===rr(r)}function _a(r,t=0){return Array.from(Array(r),(e,n)=>t+n)}function Jn(r){return Object.keys(r)}function bs(r,t){return[r,t].reduce((e,n)=>(Jn(n).forEach(o=>{const s=e[o],a=n[o],c=pa(s)&&pa(a);e[o]=c?bs(s,a):a}),e),{})}function to(r,t){return typeof t.MouseEvent<"u"&&r instanceof t.MouseEvent}function gu(r,t){const e={start:n,center:o,end:s};function n(){return 0}function o(d){return s(d)/2}function s(d){return t-d}function a(d,u){return Qr(r)?e[r](d):r(t,d,u)}return{measure:a}}function Qn(){let r=[];function t(o,s,a,c={passive:!0}){let d;if("addEventListener"in o)o.addEventListener(s,a,c),d=()=>o.removeEventListener(s,a,c);else{const u=o;u.addListener(a),d=()=>u.removeListener(a)}return r.push(d),n}function e(){r=r.filter(o=>o())}const n={add:t,clear:e};return n}function mu(r,t,e,n){const o=Qn(),s=1e3/60;let a=null,c=0,d=0;function u(){o.add(r,"visibilitychange",()=>{r.hidden&&h()})}function p(){x(),o.clear()}function g(S){if(!d)return;a||(a=S,e(),e());const _=S-a;for(a=S,c+=_;c>=s;)e(),c-=s;const P=c/s;n(P),d&&(d=t.requestAnimationFrame(g))}function m(){d||(d=t.requestAnimationFrame(g))}function x(){t.cancelAnimationFrame(d),a=null,c=0,d=0}function h(){a=null,c=0}return{init:u,destroy:p,start:m,stop:x,update:e,render:n}}function pu(r,t){const e=t==="rtl",n=r==="y",o=n?"y":"x",s=n?"x":"y",a=!n&&e?-1:1,c=p(),d=g();function u(h){const{height:v,width:S}=h;return n?v:S}function p(){return n?"top":e?"right":"left"}function g(){return n?"bottom":e?"left":"right"}function m(h){return h*a}return{scroll:o,cross:s,startEdge:c,endEdge:d,measureSize:u,direction:m}}function Tn(r=0,t=0){const e=ye(r-t);function n(u){return ut}function s(u){return n(u)||o(u)}function a(u){return s(u)?n(u)?r:t:u}function c(u){return e?u-e*Math.ceil((u-t)/e):u}return{length:e,max:t,min:r,constrain:a,reachedAny:s,reachedMax:o,reachedMin:n,removeOffset:c}}function ys(r,t,e){const{constrain:n}=Tn(0,r),o=r+1;let s=a(t);function a(m){return e?ye((o+m)%o):n(m)}function c(){return s}function d(m){return s=a(m),g}function u(m){return p().set(c()+m)}function p(){return ys(r,c(),e)}const g={get:c,set:d,add:u,clone:p};return g}function _u(r,t,e,n,o,s,a,c,d,u,p,g,m,x,h,v,S,_,P){const{cross:E,direction:z}=r,j=["INPUT","SELECT","TEXTAREA"],I={passive:!1},$=Qn(),H=Qn(),U=Tn(50,225).constrain(x.measure(20)),Z={mouse:300,touch:400},W={mouse:500,touch:600},ct=h?43:25;let it=!1,ht=0,Q=0,lt=!1,tt=!1,at=!1,J=!1;function ut(B){if(!P)return;function vt(nt){(Dr(P)||P(B,nt))&&G(nt)}const yt=t;$.add(yt,"dragstart",nt=>nt.preventDefault(),I).add(yt,"touchmove",()=>{},I).add(yt,"touchend",()=>{}).add(yt,"touchstart",vt).add(yt,"mousedown",vt).add(yt,"touchcancel",et).add(yt,"contextmenu",et).add(yt,"click",gt,!0)}function V(){$.clear(),H.clear()}function R(){const B=J?e:t;H.add(B,"touchmove",K,I).add(B,"touchend",et).add(B,"mousemove",K,I).add(B,"mouseup",et)}function F(B){const vt=B.nodeName||"";return j.includes(vt)}function k(){return(h?W:Z)[J?"mouse":"touch"]}function L(B,vt){const yt=g.add(Ho(B)*-1),nt=p.byDistance(B,!h).distance;return h||ye(B)=2,!(vt&&B.button!==0)&&(F(B.target)||(lt=!0,s.pointerDown(B),u.useFriction(0).useDuration(0),o.set(a),R(),ht=s.readPoint(B),Q=s.readPoint(B,E),m.emit("pointerDown")))}function K(B){if(!to(B,n)&&B.touches.length>=2)return et(B);const yt=s.readPoint(B),nt=s.readPoint(B,E),At=Gn(yt,ht),Lt=Gn(nt,Q);if(!tt&&!J&&(!B.cancelable||(tt=At>Lt,!tt)))return et(B);const Ht=s.pointerMove(B);At>v&&(at=!0),u.useFriction(.3).useDuration(.75),c.start(),o.add(z(Ht)),B.preventDefault()}function et(B){const yt=p.byDistance(0,!1).index!==g.get(),nt=s.pointerUp(B)*k(),At=L(z(nt),yt),Lt=hu(nt,At),Ht=ct-10*Lt,Kt=_+Lt/50;tt=!1,lt=!1,H.clear(),u.useDuration(Ht).useFriction(Kt),d.distance(At,!h),J=!1,m.emit("pointerUp")}function gt(B){at&&(B.stopPropagation(),B.preventDefault(),at=!1)}function pt(){return lt}return{init:ut,destroy:V,pointerDown:pt}}function bu(r,t){let n,o;function s(g){return g.timeStamp}function a(g,m){const h=`client${(m||r.scroll)==="x"?"X":"Y"}`;return(to(g,t)?g:g.touches[0])[h]}function c(g){return n=g,o=g,a(g)}function d(g){const m=a(g)-a(o),x=s(g)-s(n)>170;return o=g,x&&(n=g),m}function u(g){if(!n||!o)return 0;const m=a(o)-a(n),x=s(g)-s(n),h=s(g)-s(o)>170,v=m/x;return x&&!h&&ye(v)>.1?v:0}return{pointerDown:c,pointerMove:d,pointerUp:u,readPoint:a}}function yu(){function r(e){const{offsetTop:n,offsetLeft:o,offsetWidth:s,offsetHeight:a}=e;return{top:n,right:o+s,bottom:n+a,left:o,width:s,height:a}}return{measure:r}}function wu(r){function t(n){return r*(n/100)}return{measure:t}}function xu(r,t,e,n,o,s,a){const c=[r].concat(n);let d,u,p=[],g=!1;function m(S){return o.measureSize(a.measure(S))}function x(S){if(!s)return;u=m(r),p=n.map(m);function _(P){for(const E of P){if(g)return;const z=E.target===r,j=n.indexOf(E.target),I=z?u:p[j],$=m(z?r:n[j]);if(ye($-I)>=.5){S.reInit(),t.emit("resize");break}}}d=new ResizeObserver(P=>{(Dr(s)||s(S,P))&&_(P)}),e.requestAnimationFrame(()=>{c.forEach(P=>d.observe(P))})}function h(){g=!0,d&&d.disconnect()}return{init:x,destroy:h}}function Pu(r,t,e,n,o,s){let a=0,c=0,d=o,u=s,p=r.get(),g=0;function m(){const I=n.get()-r.get(),$=!d;let H=0;return $?(a=0,e.set(n),r.set(n),H=I):(e.set(r),a+=I/d,a*=u,p+=a,r.add(a),H=p-g),c=Ho(H),g=p,j}function x(){const I=n.get()-t.get();return ye(I)<.001}function h(){return d}function v(){return c}function S(){return a}function _(){return E(o)}function P(){return z(s)}function E(I){return d=I,j}function z(I){return u=I,j}const j={direction:v,duration:h,velocity:S,seek:m,settled:x,useBaseFriction:P,useBaseDuration:_,useFriction:z,useDuration:E};return j}function Tu(r,t,e,n,o){const s=o.measure(10),a=o.measure(50),c=Tn(.1,.99);let d=!1;function u(){return!(d||!r.reachedAny(e.get())||!r.reachedAny(t.get()))}function p(x){if(!u())return;const h=r.reachedMin(t.get())?"min":"max",v=ye(r[h]-t.get()),S=e.get()-t.get(),_=c.constrain(v/a);e.subtract(S*_),!x&&ye(S){const{min:S,max:_}=s,P=s.constrain(h),E=!v,z=Uo(e,v);return E?_:z||u(S,P)?S:u(_,P)?_:P}).map(h=>parseFloat(h.toFixed(3)))}function m(){if(t<=r+o)return[s.max];if(n==="keepSnaps")return a;const{min:h,max:v}=c;return a.slice(h,v)}return{snapsContained:d,scrollContainLimit:c}}function Au(r,t,e){const n=t[0],o=e?n-r:an(t);return{limit:Tn(o,n)}}function Cu(r,t,e,n){const s=t.min+.1,a=t.max+.1,{reachedMin:c,reachedMax:d}=Tn(s,a);function u(m){return m===1?d(e.get()):m===-1?c(e.get()):!1}function p(m){if(!u(m))return;const x=r*(m*-1);n.forEach(h=>h.add(x))}return{loop:p}}function Eu(r){const{max:t,length:e}=r;function n(s){const a=s-t;return e?a/-e:0}return{get:n}}function Iu(r,t,e,n,o){const{startEdge:s,endEdge:a}=r,{groupSlides:c}=o,d=g().map(t.measure),u=m(),p=x();function g(){return c(n).map(v=>an(v)[a]-v[0][s]).map(ye)}function m(){return n.map(v=>e[s]-v[s]).map(v=>-ye(v))}function x(){return c(u).map(v=>v[0]).map((v,S)=>v+d[S])}return{snaps:u,snapsAligned:p}}function Du(r,t,e,n,o,s){const{groupSlides:a}=o,{min:c,max:d}=n,u=p();function p(){const m=a(s),x=!r||t==="keepSnaps";return e.length===1?[s]:x?m:m.slice(c,d).map((h,v,S)=>{const _=!v,P=Uo(S,v);if(_){const E=an(S[0])+1;return _a(E)}if(P){const E=rr(s)-an(S)[0]+1;return _a(E,an(S)[0])}return h})}return{slideRegistry:u}}function Ou(r,t,e,n,o){const{reachedAny:s,removeOffset:a,constrain:c}=n;function d(h){return h.concat().sort((v,S)=>ye(v)-ye(S))[0]}function u(h){const v=r?a(h):c(h),S=t.map((P,E)=>({diff:p(P-v,0),index:E})).sort((P,E)=>ye(P.diff)-ye(E.diff)),{index:_}=S[0];return{index:_,distance:v}}function p(h,v){const S=[h,h+e,h-e];if(!r)return h;if(!v)return d(S);const _=S.filter(P=>Ho(P)===v);return _.length?d(_):an(S)-e}function g(h,v){const S=t[h]-o.get(),_=p(S,v);return{index:h,distance:_}}function m(h,v){const S=o.get()+h,{index:_,distance:P}=u(S),E=!r&&s(S);if(!v||E)return{index:_,distance:h};const z=t[_]-P,j=h+p(z,0);return{index:_,distance:j}}return{byDistance:m,byIndex:g,shortcut:p}}function ku(r,t,e,n,o,s,a){function c(g){const m=g.distance,x=g.index!==t.get();s.add(m),m&&(n.duration()?r.start():(r.update(),r.render(1),r.update())),x&&(e.set(t.get()),t.set(g.index),a.emit("select"))}function d(g,m){const x=o.byDistance(g,m);c(x)}function u(g,m){const x=t.clone().set(g),h=o.byIndex(x.get(),m);c(h)}return{distance:d,index:u}}function Mu(r,t,e,n,o,s,a,c){const d={passive:!0,capture:!0};let u=0;function p(x){if(!c)return;function h(v){if(new Date().getTime()-u>10)return;a.emit("slideFocusStart"),r.scrollLeft=0;const P=e.findIndex(E=>E.includes(v));Bo(P)&&(o.useDuration(0),n.index(P,0),a.emit("slideFocus"))}s.add(document,"keydown",g,!1),t.forEach((v,S)=>{s.add(v,"focus",_=>{(Dr(c)||c(x,_))&&h(S)},d)})}function g(x){x.code==="Tab"&&(u=new Date().getTime())}return{init:p}}function Un(r){let t=r;function e(){return t}function n(d){t=a(d)}function o(d){t+=a(d)}function s(d){t-=a(d)}function a(d){return Bo(d)?d:d.get()}return{get:e,set:n,add:o,subtract:s}}function ws(r,t){const e=r.scroll==="x"?a:c,n=t.style;let o=null,s=!1;function a(m){return`translate3d(${m}px,0px,0px)`}function c(m){return`translate3d(0px,${m}px,0px)`}function d(m){if(s)return;const x=vu(r.direction(m));x!==o&&(n.transform=e(x),o=x)}function u(m){s=!m}function p(){s||(n.transform="",t.getAttribute("style")||t.removeAttribute("style"))}return{clear:p,to:d,toggleActive:u}}function Nu(r,t,e,n,o,s,a,c,d){const p=Zn(o),g=Zn(o).reverse(),m=_().concat(P());function x($,H){return $.reduce((U,Z)=>U-o[Z],H)}function h($,H){return $.reduce((U,Z)=>x(U,H)>0?U.concat([Z]):U,[])}function v($){return s.map((H,U)=>({start:H-n[U]+.5+$,end:H+t-.5+$}))}function S($,H,U){const Z=v(H);return $.map(W=>{const ct=U?0:-e,it=U?e:0,ht=U?"end":"start",Q=Z[W][ht];return{index:W,loopPoint:Q,slideLocation:Un(-1),translate:ws(r,d[W]),target:()=>c.get()>Q?ct:it}})}function _(){const $=a[0],H=h(g,$);return S(H,e,!1)}function P(){const $=t-a[0]-1,H=h(p,$);return S(H,-e,!0)}function E(){return m.every(({index:$})=>{const H=p.filter(U=>U!==$);return x(H,t)<=.1})}function z(){m.forEach($=>{const{target:H,translate:U,slideLocation:Z}=$,W=H();W!==Z.get()&&(U.to(W),Z.set(W))})}function j(){m.forEach($=>$.translate.clear())}return{canLoop:E,clear:j,loop:z,loopPoints:m}}function $u(r,t,e){let n,o=!1;function s(d){if(!e)return;function u(p){for(const g of p)if(g.type==="childList"){d.reInit(),t.emit("slidesChanged");break}}n=new MutationObserver(p=>{o||(Dr(e)||e(d,p))&&u(p)}),n.observe(r,{childList:!0})}function a(){n&&n.disconnect(),o=!0}return{init:s,destroy:a}}function Lu(r,t,e,n){const o={};let s=null,a=null,c,d=!1;function u(){c=new IntersectionObserver(h=>{d||(h.forEach(v=>{const S=t.indexOf(v.target);o[S]=v}),s=null,a=null,e.emit("slidesInView"))},{root:r.parentElement,threshold:n}),t.forEach(h=>c.observe(h))}function p(){c&&c.disconnect(),d=!0}function g(h){return Jn(o).reduce((v,S)=>{const _=parseInt(S),{isIntersecting:P}=o[_];return(h&&P||!h&&!P)&&v.push(_),v},[])}function m(h=!0){if(h&&s)return s;if(!h&&a)return a;const v=g(h);return h&&(s=v),h||(a=v),v}return{init:u,destroy:p,get:m}}function zu(r,t,e,n,o,s){const{measureSize:a,startEdge:c,endEdge:d}=r,u=e[0]&&o,p=h(),g=v(),m=e.map(a),x=S();function h(){if(!u)return 0;const P=e[0];return ye(t[c]-P[c])}function v(){if(!u)return 0;const P=s.getComputedStyle(an(n));return parseFloat(P.getPropertyValue(`margin-${d}`))}function S(){return e.map((P,E,z)=>{const j=!E,I=Uo(z,E);return j?m[E]+p:I?m[E]+g:z[E+1][c]-P[c]}).map(ye)}return{slideSizes:m,slideSizesWithGaps:x,startGap:p,endGap:g}}function Fu(r,t,e,n,o,s,a,c,d){const{startEdge:u,endEdge:p,direction:g}=r,m=Bo(e);function x(_,P){return Zn(_).filter(E=>E%P===0).map(E=>_.slice(E,E+P))}function h(_){return _.length?Zn(_).reduce((P,E,z)=>{const j=an(P)||0,I=j===0,$=E===rr(_),H=o[u]-s[j][u],U=o[u]-s[E][p],Z=!n&&I?g(a):0,W=!n&&$?g(c):0,ct=ye(U-W-(H+Z));return z&&ct>t+d&&P.push(E),$&&P.push(_.length),P},[]).map((P,E,z)=>{const j=Math.max(z[E-1]||0);return _.slice(j,P)}):[]}function v(_){return m?x(_,e):h(_)}return{groupSlides:v}}function Ru(r,t,e,n,o,s,a){const{align:c,axis:d,direction:u,startIndex:p,loop:g,duration:m,dragFree:x,dragThreshold:h,inViewThreshold:v,slidesToScroll:S,skipSnaps:_,containScroll:P,watchResize:E,watchSlides:z,watchDrag:j,watchFocus:I}=s,$=2,H=yu(),U=H.measure(t),Z=e.map(H.measure),W=pu(d,u),ct=W.measureSize(U),it=wu(ct),ht=gu(c,ct),Q=!g&&!!P,lt=g||!!P,{slideSizes:tt,slideSizesWithGaps:at,startGap:J,endGap:ut}=zu(W,U,Z,e,lt,o),V=Fu(W,ct,S,g,U,Z,J,ut,$),{snaps:R,snapsAligned:F}=Iu(W,ht,U,Z,V),k=-an(R)+an(at),{snapsContained:L,scrollContainLimit:G}=Su(ct,k,F,P,$),K=Q?L:F,{limit:et}=Au(k,K,g),gt=ys(rr(K),p,g),pt=gt.clone(),ft=Zn(e),B=({dragHandler:we,scrollBody:Se,scrollBounds:ce,options:{loop:ae}})=>{ae||ce.constrain(we.pointerDown()),Se.seek()},vt=({scrollBody:we,translate:Se,location:ce,offsetLocation:ae,previousLocation:me,scrollLooper:ie,slideLooper:Wt,dragHandler:St,animation:zt,eventHandler:Zt,scrollBounds:te,options:{loop:Tt}},jt)=>{const Jt=we.settled(),de=!te.shouldConstrain(),se=Tt?Jt:Jt&&de,Ft=se&&!St.pointerDown();Ft&&zt.stop();const qt=ce.get()*jt+me.get()*(1-jt);ae.set(qt),Tt&&(ie.loop(we.direction()),Wt.loop()),Se.to(ae.get()),Ft&&Zt.emit("settle"),se||Zt.emit("scroll")},yt=mu(n,o,()=>B(ge),we=>vt(ge,we)),nt=.68,At=K[gt.get()],Lt=Un(At),Ht=Un(At),Kt=Un(At),re=Un(At),Vt=Pu(Lt,Kt,Ht,re,m,nt),bt=Ou(g,K,k,et,re),Ot=ku(yt,gt,pt,Vt,bt,re,a),kt=Eu(et),Ct=Qn(),Nt=Lu(t,e,a,v),{slideRegistry:$t}=Du(Q,P,K,G,V,ft),Ut=Mu(r,e,$t,Ot,Vt,Ct,a,I),ge={ownerDocument:n,ownerWindow:o,eventHandler:a,containerRect:U,slideRects:Z,animation:yt,axis:W,dragHandler:_u(W,r,n,o,re,bu(W,o),Lt,yt,Ot,Vt,bt,gt,a,it,x,h,_,nt,j),eventStore:Ct,percentOfView:it,index:gt,indexPrevious:pt,limit:et,location:Lt,offsetLocation:Kt,previousLocation:Ht,options:s,resizeHandler:xu(t,a,o,e,W,E,H),scrollBody:Vt,scrollBounds:Tu(et,Kt,re,Vt,it),scrollLooper:Cu(k,et,Kt,[Lt,Kt,Ht,re]),scrollProgress:kt,scrollSnapList:K.map(kt.get),scrollSnaps:K,scrollTarget:bt,scrollTo:Ot,slideLooper:Nu(W,ct,k,tt,at,R,K,Kt,e),slideFocus:Ut,slidesHandler:$u(t,a,z),slidesInView:Nt,slideIndexes:ft,slideRegistry:$t,slidesToScroll:V,target:re,translate:ws(W,t)};return ge}function Bu(){let r={},t;function e(u){t=u}function n(u){return r[u]||[]}function o(u){return n(u).forEach(p=>p(t,u)),d}function s(u,p){return r[u]=n(u).concat([p]),d}function a(u,p){return r[u]=n(u).filter(g=>g!==p),d}function c(){r={}}const d={init:e,emit:o,off:a,on:s,clear:c};return d}const Hu={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function Uu(r){function t(s,a){return bs(s,a||{})}function e(s){const a=s.breakpoints||{},c=Jn(a).filter(d=>r.matchMedia(d).matches).map(d=>a[d]).reduce((d,u)=>t(d,u),{});return t(s,c)}function n(s){return s.map(a=>Jn(a.breakpoints||{})).reduce((a,c)=>a.concat(c),[]).map(r.matchMedia)}return{mergeOptions:t,optionsAtMedia:e,optionsMediaQueries:n}}function Vu(r){let t=[];function e(s,a){return t=a.filter(({options:c})=>r.optionsAtMedia(c).active!==!1),t.forEach(c=>c.init(s,r)),a.reduce((c,d)=>Object.assign(c,{[d.name]:d}),{})}function n(){t=t.filter(s=>s.destroy())}return{init:e,destroy:n}}function Tr(r,t,e){const n=r.ownerDocument,o=n.defaultView,s=Uu(o),a=Vu(s),c=Qn(),d=Bu(),{mergeOptions:u,optionsAtMedia:p,optionsMediaQueries:g}=s,{on:m,off:x,emit:h}=d,v=W;let S=!1,_,P=u(Hu,Tr.globalOptions),E=u(P),z=[],j,I,$;function H(){const{container:ft,slides:B}=E;I=(Qr(ft)?r.querySelector(ft):ft)||r.children[0];const yt=Qr(B)?I.querySelectorAll(B):B;$=[].slice.call(yt||I.children)}function U(ft){const B=Ru(r,I,$,n,o,ft,d);if(ft.loop&&!B.slideLooper.canLoop()){const vt=Object.assign({},ft,{loop:!1});return U(vt)}return B}function Z(ft,B){S||(P=u(P,ft),E=p(P),z=B||z,H(),_=U(E),g([P,...z.map(({options:vt})=>vt)]).forEach(vt=>c.add(vt,"change",W)),E.active&&(_.translate.to(_.location.get()),_.animation.init(),_.slidesInView.init(),_.slideFocus.init(pt),_.eventHandler.init(pt),_.resizeHandler.init(pt),_.slidesHandler.init(pt),_.options.loop&&_.slideLooper.loop(),I.offsetParent&&$.length&&_.dragHandler.init(pt),j=a.init(pt,z)))}function W(ft,B){const vt=V();ct(),Z(u({startIndex:vt},ft),B),d.emit("reInit")}function ct(){_.dragHandler.destroy(),_.eventStore.clear(),_.translate.clear(),_.slideLooper.clear(),_.resizeHandler.destroy(),_.slidesHandler.destroy(),_.slidesInView.destroy(),_.animation.destroy(),a.destroy(),c.clear()}function it(){S||(S=!0,c.clear(),ct(),d.emit("destroy"),d.clear())}function ht(ft,B,vt){!E.active||S||(_.scrollBody.useBaseFriction().useDuration(B===!0?0:E.duration),_.scrollTo.index(ft,vt||0))}function Q(ft){const B=_.index.add(1).get();ht(B,ft,-1)}function lt(ft){const B=_.index.add(-1).get();ht(B,ft,1)}function tt(){return _.index.add(1).get()!==V()}function at(){return _.index.add(-1).get()!==V()}function J(){return _.scrollSnapList}function ut(){return _.scrollProgress.get(_.offsetLocation.get())}function V(){return _.index.get()}function R(){return _.indexPrevious.get()}function F(){return _.slidesInView.get()}function k(){return _.slidesInView.get(!1)}function L(){return j}function G(){return _}function K(){return r}function et(){return I}function gt(){return $}const pt={canScrollNext:tt,canScrollPrev:at,containerNode:et,internalEngine:G,destroy:it,off:x,on:m,emit:h,plugins:L,previousScrollSnap:R,reInit:v,rootNode:K,scrollNext:Q,scrollPrev:lt,scrollProgress:ut,scrollSnapList:J,scrollTo:ht,selectedScrollSnap:V,slideNodes:gt,slidesInView:F,slidesNotInView:k};return Z(t,e),setTimeout(()=>d.emit("init"),0),pt}Tr.globalOptions=void 0;function Vo(r,t={options:{},plugins:[]}){let e=t,n;return uu()&&(Tr.globalOptions=Vo.globalOptions,n=Tr(r,e.options,e.plugins),n.on("init",()=>r.dispatchEvent(new CustomEvent("emblaInit",{detail:n})))),{destroy:()=>{n&&n.destroy()},update:o=>{const s=!Ro(e.options,o.options),a=!fu(e.plugins,o.plugins);!s&&!a||(e=o,n&&n.reInit(e.options,e.plugins))}}}Vo.globalOptions=void 0;var Wu=A('
      ');function ba(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);const o=Ir("");var s=Wu(),a=M(s);Mt(a,d=>({class:d,"data-embla-container":"",...n}),[()=>Bt("flex",o.orientation==="horizontal"?"-ms-4":"-mt-4 flex-col",t.class)]);var c=M(a);X(c,()=>t.children??mt),O(a),ne(a,d=>e(d),()=>e()),O(s),ai(s,(d,u)=>Vo?.(d,u),()=>({options:{container:"[data-embla-container]",slides:"[data-embla-slide]",...o.options,axis:o.orientation==="horizontal"?"x":"y"},plugins:o.plugins})),Sr("emblaInit",s,function(...d){o.onInit?.apply(this,d)}),l(r,s),Y()}var ju=A("
      ");function ya(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);const o=Ir("");var s=ju();Mt(s,c=>({"data-slot":"carousel-item",role:"group","aria-roledescription":"slide",class:c,"data-embla-slide":"",...n}),[()=>Bt("min-w-0 shrink-0 grow-0 basis-full",o.orientation==="horizontal"?"ps-4":"pt-4",t.class)]);var a=M(s);X(a,()=>t.children??mt),O(s),ne(s,c=>e(c),()=>e()),l(r,s),Y()}var Gu=A(' Previous slide',1);function Ku(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"variant",3,"outline"),o=y(t,"size",3,"icon"),s=st(t,["$$slots","$$events","$$legacy","ref","class","variant","size"]);const a=Ir("");{let c=N(()=>!a.canScrollPrev),d=N(()=>Bt("absolute size-8 rounded-full",a.orientation==="horizontal"?"-start-12 top-1/2 -translate-y-1/2":"start-1/2 -top-12 -translate-x-1/2 rotate-90",t.class));be(r,Pt({"data-slot":"carousel-previous",get variant(){return n()},get size(){return o()},get"aria-disabled"(){return i(c)},get class(){return i(d)},get onclick(){return a.scrollPrev},get onkeydown(){return a.handleKeyDown}},()=>s,{get ref(){return e()},set ref(u){e(u)},children:(u,p)=>{var g=Gu(),m=f(g);ms(m,{class:"size-4"}),xt(2),l(u,g)},$$slots:{default:!0}}))}Y()}var qu=A(' Next slide',1);function Yu(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"variant",3,"outline"),o=y(t,"size",3,"icon"),s=st(t,["$$slots","$$events","$$legacy","ref","class","variant","size"]);const a=Ir("");{let c=N(()=>!a.canScrollNext),d=N(()=>Bt("absolute size-8 rounded-full",a.orientation==="horizontal"?"-end-12 top-1/2 -translate-y-1/2":"start-1/2 -bottom-12 -translate-x-1/2 rotate-90",t.class));be(r,Pt({"data-slot":"carousel-next",get variant(){return n()},get size(){return o()},get"aria-disabled"(){return i(c)},get class(){return i(d)},get onclick(){return a.scrollNext},get onkeydown(){return a.handleKeyDown}},()=>s,{get ref(){return e()},set ref(u){e(u)},children:(u,p)=>{var g=qu(),m=f(g);Id(m,{class:"size-4"}),xt(2),l(u,g)},$$slots:{default:!0}}))}Y()}function Xu(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref"]);var o=b(),s=f(o);T(s,()=>wc,(a,c)=>{c(a,Pt({"data-slot":"aspect-ratio"},()=>n,{get ref(){return e()},set ref(d){e(d)}}))}),l(r,o),Y()}const Zu=er({base:"group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:ring-[3px] [a]:transition-colors",variants:{variant:{default:"bg-transparent",outline:"border-border",muted:"bg-muted/50"},size:{default:"gap-4 p-4",sm:"gap-2.5 px-4 py-3"}},defaultVariants:{variant:"default",size:"default"}});var Ju=A("
      ");function Kn(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","child","variant","size"]);const o=N(()=>({class:Bt(Zu({variant:t.variant,size:t.size}),t.class),"data-slot":"item","data-variant":t.variant,"data-size":t.size,...n}));var s=b(),a=f(s);{var c=u=>{var p=b(),g=f(p);X(g,()=>t.child,()=>({props:i(o)})),l(u,p)},d=u=>{var p=Ju();Mt(p,()=>({...i(o)}));var g=M(p);X(g,()=>i(o).children??mt),O(p),ne(p,m=>e(m),()=>e()),l(u,p)};ot(a,u=>{t.child?u(c):u(d,!1)})}l(r,s),Y()}function Qu(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"data-slot",3,"separator"),o=st(t,["$$slots","$$events","$$legacy","ref","class","data-slot"]);var s=b(),a=f(s);{let c=N(()=>Bt("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:min-h-full data-[orientation=vertical]:w-px",t.class));T(a,()=>Bc,(d,u)=>{u(d,Pt({get"data-slot"(){return n()},get class(){return i(c)}},()=>o,{get ref(){return e()},set ref(p){e(p)}}))})}l(r,s),Y()}var tf=A("
      ");function qn(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=tf();Mt(o,a=>({"data-slot":"item-content",class:a,...n}),[()=>Bt("flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var ef=A("

      ");function wa(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=ef();Mt(o,a=>({"data-slot":"item-description",class:a,...n}),[()=>Bt("text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance","[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var nf=A("
      ");function Rr(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=nf();Mt(o,a=>({"data-slot":"item-actions",class:a,...n}),[()=>Bt("flex items-center gap-2",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}er({base:"flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none",variants:{variant:{default:"bg-transparent",icon:"bg-muted size-8 rounded-sm border [&_svg:not([class*='size-'])]:size-4",image:"size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover"}},defaultVariants:{variant:"default"}});const rf=r=>{var t=of(),e=M(t);Pn(e,{class:"size-8"}),O(t),l(r,t)};var of=A('
      '),af=A(" ",1),sf=A(" ",1),lf=A(" ",1),cf=A('

      '),df=A(" Version Manager",1),uf=A(" ",1),ff=A(" ",1),hf=A(" ",1),vf=A(" ",1),gf=A(" ",1),mf=A(" ",1),pf=A('
      '),_f=A(" ",1),bf=A(" ",1),yf=A(" ",1),wf=A('
      '),xf=A(" ",1),Pf=A(" ",1),Tf=A(" ",1),Sf=A('
      Virus scan:
      ',1),Af=A(" ",1),Cf=A('
      ',1),Ef=A(' '),If=A('
      '),Df=A("
      "),Of=A(" ",1);function kf(r,t){q(t,!0);const e=j=>{var I=cf(),$=M(I),H=M($),U=M(H,!0);O(H);var Z=D(H,2),W=M(Z);O(Z);var ct=D(Z,2),it=M(ct);o(it),O(ct),O($);var ht=D($,2),Q=M(ht),lt=M(Q);{var tt=R=>{s(R)};ot(lt,R=>{i(p)||R(tt)})}O(Q);var at=D(Q,2),J=M(at);n(J),O(at),O(ht);var ut=D(ht,2),V=M(ut);T(V,()=>jn,(R,F)=>{F(R,{type:"single",children:(k,L)=>{var G=lf(),K=f(G);{var et=ft=>{var B=b(),vt=f(B);T(vt,()=>wn,(yt,nt)=>{nt(yt,{value:"item-1",children:(At,Lt)=>{var Ht=af(),Kt=f(Ht);T(Kt,()=>xn,(Vt,bt)=>{bt(Vt,{children:(Ot,kt)=>{xt();var Ct=Dt("Description");l(Ot,Ct)},$$slots:{default:!0}})});var re=D(Kt,2);T(re,()=>yn,(Vt,bt)=>{bt(Vt,{children:(Ot,kt)=>{var Ct=b(),Nt=f(Ct);yr(Nt,()=>Hn.sanitize(i(a).description)),l(Ot,Ct)},$$slots:{default:!0}})}),l(At,Ht)},$$slots:{default:!0}})}),l(ft,B)};ot(K,ft=>{Hn.sanitize(i(a).description).trim().length>0&&ft(et)})}var gt=D(K,2);{var pt=ft=>{var B=b(),vt=f(B);T(vt,()=>wn,(yt,nt)=>{nt(yt,{value:"item-2",children:(At,Lt)=>{var Ht=sf(),Kt=f(Ht);T(Kt,()=>xn,(Vt,bt)=>{bt(Vt,{children:(Ot,kt)=>{xt();var Ct=Dt("Version description");l(Ot,Ct)},$$slots:{default:!0}})});var re=D(Kt,2);T(re,()=>yn,(Vt,bt)=>{bt(Vt,{children:(Ot,kt)=>{var Ct=b(),Nt=f(Ct);yr(Nt,()=>Hn.sanitize(i(c).description)),l(Ot,Ct)},$$slots:{default:!0}})}),l(At,Ht)},$$slots:{default:!0}})}),l(ft,B)};ot(gt,ft=>{Hn.sanitize(i(c).description).trim().length>0&&ft(pt)})}l(k,G)},$$slots:{default:!0}})}),O(ut),O(I),It(R=>{Rt(U,i(a).name),Rt(W,`Last updated at: ${R??""}`)},[()=>v(i(a).modelVersions[0].publishedAt)]),l(j,I)},n=j=>{var I=Cf(),$=f(I),H=M($);be(H,{variant:"outline",size:"icon","aria-label":"Submit",get disabled(){return i(m)},onclick:_,children:(it,ht)=>{var Q=b(),lt=f(Q);{var tt=J=>{Pn(J,{})},at=J=>{In(J,{})};ot(lt,J=>{i(m)?J(tt):J(at,!1)})}l(it,Q)},$$slots:{default:!0}});var U=D(H,2);be(U,{variant:"outline","aria-label":"Submit",onclick:()=>{window.dispatchEvent(new CustomEvent("DownloadManagerShowModelVersions",{detail:{ModelData:i(a)}}))},children:(it,ht)=>{var Q=df(),lt=f(Q);In(lt,{}),xt(),l(it,Q)},$$slots:{default:!0}}),O($);var Z=D($,2),W=M(Z);T(W,()=>Kn,(it,ht)=>{ht(it,{variant:"outline",class:"py-0",children:(Q,lt)=>{var tt=b(),at=f(tt);T(at,()=>qn,(J,ut)=>{ut(J,{children:(V,R)=>{var F=b(),k=f(F);T(k,()=>wa,(L,G)=>{G(L,{children:(K,et)=>{var gt=b(),pt=f(gt);T(pt,()=>jn,(ft,B)=>{B(ft,{type:"single",value:"item-1",children:(vt,yt)=>{var nt=b(),At=f(nt);T(At,()=>wn,(Lt,Ht)=>{Ht(Lt,{value:"item-1",children:(Kt,re)=>{var Vt=Tf(),bt=f(Vt);T(bt,()=>xn,(kt,Ct)=>{Ct(kt,{children:(Nt,$t)=>{xt();var Ut=Dt("Details");l(Nt,Ut)},$$slots:{default:!0}})});var Ot=D(bt,2);T(Ot,()=>yn,(kt,Ct)=>{Ct(kt,{children:(Nt,$t)=>{var Ut=b(),ge=f(Ut);T(ge,()=>pr,(we,Se)=>{Se(we,{children:(ce,ae)=>{var me=b(),ie=f(me);T(ie,()=>_r,(Wt,St)=>{St(Wt,{children:(zt,Zt)=>{var te=Pf(),Tt=f(te);T(Tt,()=>on,(qt,ee)=>{ee(qt,{children:(Ae,Ee)=>{var pe=uf(),ue=f(pe);T(ue,()=>le,(Qt,oe)=>{oe(Qt,{class:"font-medium",children:(fe,he)=>{xt();var Xt=Dt("Type");l(fe,Xt)},$$slots:{default:!0}})});var Ie=D(ue,2);T(Ie,()=>le,(Qt,oe)=>{oe(Qt,{children:(fe,he)=>{xt();var Xt=Dt();It(()=>Rt(Xt,i(a).type)),l(fe,Xt)},$$slots:{default:!0}})}),l(Ae,pe)},$$slots:{default:!0}})});var jt=D(Tt,2);T(jt,()=>on,(qt,ee)=>{ee(qt,{children:(Ae,Ee)=>{var pe=_f(),ue=f(pe);T(ue,()=>le,(Qt,oe)=>{oe(Qt,{class:"font-medium",children:(fe,he)=>{xt();var Xt=Dt("Stats");l(fe,Xt)},$$slots:{default:!0}})});var Ie=D(ue,2);T(Ie,()=>le,(Qt,oe)=>{oe(Qt,{children:(fe,he)=>{var Xt=pf(),Ne=M(Xt);be(Ne,{variant:"outline",size:"sm","aria-label":"Submit",children:(xe,tn)=>{var _t=ff(),w=f(_t);qa(w,{});var rt=D(w);It(()=>Rt(rt,` ${i(a).stats.thumbsUpCount??""}`)),l(xe,_t)},$$slots:{default:!0}});var Ce=D(Ne,2);be(Ce,{variant:"outline",size:"sm","aria-label":"Submit",children:(xe,tn)=>{var _t=hf(),w=f(_t);Ya(w,{});var rt=D(w);It(()=>Rt(rt,` ${i(a).stats.thumbsDownCount??""}`)),l(xe,_t)},$$slots:{default:!0}});var He=D(Ce,2);be(He,{variant:"outline",size:"sm","aria-label":"Submit",children:(xe,tn)=>{var _t=vf(),w=f(_t);ii(w,{});var rt=D(w);It(()=>Rt(rt,` ${i(a).stats.commentCount??""}`)),l(xe,_t)},$$slots:{default:!0}});var $e=D(He,2);be($e,{variant:"outline",size:"sm","aria-label":"Submit",children:(xe,tn)=>{var _t=gf(),w=f(_t);In(w,{});var rt=D(w);It(()=>Rt(rt,` ${i(a).stats.downloadCount??""}`)),l(xe,_t)},$$slots:{default:!0}});var Re=D($e,2);be(Re,{variant:"outline",size:"sm","aria-label":"Submit",children:(xe,tn)=>{var _t=mf(),w=f(_t);_i(w,{});var rt=D(w);It(()=>Rt(rt,` ${i(a).stats.tippedAmountCount??""}`)),l(xe,_t)},$$slots:{default:!0}}),O(Xt),l(fe,Xt)},$$slots:{default:!0}})}),l(Ae,pe)},$$slots:{default:!0}})});var Jt=D(jt,2);T(Jt,()=>on,(qt,ee)=>{ee(qt,{children:(Ae,Ee)=>{var pe=bf(),ue=f(pe);T(ue,()=>le,(Qt,oe)=>{oe(Qt,{class:"font-medium",children:(fe,he)=>{xt();var Xt=Dt("Reviews");l(fe,Xt)},$$slots:{default:!0}})});var Ie=D(ue,2);T(Ie,()=>le,(Qt,oe)=>{oe(Qt,{children:(fe,he)=>{xt();var Xt=Dt("TODO!");l(fe,Xt)},$$slots:{default:!0}})}),l(Ae,pe)},$$slots:{default:!0}})});var de=D(Jt,2);T(de,()=>on,(qt,ee)=>{ee(qt,{children:(Ae,Ee)=>{var pe=yf(),ue=f(pe);T(ue,()=>le,(Qt,oe)=>{oe(Qt,{class:"font-medium",children:(fe,he)=>{xt();var Xt=Dt("Published");l(fe,Xt)},$$slots:{default:!0}})});var Ie=D(ue,2);T(Ie,()=>le,(Qt,oe)=>{oe(Qt,{children:(fe,he)=>{xt();var Xt=Dt();It(Ne=>Rt(Xt,Ne),[()=>new Date(i(c).publishedAt).toLocaleDateString("en-UK",P)]),l(fe,Xt)},$$slots:{default:!0}})}),l(Ae,pe)},$$slots:{default:!0}})});var se=D(de,2);{var Ft=qt=>{var ee=b(),Ae=f(ee);T(Ae,()=>on,(Ee,pe)=>{pe(Ee,{children:(ue,Ie)=>{var Qt=xf(),oe=f(Qt);T(oe,()=>le,(he,Xt)=>{Xt(he,{class:"font-medium",children:(Ne,Ce)=>{xt();var He=Dt("Trigger Words");l(Ne,He)},$$slots:{default:!0}})});var fe=D(oe,2);T(fe,()=>le,(he,Xt)=>{Xt(he,{children:(Ne,Ce)=>{var He=wf();Ve(He,21,()=>i(c).trainedWords,cn,($e,Re)=>{cr($e,{variant:"outline",children:(xe,tn)=>{xt();var _t=Dt();It(()=>Rt(_t,i(Re))),l(xe,_t)},$$slots:{default:!0}})}),O(He),l(Ne,He)},$$slots:{default:!0}})}),l(ue,Qt)},$$slots:{default:!0}})}),l(qt,ee)};ot(se,qt=>{i(c).trainedWords!==void 0&&i(c)?.trainedWords?.length>0&&qt(Ft)})}l(zt,te)},$$slots:{default:!0}})}),l(ce,me)},$$slots:{default:!0}})}),l(Nt,Ut)},$$slots:{default:!0}})}),l(Kt,Vt)},$$slots:{default:!0}})}),l(vt,nt)},$$slots:{default:!0}})}),l(K,gt)},$$slots:{default:!0}})}),l(V,F)},$$slots:{default:!0}})}),l(Q,tt)},$$slots:{default:!0}})});var ct=D(W,2);T(ct,()=>Kn,(it,ht)=>{ht(it,{variant:"outline",class:"py-0",children:(Q,lt)=>{var tt=b(),at=f(tt);T(at,()=>qn,(J,ut)=>{ut(J,{children:(V,R)=>{var F=b(),k=f(F);T(k,()=>wa,(L,G)=>{G(L,{children:(K,et)=>{var gt=b(),pt=f(gt);T(pt,()=>jn,(ft,B)=>{B(ft,{type:"single",children:(vt,yt)=>{var nt=b(),At=f(nt);T(At,()=>wn,(Lt,Ht)=>{Ht(Lt,{value:"item-1",children:(Kt,re)=>{var Vt=Af(),bt=f(Vt);T(bt,()=>xn,(kt,Ct)=>{Ct(kt,{children:(Nt,$t)=>{xt();var Ut=Dt("Files");l(Nt,Ut)},$$slots:{default:!0}})});var Ot=D(bt,2);T(Ot,()=>yn,(kt,Ct)=>{Ct(kt,{children:(Nt,$t)=>{var Ut=b(),ge=f(Ut);T(ge,()=>pr,(we,Se)=>{Se(we,{children:(ce,ae)=>{var me=b(),ie=f(me);T(ie,()=>_r,(Wt,St)=>{St(Wt,{children:(zt,Zt)=>{var te=b(),Tt=f(te);Ve(Tt,17,()=>i(c).files,cn,(jt,Jt)=>{var de=b(),se=f(de);T(se,()=>on,(Ft,qt)=>{qt(Ft,{children:(ee,Ae)=>{var Ee=b(),pe=f(Ee);T(pe,()=>le,(ue,Ie)=>{Ie(ue,{class:"font-normal text-wrap",children:(Qt,oe)=>{var fe=Sf(),he=f(fe),Xt=M(he),Ne=M(Xt,!0);O(Xt);var Ce=D(Xt,2),He=M(Ce,!0);O(Ce),O(he);var $e=D(he,2),Re=D(M($e)),xe=M(Re,!0);O(Re),O($e),It((tn,_t)=>{Rt(Ne,i(Jt).name),Rt(He,tn),Ze(Re,1,_t),Rt(xe,i(Jt).virusScanResult)},[()=>lo(Math.round(i(Jt).sizeKB)*1024).toString(),()=>i(Jt).virusScanResult.toLowerCase()==="success"?"text-green-500":"text-red-600"]),l(Qt,fe)},$$slots:{default:!0}})}),l(ee,Ee)},$$slots:{default:!0}})}),l(jt,de)}),l(zt,te)},$$slots:{default:!0}})}),l(ce,me)},$$slots:{default:!0}})}),l(Nt,Ut)},$$slots:{default:!0}})}),l(Kt,Vt)},$$slots:{default:!0}})}),l(vt,nt)},$$slots:{default:!0}})}),l(K,gt)},$$slots:{default:!0}})}),l(V,F)},$$slots:{default:!0}})}),l(Q,tt)},$$slots:{default:!0}})}),O(Z),l(j,I)},o=j=>{var I=b(),$=f(I);T($,()=>va,(H,U)=>{U(H,{class:"w-full noSelect mt-4",style:"max-width: min(1200px, calc(100vw - 2rem));",children:(Z,W)=>{var ct=b(),it=f(ct);T(it,()=>ba,(ht,Q)=>{Q(ht,{class:"w-full",children:(lt,tt)=>{var at=b(),J=f(at);Ve(J,17,()=>i(a).modelVersions,cn,(ut,V)=>{var R=b(),F=f(R);T(F,()=>ya,(k,L)=>{L(k,{style:"max-width: max-content; width: max-content; cursor: pointer;",onclick:()=>h(i(V).id),children:(G,K)=>{var et=b(),gt=f(et);{let pt=N(()=>i(V).id===i(d)?"selectedVersion":"");T(gt,()=>au,(ft,B)=>{B(ft,{get class(){return`py-2 ${i(pt)??""}`},children:(vt,yt)=>{var nt=b(),At=f(nt);T(At,()=>iu,(Lt,Ht)=>{Ht(Lt,{class:"flex items-center justify-center px-6",children:(Kt,re)=>{var Vt=Ef(),bt=M(Vt,!0);O(Vt),It(()=>Rt(bt,i(V).name)),l(Kt,Vt)},$$slots:{default:!0}})}),l(vt,nt)},$$slots:{default:!0}})})}l(G,et)},$$slots:{default:!0}})}),l(ut,R)}),l(lt,at)},$$slots:{default:!0}})}),l(Z,ct)},$$slots:{default:!0}})}),l(j,I)},s=j=>{var I=b(),$=f(I);T($,()=>va,(H,U)=>{U(H,{class:"w-full",setApi:Z=>C(S,Z,!0),children:(Z,W)=>{var ct=Of(),it=f(ct);T(it,()=>ba,(lt,tt)=>{tt(lt,{children:(at,J)=>{var ut=b(),V=f(ut);Ve(V,17,()=>i(g),cn,(R,F)=>{var k=b(),L=f(k);T(L,()=>ya,(G,K)=>{K(G,{class:"sm:basis-1/1 lg:basis-1/2",onclick:()=>window.dispatchEvent(new CustomEvent("ViewMedia",{detail:i(F)})),children:(et,gt)=>{var pt=Df(),ft=M(pt);{let B=N(()=>i(F).ratio.w/i(F).ratio.h);Xu(ft,{get ratio(){return i(B)},class:"rounded-lg overflow-clip",children:(vt,yt)=>{var nt=If(),At=M(nt);li(At,{class:"skeleteonLoader h-full w-full absolute top-0 left-0"}),O(nt),It(()=>{Gt(nt,"data-media",i(F).optimized_asset_url),Gt(nt,"data-cover",i(F).optimized_poster_img_url)}),l(vt,nt)},$$slots:{default:!0}})}O(pt),l(et,pt)},$$slots:{default:!0}})}),l(R,k)}),l(at,ut)},$$slots:{default:!0}})});var ht=D(it,2);T(ht,()=>Ku,(lt,tt)=>{tt(lt,{class:"left-2"})});var Q=D(ht,2);T(Q,()=>Yu,(lt,tt)=>{tt(lt,{class:"right-2"})}),l(Z,ct)},$$slots:{default:!0}})}),l(j,I)};let a=wt(null),c=wt(null),d=wt(0),u=wt(!1),p=wt(!1),g=wt(Xe([])),m=wt(!1);fn(()=>window.addEventListener("loadMovelPreview",x)),Da(()=>window.removeEventListener("loadMovelPreview",x)),fn(()=>{window.dispatchEvent(new CustomEvent("loadMovelPreview",{detail:{modelId:1277670,modelVersion:2578565}}))});async function x(j){const{modelId:I,modelVersion:$}=j.detail;C(u,!1),C(u,!0),C(p,!0);const[H]=await Promise.all([fetch(gn.get_model_by_id(mn.token,I))]);if(H.status!==200){C(u,!1),Bn.error("Error loading model data");return}C(a,await H.json(),!0),h($)}async function h(j){if(!i(a))return;C(g,[],!0),C(p,!0),C(d,j,!0);const I=i(a).modelVersions.find(Z=>Z.id===j);I||(C(u,!1),Bn.error("Error loading model version"));const $={modelVersionId:{selected:{name:"",value:`${j}`},options:[]},prioritizedUserIds:{selected:{name:"",value:`${i(a).userId}`},options:[]},period:{selected:{name:"",value:"AllTime"},options:[]},sort:{selected:{name:"",value:"Most Reactions"},options:[]}},H=[];for(const Z in $){const W=$[Z];W.selected.name;const ct=W.selected.value;H.push({name:Z,value:ct})}let U=await bi.fetch_assets(H);C(c,I,!0),C(p,!1),console.log(i(a),i(c)),U.status===200?C(g,U.assets,!0):Bn.error("Could not load images")}function v(j){const I=new Date(j);if(isNaN(I))throw new TypeError("Invalid date");const $=I.getUTCDate().toString().padStart(2,"0"),H=I.toLocaleString("en-GB",{month:"short",timeZone:"UTC"}).toLowerCase(),U=I.getUTCFullYear();return`${$} ${H} ${U}`}let S=wt(void 0);qe(()=>{i(S)&&i(S).on("slidesInView",j=>{const I=j.slidesInView(),$=Array.from(document.querySelectorAll("[data-slide-modelV]"));$.forEach(U=>{U.querySelector("video")?.remove()}),$.slice(I[0],I[0]+I.length+1).forEach(U=>{const Z=si(U);U.appendChild(Z)})})});async function _(){i(m)||(C(m,!0),await fetch(gn.download_model_by_id(mn.token,i(c).id,i(a).type,i(c).images[0].url,i(c).baseModel,i(c).name,i(a).creator.username,i(c).publishedAt,i(c).baseModel,i(c).files[0].name,JSON.stringify(i(c).stats))),Bn.success("Model is downloading"),C(m,!1))}const P={year:"numeric",month:"long",day:"numeric"};var E=b(),z=f(E);T(z,()=>Cr,(j,I)=>{I(j,{get open(){return i(u)},children:($,H)=>{var U=b(),Z=f(U);T(Z,()=>Ar,(W,ct)=>{ct(W,{id:"dialogueModelVersionContent",class:"w-full h-full border-none overflow-y-auto overflow-x-clip",style:"max-width: 100vw; border-radius: 0;",children:(it,ht)=>{var Q=b(),lt=f(Q);T(lt,()=>Fo,(tt,at)=>{at(tt,{class:"w-full h-full",children:(J,ut)=>{var V=b(),R=f(V);{var F=L=>{rf(L)},k=L=>{e(L)};ot(R,L=>{i(p)?L(F):L(k,!1)})}l(J,V)},$$slots:{default:!0}})}),l(it,Q)},$$slots:{default:!0}})}),l($,U)},$$slots:{default:!0}})}),l(r,E),Y()}const Mf="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eComfyUI%3c/title%3e%3cpath%20d='M5.485%2023.76c-.568%200-1.026-.207-1.325-.598-.307-.402-.387-.964-.22-1.54l.672-2.315a.605.605%200%2000-.1-.536.622.622%200%2000-.494-.243H2.085c-.568%200-1.026-.207-1.325-.598-.307-.403-.387-.964-.22-1.54l2.31-7.917.255-.87c.343-1.18%201.592-2.14%202.786-2.14h2.313c.276%200%20.519-.18.595-.442l.764-2.633C9.906%201.208%2011.155.249%2012.35.249l4.945-.008h3.62c.568%200%201.027.206%201.325.597.307.402.387.964.22%201.54l-1.035%203.566c-.343%201.178-1.593%202.137-2.787%202.137l-4.956.01H11.37a.618.618%200%2000-.594.441l-1.928%206.604a.605.605%200%2000.1.537c.118.153.3.243.495.243l3.275-.006h3.61c.568%200%201.026.206%201.325.598.307.402.387.964.22%201.54l-1.036%203.565c-.342%201.179-1.592%202.138-2.786%202.138l-4.957.01h-3.61z'%20fill='%23F0FF41'%3e%3c/path%3e%3c/svg%3e";var Nf=A(''),$f=A('
      '),Lf=A(" ",1),zf=A('

      Tools

      '),Ff=A('

      Techniques

      '),Rf=A('

      Proccess

      '),Bf=A(" ",1),Hf=A('
      '),Uf=A('

      Resources used

      '),Vf=A('

      '),Wf=A(" ",1),jf=A('

      '),Gf=A(" ",1),Kf=A(" ",1),qf=A('
      '),Yf=A('

      Generation data

      '),Xf=A(" ",1),Zf=A('
      ',2),Jf=A("
      ");function Qf(r,t){q(t,!0);const e=_=>{var P=b(),E=f(P);T(E,()=>Kn,(z,j)=>{j(z,{class:"block",style:"background: var(--background); width: 100%; height: max-content;",children:(I,$)=>{var H=Lf(),U=f(H);T(U,()=>qn,(W,ct)=>{ct(W,{children:(it,ht)=>{var Q=$f(),lt=M(Q);be(lt,{get disabled(){return i(u)},onclick:x,variant:"ghost",size:"icon","aria-label":"Favorite",children:(R,F)=>{var k=b(),L=f(k);{var G=et=>{Pn(et,{})},K=et=>{{let gt=N(()=>i(p)?"#fff":"");di(et,{get fill(){return i(gt)}})}};ot(L,et=>{i(u)?et(G):et(K,!1)})}l(R,k)},$$slots:{default:!0}});var tt=D(lt,2);be(tt,{variant:"ghost",size:"icon","aria-label":"Add/Remove collection",onclick:()=>window.dispatchEvent(new CustomEvent("openCollectionManager",{detail:{item_id:i(s).id,collection_type:"Image"}})),children:(R,F)=>{ui(R,{})},$$slots:{default:!0}});var at=D(tt,2);{var J=R=>{be(R,{onclick:h,variant:"ghost",size:"icon","aria-label":"Open in ComfyUI",children:(F,k)=>{var L=Nf();It(()=>Gt(L,"src",Mf)),l(F,L)},$$slots:{default:!0}})};ot(at,R=>{i(c)&&R(J)})}var ut=D(at,2);be(ut,{variant:"ghost",size:"icon","aria-label":"Download",children:(R,F)=>{In(R,{})},$$slots:{default:!0}});var V=D(ut,2);be(V,{variant:"ghost",size:"icon","aria-label":"Close",class:"ml-auto",onclick:()=>C(d,!1),children:(R,F)=>{Ha(R,{})},$$slots:{default:!0}}),O(Q),l(it,Q)},$$slots:{default:!0}})});var Z=D(U,2);T(Z,()=>Rr,(W,ct)=>{ct(W,{})}),l(I,H)},$$slots:{default:!0}})}),l(_,P)},n=_=>{var P=b(),E=f(P);{var z=j=>{var I=b(),$=f(I);T($,()=>Kn,(H,U)=>{U(H,{class:"block",style:"background: var(--background); width: 100%; height: max-content;",children:(Z,W)=>{var ct=Bf(),it=f(ct);T(it,()=>qn,(Q,lt)=>{lt(Q,{children:(tt,at)=>{var J=Rf(),ut=M(J),V=M(ut);Rd(V,{}),xt(2),O(ut);var R=D(ut,2);{var F=G=>{var K=zf(),et=D(M(K),2);Ve(et,21,()=>i(a).tools,cn,(gt,pt)=>{cr(gt,{variant:"outline",children:(ft,B)=>{xt();var vt=Dt();It(()=>Rt(vt,i(pt).name)),l(ft,vt)},$$slots:{default:!0}})}),O(et),O(K),l(G,K)};ot(R,G=>{i(a).tools.length>0&&G(F)})}var k=D(R,2);{var L=G=>{var K=Ff(),et=D(M(K),2);Ve(et,21,()=>i(a).techniques,cn,(gt,pt)=>{cr(gt,{variant:"outline",children:(ft,B)=>{xt();var vt=Dt();It(()=>Rt(vt,i(pt).name)),l(ft,vt)},$$slots:{default:!0}})}),O(et),O(K),l(G,K)};ot(k,G=>{i(a).techniques.length>0&&G(L)})}O(J),l(tt,J)},$$slots:{default:!0}})});var ht=D(it,2);T(ht,()=>Rr,(Q,lt)=>{lt(Q,{})}),l(Z,ct)},$$slots:{default:!0}})}),l(j,I)};ot(E,j=>{(i(a).tools.length>0||i(a).techniques.length>0)&&j(z)})}l(_,P)},o=_=>{var P=b(),E=f(P);T(E,()=>Kn,(z,j)=>{j(z,{class:"block",style:"background: var(--background); width: 100%; height: max-content;",children:(I,$)=>{var H=Xf(),U=f(H);T(U,()=>qn,(W,ct)=>{ct(W,{children:(it,ht)=>{var Q=Yf(),lt=M(Q),tt=M(lt);kd(tt,{}),xt(2),O(lt);var at=D(lt,2);{var J=R=>{var F=Uf(),k=D(M(F),2);Ve(k,21,()=>i(a).resources,cn,(L,G)=>{var K=Hf(),et=M(K),gt=M(et,!0);O(et);var pt=D(et,2);cr(pt,{variant:"outline",class:"bg-sky-400 text-white dark:bg-sky-600",children:(ft,B)=>{xt();var vt=Dt();It(()=>Rt(vt,i(G).modelType)),l(ft,vt)},$$slots:{default:!0}}),O(K),It(()=>{Gt(K,"href",`#?${i(G).modelId??""}`),Rt(gt,i(G).modelName)}),l(L,K)}),O(k),O(F),l(R,F)};ot(at,R=>{i(a).resources.length>0&&R(J)})}var ut=D(at,2);{var V=R=>{var F=qf(),k=M(F);T(k,()=>jn,(L,G)=>{G(L,{type:"multiple",class:"w-full",children:(K,et)=>{var gt=Kf(),pt=f(gt);{var ft=yt=>{var nt=b(),At=f(nt);T(At,()=>wn,(Lt,Ht)=>{Ht(Lt,{children:(Kt,re)=>{var Vt=Wf(),bt=f(Vt);T(bt,()=>xn,(kt,Ct)=>{Ct(kt,{children:(Nt,$t)=>{xt();var Ut=Dt("Prompt");l(Nt,Ut)},$$slots:{default:!0}})});var Ot=D(bt,2);T(Ot,()=>yn,(kt,Ct)=>{Ct(kt,{class:"flex flex-col gap-4 text-balance",children:(Nt,$t)=>{var Ut=Vf(),ge=M(Ut,!0);O(Ut),It(()=>Rt(ge,i(a).meta.prompt)),l(Nt,Ut)},$$slots:{default:!0}})}),l(Kt,Vt)},$$slots:{default:!0}})}),l(yt,nt)};ot(pt,yt=>{i(a).meta.prompt&&yt(ft)})}var B=D(pt,2);{var vt=yt=>{var nt=b(),At=f(nt);T(At,()=>wn,(Lt,Ht)=>{Ht(Lt,{children:(Kt,re)=>{var Vt=Gf(),bt=f(Vt);T(bt,()=>xn,(kt,Ct)=>{Ct(kt,{children:(Nt,$t)=>{xt();var Ut=Dt("Negative prompt");l(Nt,Ut)},$$slots:{default:!0}})});var Ot=D(bt,2);T(Ot,()=>yn,(kt,Ct)=>{Ct(kt,{class:"flex flex-col gap-4 text-balance",children:(Nt,$t)=>{var Ut=jf(),ge=M(Ut,!0);O(Ut),It(()=>Rt(ge,i(a).meta.negativePrompt)),l(Nt,Ut)},$$slots:{default:!0}})}),l(Kt,Vt)},$$slots:{default:!0}})}),l(yt,nt)};ot(B,yt=>{i(a).meta.negativePrompt&&yt(vt)})}l(K,gt)},$$slots:{default:!0}})}),O(F),l(R,F)};ot(ut,R=>{(i(a).meta?.prompt||i(a).meta?.negativePrompt)&&R(V)})}O(Q),l(it,Q)},$$slots:{default:!0}})});var Z=D(U,2);T(Z,()=>Rr,(W,ct)=>{ct(W,{})}),l(I,H)},$$slots:{default:!0}})}),l(_,P)};let s=wt(null),a=wt(null),c=wt(!1),d=wt(!1),u=wt(!0),p=wt(!1);fn(()=>window.addEventListener("ViewMedia",g)),Da(()=>window.removeEventListener("ViewMedia",g));async function g(_){C(s,_.detail,!0),C(d,!1),C(p,!1),C(d,!0),C(c,!1),C(a,null);const P=i(s).id;m();let E=await fetch(gn.get_gen_data(mn.token,P));if(E.status!==200)return;const z=await E.json();C(a,z,!0),i(a).meta?.comfy!==void 0&&C(c,!0)}async function m(){C(u,!0);const _=i(s).id;let P=await ci(_,"Image");C(u,!1),C(p,P.isFavorite,!0)}async function x(){C(u,!0);const _=i(s).id,P=await fi(_,i(p),"Image");C(u,!1),C(p,P.isFavorite,!0)}function h(){const _=i(a).meta.comfy;if(_===void 0)return;const P=JSON.parse(JSON.stringify(_));window.parent.postMessage(P,"*")}var v=b(),S=f(v);T(S,()=>Cr,(_,P)=>{P(_,{get open(){return i(d)},children:(E,z)=>{var j=Jf(),I=M(j);T(I,()=>Ar,($,H)=>{H($,{class:"backdrop-blur-sm grid justify-center z-99",style:"max-width: 100vw; height: 100vh; border-radius: 0; border: none; background: transparent; ",children:(U,Z)=>{var W=Zf(),ct=M(W),it=M(ct),ht=M(it);ht.muted=!0;var Q=M(ht),lt=D(Q,2);O(ht),O(it);var tt=D(it,2),at=M(tt);e(at);var J=D(at,2);{var ut=F=>{n(F)};ot(J,F=>{i(a)&&F(ut)})}var V=D(J,2);{var R=F=>{o(F)};ot(V,F=>{i(a)&&F(R)})}O(tt),O(ct),O(W),It(()=>{Wn(ht,`aspect-ratio: ${(i(s).ratio?.w||1)??""} / ${(i(s).ratio?.h||2)??""};`),Gt(ht,"poster",i(s).img_url),Gt(Q,"src",`${i(s).img_url??""}.webm`),Gt(lt,"src",`${i(s).img_url??""}.mp4`)}),l(U,W)},$$slots:{default:!0}})}),O(j),l(E,j)},$$slots:{default:!0}})}),l(r,v),Y()}const th=er({base:"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",variants:{orientation:{horizontal:"[&>*:not(:first-child)]:rounded-s-none [&>*:not(:first-child)]:border-s-0 [&>*:not(:last-child)]:rounded-e-none",vertical:"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"}},defaultVariants:{orientation:"horizontal"}});var eh=A("
      ");function nh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"orientation",3,"horizontal"),o=st(t,["$$slots","$$events","$$legacy","ref","class","children","orientation"]);var s=eh();Mt(s,c=>({role:"group","data-slot":"button-group","data-orientation":n(),class:c,...o}),[()=>Bt(th({orientation:n()}),t.class)]);var a=M(s);X(a,()=>t.children??mt),O(s),ne(s,c=>e(c),()=>e()),l(r,s),Y()}var rh=A('

      Loading user data

      '),oh=A(" ",1),ah=A('

      The provided token is not valid!

      '),sh=A(' Toggle theme',1),ih=A(`

      You're Logged out

      To login, follow the instruction bellow:

      1. Go to: https://civitai.com
      2. Login into your account
      3. Open the devtools (Ctrl + Shift + I)
      4. Navigate to cookies section
      5. Copy value of the cookie "__Secure-civitai-token" and paste it bellow
      `,1),lh=A('
      ');function ch(r,t){q(t,!1);async function e(c){const d=document.querySelector("input[name='loginCookie']").value;$a(d)}Ua();var n=lh(),o=M(n);{var s=c=>{var d=rh(),u=M(d);Pn(u,{class:"size-8"}),xt(2),O(d),l(c,d)},a=c=>{var d=ih(),u=f(d),p=D(M(u),6);nh(p,{class:"w-full",children:(h,v)=>{var S=oh(),_=f(S);io(_,{required:!0,placeholder:"Paste Cookie here",name:"loginCookie"});var P=D(_,2);be(P,{variant:"outline",type:"submit",size:"icon","aria-label":"Search",children:(E,z)=>{Ld(E,{})},$$slots:{default:!0}}),l(h,S)},$$slots:{default:!0}});var g=D(p,2);{var m=h=>{var v=ah();l(h,v)};ot(g,h=>{mr.error&&h(m)})}O(u);var x=D(u,2);be(x,{get onclick(){return as},variant:"outline",size:"icon",class:"absolute bottom-2 left-2",children:(h,v)=>{var S=sh(),_=f(S);_s(_,{class:"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all! dark:scale-0 dark:-rotate-90"});var P=D(_,2);ps(P,{class:"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all! dark:scale-100 dark:rotate-0"}),xt(2),l(h,S)},$$slots:{default:!0}}),Sr("submit",u,e),l(c,d)};ot(o,c=>{mr.loading?c(s):c(a,!1)})}O(n),l(r,n),Y()}function dh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"open",15,!1),o=st(t,["$$slots","$$events","$$legacy","ref","open"]);var s=b(),a=f(s);T(a,()=>Ic,(c,d)=>{d(c,Pt({"data-slot":"collapsible"},()=>o,{get ref(){return e()},set ref(u){e(u)},get open(){return n()},set open(u){n(u)}}))}),l(r,s),Y()}function uh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref"]);var o=b(),s=f(o);T(s,()=>Mc,(a,c)=>{c(a,Pt({"data-slot":"collapsible-trigger"},()=>n,{get ref(){return e()},set ref(d){e(d)}}))}),l(r,o),Y()}function fh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref"]);var o=b(),s=f(o);T(s,()=>Oc,(a,c)=>{c(a,Pt({"data-slot":"collapsible-content"},()=>n,{get ref(){return e()},set ref(d){e(d)}}))}),l(r,o),Y()}const hh=768;class vh extends Za{constructor(t=hh){super(`max-width: ${t-1}px`)}}const gh="sidebar:state",mh=3600*24*7,ph="16rem",_h="18rem",bh="3rem",yh="b";class wh{props;#t=N(()=>this.props.open());get open(){return i(this.#t)}set open(t){C(this.#t,t)}#e=wt(!1);get openMobile(){return i(this.#e)}set openMobile(t){C(this.#e,t,!0)}setOpen;#n;#r=N(()=>this.open?"expanded":"collapsed");get state(){return i(this.#r)}set state(t){C(this.#r,t)}constructor(t){this.setOpen=t.setOpen,this.#n=new vh,this.props=t}get isMobile(){return this.#n.current}handleShortcutKeydown=t=>{t.key===yh&&(t.metaKey||t.ctrlKey)&&(t.preventDefault(),this.toggle())};setOpenMobile=t=>{this.openMobile=t};toggle=()=>this.#n.current?this.openMobile=!this.openMobile:this.setOpen(!this.open)}const xs="scn-sidebar";function xh(r){return eo(Symbol.for(xs),new wh(r))}function or(){return fr(Symbol.for(xs))}var Ph=A("
      ");function Th(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=Ph();Mt(o,a=>({"data-slot":"sidebar-content","data-sidebar":"content",class:a,...n}),[()=>Bt("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var Sh=A("
      ");function Ah(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=Sh();Mt(o,a=>({"data-slot":"sidebar-footer","data-sidebar":"footer",class:a,...n}),[()=>Bt("flex flex-col gap-2 p-2",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var Ch=A("
      ");function Eh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","children","child","class"]);const o=N(()=>({class:Bt("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",t.class),"data-slot":"sidebar-group-label","data-sidebar":"group-label",...n}));var s=b(),a=f(s);{var c=u=>{var p=b(),g=f(p);X(g,()=>t.child,()=>({props:i(o)})),l(u,p)},d=u=>{var p=Ch();Mt(p,()=>({...i(o)}));var g=M(p);X(g,()=>t.children??mt),O(p),ne(p,m=>e(m),()=>e()),l(u,p)};ot(a,u=>{t.child?u(c):u(d,!1)})}l(r,s),Y()}var Ih=A("
      ");function Dh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=Ih();Mt(o,a=>({"data-slot":"sidebar-group","data-sidebar":"group",class:a,...n}),[()=>Bt("relative flex w-full min-w-0 flex-col p-2",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var Oh=A("
      ");function kh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=Oh();Mt(o,a=>({"data-slot":"sidebar-inset",class:a,...n}),[()=>Bt("bg-background relative flex w-full flex-1 flex-col","md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var Mh=A("");function Nh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"showOnHover",3,!1),o=st(t,["$$slots","$$events","$$legacy","ref","class","showOnHover","children","child"]);const s=N(()=>({class:Bt("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute end-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 md:after:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",n()&&"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0",t.class),"data-slot":"sidebar-menu-action","data-sidebar":"menu-action",...o}));var a=b(),c=f(a);{var d=p=>{var g=b(),m=f(g);X(m,()=>t.child,()=>({props:i(s)})),l(p,g)},u=p=>{var g=Mh();Mt(g,()=>({...i(s)}));var m=M(g);X(m,()=>t.children??mt),O(g),ne(g,x=>e(x),()=>e()),l(p,g)};ot(c,p=>{t.child?p(d):p(u,!1)})}l(r,a),Y()}function $h(r,t){q(t,!0);let e=y(t,"open",15,!1),n=st(t,["$$slots","$$events","$$legacy","open"]);var o=b(),s=f(o);T(s,()=>qc,(a,c)=>{c(a,Pt(()=>n,{get open(){return e()},set open(d){e(d)}}))}),l(r,o),Y()}function Lh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref"]);var o=b(),s=f(o);T(s,()=>Qc,(a,c)=>{c(a,Pt({"data-slot":"tooltip-trigger"},()=>n,{get ref(){return e()},set ref(d){e(d)}}))}),l(r,o),Y()}function zh(r,t){let e=st(t,["$$slots","$$events","$$legacy"]);var n=b(),o=f(n);T(o,()=>so,(s,a)=>{a(s,Pt(()=>e))}),l(r,n)}var Fh=A("
      "),Rh=A(" ",1);function Bh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"sideOffset",3,0),o=y(t,"side",3,"top"),s=st(t,["$$slots","$$events","$$legacy","ref","class","sideOffset","side","children","arrowClasses","portalProps"]);zh(r,Pt(()=>t.portalProps,{children:(a,c)=>{var d=b(),u=f(d);{let p=N(()=>Bt("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-end-2 data-[side=right]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--bits-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",t.class));T(u,()=>Zc,(g,m)=>{m(g,Pt({"data-slot":"tooltip-content",get sideOffset(){return n()},get side(){return o()},get class(){return i(p)}},()=>s,{get ref(){return e()},set ref(x){e(x)},children:(x,h)=>{var v=Rh(),S=f(v);X(S,()=>t.children??mt);var _=D(S,2);{const P=(E,z)=>{let j=()=>z?.().props;var I=Fh();Mt(I,$=>({class:$,...j()}),[()=>Bt("bg-foreground z-50 size-2.5 rotate-45 rounded-[2px]","data-[side=top]:translate-x-1/2 data-[side=top]:translate-y-[calc(-50%_+_2px)]","data-[side=bottom]:-translate-x-1/2 data-[side=bottom]:-translate-y-[calc(-50%_+_1px)]","data-[side=right]:translate-x-[calc(50%_+_2px)] data-[side=right]:translate-y-1/2","data-[side=left]:-translate-y-[calc(50%_-_3px)]",t.arrowClasses)]),l(E,I)};T(_,()=>td,(E,z)=>{z(E,{child:P,$$slots:{child:!0}})})}l(x,v)},$$slots:{default:!0}}))})}l(a,d)},$$slots:{default:!0}})),Y()}function Hh(r,t){let e=st(t,["$$slots","$$events","$$legacy"]);var n=b(),o=f(n);T(o,()=>ed,(s,a)=>{a(s,Pt(()=>e))}),l(r,n)}const Uh=er({base:"peer/menu-button ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-start text-sm outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pe-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background hover:bg-sidebar-accent hover:text-sidebar-accent-foreground shadow-[0_0_0_1px_var(--sidebar-border)] hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});var Vh=A(""),Wh=A(" ",1);function Ps(r,t){q(t,!0);const e=(h,v)=>{let S=()=>v?.().props;const _=N(()=>ve(i(u),S()));var P=b(),E=f(P);{var z=I=>{var $=b(),H=f($);X(H,()=>t.child,()=>({props:i(_)})),l(I,$)},j=I=>{var $=Vh();Mt($,()=>({...i(_)}));var H=M($);X(H,()=>t.children??mt),O($),ne($,U=>n(U),()=>n()),l(I,$)};ot(E,I=>{t.child?I(z):I(j,!1)})}l(h,P)};let n=y(t,"ref",15,null),o=y(t,"variant",3,"default"),s=y(t,"size",3,"default"),a=y(t,"isActive",3,!1),c=st(t,["$$slots","$$events","$$legacy","ref","class","children","child","variant","size","isActive","tooltipContent","tooltipContentProps"]);const d=or(),u=N(()=>({class:Bt(Uh({variant:o(),size:s()}),t.class),"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":s(),"data-active":a(),...c}));var p=b(),g=f(p);{var m=h=>{e(h,()=>({}))},x=h=>{var v=b(),S=f(v);T(S,()=>$h,(_,P)=>{P(_,{children:(E,z)=>{var j=Wh(),I=f(j);{const H=(U,Z)=>{let W=()=>Z?.().props;e(U,()=>({props:W()}))};T(I,()=>Lh,(U,Z)=>{Z(U,{child:H,$$slots:{child:!0}})})}var $=D(I,2);{let H=N(()=>d.state!=="collapsed"||d.isMobile);T($,()=>Bh,(U,Z)=>{Z(U,Pt({side:"right",align:"center",get hidden(){return i(H)}},()=>t.tooltipContentProps,{children:(W,ct)=>{var it=b(),ht=f(it);{var Q=tt=>{var at=Dt();It(()=>Rt(at,t.tooltipContent)),l(tt,at)},lt=tt=>{var at=b(),J=f(at);{var ut=V=>{var R=b(),F=f(R);X(F,()=>t.tooltipContent),l(V,R)};ot(J,V=>{t.tooltipContent&&V(ut)},!0)}l(tt,at)};ot(ht,tt=>{typeof t.tooltipContent=="string"?tt(Q):tt(lt,!1)})}l(W,it)},$$slots:{default:!0}}))})}l(E,j)},$$slots:{default:!0}})}),l(h,v)};ot(g,h=>{t.tooltipContent?h(x,!1):h(m)})}l(r,p),Y()}var jh=A("
    1. ");function Ts(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=jh();Mt(o,a=>({"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",class:a,...n}),[()=>Bt("group/menu-item relative",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var Gh=A("");function Kh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"size",3,"md"),o=y(t,"isActive",3,!1),s=st(t,["$$slots","$$events","$$legacy","ref","children","child","class","size","isActive"]);const a=N(()=>({class:Bt("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",n()==="sm"&&"text-xs",n()==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",t.class),"data-slot":"sidebar-menu-sub-button","data-sidebar":"menu-sub-button","data-size":n(),"data-active":o(),...s}));var c=b(),d=f(c);{var u=g=>{var m=b(),x=f(m);X(x,()=>t.child,()=>({props:i(a)})),l(g,m)},p=g=>{var m=Gh();Mt(m,()=>({...i(a)}));var x=M(m);X(x,()=>t.children??mt),O(m),ne(m,h=>e(h),()=>e()),l(g,m)};ot(d,g=>{t.child?g(u):g(p,!1)})}l(r,c),Y()}var qh=A("
    2. ");function Yh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","children","class"]);var o=qh();Mt(o,a=>({"data-slot":"sidebar-menu-sub-item","data-sidebar":"menu-sub-item",class:a,...n}),[()=>Bt("group/menu-sub-item relative",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var Xh=A("
      ");function Zh(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=Xh();Mt(o,a=>({"data-slot":"sidebar-menu-sub","data-sidebar":"menu-sub",class:a,...n}),[()=>Bt("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-s px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var Jh=A("
      ");function Ss(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=Jh();Mt(o,a=>({"data-slot":"sidebar-menu","data-sidebar":"menu",class:a,...n}),[()=>Bt("flex w-full min-w-0 flex-col gap-1",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}var Qh=A("
      ");function tv(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"open",15,!0),o=y(t,"onOpenChange",3,()=>{}),s=st(t,["$$slots","$$events","$$legacy","ref","open","onOpenChange","class","style","children"]);const a=xh({open:()=>n(),setOpen:u=>{n(u),o()(u),document.cookie=`${gh}=${n()}; path=/; max-age=${mh}`}});var c=b();Sr("keydown",$s,function(...u){a.handleShortcutKeydown?.apply(this,u)});var d=f(c);T(d,()=>Hh,(u,p)=>{p(u,{delayDuration:0,children:(g,m)=>{var x=Qh();Mt(x,v=>({"data-slot":"sidebar-wrapper",style:`--sidebar-width: ${ph}; --sidebar-width-icon: ${bh}; ${t.style??""}`,class:v,...s}),[()=>Bt("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",t.class)]);var h=M(x);X(h,()=>t.children??mt),O(x),ne(x,v=>e(v),()=>e()),l(g,x)},$$slots:{default:!0}})}),l(r,c),Y()}var ev=A("");function nv(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);const o=or();var s=ev();Mt(s,c=>({"data-sidebar":"rail","data-slot":"sidebar-rail","aria-label":"Toggle Sidebar",tabIndex:-1,onclick:o.toggle,title:"Toggle Sidebar",class:c,...n}),[()=>Bt("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-end-4 group-data-[side=right]:start-0 after:absolute after:inset-y-0 after:start-[calc(1/2*100%-1px)] after:w-[2px] sm:flex","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:start-full","[[data-side=left][data-collapsible=offcanvas]_&]:-end-2","[[data-side=right][data-collapsible=offcanvas]_&]:-start-2",t.class)]);var a=M(s);X(a,()=>t.children??mt),O(s),ne(s,c=>e(c),()=>e()),l(r,s),Y()}var rv=A(' Toggle Sidebar',1);function ov(r,t){q(t,!0),y(t,"ref",11,null);let e=st(t,["$$slots","$$events","$$legacy","ref","class","onclick"]);const n=or();{let o=N(()=>Bt("size-7",t.class));be(r,Pt({"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon",get class(){return i(o)},type:"button",onclick:s=>{t.onclick?.(s),n.toggle()}},()=>e,{children:(s,a)=>{var c=rv(),d=f(c);$d(d,{}),xt(2),l(s,c)},$$slots:{default:!0}}))}Y()}function av(r,t){q(t,!0);let e=y(t,"open",15,!1),n=st(t,["$$slots","$$events","$$legacy","open"]);var o=b(),s=f(o);T(s,()=>Zs,(a,c)=>{c(a,Pt(()=>n,{get open(){return e()},set open(d){e(d)}}))}),l(r,o),Y()}function sv(r,t){let e=st(t,["$$slots","$$events","$$legacy"]);var n=b(),o=f(n);T(o,()=>so,(s,a)=>{a(s,Pt(()=>e))}),l(r,n)}function iv(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class"]);var o=b(),s=f(o);{let a=N(()=>Bt("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t.class));T(s,()=>Js,(c,d)=>{d(c,Pt({"data-slot":"sheet-overlay",get class(){return i(a)}},()=>n,{get ref(){return e()},set ref(u){e(u)}}))})}l(r,o),Y()}const lv=er({base:"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",variants:{side:{top:"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",bottom:"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",left:"data-[state=closed]:slide-out-to-start data-[state=open]:slide-in-from-start inset-y-0 start-0 h-full w-3/4 border-e sm:max-w-sm",right:"data-[state=closed]:slide-out-to-end data-[state=open]:slide-in-from-end inset-y-0 end-0 h-full w-3/4 border-s sm:max-w-sm"}},defaultVariants:{side:"right"}});var cv=A(' Close',1),dv=A(" ",1),uv=A(" ",1);function fv(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"side",3,"right"),o=st(t,["$$slots","$$events","$$legacy","ref","class","side","portalProps","children"]);sv(r,Pt(()=>t.portalProps,{children:(s,a)=>{var c=uv(),d=f(c);iv(d,{});var u=D(d,2);{let p=N(()=>Bt(lv({side:n()}),t.class));T(u,()=>Qs,(g,m)=>{m(g,Pt({"data-slot":"sheet-content",get class(){return i(p)}},()=>o,{get ref(){return e()},set ref(x){e(x)},children:(x,h)=>{var v=dv(),S=f(v);X(S,()=>t.children??mt);var _=D(S,2);T(_,()=>ti,(P,E)=>{E(P,{class:"ring-offset-background focus-visible:ring-ring absolute end-4 top-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none",children:(z,j)=>{var I=cv(),$=f(I);Ha($,{class:"size-4"}),xt(2),l(z,I)},$$slots:{default:!0}})}),l(x,v)},$$slots:{default:!0}}))})}l(s,c)},$$slots:{default:!0}})),Y()}var hv=A("
      ");function vv(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class","children"]);var o=hv();Mt(o,a=>({"data-slot":"sheet-header",class:a,...n}),[()=>Bt("flex flex-col gap-1.5 p-4",t.class)]);var s=M(o);X(s,()=>t.children??mt),O(o),ne(o,a=>e(a),()=>e()),l(r,o),Y()}function gv(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class"]);var o=b(),s=f(o);{let a=N(()=>Bt("text-foreground font-semibold",t.class));T(s,()=>ei,(c,d)=>{d(c,Pt({"data-slot":"sheet-title",get class(){return i(a)}},()=>n,{get ref(){return e()},set ref(u){e(u)}}))})}l(r,o),Y()}function mv(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class"]);var o=b(),s=f(o);{let a=N(()=>Bt("text-muted-foreground text-sm",t.class));T(s,()=>ls,(c,d)=>{d(c,Pt({"data-slot":"sheet-description",get class(){return i(a)}},()=>n,{get ref(){return e()},set ref(u){e(u)}}))})}l(r,o),Y()}var pv=A("
      "),_v=A(" ",1),bv=A('
      ',1),yv=A('');function wv(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"side",3,"left"),o=y(t,"variant",3,"sidebar"),s=y(t,"collapsible",3,"offcanvas"),a=st(t,["$$slots","$$events","$$legacy","ref","side","variant","collapsible","class","children"]);const c=or();var d=b(),u=f(d);{var p=m=>{var x=pv();Mt(x,v=>({class:v,...a}),[()=>Bt("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",t.class)]);var h=M(x);X(h,()=>t.children??mt),O(x),ne(x,v=>e(v),()=>e()),l(m,x)},g=m=>{var x=b(),h=f(x);{var v=_=>{var P=b(),E=f(P),z=()=>c.openMobile,j=I=>c.setOpenMobile(I);T(E,()=>av,(I,$)=>{$(I,Pt({get open(){return z()},set open(H){j(H)}},()=>a,{children:(H,U)=>{var Z=b(),W=f(Z);T(W,()=>fv,(ct,it)=>{it(ct,{"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",class:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",get style(){return`--sidebar-width: ${_h};`},get side(){return n()},children:(ht,Q)=>{var lt=bv(),tt=f(lt);T(tt,()=>vv,(ut,V)=>{V(ut,{class:"sr-only",children:(R,F)=>{var k=_v(),L=f(k);T(L,()=>gv,(K,et)=>{et(K,{children:(gt,pt)=>{xt();var ft=Dt("Sidebar");l(gt,ft)},$$slots:{default:!0}})});var G=D(L,2);T(G,()=>mv,(K,et)=>{et(K,{children:(gt,pt)=>{xt();var ft=Dt("Displays the mobile sidebar.");l(gt,ft)},$$slots:{default:!0}})}),l(R,k)},$$slots:{default:!0}})});var at=D(tt,2),J=M(at);X(J,()=>t.children??mt),O(at),l(ht,lt)},$$slots:{default:!0}})}),l(H,Z)},$$slots:{default:!0}}))}),l(_,P)},S=_=>{var P=yv(),E=M(P),z=D(E,2);Mt(z,$=>({"data-slot":"sidebar-container",class:$,...a}),[()=>Bt("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",n()==="left"?"start-0 group-data-[collapsible=offcanvas]:start-[calc(var(--sidebar-width)*-1)]":"end-0 group-data-[collapsible=offcanvas]:end-[calc(var(--sidebar-width)*-1)]",o()==="floating"||o()==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-e group-data-[side=right]:border-s",t.class)]);var j=M(z),I=M(j);X(I,()=>t.children??mt),O(j),O(z),O(P),ne(P,$=>e($),()=>e()),It($=>{Gt(P,"data-state",c.state),Gt(P,"data-collapsible",c.state==="collapsed"?s():""),Gt(P,"data-variant",o()),Gt(P,"data-side",n()),Ze(E,1,$)},[()=>rn(Bt("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180",o()==="floating"||o()==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)"))]),l(_,P)};ot(h,_=>{c.isMobile?_(v):_(S,!1)},!0)}l(m,x)};ot(u,m=>{s()==="none"?m(p):m(g,!1)})}l(r,d),Y()}var xv=A(" "),Pv=A(' Toggle',1),Tv=A(" "),Sv=A(" ",1),Av=A(" ",1),Cv=A(" ",1);function xa(r,t){q(t,!0);let e=y(t,"label",3,"");var n=b(),o=f(n);T(o,()=>Dh,(s,a)=>{a(s,{children:(c,d)=>{var u=Cv(),p=f(u);{var g=x=>{var h=b(),v=f(h);T(v,()=>Eh,(S,_)=>{_(S,{children:(P,E)=>{xt();var z=Dt();It(()=>Rt(z,e())),l(P,z)},$$slots:{default:!0}})}),l(x,h)};ot(p,x=>{e().trim().length>0&&x(g)})}var m=D(p,2);T(m,()=>Ss,(x,h)=>{h(x,{children:(v,S)=>{var _=b(),P=f(_);Ve(P,17,()=>t.items,E=>E.title,(E,z)=>{var j=b(),I=f(j);{const $=(H,U)=>{let Z=()=>U?.().props;var W=b(),ct=f(W);T(ct,()=>Ts,(it,ht)=>{ht(it,Pt(Z,{children:(Q,lt)=>{var tt=Av(),at=f(tt);{const V=(R,F)=>{let k=()=>F?.().props;var L=xv();Mt(L,()=>({href:i(z).url,...k()}));var G=M(L);T(G,()=>i(z).icon,(gt,pt)=>{pt(gt,{})});var K=D(G,2),et=M(K,!0);O(K),O(L),It(()=>Rt(et,i(z).title)),l(R,L)};T(at,()=>Ps,(R,F)=>{F(R,{get tooltipContent(){return i(z).title},child:V,$$slots:{child:!0}})})}var J=D(at,2);{var ut=V=>{var R=Sv(),F=f(R);{const L=(G,K)=>{let et=()=>K?.().props;var gt=b(),pt=f(gt);T(pt,()=>Nh,(ft,B)=>{B(ft,Pt(et,{class:"data-[state=open]:rotate-90",children:(vt,yt)=>{var nt=Pv(),At=f(nt);Dd(At,{}),xt(2),l(vt,nt)},$$slots:{default:!0}}))}),l(G,gt)};T(F,()=>uh,(G,K)=>{K(G,{child:L,$$slots:{child:!0}})})}var k=D(F,2);T(k,()=>fh,(L,G)=>{G(L,{children:(K,et)=>{var gt=b(),pt=f(gt);T(pt,()=>Zh,(ft,B)=>{B(ft,{children:(vt,yt)=>{var nt=b(),At=f(nt);Ve(At,17,()=>i(z).items,Lt=>Lt.title,(Lt,Ht)=>{var Kt=b(),re=f(Kt);T(re,()=>Yh,(Vt,bt)=>{bt(Vt,{children:(Ot,kt)=>{var Ct=b(),Nt=f(Ct);T(Nt,()=>Kh,($t,Ut)=>{Ut($t,{get href(){return i(Ht).url},children:(ge,we)=>{var Se=Tv(),ce=M(Se,!0);O(Se),It(()=>Rt(ce,i(Ht).title)),l(ge,Se)},$$slots:{default:!0}})}),l(Ot,Ct)},$$slots:{default:!0}})}),l(Lt,Kt)}),l(vt,nt)},$$slots:{default:!0}})}),l(K,gt)},$$slots:{default:!0}})}),l(V,R)};ot(J,V=>{i(z).items?.length&&V(ut)})}l(Q,tt)},$$slots:{default:!0}}))}),l(H,W)};T(I,()=>dh,(H,U)=>{U(H,{get open(){return i(z).isActive},child:$,$$slots:{child:!0}})})}l(E,j)}),l(v,_)},$$slots:{default:!0}})}),l(c,u)},$$slots:{default:!0}})}),l(r,n),Y()}function Pa(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"loadingStatus",15,"loading"),o=st(t,["$$slots","$$events","$$legacy","ref","loadingStatus","class"]);var s=b(),a=f(s);{let c=N(()=>Bt("relative flex size-8 shrink-0 overflow-hidden rounded-full",t.class));T(a,()=>Pc,(d,u)=>{u(d,Pt({"data-slot":"avatar",get class(){return i(c)}},()=>o,{get ref(){return e()},set ref(p){e(p)},get loadingStatus(){return n()},set loadingStatus(p){n(p)}}))})}l(r,s),Y()}function Ta(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class"]);var o=b(),s=f(o);{let a=N(()=>Bt("aspect-square size-full",t.class));T(s,()=>Sc,(c,d)=>{d(c,Pt({"data-slot":"avatar-image",get class(){return i(a)}},()=>n,{get ref(){return e()},set ref(u){e(u)}}))})}l(r,o),Y()}function Sa(r,t){q(t,!0);let e=y(t,"ref",15,null),n=st(t,["$$slots","$$events","$$legacy","ref","class"]);var o=b(),s=f(o);{let a=N(()=>Bt("bg-muted flex size-full items-center justify-center rounded-full",t.class));T(s,()=>Cc,(c,d)=>{d(c,Pt({"data-slot":"avatar-fallback",get class(){return i(a)}},()=>n,{get ref(){return e()},set ref(u){e(u)}}))})}l(r,o),Y()}var Ev=A(" ",1),Iv=A('
      ',1),Dv=A(" ",1),Ov=A('
      '),kv=A(" Toggle theme",1),Mv=A(" Log out",1),Nv=A(" ",1),$v=A(" ",1);function Lv(r,t){q(t,!1);const e=or();Ua(),Ss(r,{children:(n,o)=>{Ts(n,{children:(s,a)=>{hi(s,{children:(c,d)=>{var u=$v(),p=f(u);vi(p,{child:(x,h)=>{Ps(x,Pt(()=>h?.().props,{size:"lg",class:"data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground",children:(S,_)=>{var P=Iv(),E=f(P);Pa(E,{class:"size-8 rounded-lg",children:(Z,W)=>{var ct=Ev(),it=f(ct);Ta(it,{get src(){return ln.image},get alt(){return ln.user_name}});var ht=D(it,2);Sa(ht,{class:"rounded-lg",children:(Q,lt)=>{xt();var tt=Dt("CN");l(Q,tt)},$$slots:{default:!0}}),l(Z,ct)},$$slots:{default:!0}});var z=D(E,2),j=M(z),I=M(j,!0);O(j);var $=D(j,2),H=M($,!0);O($),O(z);var U=D(z,2);Od(U,{class:"ms-auto size-4"}),It(()=>{Rt(I,ln.user_name),Rt(H,ln.user_email)}),l(S,P)},$$slots:{default:!0}}))},$$slots:{child:!0}});var g=D(p,2);{let m=Ls(()=>e.isMobile?"bottom":"right");gi(g,{class:"w-(--bits-dropdown-menu-anchor-width) min-w-56 rounded-lg",get side(){return i(m)},align:"end",sideOffset:4,children:(x,h)=>{var v=Nv(),S=f(v);mi(S,{class:"p-0 font-normal",children:($,H)=>{var U=Ov(),Z=M(U);Pa(Z,{class:"size-8 rounded-lg",children:(lt,tt)=>{var at=Dv(),J=f(at);Ta(J,{get src(){return ln.image},get alt(){return ln.user_name}});var ut=D(J,2);Sa(ut,{class:"rounded-lg",children:(V,R)=>{xt();var F=Dt("CN");l(V,F)},$$slots:{default:!0}}),l(lt,at)},$$slots:{default:!0}});var W=D(Z,2),ct=M(W),it=M(ct,!0);O(ct);var ht=D(ct,2),Q=M(ht,!0);O(ht),O(W),O(U),It(()=>{Rt(it,ln.user_name),Rt(Q,ln.user_email)}),l($,U)},$$slots:{default:!0}});var _=D(S,2);Yo(_,{});var P=D(_,2);P.__click=function(...$){as?.apply(this,$)};var E=M(P);Xo(E,{children:($,H)=>{var U=kv(),Z=f(U);_s(Z,{class:"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all! dark:scale-0 dark:-rotate-90"});var W=D(Z,2);ps(W,{class:"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all! dark:scale-100 dark:rotate-0"}),xt(2),l($,U)},$$slots:{default:!0}}),O(P);var z=D(P,2);Yo(z,{});var j=D(z,2);j.__click=function(...$){Gs?.apply(this,$)};var I=M(j);Xo(I,{children:($,H)=>{var U=Mv(),Z=f(U);Nd(Z,{}),xt(),l($,U)},$$slots:{default:!0}}),O(j),l(x,v)},$$slots:{default:!0}})}l(c,u)},$$slots:{default:!0}})},$$slots:{default:!0}})},$$slots:{default:!0}}),Y()}Ca(["click"]);const Aa={downloads:[{title:"downloads",url:"/civit/downloads",icon:In}],explore:[{title:"Popular",url:"/civit/",icon:zd},{title:"Images",url:"/civit/images",icon:Md},{title:"Videos",url:"/civit/video",icon:Fd},{title:"Models",url:"/civit/models",icon:pi}]};var zv=A(" ",1),Fv=A(" ",1);function Rv(r,t){q(t,!0),y(t,"ref",11,null);let e=y(t,"collapsible",3,"icon"),n=st(t,["$$slots","$$events","$$legacy","ref","collapsible"]);var o=b(),s=f(o);T(s,()=>wv,(a,c)=>{c(a,Pt({get collapsible(){return e()}},()=>n,{children:(d,u)=>{var p=Fv(),g=f(p);T(g,()=>Th,(h,v)=>{v(h,{children:(S,_)=>{var P=zv(),E=f(P);xa(E,{get items(){return Aa.explore},label:"Explore"});var z=D(E,2);xa(z,{get items(){return Aa.downloads},label:""}),l(S,P)},$$slots:{default:!0}})});var m=D(g,2);T(m,()=>Ah,(h,v)=>{v(h,{children:(S,_)=>{Lv(S,{})},$$slots:{default:!0}})});var x=D(m,2);T(x,()=>nv,(h,v)=>{v(h,{})}),l(d,p)},$$slots:{default:!0}}))}),l(r,o),Y()}var Bv=A("");function Hv(r,t){q(t,!0);let e=y(t,"ref",15,null),n=y(t,"value",15),o=y(t,"data-slot",3,"textarea"),s=st(t,["$$slots","$$events","$$legacy","ref","value","class","data-slot"]);var a=Bv();zs(a),Mt(a,c=>({"data-slot":o(),class:c,...s}),[()=>Bt("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t.class)]),ne(a,c=>e(c),()=>e()),Ks(a,n),l(r,a),Y()}var Uv=A(" New collection",1),Vv=A('
      Select which collections to add or remove
      '),Wv=A(" Back to selection",1),jv=A('
      Create a new collection
      '),Gv=A(" ",1),Kv=A('

      Loading

      '),qv=A('
      '),Yv=A('
      '),Xv=A('
      '),Zv=A(" Loading",1),Jv=A(" Loading",1),Qv=A(" ",1),tg=A('
      ',1);function eg(r,t){q(t,!0);let e=wt(!1),n=wt(!0),o=wt(!1),s=wt(0),a=wt("Model"),c=wt(Xe([])),d=wt(Xe([]));fn(()=>window.addEventListener("openCollectionManager",async _=>{const{item_id:P,collection_type:E}=_.detail;C(s,P,!0),C(a,E,!0),C(e,!1),C(e,!0),C(n,!0),C(c,[],!0),C(d,[],!0),C(g,""),C(m,""),C(x,!1),await u(P,i(a)),C(n,!1)}));async function u(_,P){const[E,z]=await Promise.all([fetch(gn.collections_with_media(mn.token,_,P)),fetch(gn.get_collections_by_media_type(mn.token,P))]);if(E.status!==200||z.status!==200){Bn.error("An error has ocurred. Try again.");return}C(c,(await z.json()).filter(j=>j.name!=="comfyui_civit_favorites"),!0),C(d,await E.json(),!0)}async function p(){C(n,!0);const _=Array.from(document.querySelectorAll("[data-collection-item]")).map(P=>{const E=parseInt(P.getAttribute("data-collection-item")),z=P.getAttribute("data-state")==="checked";return{collection_id:E,checked:z}});await fetch(gn.update_media_collections(mn.token,i(s),_.filter(P=>P.checked).map(P=>P.collection_id),_.filter(P=>!P.checked).map(P=>P.collection_id),i(a))),await u(i(s),i(a)),C(n,!1)}let g=wt(""),m=wt(""),x=wt(!1);async function h(){i(g).trim().length<1||(C(n,!0),await fetch(gn.create_collection(mn.token,i(g),i(a),i(x),i(m))),C(o,!1),await u(i(s),i(a)),C(g,""),C(m,""),C(x,!1),C(n,!1))}var v=b(),S=f(v);T(S,()=>Cr,(_,P)=>{P(_,{get open(){return i(e)},children:(E,z)=>{var j=b(),I=f(j);T(I,()=>Ar,($,H)=>{H($,{style:"z-index: 1000",children:(U,Z)=>{var W=tg(),ct=f(W);T(ct,()=>za,(ut,V)=>{V(ut,{children:(R,F)=>{var k=Gv(),L=f(k);T(L,()=>Fa,(K,et)=>{et(K,{children:(gt,pt)=>{xt();var ft=Dt("Manage Collections");l(gt,ft)},$$slots:{default:!0}})});var G=D(L,2);T(G,()=>Fo,(K,et)=>{et(K,{children:(gt,pt)=>{var ft=b(),B=f(ft);{var vt=nt=>{var At=Vv(),Lt=D(M(At),2),Ht=M(Lt);be(Ht,{variant:"ghost","aria-label":"Submit",onclick:()=>C(o,!0),children:(Kt,re)=>{var Vt=Uv(),bt=f(Vt);ni(bt,{}),xt(),l(Kt,Vt)},$$slots:{default:!0}}),O(Lt),O(At),l(nt,At)},yt=nt=>{var At=jv(),Lt=D(M(At),2),Ht=M(Lt);be(Ht,{variant:"ghost","aria-label":"Submit",onclick:()=>C(o,!1),children:(Kt,re)=>{var Vt=Wv(),bt=f(Vt);ms(bt,{}),xt(),l(Kt,Vt)},$$slots:{default:!0}}),O(Lt),O(At),l(nt,At)};ot(B,nt=>{i(o)?nt(yt,!1):nt(vt)})}l(gt,ft)},$$slots:{default:!0}})}),l(R,k)},$$slots:{default:!0}})});var it=D(ct,2),ht=M(it);{var Q=ut=>{var V=Kv(),R=M(V);Pn(R,{}),xt(2),O(V),l(ut,V)},lt=ut=>{var V=b(),R=f(V);{var F=k=>{var L=Yv();Ve(L,21,()=>i(c),cn,(G,K)=>{var et=qv(),gt=M(et);{let ft=N(()=>!!i(d).find(B=>B.collectionId===i(K).id));gr(gt,{get"data-collection-item"(){return i(K).id},get checked(){return i(ft)},get value(){return i(K).id},get id(){return`coll-item-${i(K).id??""}`}})}var pt=D(gt,2);Zo(pt,{get for(){return`coll-item-${i(K).id??""}`},class:"font-normal",children:(ft,B)=>{xt();var vt=Dt();It(()=>Rt(vt,i(K).name)),l(ft,vt)},$$slots:{default:!0}}),O(et),l(G,et)}),O(L),l(k,L)};ot(R,k=>{i(o)||k(F)},!0)}l(ut,V)};ot(ht,ut=>{i(n)&&!i(o)?ut(Q):ut(lt,!1)})}var tt=D(ht,2);{var at=ut=>{var V=Xv(),R=M(V);io(R,{required:!0,placeholder:"Name",name:"name",class:"w-full",get value(){return i(g)},set value(K){C(g,K,!0)}});var F=D(R,2);Hv(F,{placeholder:"Description",get value(){return i(m)},set value(K){C(m,K,!0)}});var k=D(F,2),L=M(k);gr(L,{id:"coll-item-create",get checked(){return i(x)},set checked(K){C(x,K,!0)}});var G=D(L,2);Zo(G,{for:"coll-item-create",class:"font-normal",children:(K,et)=>{xt();var gt=Dt("This collection contains mature content");l(K,gt)},$$slots:{default:!0}}),O(k),O(V),l(ut,V)};ot(tt,ut=>{i(o)&&ut(at)})}O(it);var J=D(it,2);T(J,()=>Ra,(ut,V)=>{V(ut,{children:(R,F)=>{var k=Qv(),L=f(k);{let gt=N(()=>Na({variant:"outline"}));T(L,()=>Ba,(pt,ft)=>{ft(pt,{get class(){return i(gt)},children:(B,vt)=>{xt();var yt=Dt("Cancel");l(B,yt)},$$slots:{default:!0}})})}var G=D(L,2);{var K=gt=>{be(gt,{get disabled(){return i(n)},onclick:p,children:(pt,ft)=>{var B=b(),vt=f(B);{var yt=At=>{var Lt=Zv(),Ht=f(Lt);Pn(Ht,{}),xt(),l(At,Lt)},nt=At=>{var Lt=Dt("Save changes");l(At,Lt)};ot(vt,At=>{i(n)?At(yt):At(nt,!1)})}l(pt,B)},$$slots:{default:!0}})},et=gt=>{be(gt,{get disabled(){return i(n)},onclick:h,children:(pt,ft)=>{var B=b(),vt=f(B);{var yt=At=>{var Lt=Jv(),Ht=f(Lt);Pn(Ht,{}),xt(),l(At,Lt)},nt=At=>{var Lt=Dt("Create");l(At,Lt)};ot(vt,At=>{i(n)?At(yt):At(nt,!1)})}l(pt,B)},$$slots:{default:!0}})};ot(G,gt=>{i(o)?gt(et,!1):gt(K)})}l(R,k)},$$slots:{default:!0}})}),l(U,W)},$$slots:{default:!0}})}),l(E,j)},$$slots:{default:!0}})}),l(r,v),Y()}var ng=A(''),rg=A('
      ',1),og=A(" ",1),ag=A(" ",1);function _g(r,t){q(t,!0),fn(async()=>{if(Object.keys(ln).length===0){let m=qs("user_token");(!m||m.length<1)&&(mr.loading=!1),m&&await $a(m)}});var e=ag();Xa("12qhfyh",m=>{var x=ng();It(()=>Gt(x,"href",nc)),l(m,x)});var n=f(e);ec(n,{});var o=D(n,2);tc(o,{});var s=D(o,2);Qf(s,{});var a=D(s,2);ru(a,{});var c=D(a,2);eg(c,{});var d=D(c,2);kf(d,{});var u=D(d,2);{var p=m=>{ch(m,{})},g=m=>{var x=b(),h=f(x);T(h,()=>tv,(v,S)=>{S(v,{children:(_,P)=>{var E=og(),z=f(E);Rv(z,{});var j=D(z,2);T(j,()=>kh,(I,$)=>{$(I,{children:(H,U)=>{var Z=rg(),W=f(Z),ct=M(W),it=M(ct);T(it,()=>ov,(tt,at)=>{at(tt,{class:"-ms-1"})});var ht=D(it,2);Qu(ht,{orientation:"vertical",class:"me-2 data-[orientation=vertical]:h-4"}),xt(2),O(ct),O(W);var Q=D(W,2),lt=M(Q);X(lt,()=>t.children),O(Q),l(H,Z)},$$slots:{default:!0}})}),l(_,E)},$$slots:{default:!0}})}),l(m,x)};ot(u,m=>{Object.keys(ln).length===0||mr.loading?m(p):m(g,!1)})}l(r,e),Y()}export{_g as component,gg as universal}; diff --git a/front-end/build/civit/_app/immutable/nodes/1.-b-81hB6.js b/front-end/build/civit/_app/immutable/nodes/1.-b-81hB6.js new file mode 100644 index 0000000..16b7b0c --- /dev/null +++ b/front-end/build/civit/_app/immutable/nodes/1.-b-81hB6.js @@ -0,0 +1 @@ +import{f as u,a as h,s}from"../chunks/kT5kkkQy.js";import{i as g}from"../chunks/CUg-vmQ0.js";import{p as d,f as l,t as v,b as _,e as a,r as o,d as x}from"../chunks/DA9wTPlB.js";import{s as $,p}from"../chunks/BxiYE_8e.js";const b={get error(){return p.error},get status(){return p.status}};$.updated.check;const m=b;var k=u("

      ",1);function y(f,i){d(i,!1),g();var t=k(),r=l(t),n=a(r,!0);o(r);var e=x(r,2),c=a(e,!0);o(e),v(()=>{s(n,m.status),s(c,m.error?.message)}),h(f,t),_()}export{y as component}; diff --git a/front-end/build/civit/_app/immutable/nodes/2.DTEYGkA8.js b/front-end/build/civit/_app/immutable/nodes/2.DTEYGkA8.js new file mode 100644 index 0000000..97546fb --- /dev/null +++ b/front-end/build/civit/_app/immutable/nodes/2.DTEYGkA8.js @@ -0,0 +1 @@ +import{f as m,a as f}from"../chunks/kT5kkkQy.js";import{p as b,o as y,s as l,a as h,f as M,g as s,b as j,c as p,d as x,e as A,r as O}from"../chunks/DA9wTPlB.js";import{i as S}from"../chunks/Bl70acv3.js";import{a as T}from"../chunks/ByoH8mPx.js";import{m as k,A as z,M as P}from"../chunks/CJT_YYCC.js";import{p as $}from"../chunks/QtwoLSaf.js";const q=!1,I=Object.freeze(Object.defineProperty({__proto__:null,ssr:q},Symbol.toStringTag,{value:"Module"}));var w=m("
      "),B=m(" ",1);function J(d,_){b(_,!0);let o=l(!1);y(()=>{p(o,!0)});let a=l(h({...k,mediaType:{selected:{name:"",value:""},options:[]}}));var i=B(),n=M(i);z(n,{get filters(){return s(a)}});var v=x(n,2);{var c=t=>{var e=w(),u=A(e);P(u,{get filters_state(){return s(a)},set filters_state(r){p(a,r,!0)}}),O(e),T(e,(r,g)=>$?.(r,g),()=>".header-content-nav"),f(t,e)};S(v,t=>{s(o)&&t(c)})}f(d,i),j()}export{J as component,I as universal}; diff --git a/front-end/build/civit/_app/immutable/nodes/3.BXTAZADF.js b/front-end/build/civit/_app/immutable/nodes/3.BXTAZADF.js new file mode 100644 index 0000000..044c7dc --- /dev/null +++ b/front-end/build/civit/_app/immutable/nodes/3.BXTAZADF.js @@ -0,0 +1 @@ +import{f as c,a as o,c as U,t as ae,s as u}from"../chunks/kT5kkkQy.js";import{p as Oe,f as d,b as He,e as r,w as I,d as e,r as s,g as a,x as ze,s as oe,c as P,t as re,a as ft,o as gt,y as $t}from"../chunks/DA9wTPlB.js";import{A as Je,u as Ue,b as Te,B as fe,S as xt,d as wt,C as Ae,f as bt,g as Be,h as kt}from"../chunks/B8s4VlAd.js";import{i as Ne,c as n}from"../chunks/Bl70acv3.js";import{D as yt,a as Mt,b as Pt,c as Ct,d as Dt,e as St,t as jt,P as Le,T as zt,f as Ie,g as Tt,h as At,i as F,j as se,k as Bt}from"../chunks/l9gpCeXC.js";const Nt=!1,ra=Object.freeze(Object.defineProperty({__proto__:null,ssr:Nt},Symbol.toStringTag,{value:"Module"}));async function Lt(v){let f={};if(v.length<1)return{status:400,data:f};let C=0;if(It(v))C=parseInt(v);else{const p=v.split("/models/");if(p.length<2)return{status:400,data:f};C=parseInt(p[1].split("/")[0])}try{const p=await fetch(Je.get_model_by_id(Ue.token,C));return p.status!==200?{status:400,data:f}:{status:200,data:await p.json()}}catch{return{status:400,data:{}}}}function It(v){return typeof v=="string"&&v.trim()!==""&&!Number.isNaN(Number(v))}var Ot=c(" Download",1),Ht=c(" ",1),Jt=c('
      ',1),Ut=c("
      "),Vt=c(" Download model",1),qt=c(`

      You haven't downloaded any models yet.

      `),Et=c(" Download model",1),Zt=c('',2),Kt=c('

      '),Wt=c(" ",1),Xt=c(" ",1),Yt=c('
      ',1),Ft=c(" ",1);function Gt(v,f){Oe(f,!0);const C=l=>{var h=U(),_=d(h);n(_,()=>St,(j,V)=>{V(j,{get open(){return a(O)},children:(q,E)=>{var z=Ut(),T=r(z);n(T,()=>yt,(Q,H)=>{H(Q,{children:(R,le)=>{var Z=Jt(),ee=d(Z);n(ee,()=>Mt,(X,g)=>{g(X,{children:(B,N)=>{var t=U(),$=d(t);n($,()=>Pt,(J,m)=>{m(J,{children:(D,x)=>{I();var w=ae("Download a new model");o(D,w)},$$slots:{default:!0}})}),o(B,t)},$$slots:{default:!0}})});var A=e(ee,2),K=r(A);Te(K,{min:"1",id:"modelParam",type:"text",required:!0,placeholder:"Paste the model id or page url",class:"w-full"}),s(A);var W=e(A,2);n(W,()=>Ct,(X,g)=>{g(X,{children:(B,N)=>{var t=Ht(),$=d(t);{let m=ze(()=>wt({variant:"outline"}));n($,()=>Dt,(D,x)=>{x(D,{get class(){return a(m)},children:(w,Y)=>{I();var b=ae("Cancel");o(w,b)},$$slots:{default:!0}})})}var J=e($,2);fe(J,{type:"submit",get disabled(){return a(G)},onclick:Ve,children:(m,D)=>{var x=Ot(),w=d(x);{var Y=b=>{xt(b,{})};Ne(w,b=>{a(G)&&b(Y)})}I(),o(m,x)},$$slots:{default:!0}}),o(B,t)},$$slots:{default:!0}})}),o(R,Z)},$$slots:{default:!0}})}),s(z),o(q,z)},$$slots:{default:!0}})}),o(l,h)},p=l=>{var h=qt(),_=e(r(h),2),j=r(_);fe(j,{onclick:()=>{P(O,!1),P(O,!0)},variant:"outline",children:(V,q)=>{var E=Vt(),z=d(E);Le(z,{}),I(),o(V,E)},$$slots:{default:!0}}),s(_),s(h),o(l,h)};let S=oe(""),O=oe(!1),G=oe(!1);async function Ve(l){P(G,!0);const h=document.querySelector("#modelParam").value.trim();let _=await Lt(h);if(P(G,!1),_.status!==200){jt.error("The provided url/id is not valid");return}P(O,!1),window.dispatchEvent(new CustomEvent("DownloadManagerShowModelVersions",{detail:{ModelData:_.data}}))}const qe={year:"numeric",month:"long",day:"numeric"};function Ee(l){return l&&l[0].toUpperCase()+l.substring(1).toLowerCase()}function ge(l){}var $e=Ft(),xe=d($e);C(xe);var Ze=e(xe,2);{var Ke=l=>{p(l)},We=l=>{var h=Yt(),_=d(h),j=r(_),V=r(j);Te(V,{type:"text",placeholder:"Search by model name",style:"max-width: 400px;",get value(){return a(S)},set value(T){P(S,T,!0)}}),s(j);var q=e(j,2),E=r(q);fe(E,{onclick:()=>{P(O,!1),P(O,!0)},variant:"outline",children:(T,Q)=>{var H=Et(),R=d(H);Le(R,{}),I(),o(T,H)},$$slots:{default:!0}}),s(q),s(_);var z=e(_,2);n(z,()=>Bt,(T,Q)=>{Q(T,{children:(H,R)=>{var le=Xt(),Z=d(le);n(Z,()=>zt,(A,K)=>{K(A,{children:(W,X)=>{var g=U(),B=d(g);n(B,()=>Ie,(N,t)=>{t(N,{children:($,J)=>{var m=U(),D=d(m);n(D,()=>Tt,(x,w)=>{w(x,{children:(Y,b)=>{Ae(Y,{"data-version-id":"headerCheckbox",onclick:ge})},$$slots:{default:!0}})}),o($,m)},$$slots:{default:!0}})}),o(W,g)},$$slots:{default:!0}})});var ee=e(Z,2);n(ee,()=>At,(A,K)=>{K(A,{children:(W,X)=>{var g=U(),B=d(g);bt(B,17,()=>f.downloads,N=>N.id,(N,t)=>{var $=U(),J=d($);{let m=ze(()=>a(t).base_model.toLowerCase().includes(a(S).toLowerCase())?"":"position: absolute; scale: 0");n(J,()=>Ie,(D,x)=>{x(D,{get style(){return a(m)},children:(w,Y)=>{var b=Wt(),we=d(b);n(we,()=>F,(k,y)=>{y(k,{class:"font-medium",style:"width: min-content;",children:(M,te)=>{Ae(M,{get"data-version-id"(){return a(t).id},onclick:ge})},$$slots:{default:!0}})});var be=e(we,2);n(be,()=>F,(k,y)=>{y(k,{class:"font-medium",style:"width: 160px;",children:(M,te)=>{var i=Zt();i.muted=!0;var L=r(i);s(i),re(()=>{Be(i,"poster",a(t).cover),Be(L,"src",a(t).cover)}),o(M,i)},$$slots:{default:!0}})});var ke=e(be,2);n(ke,()=>F,(k,y)=>{y(k,{children:(M,te)=>{var i=Kt(),L=r(i),Ye=r(L,!0);s(L);var ne=e(L,2),Fe=r(ne,!0);s(ne);var ie=e(ne,2),de=r(ie),Ge=e(r(de));s(de);var ue=e(de,2),Qe=e(r(ue));s(ue);var Me=e(ue,2),Re=e(r(Me));s(Me),s(ie);var ce=e(ie,2),ve=r(ce),et=e(r(ve));s(ve);var pe=e(ve,2),tt=e(r(pe));s(pe);var he=e(pe,2),at=e(r(he));s(he);var Pe=e(he,2),rt=e(r(Pe));s(Pe),s(ce);var Ce=e(ce,2),_e=r(Ce),me=r(_e),st=r(me,!0);s(me);var De=e(me,2),ot=r(De);s(De),s(_e);var Se=e(_e,2),je=r(Se),lt=r(je);s(je),s(Se),s(Ce),s(i),re((nt,it,dt,ut,ct,vt,pt,ht,_t,mt)=>{u(Ye,a(t).base_model),u(Fe,a(t).file_name),u(Ge,` ${nt??""}`),u(Qe,` ${a(t).based_on_model??""}`),u(Re,` ${it??""}`),u(et,` ${dt??""}`),u(tt,` ${ut??""}`),u(at,` ${ct??""}`),u(rt,` ${vt??""}`),u(st,pt),u(ot,`${ht??""}/s (${_t??""} / ${mt??""})`),kt(lt,`transform: translateX(-${100-a(t).downloaded*100/a(t).total_size}%);`)},[()=>a(t).author_name.replace('"',""),()=>new Date(a(t).published_at).toLocaleDateString("en-UK",qe),()=>JSON.parse(a(t).stats.slice(0,-1)).downloadCount,()=>JSON.parse(a(t).stats.slice(0,-1)).thumbsUpCount,()=>JSON.parse(a(t).stats.slice(0,-1)).thumbsDownCount,()=>JSON.parse(a(t).stats.slice(0,-1)).tippedAmountCount,()=>Ee(a(t).status),()=>se(Math.round(a(t).download_speed)).toString(),()=>se(Math.round(a(t).downloaded)).toString(),()=>se(Math.round(Math.max(a(t).total_size,1))).toString()]),o(M,i)},$$slots:{default:!0}})});var ye=e(ke,2);n(ye,()=>F,(k,y)=>{y(k,{children:(M,te)=>{I();var i=ae();re(()=>u(i,a(t).model_name)),o(M,i)},$$slots:{default:!0}})});var Xe=e(ye,2);n(Xe,()=>F,(k,y)=>{y(k,{children:(M,te)=>{I();var i=ae();re(L=>u(i,L),[()=>se(Math.round(a(t).total_size)).toString()]),o(M,i)},$$slots:{default:!0}})}),o(w,b)},$$slots:{default:!0}})})}o(N,$)}),o(W,g)},$$slots:{default:!0}})}),o(H,le)},$$slots:{default:!0}})}),o(l,h)};Ne(Ze,l=>{f.downloads.length<1?l(Ke):l(We,!1)})}o(v,$e),He()}function sa(v,f){Oe(f,!0);let C=0,p=oe(ft([]));gt(()=>{C=setInterval(async()=>{const S=await fetch(Je.list_downloads(Ue.token));S.status===200&&P(p,await S.json(),!0)},500)}),$t(()=>{clearInterval(C)}),Gt(v,{get downloads(){return a(p)}}),He()}export{sa as component,ra as universal}; diff --git a/front-end/build/civit/_app/immutable/nodes/4.v9b78c3f.js b/front-end/build/civit/_app/immutable/nodes/4.v9b78c3f.js new file mode 100644 index 0000000..a76c0e1 --- /dev/null +++ b/front-end/build/civit/_app/immutable/nodes/4.v9b78c3f.js @@ -0,0 +1 @@ +import{f as p,a as f}from"../chunks/kT5kkkQy.js";import{p as b,o as y,s as l,a as h,f as M,g as s,b as j,c as m,d as x,e as A,r as I}from"../chunks/DA9wTPlB.js";import{i as O}from"../chunks/Bl70acv3.js";import{a as S}from"../chunks/ByoH8mPx.js";import{m as T,A as k,M as z}from"../chunks/CJT_YYCC.js";import{p as P}from"../chunks/QtwoLSaf.js";const $=!1,H=Object.freeze(Object.defineProperty({__proto__:null,ssr:$},Symbol.toStringTag,{value:"Module"}));var q=p("
      "),w=p(" ",1);function J(d,_){b(_,!0);let o=l(!1);y(()=>{m(o,!0)});let a=l(h({...T,mediaType:{selected:{name:"Image",value:"Image"},options:[]}}));var i=w(),n=M(i);k(n,{get filters(){return s(a)}});var v=x(n,2);{var c=t=>{var e=q(),u=A(e);z(u,{get filters_state(){return s(a)},set filters_state(r){m(a,r,!0)}}),I(e),S(e,(r,g)=>P?.(r,g),()=>".header-content-nav"),f(t,e)};O(v,t=>{s(o)&&t(c)})}f(d,i),j()}export{J as component,H as universal}; diff --git a/front-end/build/civit/_app/immutable/nodes/5.BDyd8OI1.js b/front-end/build/civit/_app/immutable/nodes/5.BDyd8OI1.js new file mode 100644 index 0000000..853c4af --- /dev/null +++ b/front-end/build/civit/_app/immutable/nodes/5.BDyd8OI1.js @@ -0,0 +1 @@ +import{c as h,a as e,d as ot,f as i,s as U,t as Ce}from"../chunks/kT5kkkQy.js";import{p as De,f as t,v as Se,b as Te,s as G,a as Me,o as Re,c as _,e as ae,d as s,t as Y,r as re,w as $e,g as a,x as lt,j as nt,y as it}from"../chunks/DA9wTPlB.js";import{s as Je,r as dt,i as Qe,b as ut,c as o,p as tt}from"../chunks/Bl70acv3.js";import{u as vt,S as ct,T as _t,A as ft,H as pt,B as mt,D as Ie,b as je,M as $t,c as Ee,f as gt,i as ht,d as wt,e as yt,L as et,g as Be,h as Xe,a as xt}from"../chunks/ByoH8mPx.js";import{I as Pt,s as bt,A as at,u as rt,B as ye,S as st,g as Ne,f as Le,i as ze,C as kt,b as He}from"../chunks/B8s4VlAd.js";import{D as Ge,a as Oe,E as Mt,R as Ct,F as At,L as Lt,S as qe,b as We,c as Ve,d as Ue,e as Ye,C as zt,A as Ft,B as St,p as Dt}from"../chunks/QtwoLSaf.js";import{B as Tt,T as It,Z as jt}from"../chunks/DKXk1_Gk.js";function Et(T,l){De(l,!0);let n=dt(l,["$$slots","$$events","$$legacy"]);const w=[["path",{d:"m16 6 4 14"}],["path",{d:"M12 6v14"}],["path",{d:"M8 8v12"}],["path",{d:"M4 4v16"}]];Pt(T,Je({name:"library"},()=>n,{get iconNode(){return w},children:(c,y)=>{var S=h(),v=t(S);bt(v,()=>l.children??Se),e(c,S)},$$slots:{default:!0}})),Te()}const Gt=!1,Ia=Object.freeze(Object.defineProperty({__proto__:null,ssr:Gt},Symbol.toStringTag,{value:"Module"}));class Fe{static cursor="";static media="";static reset(){Fe.cursor=""}static default_payload(l=[]){let n={period:"Month",sort:"Most Reactions",baseModel:"",cursor:Fe.cursor,browsingLevel:"31",tags:"",types:"",earlyAccess:"false",supportsGeneration:"false",fromPlatform:"false",isFeatured:"false",checkpointType:"",fileFormat:""};for(const w in l){const c=l[w],y=c.name,S=c.value;n[y]!==void 0&&(n[y]=S)}return n}static async fetch_assets(l=[]){let n=Fe.default_payload(l),w=at.infinite_models(rt.token,new URLSearchParams(n).toString()),c=await fetch(w);if(c.status===200){let y=await c.json(),S=y[0].map(v=>{const m=v.images,u=Rt(m);v.img_url=`https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/${u.url}/transcode=true,original=true,quality=100/00000-319863695%202025-03-20.jpeg`;const se=v.img_url,Q=se.replace("/transcode=true,original=true,quality=100/","/transcode=true,width=400,original=false,optimized=true/"),$=se.replace("/transcode=true,original=true,quality=100/","/anim=false,transcode=true,width=400,original=false,optimized=true/");return v.optimized_asset_url=Q,v.optimized_poster_img_url=$,v.ratio=Bt(u.width||0,Math.max(u.height||0,420)),v.ratio.hn.widthv>=n||S===0?y:w(S,y%S,v+1),c=w(T,l,0);return{w:T/c,h:l/c}}var Nt=i(" ",1),Ht=i(" ",1),Ot=i(" ",1),qt=i(" ",1),Wt=i(" ",1),Vt=i(" ",1),Ut=i(" ",1),Yt=i(" ",1),Kt=i('
      ');function Zt(T,l){De(l,!0);const n=(z,Z=Se,H=Se,ie=Se,le=Se)=>{var X=h(),_e=t(X);o(_e,()=>Ee,(r,d)=>{d(r,{children:(F,ee)=>{var g=Vt(),b=t(g);{const j=(x,O)=>{ye(x,Je(()=>O?.().props,{variant:"outline",size:"sm",children:(M,q)=>{Mt(M,{})},$$slots:{default:!0}}))};o(b,()=>Ie,(x,O)=>{O(x,{child:j,$$slots:{child:!0}})})}var Pe=s(b,2);o(Pe,()=>je,(j,x)=>{x(j,{class:"w-max min-w-max bg-transparent backdrop-blur-sm",children:(O,te)=>{var M=h(),q=t(M);o(q,()=>Ge,(me,f)=>{f(me,{class:"w-max flex flex-col gap-1.5",children:(p,ge)=>{var C=Wt(),W=t(C);o(W,()=>Oe,(E,ne)=>{ne(E,{class:"p-0 w-full",children:(k,de)=>{ye(k,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(D,fe)=>{var V=Nt(),J=t(V);It(J,{});var ue=s(J);Y(be=>U(ue,` ${be??""}`),[()=>m.format(Z()).replaceAll(","," ")]),e(D,V)},$$slots:{default:!0}})},$$slots:{default:!0}})});var he=s(W,2);o(he,()=>Oe,(E,ne)=>{ne(E,{class:"p-0 w-full",style:"pointer-events: none;",children:(k,de)=>{ye(k,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(D,fe)=>{var V=Ht(),J=t(V);$t(J,{});var ue=s(J);Y(be=>U(ue,` ${be??""}`),[()=>m.format(H()).replaceAll(","," ")]),e(D,V)},$$slots:{default:!0}})},$$slots:{default:!0}})});var we=s(he,2);o(we,()=>Oe,(E,ne)=>{ne(E,{class:"p-0 w-full",style:"pointer-events: none;",children:(k,de)=>{ye(k,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(D,fe)=>{var V=Ot(),J=t(V);Et(J,{});var ue=s(J);Y(be=>U(ue,` ${be??""}`),[()=>m.format(ie()).replaceAll(","," ")]),e(D,V)},$$slots:{default:!0}})},$$slots:{default:!0}})});var Ae=s(we,2);o(Ae,()=>Oe,(E,ne)=>{ne(E,{class:"p-0 w-full",style:"pointer-events: none;",children:(k,de)=>{ye(k,{class:"w-1/1 bg-transparent",variant:"ghost",size:"sm",children:(D,fe)=>{var V=qt(),J=t(V);jt(J,{});var ue=s(J);Y(be=>U(ue,` ${be??""}`),[()=>m.format(le()).replaceAll(","," ")]),e(D,V)},$$slots:{default:!0}})},$$slots:{default:!0}})}),e(p,C)},$$slots:{default:!0}})}),e(O,M)},$$slots:{default:!0}})}),e(F,g)},$$slots:{default:!0}})}),e(z,X)};let w,c=G(!0),y=G(!1),S=G(Me([]));async function v(){_(c,!0);const z=await gt(l.asset.id,a(y),"Model");_(c,!1),_(y,z.isFavorite,!0),_(S,z.media_in_collections,!0)}Re(()=>w.addEventListener("pointerover",async z=>{const Z=await vt(l.asset.id,"Model");console.log(l.asset),_(c,!1),_(y,Z.isFavorite,!0),_(S,Z.media_in_collections,!0)},{once:!0}));const m=new Intl.NumberFormat("en-UK",{useGrouping:!0,minimumFractionDigits:0,maximumFractionDigits:2});var u=Kt();u.__click=z=>{z.target.closest("[data-stats]")||window.dispatchEvent(new CustomEvent("loadMovelPreview",{detail:{modelId:l.asset.id,modelVersion:l.asset.version.id}}))};var se=ae(u);ct(se,{class:"skeleteonLoader h-full w-full absolute top-0 left-0"});var Q=s(se,2),$=ae(Q),A=ae($);ye(A,{variant:"outline",size:"sm",class:"text-sm",children:(z,Z)=>{var H=Ut(),ie=t(H);_t(ie,{});var le=s(ie);Y(X=>U(le,` ${X??""}`),[()=>m.format(l.asset.rank.thumbsUpCount).replaceAll(","," ")]),e(z,H)},$$slots:{default:!0}});var L=s(A,2);ye(L,{variant:"outline",size:"sm",class:"text-sm",children:(z,Z)=>{var H=Yt(),ie=t(H);ft(ie,{});var le=s(ie);Y(X=>U(le,` ${X??""}`),[()=>m.format(l.asset.rank.downloadCount).replaceAll(","," ")]),e(z,H)},$$slots:{default:!0}});var ve=s(L,2);n(ve,()=>l.asset.rank.thumbsDownCount,()=>l.asset.rank.commentCount,()=>l.asset.rank.collectedCount,()=>l.asset.rank.tippedAmountCount),re($);var R=s($,2),I=ae(R),oe=ae(I,!0);re(I);var xe=s(I,2),K=ae(xe),pe=ae(K);Tt(pe,{variant:"outline",children:(z,Z)=>{$e();var H=Ce();Y(()=>U(H,l.asset.type)),e(z,H)},$$slots:{default:!0}}),re(K);var B=s(K,2),N=ae(B);ye(N,{type:"button",get disabled(){return a(c)},onclick:v,variant:"ghost",size:"icon","aria-label":"Favorite",children:(z,Z)=>{var H=h(),ie=t(H);{var le=_e=>{st(_e,{})},X=_e=>{{let r=lt(()=>a(y)?"#fff":"transparent");pt(_e,{get fill(){return a(r)}})}};Qe(ie,_e=>{a(c)?_e(le):_e(X,!1)})}e(z,H)},$$slots:{default:!0}});var ce=s(N,2);ye(ce,{type:"button",variant:"ghost",size:"icon","aria-label":"Collections",onclick:()=>window.dispatchEvent(new CustomEvent("openCollectionManager",{detail:{item_id:l.asset.id,collection_type:"Model"}})),children:(z,Z)=>{mt(z,{})},$$slots:{default:!0}}),re(B),re(xe),re(R),re(Q),re(u),ut(u,z=>w=z,()=>w),Y(()=>{Ne(u,"data-cover",l.asset.optimized_poster_img_url),Ne(u,"data-media",l.asset.optimized_asset_url),Ne(u,"data-media-w",l.asset.ratio.w),Ne(u,"data-media-h",l.asset.ratio.h),U(oe,l.asset.name)}),e(T,u),Te()}ot(["click"]);var Xt=i('
      '),Jt=i(" ",1);function Qt(T,l){De(l,!0);let n=G(Me([])),w=[],c=!1,y=G(!1);nt(()=>{const $=[];for(const A in l.filters){const L=l.filters[A];L.selected.name;const ve=L.selected.value;$.push({name:A,value:ve})}w=$,_(n,[],!0),Fe.reset(),v()}),Re(async()=>{_(n,[],!0),Fe.reset(),await v(),window.addEventListener("scroll",S)}),it(()=>window.removeEventListener("scroll",S));async function S($){window.scrollY>(document.body.scrollHeight*.8||document.body.scrollHeight-3e3)&&await v()}async function v(){if(c)return;_(y,!0),c=!0;let $=await Fe.fetch_assets(w);c=!1,_(y,!1),$.status===200&&_(n,[...a(n),...$.assets],!0)}Re(()=>{const $=document.getElementById("mansonary");ht({rootMargin:2500,target:$})});var m=Jt(),u=t(m);Ct(u,{id:"mansonary",frameWidth:300,gap:10,children:($,A)=>{var L=h(),ve=t(L);Le(ve,17,()=>a(n),ze,(R,I)=>{At(R,{get width(){return a(I).ratio.w},get height(){return a(I).ratio.h},children:(oe,xe)=>{Zt(oe,{get asset(){return a(I)}})},$$slots:{default:!0}})}),e($,L)},$$slots:{default:!0}});var se=s(u,2);{var Q=$=>{var A=Xt(),L=ae(A);st(L,{class:"size-8"}),re(A),e($,A)};Qe(se,$=>{a(y)&&$(Q)})}e(T,m),Te()}let Ze={period:{selected:{name:"Month",value:"Month"},options:[{name:"Day",value:"Day"},{name:"Week",value:"Week"},{name:"Month",value:"Month"},{name:"Year",value:"Year"},{name:"All Time",value:"AllTime"}]},sort:{selected:{name:"Highest Rated",value:"Highest Rated"},options:[{name:"Highest Rated",value:"Highest Rated"},{name:"Most Downloaded",value:"Most Downloaded"},{name:"Most Liked",value:"Most Liked"},{name:"Most Discussed",value:"Most Discussed"},{name:"Most Collected",value:"Most Collected"},{name:"Most Images",value:"Most Images"},{name:"Newest",value:"Newest"},{name:"Oldest",value:"Oldest"}]},browsingLevel:{selected:{name:"Include Nsfw",value:"31"},options:[{name:"Hide Nsfw",value:"0"},{name:"Include Nsfw",value:"31"},{name:"Only Nsfw",value:"100"}]},baseModel:{selected:{name:"",value:""},options:[]},types:{selected:{name:"",value:""},options:[P("Checkpoint"),P("TextualInversion"),P("Hypernetwork"),P("AestheticGradient"),P("MotionModule"),P("Upscaler"),P("Controlnet"),P("DoRA"),P("LoCon"),P("LORA"),P("VAE"),P("Poses"),P("Wildcards"),P("Workflows"),P("Detection"),P("Other")]},earlyAccess:Ke(),supportsGeneration:Ke(),fromPlatform:Ke(),isFeatured:Ke(),checkpointType:{selected:P("All"),options:[P("All"),P("Trained"),P("Merge")]},fileFormat:{selected:P(""),options:[P("ONNX"),P("SafeTensor"),P("PickleTensor"),P("GGUF"),P("Diffusers"),P("Core ML")]}};function P(T){return{name:T,value:T}}function Ke(T=!1){return{selected:{name:"",value:T},options:[]}}var ea=i('
      '),ta=i('
      '),aa=i(" ",1),ra=i('
      ',1),sa=i(" ",1),oa=i(" ",1),la=i('
      ',1),na=i(" ",1),ia=i(" Checkpoint Type",1),da=i('
      ',1),ua=i(" ",1),va=i(" File Format",1),ca=i('
      ',1),_a=i(" ",1),fa=i(" Filters",1),pa=i('
      ',1),ma=i(" ",1);function $a(T,l){De(l,!0);const n=r=>{var d=ea(),F=ae(d);et(F,{class:"font-semibold pt-2",children:(j,x)=>{$e();var O=Ce("Modifiers");e(j,O)},$$slots:{default:!0}});var ee=s(F,2);w(ee,()=>"earlyAccess",()=>"Early Access");var g=s(ee,2);w(g,()=>"supportsGeneration",()=>"On-site Generation");var b=s(g,2);w(b,()=>"fromPlatform",()=>"Made on Site");var Pe=s(b,2);w(Pe,()=>"isFeatured",()=>"Featured"),re(d),e(r,d)},w=(r,d=Se,F=Se)=>{var ee=ta(),g=ae(ee);kt(g,{get checked(){return ce[d()]},get"data-filter-modifier"(){return d()},onclick:()=>le(d()),get id(){return`filter-advanced-${d()??""}`}});var b=s(g,2);et(b,{class:"font-normal",get for(){return`filter-advanced-${d()??""}`},children:(Pe,j)=>{$e();var x=Ce();Y(()=>U(x,F())),e(Pe,x)},$$slots:{default:!0}}),re(ee),e(r,ee)},c=r=>{var d=h(),F=t(d);o(F,()=>Ye,(ee,g)=>{g(ee,{type:"multiple",onValueChange:z,get value(){return a(I)},set value(b){_(I,b,!0)},children:(b,Pe)=>{var j=sa(),x=t(j);o(x,()=>qe,(te,M)=>{M(te,{class:"w-full",children:(q,me)=>{var f=aa(),p=t(f);Be(p,{});var ge=s(p);Y(C=>U(ge,` Base Model (${C??""})`),[()=>a(pe).split(",").filter(C=>C.trim().length>0).length>0?a(pe).split(",").filter(C=>C.trim().length>0).length:"all"]),e(q,f)},$$slots:{default:!0}})});var O=s(x,2);o(O,()=>We,(te,M)=>{M(te,{preventScroll:!1,children:(q,me)=>{var f=ra(),p=t(f),ge=ae(p);He(ge,{type:"text",placeholder:"Search...",class:"max-w-xs",get value(){return a(A)},set value(W){_(A,W,!0)}}),re(p);var C=s(p,2);o(C,()=>Ve,(W,he)=>{he(W,{children:(we,Ae)=>{var E=h(),ne=t(E);Le(ne,17,()=>a(u).filter(k=>a(A).trim().length>0?k.toLowerCase().includes(a(A).toLowerCase()):!0),ze,(k,de)=>{var D=h(),fe=t(D);o(fe,()=>Ue,(V,J)=>{J(V,{get value(){return a(de)},children:(ue,be)=>{$e();var ke=Ce();Y(()=>U(ke,a(de))),e(ue,ke)},$$slots:{default:!0}})}),e(k,D)}),e(we,E)},$$slots:{default:!0}})}),e(q,f)},$$slots:{default:!0}})}),e(b,j)},$$slots:{default:!0}})}),e(r,d)},y=r=>{var d=h(),F=t(d);o(F,()=>Ye,(ee,g)=>{g(ee,{type:"multiple",onValueChange:Z,get value(){return a(oe)},set value(b){_(oe,b,!0)},children:(b,Pe)=>{var j=na(),x=t(j);o(x,()=>qe,(te,M)=>{M(te,{class:"w-full",children:(q,me)=>{var f=oa(),p=t(f);Be(p,{});var ge=s(p);Y(C=>U(ge,` Types (${C??""})`),[()=>a(B).split(",").filter(C=>C.trim().length>0).length>0?a(B).split(",").filter(C=>C.trim().length>0).length:"all"]),e(q,f)},$$slots:{default:!0}})});var O=s(x,2);o(O,()=>We,(te,M)=>{M(te,{preventScroll:!1,children:(q,me)=>{var f=la(),p=t(f),ge=ae(p);He(ge,{type:"text",placeholder:"Search...",class:"max-w-xs",get value(){return a(L)},set value(W){_(L,W,!0)}}),re(p);var C=s(p,2);o(C,()=>Ve,(W,he)=>{he(W,{children:(we,Ae)=>{var E=h(),ne=t(E);Le(ne,17,()=>a(se).filter(k=>a(L).trim().length>0?k.name.toLowerCase().includes(a(L).toLowerCase()):!0),ze,(k,de)=>{var D=h(),fe=t(D);o(fe,()=>Ue,(V,J)=>{J(V,{get value(){return a(de).value},children:(ue,be)=>{$e();var ke=Ce();Y(()=>U(ke,a(de).name)),e(ue,ke)},$$slots:{default:!0}})}),e(k,D)}),e(we,E)},$$slots:{default:!0}})}),e(q,f)},$$slots:{default:!0}})}),e(b,j)},$$slots:{default:!0}})}),e(r,d)},S=r=>{var d=h(),F=t(d);o(F,()=>Ye,(ee,g)=>{g(ee,{type:"single",onValueChange:ie,get value(){return a(N)},set value(b){_(N,b,!0)},children:(b,Pe)=>{var j=ua(),x=t(j);o(x,()=>qe,(te,M)=>{M(te,{class:"w-full",children:(q,me)=>{var f=ia(),p=t(f);Be(p,{}),$e(),e(q,f)},$$slots:{default:!0}})});var O=s(x,2);o(O,()=>We,(te,M)=>{M(te,{preventScroll:!1,children:(q,me)=>{var f=da(),p=t(f),ge=ae(p);He(ge,{type:"text",placeholder:"Search...",class:"max-w-xs",get value(){return a(ve)},set value(W){_(ve,W,!0)}}),re(p);var C=s(p,2);o(C,()=>Ve,(W,he)=>{he(W,{children:(we,Ae)=>{var E=h(),ne=t(E);Le(ne,17,()=>a(Q).filter(k=>a(ve).trim().length>0?k.name.toLowerCase().includes(a(ve).toLowerCase()):!0),ze,(k,de)=>{var D=h(),fe=t(D);o(fe,()=>Ue,(V,J)=>{J(V,{get value(){return a(de).value},children:(ue,be)=>{$e();var ke=Ce();Y(()=>U(ke,a(de).name)),e(ue,ke)},$$slots:{default:!0}})}),e(k,D)}),e(we,E)},$$slots:{default:!0}})}),e(q,f)},$$slots:{default:!0}})}),e(b,j)},$$slots:{default:!0}})}),e(r,d)},v=r=>{var d=h(),F=t(d);o(F,()=>Ye,(ee,g)=>{g(ee,{type:"multiple",onValueChange:H,get value(){return a(xe)},set value(b){_(xe,b,!0)},children:(b,Pe)=>{var j=_a(),x=t(j);o(x,()=>qe,(te,M)=>{M(te,{class:"w-full",children:(q,me)=>{var f=va(),p=t(f);Be(p,{}),$e(),e(q,f)},$$slots:{default:!0}})});var O=s(x,2);o(O,()=>We,(te,M)=>{M(te,{preventScroll:!1,children:(q,me)=>{var f=ca(),p=t(f),ge=ae(p);He(ge,{type:"text",placeholder:"Search...",class:"max-w-xs",get value(){return a(R)},set value(W){_(R,W,!0)}}),re(p);var C=s(p,2);o(C,()=>Ve,(W,he)=>{he(W,{children:(we,Ae)=>{var E=h(),ne=t(E);Le(ne,17,()=>a($).filter(k=>a(R).trim().length>0?k.name.toLowerCase().includes(a(R).toLowerCase()):!0),ze,(k,de)=>{var D=h(),fe=t(D);o(fe,()=>Ue,(V,J)=>{J(V,{get value(){return a(de).value},children:(ue,be)=>{$e();var ke=Ce();Y(()=>U(ke,a(de).name)),e(ue,ke)},$$slots:{default:!0}})}),e(k,D)}),e(we,E)},$$slots:{default:!0}})}),e(q,f)},$$slots:{default:!0}})}),e(b,j)},$$slots:{default:!0}})}),e(r,d)},m=tt(l,"filters_state",15);let u=G(Me([])),se=G(Me([])),Q=G(Me([])),$=G(Me([])),A=G(""),L=G(""),ve=G(""),R=G(""),I=G(Me([])),oe=G(Me([])),xe=G(Me([])),K=G(""),pe=G(""),B=G(""),N=G("All");Re(async()=>{fetch(at.get_base_models(rt.token)).then(async r=>{r.status===200&&_(u,await r.json(),!0)}),_(se,Ze.types.options.map(r=>({name:r.name,value:r.value})),!0),_(Q,Ze.checkpointType.options.map(r=>({name:r.name,value:r.value})),!0),_($,Ze.fileFormat.options.map(r=>({name:r.name,value:r.value})),!0)});const ce=Me({earlyAccess:!1,supportsGeneration:!1,fromPlatform:!1,isFeatured:!1}),z=r=>{m(m().baseModel.selected={name:"",value:r.join(",")},!0),_(pe,r.join(","),!0)},Z=r=>{m(m().types.selected={name:"",value:r.join(",")},!0),_(B,r.join(","),!0)},H=r=>{m(m().fileFormat.selected={name:"",value:r.join(",")},!0),_(K,r.join(","),!0)},ie=r=>{m(m().checkpointType.selected={name:"",value:r},!0),_(N,r,!0)},le=async r=>{await new Promise(F=>setTimeout(F,5));const d=document.querySelector(`[data-filter-modifier="${r}"]`).getAttribute("data-state")==="checked";m(m()[r].selected={name:"",value:d},!0),ce[r]=d};var X=h(),_e=t(X);o(_e,()=>Ee,(r,d)=>{d(r,{children:(F,ee)=>{var g=ma(),b=t(g);{const j=(x,O)=>{ye(x,Je(()=>O?.().props,{variant:"ghost",class:"font-normal",children:(M,q)=>{var me=fa(),f=t(me);Lt(f,{}),$e(),e(M,me)},$$slots:{default:!0}}))};o(b,()=>Ie,(x,O)=>{O(x,{child:j,$$slots:{child:!0}})})}var Pe=s(b,2);o(Pe,()=>je,(j,x)=>{x(j,{preventScroll:!1,class:"w-56",children:(O,te)=>{var M=h(),q=t(M);o(q,()=>Ge,(me,f)=>{f(me,{children:(p,ge)=>{var C=pa(),W=t(C);o(W,()=>wt,(D,fe)=>{fe(D,{children:(V,J)=>{$e();var ue=Ce("Filters");e(V,ue)},$$slots:{default:!0}})});var he=s(W,2);o(he,()=>yt,(D,fe)=>{fe(D,{})});var we=s(he,2),Ae=ae(we);c(Ae);var E=s(Ae,2);y(E);var ne=s(E,2);v(ne);var k=s(ne,2);S(k);var de=s(k,2);n(de),re(we),e(p,C)},$$slots:{default:!0}})}),e(O,M)},$$slots:{default:!0}})}),e(F,g)},$$slots:{default:!0}})}),e(T,X),Te()}var ga=i(" ",1),ha=i(" ",1),wa=i(" ",1),ya=i(" ",1),xa=i(" ",1),Pa=i(" ",1),ba=i('
      ');function ka(T,l){De(l,!0);let n=tt(l,"filters_state",15);var w=ba(),c=ae(w);o(c,()=>Ee,(u,se)=>{se(u,{children:(Q,$)=>{var A=ha(),L=t(A);o(L,()=>Ie,(R,I)=>{I(R,{children:(oe,xe)=>{ye(oe,{variant:"ghost",class:"font-normal",children:(K,pe)=>{var B=ga(),N=t(B);zt(N,{});var ce=s(N);Y(()=>U(ce,` ${n().period.selected.name??""}`)),e(K,B)},$$slots:{default:!0}})},$$slots:{default:!0}})});var ve=s(L,2);o(ve,()=>je,(R,I)=>{I(R,{children:(oe,xe)=>{var K=h(),pe=t(K);o(pe,()=>Ge,(B,N)=>{N(B,{children:(ce,z)=>{var Z=h(),H=t(Z);Le(H,17,()=>n().period.options,ze,(ie,le)=>{var X=h(),_e=t(X);o(_e,()=>Xe,(r,d)=>{d(r,{onclick:()=>{n(n().period.selected=a(le),!0)},children:(F,ee)=>{$e();var g=Ce();Y(()=>U(g,a(le).name)),e(F,g)},$$slots:{default:!0}})}),e(ie,X)}),e(ce,Z)},$$slots:{default:!0}})}),e(oe,K)},$$slots:{default:!0}})}),e(Q,A)},$$slots:{default:!0}})});var y=s(c,2);o(y,()=>Ee,(u,se)=>{se(u,{children:(Q,$)=>{var A=ya(),L=t(A);o(L,()=>Ie,(R,I)=>{I(R,{children:(oe,xe)=>{ye(oe,{variant:"ghost",class:"font-normal",children:(K,pe)=>{var B=wa(),N=t(B);Ft(N,{});var ce=s(N);Y(()=>U(ce,` ${n().sort.selected.name??""}`)),e(K,B)},$$slots:{default:!0}})},$$slots:{default:!0}})});var ve=s(L,2);o(ve,()=>je,(R,I)=>{I(R,{children:(oe,xe)=>{var K=h(),pe=t(K);o(pe,()=>Ge,(B,N)=>{N(B,{children:(ce,z)=>{var Z=h(),H=t(Z);Le(H,17,()=>n().sort.options,ze,(ie,le)=>{var X=h(),_e=t(X);o(_e,()=>Xe,(r,d)=>{d(r,{onclick:()=>{n(n().sort.selected=a(le),!0)},children:(F,ee)=>{$e();var g=Ce();Y(()=>U(g,a(le).name)),e(F,g)},$$slots:{default:!0}})}),e(ie,X)}),e(ce,Z)},$$slots:{default:!0}})}),e(oe,K)},$$slots:{default:!0}})}),e(Q,A)},$$slots:{default:!0}})});var S=s(y,2);o(S,()=>Ee,(u,se)=>{se(u,{children:(Q,$)=>{var A=Pa(),L=t(A);o(L,()=>Ie,(R,I)=>{I(R,{children:(oe,xe)=>{ye(oe,{variant:"ghost",class:"font-normal",children:(K,pe)=>{var B=xa(),N=t(B);St(N,{});var ce=s(N);Y(()=>U(ce,` ${n().browsingLevel.selected.name??""}`)),e(K,B)},$$slots:{default:!0}})},$$slots:{default:!0}})});var ve=s(L,2);o(ve,()=>je,(R,I)=>{I(R,{children:(oe,xe)=>{var K=h(),pe=t(K);o(pe,()=>Ge,(B,N)=>{N(B,{children:(ce,z)=>{var Z=h(),H=t(Z);Le(H,17,()=>n().browsingLevel.options,ze,(ie,le)=>{var X=h(),_e=t(X);o(_e,()=>Xe,(r,d)=>{d(r,{onclick:()=>{n(n().browsingLevel.selected=a(le),!0)},children:(F,ee)=>{$e();var g=Ce();Y(()=>U(g,a(le).name)),e(F,g)},$$slots:{default:!0}})}),e(ie,X)}),e(ce,Z)},$$slots:{default:!0}})}),e(oe,K)},$$slots:{default:!0}})}),e(Q,A)},$$slots:{default:!0}})});var v=s(S,2),m=ae(v);$a(m,{get filters_state(){return n()},set filters_state(u){n(u)}}),re(v),re(w),e(T,w),Te()}var Ma=i("
      "),Ca=i(" ",1);function ja(T,l){De(l,!0);let n=G(Me({...Ze})),w=G(!1);Re(()=>{_(w,!0)});var c=Ca(),y=t(c);{var S=m=>{var u=Ma(),se=ae(u);ka(se,{get filters_state(){return a(n)},set filters_state(Q){_(n,Q,!0)}}),re(u),xt(u,(Q,$)=>Dt?.(Q,$),()=>".header-content-nav"),e(m,u)};Qe(y,m=>{a(w)&&m(S)})}var v=s(y,2);Qt(v,{get filters(){return a(n)}}),e(T,c),Te()}export{ja as component,Ia as universal}; diff --git a/front-end/build/civit/_app/immutable/nodes/6.BISt8zal.js b/front-end/build/civit/_app/immutable/nodes/6.BISt8zal.js new file mode 100644 index 0000000..077da38 --- /dev/null +++ b/front-end/build/civit/_app/immutable/nodes/6.BISt8zal.js @@ -0,0 +1 @@ +import{f as m,a as f}from"../chunks/kT5kkkQy.js";import{p as b,o as y,s as l,a as h,f as M,g as s,b as j,c as p,d as x,e as A,r as O}from"../chunks/DA9wTPlB.js";import{i as S}from"../chunks/Bl70acv3.js";import{a as T}from"../chunks/ByoH8mPx.js";import{m as V,A as k,M as z}from"../chunks/CJT_YYCC.js";import{p as P}from"../chunks/QtwoLSaf.js";const $=!1,H=Object.freeze(Object.defineProperty({__proto__:null,ssr:$},Symbol.toStringTag,{value:"Module"}));var q=m("
      "),w=m(" ",1);function I(d,_){b(_,!0);let o=l(!1);y(()=>{p(o,!0)});let a=l(h({...V,mediaType:{selected:{name:"Video",value:"Video"},options:[]}}));var i=w(),n=M(i);k(n,{get filters(){return s(a)}});var v=x(n,2);{var c=t=>{var e=q(),u=A(e);z(u,{get filters_state(){return s(a)},set filters_state(r){p(a,r,!0)}}),O(e),T(e,(r,g)=>P?.(r,g),()=>".header-content-nav"),f(t,e)};S(v,t=>{s(o)&&t(c)})}f(d,i),j()}export{I as component,H as universal}; diff --git a/front-end/build/civit/_app/version.json b/front-end/build/civit/_app/version.json new file mode 100644 index 0000000..8df9472 --- /dev/null +++ b/front-end/build/civit/_app/version.json @@ -0,0 +1 @@ +{"version":"1770745449453"} \ No newline at end of file diff --git a/front-end/build/civit/downloads.html b/front-end/build/civit/downloads.html new file mode 100644 index 0000000..8e739bc --- /dev/null +++ b/front-end/build/civit/downloads.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/front-end/build/civit/images.html b/front-end/build/civit/images.html new file mode 100644 index 0000000..8e739bc --- /dev/null +++ b/front-end/build/civit/images.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/front-end/build/civit/index.html b/front-end/build/civit/index.html new file mode 100644 index 0000000..d352acd --- /dev/null +++ b/front-end/build/civit/index.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/front-end/build/civit/models.html b/front-end/build/civit/models.html new file mode 100644 index 0000000..8e739bc --- /dev/null +++ b/front-end/build/civit/models.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/front-end/build/civit/robots.txt b/front-end/build/civit/robots.txt new file mode 100644 index 0000000..b6dd667 --- /dev/null +++ b/front-end/build/civit/robots.txt @@ -0,0 +1,3 @@ +# allow crawling everything by default +User-agent: * +Disallow: diff --git a/front-end/build/civit/video.html b/front-end/build/civit/video.html new file mode 100644 index 0000000..8e739bc --- /dev/null +++ b/front-end/build/civit/video.html @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + +
      + +
      + + diff --git a/front-end/build/image.html b/front-end/build/image.html new file mode 100644 index 0000000..ebbb2a8 --- /dev/null +++ b/front-end/build/image.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Loading user data

      + + +
      + + diff --git a/front-end/build/index.html b/front-end/build/index.html new file mode 100644 index 0000000..e2b217c --- /dev/null +++ b/front-end/build/index.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Loading user data

      + + +
      + + diff --git a/front-end/build/models.html b/front-end/build/models.html new file mode 100644 index 0000000..df0b3ba --- /dev/null +++ b/front-end/build/models.html @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Loading user data

      + + +
      + + diff --git a/front-end/build/popular.html b/front-end/build/popular.html new file mode 100644 index 0000000..323295a --- /dev/null +++ b/front-end/build/popular.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Loading user data

      + + +
      + + diff --git a/front-end/build/robots.txt b/front-end/build/robots.txt new file mode 100644 index 0000000..b6dd667 --- /dev/null +++ b/front-end/build/robots.txt @@ -0,0 +1,3 @@ +# allow crawling everything by default +User-agent: * +Disallow: diff --git a/front-end/build/video.html b/front-end/build/video.html new file mode 100644 index 0000000..69c83a4 --- /dev/null +++ b/front-end/build/video.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Loading user data

      + + +
      + + diff --git a/front-end/components.json b/front-end/components.json new file mode 100644 index 0000000..c8f04c6 --- /dev/null +++ b/front-end/components.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://shadcn-svelte.com/schema.json", + "tailwind": { + "css": "src/routes/layout.css", + "baseColor": "slate" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks", + "lib": "$lib" + }, + "typescript": true, + "registry": "https://shadcn-svelte.com/registry" +} diff --git a/front-end/package-lock.json b/front-end/package-lock.json new file mode 100644 index 0000000..a23bc01 --- /dev/null +++ b/front-end/package-lock.json @@ -0,0 +1,2963 @@ +{ + "name": "front-end", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "front-end", + "version": "0.0.1", + "dependencies": { + "@masonry-grid/svelte": "^1.1.1", + "@sveltejs/adapter-static": "^3.0.10", + "@tailwindcss/vite": "^4.1.18", + "@types/byte-size": "^8.1.2", + "byte-size": "^9.0.1", + "clsx": "^2.1.1", + "dompurify": "^3.3.1", + "mode-watcher": "^1.1.0", + "qs": "^6.14.0", + "svelte-portal": "^2.2.1", + "tailwind-merge": "^3.4.0", + "tailwindcss": "^4.1.18" + }, + "devDependencies": { + "@internationalized/date": "^3.10.1", + "@lucide/svelte": "^0.561.0", + "@sveltejs/adapter-netlify": "^5.2.4", + "@sveltejs/kit": "^2.48.5", + "@sveltejs/vite-plugin-svelte": "^6.2.1", + "@tanstack/table-core": "^8.21.3", + "autoprefixer": "^10.4.22", + "bits-ui": "^2.15.5", + "embla-carousel-svelte": "^8.6.0", + "svelte": "^5.43.8", + "svelte-check": "^4.3.4", + "svelte-sonner": "^1.0.7", + "tailwind-variants": "^3.2.2", + "tw-animate-css": "^1.4.0", + "typescript": "^5.9.3", + "vite": "^7.2.2" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz", + "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz", + "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.4", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true, + "license": "ISC" + }, + "node_modules/@internationalized/date": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.10.1.tgz", + "integrity": "sha512-oJrXtQiAXLvT9clCf1K4kxp3eKsQhIaZqxEyowkBcsvZDdZkbWrVmnGknxs5flTD0VGsxrxKgBCZty1EzoiMzA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lucide/svelte": { + "version": "0.561.0", + "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.561.0.tgz", + "integrity": "sha512-vofKV2UFVrKE6I4ewKJ3dfCXSV6iP6nWVmiM83MLjsU91EeJcEg7LoWUABLp/aOTxj1HQNbJD1f3g3L0JQgH9A==", + "dev": true, + "license": "ISC", + "peerDependencies": { + "svelte": "^5" + } + }, + "node_modules/@masonry-grid/svelte": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@masonry-grid/svelte/-/svelte-1.1.1.tgz", + "integrity": "sha512-AJnXk2gnzwDvprY+kCbtFz6z/sdikPxLlDiBi4W+iZjiHqj3odqwr2x/OWCs1GfmjSu78ED5Stdh9Tn73qWx+g==", + "license": "MIT", + "dependencies": { + "@masonry-grid/vanilla": "^1.1.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://ko-fi.com/dangreen" + }, + "peerDependencies": { + "svelte": "^5.0.0" + } + }, + "node_modules/@masonry-grid/vanilla": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@masonry-grid/vanilla/-/vanilla-1.1.0.tgz", + "integrity": "sha512-bHpdnA3xBzBey0PpHvrBYs9IZ8vn5VevP75+Vdg5Dqlsez/hufJZ7oRh5rrDK1aAaggoN+FM5fXPdaXOuEvf4Q==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://ko-fi.com/dangreen" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz", + "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz", + "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz", + "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz", + "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz", + "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz", + "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz", + "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz", + "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz", + "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz", + "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz", + "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz", + "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz", + "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz", + "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz", + "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz", + "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz", + "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz", + "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz", + "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz", + "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz", + "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz", + "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.7.tgz", + "integrity": "sha512-znp1A/Y1Jj4l/Zy7PX5DZKBE0ZNY+5QBngiE21NJkfSTyzzC5iKNWOtwFXKtIrn7MXEFBck4jD95iBNkGjK92Q==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, + "node_modules/@sveltejs/adapter-netlify": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-5.2.4.tgz", + "integrity": "sha512-UtPcZq1HUA43hM8uLi+nsm5Q+YjHNj7/SMFoyeLZeY/VTloVWABEZ0tJ5WodTUmy/8j5QJ7oLZjj28aQxi8y3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iarna/toml": "^2.2.5", + "esbuild": "^0.25.4", + "set-cookie-parser": "^2.6.0" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.4.0" + } + }, + "node_modules/@sveltejs/adapter-static": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.10.tgz", + "integrity": "sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==", + "license": "MIT", + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.49.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.49.0.tgz", + "integrity": "sha512-oH8tXw7EZnie8FdOWYrF7Yn4IKrqTFHhXvl8YxXxbKwTMcD/5NNCryUSEXRk2ZR4ojnub0P8rNrsVGHXWqIDtA==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.14.1", + "cookie": "^0.6.0", + "devalue": "^5.3.2", + "esm-env": "^1.2.2", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^3.0.0" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + } + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-6.2.1.tgz", + "integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==", + "license": "MIT", + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0", + "debug": "^4.4.1", + "deepmerge": "^4.3.1", + "magic-string": "^0.30.17", + "vitefu": "^1.1.1" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24" + }, + "peerDependencies": { + "svelte": "^5.0.0", + "vite": "^6.3.0 || ^7.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-5.0.1.tgz", + "integrity": "sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.1" + }, + "engines": { + "node": "^20.19 || ^22.12 || >=24" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^6.0.0-next.0", + "svelte": "^5.0.0", + "vite": "^6.3.0 || ^7.0.0" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.18.tgz", + "integrity": "sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-x64": "4.1.18", + "@tailwindcss/oxide-freebsd-x64": "4.1.18", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.0", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz", + "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.18", + "@tailwindcss/oxide": "4.1.18", + "tailwindcss": "4.1.18" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.21.3.tgz", + "integrity": "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@types/byte-size": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/byte-size/-/byte-size-8.1.2.tgz", + "integrity": "sha512-jGyVzYu6avI8yuqQCNTZd65tzI8HZrLjKX9sdMqZrGWVlNChu0rf6p368oVEDCYJe5BMx2Ov04tD1wqtgTwGSA==", + "license": "MIT" + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.22", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", + "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.27.0", + "caniuse-lite": "^1.0.30001754", + "fraction.js": "^5.3.4", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", + "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/bits-ui": { + "version": "2.15.5", + "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-2.15.5.tgz", + "integrity": "sha512-WhS+P+E//ClLfKU6KqjKC17nGDRLnz+vkwoP6ClFUPd5m1fFVDxTElPX8QVsduLj5V1KFDxlnv6sW2G5Lqk+vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.1", + "@floating-ui/dom": "^1.7.1", + "esm-env": "^1.1.2", + "runed": "^0.35.1", + "svelte-toolbelt": "^0.10.6", + "tabbable": "^6.2.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/huntabyte" + }, + "peerDependencies": { + "@internationalized/date": "^3.8.1", + "svelte": "^5.33.0" + } + }, + "node_modules/bits-ui/node_modules/runed": { + "version": "0.35.1", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.35.1.tgz", + "integrity": "sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3", + "esm-env": "^1.0.0", + "lz-string": "^1.5.0" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.21.0", + "svelte": "^5.7.0" + }, + "peerDependenciesMeta": { + "@sveltejs/kit": { + "optional": true + } + } + }, + "node_modules/bits-ui/node_modules/svelte-toolbelt": { + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.10.6.tgz", + "integrity": "sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte" + ], + "dependencies": { + "clsx": "^2.1.1", + "runed": "^0.35.1", + "style-to-object": "^1.0.8" + }, + "engines": { + "node": ">=18", + "pnpm": ">=8.7.0" + }, + "peerDependencies": { + "svelte": "^5.30.2" + } + }, + "node_modules/browserslist": { + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/byte-size": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-9.0.1.tgz", + "integrity": "sha512-YLe9x3rabBrcI0cueCdLS2l5ONUKywcRpTs02B8KP9/Cimhj7o3ZccGrPnRvcbyHMbb7W79/3MUJl7iGgTXKEw==", + "license": "MIT", + "engines": { + "node": ">=12.17" + }, + "peerDependencies": { + "@75lb/nature": "latest" + }, + "peerDependenciesMeta": { + "@75lb/nature": { + "optional": true + } + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001757", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", + "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.5.0.tgz", + "integrity": "sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==", + "license": "MIT" + }, + "node_modules/dompurify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", + "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.262", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz", + "integrity": "sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/embla-carousel": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/embla-carousel-reactive-utils": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", + "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-svelte": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-svelte/-/embla-carousel-svelte-8.6.0.tgz", + "integrity": "sha512-ZDsKk8Sdv+AUTygMYcwZjfRd1DTh+JSUzxkOo8b9iKAkYjg+39mzbY/lwHsE3jXSpKxdKWS69hPSNuzlOGtR2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "embla-carousel": "8.6.0", + "embla-carousel-reactive-utils": "8.6.0" + }, + "peerDependencies": { + "svelte": "^3.49.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/esm-env": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", + "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", + "license": "MIT" + }, + "node_modules/esrap": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.0.tgz", + "integrity": "sha512-WBmtxe7R9C5mvL4n2le8nMUe4mD5V9oiK2vJpQ9I3y20ENPUomPcphBXE8D1x/Bm84oN1V+lOfgXxtqmxTp3Xg==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "license": "MIT" + }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mode-watcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mode-watcher/-/mode-watcher-1.1.0.tgz", + "integrity": "sha512-mUT9RRGPDYenk59qJauN1rhsIMKBmWA3xMF+uRwE8MW/tjhaDSCCARqkSuDTq8vr4/2KcAxIGVjACxTjdk5C3g==", + "license": "MIT", + "dependencies": { + "runed": "^0.25.0", + "svelte-toolbelt": "^0.7.1" + }, + "peerDependencies": { + "svelte": "^5.27.0" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rollup": { + "version": "4.53.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz", + "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", + "fsevents": "~2.3.2" + } + }, + "node_modules/runed": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.25.0.tgz", + "integrity": "sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==", + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "license": "MIT", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/svelte": { + "version": "5.45.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.45.2.tgz", + "integrity": "sha512-yyXdW2u3H0H/zxxWoGwJoQlRgaSJLp+Vhktv12iRw2WRDlKqUPT54Fi0K/PkXqrdkcQ98aBazpy0AH4BCBVfoA==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", + "@types/estree": "^1.0.5", + "acorn": "^8.12.1", + "aria-query": "^5.3.1", + "axobject-query": "^4.1.0", + "clsx": "^2.1.1", + "devalue": "^5.5.0", + "esm-env": "^1.2.1", + "esrap": "^2.2.0", + "is-reference": "^3.0.3", + "locate-character": "^3.0.0", + "magic-string": "^0.30.11", + "zimmerframe": "^1.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/svelte-check": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.4.tgz", + "integrity": "sha512-DVWvxhBrDsd+0hHWKfjP99lsSXASeOhHJYyuKOFYJcP7ThfSCKgjVarE8XfuMWpS5JV3AlDf+iK1YGGo2TACdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "chokidar": "^4.0.1", + "fdir": "^6.2.0", + "picocolors": "^1.0.0", + "sade": "^1.7.4" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": ">=5.0.0" + } + }, + "node_modules/svelte-portal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/svelte-portal/-/svelte-portal-2.2.1.tgz", + "integrity": "sha512-uF7is5sM4aq5iN7QF/67XLnTUvQCf2iiG/B1BHTqLwYVY1dsVmTeXZ/LeEyU6dLjApOQdbEG9lkqHzxiQtOLEQ==", + "license": "MIT" + }, + "node_modules/svelte-sonner": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/svelte-sonner/-/svelte-sonner-1.0.7.tgz", + "integrity": "sha512-1EUFYmd7q/xfs2qCHwJzGPh9n5VJ3X6QjBN10fof2vxgy8fYE7kVfZ7uGnd7i6fQaWIr5KvXcwYXE/cmTEjk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "runed": "^0.28.0" + }, + "peerDependencies": { + "svelte": "^5.0.0" + } + }, + "node_modules/svelte-sonner/node_modules/runed": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.28.0.tgz", + "integrity": "sha512-k2xx7RuO9hWcdd9f+8JoBeqWtYrm5CALfgpkg2YDB80ds/QE4w0qqu34A7fqiAwiBBSBQOid7TLxwxVC27ymWQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "license": "MIT", + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, + "node_modules/svelte-toolbelt": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz", + "integrity": "sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==", + "funding": [ + "https://github.com/sponsors/huntabyte" + ], + "dependencies": { + "clsx": "^2.1.1", + "runed": "^0.23.2", + "style-to-object": "^1.0.8" + }, + "engines": { + "node": ">=18", + "pnpm": ">=8.7.0" + }, + "peerDependencies": { + "svelte": "^5.0.0" + } + }, + "node_modules/svelte-toolbelt/node_modules/runed": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.23.4.tgz", + "integrity": "sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==", + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, + "node_modules/tabbable": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tailwind-merge": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.4.0.tgz", + "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwind-variants": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz", + "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.x", + "pnpm": ">=7.x" + }, + "peerDependencies": { + "tailwind-merge": ">=3.0.0", + "tailwindcss": "*" + }, + "peerDependenciesMeta": { + "tailwind-merge": { + "optional": true + } + } + }, + "node_modules/tailwindcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "devOptional": true, + "license": "0BSD" + }, + "node_modules/tw-animate-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz", + "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/vite": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.4.tgz", + "integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/zimmerframe": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", + "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==", + "license": "MIT" + } + } +} diff --git a/front-end/package.json b/front-end/package.json new file mode 100644 index 0000000..ae23a9b --- /dev/null +++ b/front-end/package.json @@ -0,0 +1,46 @@ +{ + "name": "front-end", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "prepare": "svelte-kit sync || echo ''", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" + }, + "devDependencies": { + "@internationalized/date": "^3.10.1", + "@lucide/svelte": "^0.561.0", + "@sveltejs/adapter-netlify": "^5.2.4", + "@sveltejs/kit": "^2.48.5", + "@sveltejs/vite-plugin-svelte": "^6.2.1", + "@tanstack/table-core": "^8.21.3", + "autoprefixer": "^10.4.22", + "bits-ui": "^2.15.5", + "embla-carousel-svelte": "^8.6.0", + "svelte": "^5.43.8", + "svelte-check": "^4.3.4", + "svelte-sonner": "^1.0.7", + "tailwind-variants": "^3.2.2", + "tw-animate-css": "^1.4.0", + "typescript": "^5.9.3", + "vite": "^7.2.2" + }, + "dependencies": { + "@masonry-grid/svelte": "^1.1.1", + "@sveltejs/adapter-static": "^3.0.10", + "@tailwindcss/vite": "^4.1.18", + "@types/byte-size": "^8.1.2", + "byte-size": "^9.0.1", + "clsx": "^2.1.1", + "dompurify": "^3.3.1", + "mode-watcher": "^1.1.0", + "qs": "^6.14.0", + "svelte-portal": "^2.2.1", + "tailwind-merge": "^3.4.0", + "tailwindcss": "^4.1.18" + } +} diff --git a/front-end/src/app.d.ts b/front-end/src/app.d.ts new file mode 100644 index 0000000..da08e6d --- /dev/null +++ b/front-end/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://svelte.dev/docs/kit/types#app.d.ts +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/front-end/src/app.html b/front-end/src/app.html new file mode 100644 index 0000000..6f0f83d --- /dev/null +++ b/front-end/src/app.html @@ -0,0 +1,67 @@ + + + + + + + + + + %sveltekit.head% + + + + +
      %sveltekit.body%
      + + diff --git a/front-end/src/lib/AssetsUtils.ts b/front-end/src/lib/AssetsUtils.ts new file mode 100644 index 0000000..8b3543e --- /dev/null +++ b/front-end/src/lib/AssetsUtils.ts @@ -0,0 +1,70 @@ +import API from "./api"; +import {type CollectionType} from "./api" + +import { user_token } from "./state.svelte"; + +type UpdateCollectionResp = { + collections: any[]; + media_in_collections: any[], + isFavorite: boolean +} + +export async function update_collections(media_id: number, collection_type: CollectionType): Promise { + let media_in_collections: any[] = [] + let isFavorite = false + + const [res1, res2] = await Promise.all([ + fetch(API.collections_with_media(user_token.token ,media_id, collection_type)), + fetch(API.get_collections_by_media_type(user_token.token, collection_type)), + ]); + + let collections: any[] = [] + + if (res1.status !== 200 || res2.status !== 200) return { + collections, + media_in_collections, + isFavorite + }; + + collections = await res1.json() as any[]; + const allCollections = await res2.json() as any[]; + + let favorite_coll_id = 0 + + if (collection_type === "Model") { + favorite_coll_id = allCollections.find((coll) => coll.name === "Liked Models").id as number; + } else { + favorite_coll_id = allCollections.find((coll) => coll.name === "comfyui_civit_favorites").id as number; + } + + if (collections.find((coll) => coll.collectionId === favorite_coll_id)) { + isFavorite = true + } + + media_in_collections = collections + + return { + collections, + media_in_collections, + isFavorite + } +} + +export async function favorite_media(media_id: number, isFavorite: boolean, collection_type: CollectionType) : Promise { + + let result; + + if (isFavorite) { + result = await fetch(API.unfavorite_media(user_token.token, media_id, collection_type)) + } else { + result = await fetch(API.favorite_media(user_token.token, media_id, collection_type)) + } + + if (result.status !== 200) return { + collections: [], + media_in_collections: [], + isFavorite: isFavorite + }; + + return await update_collections(media_id, collection_type) +} \ No newline at end of file diff --git a/front-end/src/lib/api.ts b/front-end/src/lib/api.ts new file mode 100644 index 0000000..36ad546 --- /dev/null +++ b/front-end/src/lib/api.ts @@ -0,0 +1,102 @@ +import { dev } from '$app/environment'; + +let port = "3090" // Default dev server + +if (typeof window !== 'undefined' && !dev) { + const url = new URL(window.location.href) + port = url.port +} + +let endpoint = "" + +if (dev) { + endpoint = `http://127.0.0.1:${port}/civit` +} else { + endpoint = `/civit` +} + +export type CollectionType = "Image" | "Model" | "Post" | "Article"; + +export default class API { + static endpoint = endpoint + + static user_data(token: string) { + return `${this.endpoint}/user_data?token=${token}` + } + + static infinite_images(token: string, params: string) { + return `${this.endpoint}/infinite_images?${params}&token=${token}` + } + + static infinite_models(token: string, params: string) { + return `${this.endpoint}/models?${params}&token=${token}` + } + + static models_search(token: string, params: string) { + return `${this.endpoint}/search?${params}&token=${token}` + } + + static popular_tags(token: string) { + return `${this.endpoint}/tags_with_id?&token=${token}` + } + + static media_data(token: string, model_id: number, user_id: number) { + return `${this.endpoint}/media_data/${user_id}/${model_id}?&token=${token}` + } + + static get_collections(token: string) { + return `${this.endpoint}/get_collections?&token=${token}` + } + + static get_collections_by_media_type(token: string, media_type: string) { + return `${this.endpoint}/get_collections_by_media?&token=${token}&media_type=${media_type}` + } + + static update_media_collections(token: string, media_id: number,positive: number[], negative: number[], collection_type: CollectionType) { + return `${this.endpoint}/update_collections/${media_id}?&token=${token}&add=${positive.join(",")}&remove=${negative.join(",")}&collection_type=${collection_type}` + } + + static collections_with_media(token: string, media_id: number, collection_type: CollectionType) { + return `${this.endpoint}/collection_with_media/${media_id}?&token=${token}&collection_type=${collection_type}` + } + + static favorite_media(token: string, media_id: number, collection_type: CollectionType) { + return `${this.endpoint}/favorite_media/${media_id}?token=${token}&collection_type=${collection_type}` + } + + static unfavorite_media(token: string, media_id: number, collection_type: CollectionType) { + return `${this.endpoint}/unfavorite_media/${media_id}?token=${token}&collection_type=${collection_type}` + } + + static get_base_models(token: string) { + return `${this.endpoint}/base_models_list?token=${token}` + } + + static get_tools(token: string) { + return `${this.endpoint}/get_tools_list?token=${token}` + } + + static get_techniques(token: string) { + return `${this.endpoint}/get_techniques_list?token=${token}` + } + + static get_model_by_id(token: string, id:number) { + return `${this.endpoint}/get_model/${id}?token=${token}` + } + + static download_model_by_id(token: string, id: number, type: string, cover: string, base_model: string, model_name: string, author_name: string, published_at: string, based_on_model: string, file_name: string, stats: string) { + return `${this.endpoint}/download_by_id/${id}?token=${token}&model_type=${type}&cover=${cover}&base_model=${base_model}&model_name=${model_name}&published_at=${published_at}&author_name=${author_name}&based_on_model=${based_on_model}&file_name=${file_name}&stats=${stats}"` + } + + static list_downloads(token: string) { + return `${this.endpoint}/downloads?token=${token}"` + } + + static create_collection(token: string, collection_name: string, collection_type: string, nsfw: boolean, description: string) { + return `${this.endpoint}/create_collection?token=${token}&collection_name=${collection_name}&collection_type=${collection_type}&nsfw=${nsfw}&description=${description}"` + } + + static get_gen_data(token: string, media_id: number) { + return `${this.endpoint}/get_generation_data/${media_id}?token=${token}"` + } +} diff --git a/front-end/src/lib/apis/images.svelte.ts b/front-end/src/lib/apis/images.svelte.ts new file mode 100644 index 0000000..9c18354 --- /dev/null +++ b/front-end/src/lib/apis/images.svelte.ts @@ -0,0 +1,35 @@ +import { Infinite, InfiniteType } from "./infinite"; + +import API from "$lib/api"; +import { user_token } from "$lib/state.svelte"; + +export default class load_mansonary extends Infinite { + static type = InfiniteType.Asset + + static default_payload() { + let filter_list: {[key: string]: string} = { + period: "Month", + sort: "Most Reactions", + baseModel: "", + mediaType: "Image", + cursor: load_mansonary.cursor, + browsingLevel: "31", + techniques: "", + requiringMeta: "false", + madeOnsite: "false", + originalsOnly: "false", + remixesOnly: "false", + metadataOnly: "false", + tags: "", + tools: "", + modelVersionId: "", + prioritizedUserIds: "" + } + + return filter_list + } + + static endpoint(params: string) { + return API.infinite_images(user_token.token, params) + } +} \ No newline at end of file diff --git a/front-end/src/lib/apis/infinite.ts b/front-end/src/lib/apis/infinite.ts new file mode 100644 index 0000000..48b6d73 --- /dev/null +++ b/front-end/src/lib/apis/infinite.ts @@ -0,0 +1,213 @@ +import API from "$lib/api"; +import {user_token} from "$lib/state.svelte" + +export type return_assets = { + status: number, + assets: object[] +} + +import { type Filter } from "$lib/filter"; + +export type LoaderConstructor = typeof Infinite; + +export enum InfiniteType { + Model, + Asset +} + +export class Infinite { + static cursor = "" + static media = "" + static force_tall_aspect_ratio = false + static type: InfiniteType = InfiniteType.Asset + + static reset() { + this.cursor = "" + } + + static default_payload() { + let filter_list: {[key: string]: string} = { + period: "Month", + sort: "Most Reactions", + baseModel: "", + cursor: this.cursor, + browsingLevel: "31", + tags: "", + types: "", + earlyAccess: "false", + supportsGeneration: "false", + fromPlatform: "false", + isFeatured: "false", + checkpointType: "", + fileFormat: "" + } + + return filter_list + } + + static endpoint(params: string) { + return API.infinite_models(user_token.token, params) + } + + static payload_override(override: Filter[] = []) { + let filter_list = this.default_payload(); + + for (const key in override) { + const value = override[key]; + + const selected_name = value.name + const selected_value = value.value + + const val_to_override = filter_list[selected_name] + + if (val_to_override !== undefined) { // If key exists in base list, override it with new value + filter_list[selected_name] = selected_value + } + } + + return filter_list + } + + static async fetch_assets(override: Filter[] = [], dataProccessFn = (data: any) => data): Promise { + let payload = this.payload_override(override) + + let endpoint = this.endpoint(new URLSearchParams(payload).toString()) + + let response = await fetch(endpoint) + + if (response.status === 200) { + let res = dataProccessFn(await response.json()) + + let assets = (res[0] as object[]).map((asset_item) => { + //const images = (asset_item as any).images as any[] + + let img; + + if (asset_item.hasOwnProperty("images")) { + const images = (asset_item as any).images as any[]; + + img = find_aspect_hor(images) + + if (!img) { // Fake image fallback. TODO: add actually fallback + img = { + "availability": "Public", + "hasMeta": true, + "hasPositivePrompt": true, + "hash": "UfJX:CVvs9bt}B$NjubGIrxYR-r?NKa{WVoL", + "height": 167, + "id": 61802536, + "metadata": { + "hash": "UfJX:CVvs9bt}B$NjubGIrxYR-r?NKa{WVoL", + "height": 167, + "size": 59119, + "width": 251 + }, + "modelVersionId": 1498159, + "name": "Khybon-chaotic-43573813-300-167.jpg", + "nsfwLevel": 2, + "onSite": false, + "remixOfId": null, + "tags": [ + 81, + 111755, + 292, + 5231, + 5140, + 3257, + 482, + 6594, + 161871, + 114923, + 116352, + 5232, + 5262 + ], + "type": "image", + "url": "a39c86cc-5159-48a2-a2d0-5e26c774e52e", + "userId": 5310922, + "width": 251 + } + } + + if (img.url === undefined) { + console.log("fucked") + } + + ; (asset_item as any).img_url = `https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/${img.url}/transcode=true,original=true,quality=100/00000-319863695%202025-03-20.jpeg` + } else { + img = asset_item + } + + //@ts-ignore + const original_image_url = asset_item.img_url + + const new_url = original_image_url.replace("/transcode=true,original=true,quality=100/", "/transcode=true,width=400,original=false,optimized=true/") + const new_poster_url = original_image_url.replace("/transcode=true,original=true,quality=100/", "/anim=false,transcode=true,width=400,original=false,optimized=true/") + + //@ts-ignore + asset_item.optimized_asset_url = new_url + + //@ts-ignore + asset_item.optimized_poster_img_url = new_poster_url + + //@ts-ignore + asset_item.ratio = getAspectRatio(img.width || 0, Math.max(img.height || 0, 420)) + + //@ts-ignore + if (this.force_tall_aspect_ratio && asset_item.ratio.h < asset_item.ratio.w) { + //@ts-ignore + let w = asset_item.ratio.w + //@ts-ignore + asset_item.ratio.w = 3 + //@ts-ignore + asset_item.ratio.h = 4 + } + + return asset_item + }) + + + this.cursor = (res[1] as string).replaceAll("\"", "") + + return { status: response.status, assets: assets } + } + + return {status: response.status, assets: []} + } +} + +function find_aspect_hor(images: any[]) { + let img = images.find((img) => { + return img.width < img.height + }) + + if (!img) { + img = images[0] + } + + return img +} + +function getAspectRatio( + width: number, + height: number, + maxDepth = 50 +) { + const gcd = (a: number, b: number, depth: number): number => { + if (depth >= maxDepth) { + // fallback: stop reducing further + return a; + } + if (b === 0) { + return a; + } + return gcd(b, a % b, depth + 1); + }; + + const divisor = gcd(width, height, 0); + + return { + w: width / divisor, + h: height / divisor + }; +} \ No newline at end of file diff --git a/front-end/src/lib/apis/model_data.ts b/front-end/src/lib/apis/model_data.ts new file mode 100644 index 0000000..abbfaa4 --- /dev/null +++ b/front-end/src/lib/apis/model_data.ts @@ -0,0 +1,39 @@ +import API from "$lib/api" + +import { user_token } from "$lib/state.svelte" + +export type ModelData = {[key: string]: any}; + +export async function get_model_data(model_param: string) : Promise<{status: number, data: ModelData}> { + let model_data = {} + + if (model_param.length < 1) return {status: 400, data: model_data} + + let model_id = 0 + + if (isNumberString(model_param)) { + model_id = parseInt(model_param) + } else { + const sp = model_param.split("/models/") + + if (sp.length < 2) return {status: 400, data: model_data} + + model_id = parseInt(sp[1].split("/")[0]) + } + + try { + const res = await fetch(API.get_model_by_id(user_token.token, model_id)) + + if (res.status !== 200) return {status: 400, data: model_data} + + const data = await res.json() + + return {status: 200, data: data} + } catch (e) { + return {status: 400, data: {}} + } +} + +function isNumberString(str: string) { + return typeof str === "string" && str.trim() !== "" && !Number.isNaN(Number(str)); +} \ No newline at end of file diff --git a/front-end/src/lib/apis/models.svelte.ts b/front-end/src/lib/apis/models.svelte.ts new file mode 100644 index 0000000..faacd4b --- /dev/null +++ b/front-end/src/lib/apis/models.svelte.ts @@ -0,0 +1,33 @@ +import { Infinite, InfiniteType } from "./infinite"; + +import API from "$lib/api"; +import { user_token } from "$lib/state.svelte"; + +export default class load_models extends Infinite { + static force_tall_aspect_ratio = true + static type = InfiniteType.Model + + static default_payload() { + let filter_list: {[key: string]: string} = { + period: "Month", + sort: "Most Reactions", + baseModel: "", + cursor: this.cursor, + browsingLevel: "31", + tags: "", + types: "", + earlyAccess: "false", + supportsGeneration: "false", + fromPlatform: "false", + isFeatured: "false", + checkpointType: "", + fileFormat: "" + } + + return filter_list + } + + static endpoint(params: string) { + return API.infinite_models(user_token.token, params) + } +} \ No newline at end of file diff --git a/front-end/src/lib/apis/models_search.svelte.ts b/front-end/src/lib/apis/models_search.svelte.ts new file mode 100644 index 0000000..85d09c9 --- /dev/null +++ b/front-end/src/lib/apis/models_search.svelte.ts @@ -0,0 +1,27 @@ +import { Infinite, InfiniteType } from "./infinite"; + +import API from "$lib/api"; +import { user_token } from "$lib/state.svelte"; + +export default class load_models extends Infinite { + static force_tall_aspect_ratio = true + static type = InfiniteType.Model + + static default_payload() { + let filter_list: {[key: string]: string} = { + search_type: "Models", + query: "", + types: "", + baseModel: "", + fileFormat: "", + checkpointType: "", + categories: "" + } + + return filter_list + } + + static endpoint(params: string) { + return API.models_search(user_token.token, params) + } +} \ No newline at end of file diff --git a/front-end/src/lib/assets/comfyui-color.svg b/front-end/src/lib/assets/comfyui-color.svg new file mode 100644 index 0000000..554a3bb --- /dev/null +++ b/front-end/src/lib/assets/comfyui-color.svg @@ -0,0 +1 @@ +ComfyUI \ No newline at end of file diff --git a/front-end/src/lib/assets/favicon.svg b/front-end/src/lib/assets/favicon.svg new file mode 100644 index 0000000..cc5dc66 --- /dev/null +++ b/front-end/src/lib/assets/favicon.svg @@ -0,0 +1 @@ +svelte-logo \ No newline at end of file diff --git a/front-end/src/lib/components/button.svelte b/front-end/src/lib/components/button.svelte new file mode 100644 index 0000000..9973b16 --- /dev/null +++ b/front-end/src/lib/components/button.svelte @@ -0,0 +1,222 @@ + + + + + \ No newline at end of file diff --git a/front-end/src/lib/components/login.svelte b/front-end/src/lib/components/login.svelte new file mode 100644 index 0000000..4b4886d --- /dev/null +++ b/front-end/src/lib/components/login.svelte @@ -0,0 +1,120 @@ + + +
      + {#if loading_user.loading} +
      + +

      Loading user data

      +
      + {:else} +
      +

      You're Logged out

      +

      To login, follow the instruction bellow:

      +
        +
      1. Go to: https://civitai.com
      2. +
      3. Login into your account
      4. +
      5. Open the devtools (Ctrl + Shift + I)
      6. +
      7. Navigate to cookies section
      8. +
      9. Copy value of the cookie "__Secure-civitai-token" and paste it bellow
      10. +
      + + + + + + + {#if loading_user.error} +

      The provided token is not valid!

      + {/if} +
      + + + + {/if} +
      + + \ No newline at end of file diff --git a/front-end/src/lib/components/sidebar/app-sidebar.svelte b/front-end/src/lib/components/sidebar/app-sidebar.svelte new file mode 100644 index 0000000..3dacf6d --- /dev/null +++ b/front-end/src/lib/components/sidebar/app-sidebar.svelte @@ -0,0 +1,85 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/front-end/src/lib/components/sidebar/nav-main.svelte b/front-end/src/lib/components/sidebar/nav-main.svelte new file mode 100644 index 0000000..db6724c --- /dev/null +++ b/front-end/src/lib/components/sidebar/nav-main.svelte @@ -0,0 +1,68 @@ + + + {#if label.trim().length > 0} + {label} + {/if} + + {#each items as mainItem (mainItem.title)} + + {#snippet child({ props })} + + + {#snippet child({ props })} + + + {mainItem.title} + + {/snippet} + + {#if mainItem.items?.length} + + {#snippet child({ props })} + + + Toggle + + {/snippet} + + + + {#each mainItem.items as subItem (subItem.title)} + + + {subItem.title} + + + {/each} + + + {/if} + + {/snippet} + + {/each} + + \ No newline at end of file diff --git a/front-end/src/lib/components/sidebar/nav-secondary.svelte b/front-end/src/lib/components/sidebar/nav-secondary.svelte new file mode 100644 index 0000000..3c2ef54 --- /dev/null +++ b/front-end/src/lib/components/sidebar/nav-secondary.svelte @@ -0,0 +1,33 @@ + + + + + {#each items as item (item.title)} + + + {#snippet child({ props })} + + + {item.title} + + {/snippet} + + + {/each} + + + \ No newline at end of file diff --git a/front-end/src/lib/components/sidebar/nav-user.svelte b/front-end/src/lib/components/sidebar/nav-user.svelte new file mode 100644 index 0000000..f519785 --- /dev/null +++ b/front-end/src/lib/components/sidebar/nav-user.svelte @@ -0,0 +1,84 @@ + + + + + + {#snippet child({ props })} + + + + CN + +
      + {userState.user_name} + {userState.user_email} +
      + +
      + {/snippet} +
      + + +
      + + + CN + +
      + {userState.user_name} + {userState.user_email} +
      +
      +
      + + + + + + + Toggle theme + + + + + + + + Log out + + +
      +
      +
      +
      \ No newline at end of file diff --git a/front-end/src/lib/components/spinner.svelte b/front-end/src/lib/components/spinner.svelte new file mode 100644 index 0000000..0f86444 --- /dev/null +++ b/front-end/src/lib/components/spinner.svelte @@ -0,0 +1,54 @@ + + + + + diff --git a/front-end/src/lib/components/ui/accordion/accordion-content.svelte b/front-end/src/lib/components/ui/accordion/accordion-content.svelte new file mode 100644 index 0000000..559db3d --- /dev/null +++ b/front-end/src/lib/components/ui/accordion/accordion-content.svelte @@ -0,0 +1,22 @@ + + + +
      + {@render children?.()} +
      +
      diff --git a/front-end/src/lib/components/ui/accordion/accordion-item.svelte b/front-end/src/lib/components/ui/accordion/accordion-item.svelte new file mode 100644 index 0000000..780545c --- /dev/null +++ b/front-end/src/lib/components/ui/accordion/accordion-item.svelte @@ -0,0 +1,17 @@ + + + diff --git a/front-end/src/lib/components/ui/accordion/accordion-trigger.svelte b/front-end/src/lib/components/ui/accordion/accordion-trigger.svelte new file mode 100644 index 0000000..c46c246 --- /dev/null +++ b/front-end/src/lib/components/ui/accordion/accordion-trigger.svelte @@ -0,0 +1,32 @@ + + + + svg]:rotate-180", + className + )} + {...restProps} + > + {@render children?.()} + + + diff --git a/front-end/src/lib/components/ui/accordion/accordion.svelte b/front-end/src/lib/components/ui/accordion/accordion.svelte new file mode 100644 index 0000000..117ee37 --- /dev/null +++ b/front-end/src/lib/components/ui/accordion/accordion.svelte @@ -0,0 +1,16 @@ + + + diff --git a/front-end/src/lib/components/ui/accordion/index.ts b/front-end/src/lib/components/ui/accordion/index.ts new file mode 100644 index 0000000..ac343a1 --- /dev/null +++ b/front-end/src/lib/components/ui/accordion/index.ts @@ -0,0 +1,16 @@ +import Root from "./accordion.svelte"; +import Content from "./accordion-content.svelte"; +import Item from "./accordion-item.svelte"; +import Trigger from "./accordion-trigger.svelte"; + +export { + Root, + Content, + Item, + Trigger, + // + Root as Accordion, + Content as AccordionContent, + Item as AccordionItem, + Trigger as AccordionTrigger, +}; diff --git a/front-end/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte b/front-end/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte new file mode 100644 index 0000000..815aab0 --- /dev/null +++ b/front-end/src/lib/components/ui/aspect-ratio/aspect-ratio.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/aspect-ratio/index.ts b/front-end/src/lib/components/ui/aspect-ratio/index.ts new file mode 100644 index 0000000..985c75f --- /dev/null +++ b/front-end/src/lib/components/ui/aspect-ratio/index.ts @@ -0,0 +1,3 @@ +import Root from "./aspect-ratio.svelte"; + +export { Root, Root as AspectRatio }; diff --git a/front-end/src/lib/components/ui/avatar/avatar-fallback.svelte b/front-end/src/lib/components/ui/avatar/avatar-fallback.svelte new file mode 100644 index 0000000..249d4a4 --- /dev/null +++ b/front-end/src/lib/components/ui/avatar/avatar-fallback.svelte @@ -0,0 +1,17 @@ + + + diff --git a/front-end/src/lib/components/ui/avatar/avatar-image.svelte b/front-end/src/lib/components/ui/avatar/avatar-image.svelte new file mode 100644 index 0000000..2bb9db4 --- /dev/null +++ b/front-end/src/lib/components/ui/avatar/avatar-image.svelte @@ -0,0 +1,17 @@ + + + diff --git a/front-end/src/lib/components/ui/avatar/avatar.svelte b/front-end/src/lib/components/ui/avatar/avatar.svelte new file mode 100644 index 0000000..e37214d --- /dev/null +++ b/front-end/src/lib/components/ui/avatar/avatar.svelte @@ -0,0 +1,19 @@ + + + diff --git a/front-end/src/lib/components/ui/avatar/index.ts b/front-end/src/lib/components/ui/avatar/index.ts new file mode 100644 index 0000000..d06457b --- /dev/null +++ b/front-end/src/lib/components/ui/avatar/index.ts @@ -0,0 +1,13 @@ +import Root from "./avatar.svelte"; +import Image from "./avatar-image.svelte"; +import Fallback from "./avatar-fallback.svelte"; + +export { + Root, + Image, + Fallback, + // + Root as Avatar, + Image as AvatarImage, + Fallback as AvatarFallback, +}; diff --git a/front-end/src/lib/components/ui/badge/badge.svelte b/front-end/src/lib/components/ui/badge/badge.svelte new file mode 100644 index 0000000..e3164ba --- /dev/null +++ b/front-end/src/lib/components/ui/badge/badge.svelte @@ -0,0 +1,50 @@ + + + + + + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/badge/index.ts b/front-end/src/lib/components/ui/badge/index.ts new file mode 100644 index 0000000..64e0aa9 --- /dev/null +++ b/front-end/src/lib/components/ui/badge/index.ts @@ -0,0 +1,2 @@ +export { default as Badge } from "./badge.svelte"; +export { badgeVariants, type BadgeVariant } from "./badge.svelte"; diff --git a/front-end/src/lib/components/ui/button-group/button-group-separator.svelte b/front-end/src/lib/components/ui/button-group/button-group-separator.svelte new file mode 100644 index 0000000..86ff8ae --- /dev/null +++ b/front-end/src/lib/components/ui/button-group/button-group-separator.svelte @@ -0,0 +1,20 @@ + + + diff --git a/front-end/src/lib/components/ui/button-group/button-group-text.svelte b/front-end/src/lib/components/ui/button-group/button-group-text.svelte new file mode 100644 index 0000000..1be72bb --- /dev/null +++ b/front-end/src/lib/components/ui/button-group/button-group-text.svelte @@ -0,0 +1,30 @@ + + +{#if child} + {@render child({ props: mergedProps })} +{:else} +
      + {@render mergedProps.children?.()} +
      +{/if} diff --git a/front-end/src/lib/components/ui/button-group/button-group.svelte b/front-end/src/lib/components/ui/button-group/button-group.svelte new file mode 100644 index 0000000..34c8d79 --- /dev/null +++ b/front-end/src/lib/components/ui/button-group/button-group.svelte @@ -0,0 +1,46 @@ + + + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/button-group/index.ts b/front-end/src/lib/components/ui/button-group/index.ts new file mode 100644 index 0000000..7f706e3 --- /dev/null +++ b/front-end/src/lib/components/ui/button-group/index.ts @@ -0,0 +1,13 @@ +import Root from "./button-group.svelte"; +import Text from "./button-group-text.svelte"; +import Separator from "./button-group-separator.svelte"; + +export { + Root, + Text, + Separator, + // + Root as ButtonGroup, + Text as ButtonGroupText, + Separator as ButtonGroupSeparator, +}; diff --git a/front-end/src/lib/components/ui/button/button.svelte b/front-end/src/lib/components/ui/button/button.svelte new file mode 100644 index 0000000..a8296ae --- /dev/null +++ b/front-end/src/lib/components/ui/button/button.svelte @@ -0,0 +1,82 @@ + + + + +{#if href} + + {@render children?.()} + +{:else} + +{/if} diff --git a/front-end/src/lib/components/ui/button/index.ts b/front-end/src/lib/components/ui/button/index.ts new file mode 100644 index 0000000..fb585d7 --- /dev/null +++ b/front-end/src/lib/components/ui/button/index.ts @@ -0,0 +1,17 @@ +import Root, { + type ButtonProps, + type ButtonSize, + type ButtonVariant, + buttonVariants, +} from "./button.svelte"; + +export { + Root, + type ButtonProps as Props, + // + Root as Button, + buttonVariants, + type ButtonProps, + type ButtonSize, + type ButtonVariant, +}; diff --git a/front-end/src/lib/components/ui/card/card-action.svelte b/front-end/src/lib/components/ui/card/card-action.svelte new file mode 100644 index 0000000..cc36c56 --- /dev/null +++ b/front-end/src/lib/components/ui/card/card-action.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/card/card-content.svelte b/front-end/src/lib/components/ui/card/card-content.svelte new file mode 100644 index 0000000..bc90b83 --- /dev/null +++ b/front-end/src/lib/components/ui/card/card-content.svelte @@ -0,0 +1,15 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/card/card-description.svelte b/front-end/src/lib/components/ui/card/card-description.svelte new file mode 100644 index 0000000..9b20ac7 --- /dev/null +++ b/front-end/src/lib/components/ui/card/card-description.svelte @@ -0,0 +1,20 @@ + + +

      + {@render children?.()} +

      diff --git a/front-end/src/lib/components/ui/card/card-footer.svelte b/front-end/src/lib/components/ui/card/card-footer.svelte new file mode 100644 index 0000000..2d4d0f2 --- /dev/null +++ b/front-end/src/lib/components/ui/card/card-footer.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/card/card-header.svelte b/front-end/src/lib/components/ui/card/card-header.svelte new file mode 100644 index 0000000..2501788 --- /dev/null +++ b/front-end/src/lib/components/ui/card/card-header.svelte @@ -0,0 +1,23 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/card/card-title.svelte b/front-end/src/lib/components/ui/card/card-title.svelte new file mode 100644 index 0000000..7447231 --- /dev/null +++ b/front-end/src/lib/components/ui/card/card-title.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/card/card.svelte b/front-end/src/lib/components/ui/card/card.svelte new file mode 100644 index 0000000..99448cc --- /dev/null +++ b/front-end/src/lib/components/ui/card/card.svelte @@ -0,0 +1,23 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/card/index.ts b/front-end/src/lib/components/ui/card/index.ts new file mode 100644 index 0000000..4d3fce4 --- /dev/null +++ b/front-end/src/lib/components/ui/card/index.ts @@ -0,0 +1,25 @@ +import Root from "./card.svelte"; +import Content from "./card-content.svelte"; +import Description from "./card-description.svelte"; +import Footer from "./card-footer.svelte"; +import Header from "./card-header.svelte"; +import Title from "./card-title.svelte"; +import Action from "./card-action.svelte"; + +export { + Root, + Content, + Description, + Footer, + Header, + Title, + Action, + // + Root as Card, + Content as CardContent, + Description as CardDescription, + Footer as CardFooter, + Header as CardHeader, + Title as CardTitle, + Action as CardAction, +}; diff --git a/front-end/src/lib/components/ui/carousel/carousel-content.svelte b/front-end/src/lib/components/ui/carousel/carousel-content.svelte new file mode 100644 index 0000000..84c71f8 --- /dev/null +++ b/front-end/src/lib/components/ui/carousel/carousel-content.svelte @@ -0,0 +1,43 @@ + + +
      +
      + {@render children?.()} +
      +
      diff --git a/front-end/src/lib/components/ui/carousel/carousel-item.svelte b/front-end/src/lib/components/ui/carousel/carousel-item.svelte new file mode 100644 index 0000000..ebf1649 --- /dev/null +++ b/front-end/src/lib/components/ui/carousel/carousel-item.svelte @@ -0,0 +1,30 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/carousel/carousel-next.svelte b/front-end/src/lib/components/ui/carousel/carousel-next.svelte new file mode 100644 index 0000000..1aaa1f4 --- /dev/null +++ b/front-end/src/lib/components/ui/carousel/carousel-next.svelte @@ -0,0 +1,38 @@ + + + diff --git a/front-end/src/lib/components/ui/carousel/carousel-previous.svelte b/front-end/src/lib/components/ui/carousel/carousel-previous.svelte new file mode 100644 index 0000000..dafe4fd --- /dev/null +++ b/front-end/src/lib/components/ui/carousel/carousel-previous.svelte @@ -0,0 +1,38 @@ + + + diff --git a/front-end/src/lib/components/ui/carousel/carousel.svelte b/front-end/src/lib/components/ui/carousel/carousel.svelte new file mode 100644 index 0000000..0492805 --- /dev/null +++ b/front-end/src/lib/components/ui/carousel/carousel.svelte @@ -0,0 +1,93 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/carousel/context.ts b/front-end/src/lib/components/ui/carousel/context.ts new file mode 100644 index 0000000..a5fd74f --- /dev/null +++ b/front-end/src/lib/components/ui/carousel/context.ts @@ -0,0 +1,58 @@ +import type { WithElementRef } from "$lib/utils.js"; +import type { + EmblaCarouselSvelteType, + default as emblaCarouselSvelte, +} from "embla-carousel-svelte"; +import { getContext, hasContext, setContext } from "svelte"; +import type { HTMLAttributes } from "svelte/elements"; + +export type CarouselAPI = + NonNullable["on:emblaInit"]> extends ( + evt: CustomEvent + ) => void + ? CarouselAPI + : never; + +type EmblaCarouselConfig = NonNullable[1]>; + +export type CarouselOptions = EmblaCarouselConfig["options"]; +export type CarouselPlugins = EmblaCarouselConfig["plugins"]; + +//// + +export type CarouselProps = { + opts?: CarouselOptions; + plugins?: CarouselPlugins; + setApi?: (api: CarouselAPI | undefined) => void; + orientation?: "horizontal" | "vertical"; +} & WithElementRef>; + +const EMBLA_CAROUSEL_CONTEXT = Symbol("EMBLA_CAROUSEL_CONTEXT"); + +export type EmblaContext = { + api: CarouselAPI | undefined; + orientation: "horizontal" | "vertical"; + scrollNext: () => void; + scrollPrev: () => void; + canScrollNext: boolean; + canScrollPrev: boolean; + handleKeyDown: (e: KeyboardEvent) => void; + options: CarouselOptions; + plugins: CarouselPlugins; + onInit: (e: CustomEvent) => void; + scrollTo: (index: number, jump?: boolean) => void; + scrollSnaps: number[]; + selectedIndex: number; +}; + +export function setEmblaContext(config: EmblaContext): EmblaContext { + setContext(EMBLA_CAROUSEL_CONTEXT, config); + return config; +} + +export function getEmblaContext(name = "This component") { + if (!hasContext(EMBLA_CAROUSEL_CONTEXT)) { + throw new Error(`${name} must be used within a component`); + } + return getContext>(EMBLA_CAROUSEL_CONTEXT); +} diff --git a/front-end/src/lib/components/ui/carousel/index.ts b/front-end/src/lib/components/ui/carousel/index.ts new file mode 100644 index 0000000..957fc74 --- /dev/null +++ b/front-end/src/lib/components/ui/carousel/index.ts @@ -0,0 +1,19 @@ +import Root from "./carousel.svelte"; +import Content from "./carousel-content.svelte"; +import Item from "./carousel-item.svelte"; +import Previous from "./carousel-previous.svelte"; +import Next from "./carousel-next.svelte"; + +export { + Root, + Content, + Item, + Previous, + Next, + // + Root as Carousel, + Content as CarouselContent, + Item as CarouselItem, + Previous as CarouselPrevious, + Next as CarouselNext, +}; diff --git a/front-end/src/lib/components/ui/checkbox/checkbox.svelte b/front-end/src/lib/components/ui/checkbox/checkbox.svelte new file mode 100644 index 0000000..0a2b010 --- /dev/null +++ b/front-end/src/lib/components/ui/checkbox/checkbox.svelte @@ -0,0 +1,36 @@ + + + + {#snippet children({ checked, indeterminate })} +
      + {#if checked} + + {:else if indeterminate} + + {/if} +
      + {/snippet} +
      diff --git a/front-end/src/lib/components/ui/checkbox/index.ts b/front-end/src/lib/components/ui/checkbox/index.ts new file mode 100644 index 0000000..6d92d94 --- /dev/null +++ b/front-end/src/lib/components/ui/checkbox/index.ts @@ -0,0 +1,6 @@ +import Root from "./checkbox.svelte"; +export { + Root, + // + Root as Checkbox, +}; diff --git a/front-end/src/lib/components/ui/collapsible/collapsible-content.svelte b/front-end/src/lib/components/ui/collapsible/collapsible-content.svelte new file mode 100644 index 0000000..bdabb55 --- /dev/null +++ b/front-end/src/lib/components/ui/collapsible/collapsible-content.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/collapsible/collapsible-trigger.svelte b/front-end/src/lib/components/ui/collapsible/collapsible-trigger.svelte new file mode 100644 index 0000000..ece7ad6 --- /dev/null +++ b/front-end/src/lib/components/ui/collapsible/collapsible-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/collapsible/collapsible.svelte b/front-end/src/lib/components/ui/collapsible/collapsible.svelte new file mode 100644 index 0000000..39cdd4e --- /dev/null +++ b/front-end/src/lib/components/ui/collapsible/collapsible.svelte @@ -0,0 +1,11 @@ + + + diff --git a/front-end/src/lib/components/ui/collapsible/index.ts b/front-end/src/lib/components/ui/collapsible/index.ts new file mode 100644 index 0000000..169b479 --- /dev/null +++ b/front-end/src/lib/components/ui/collapsible/index.ts @@ -0,0 +1,13 @@ +import Root from "./collapsible.svelte"; +import Trigger from "./collapsible-trigger.svelte"; +import Content from "./collapsible-content.svelte"; + +export { + Root, + Content, + Trigger, + // + Root as Collapsible, + Content as CollapsibleContent, + Trigger as CollapsibleTrigger, +}; diff --git a/front-end/src/lib/components/ui/data-table/data-table.svelte.ts b/front-end/src/lib/components/ui/data-table/data-table.svelte.ts new file mode 100644 index 0000000..5b7985e --- /dev/null +++ b/front-end/src/lib/components/ui/data-table/data-table.svelte.ts @@ -0,0 +1,142 @@ +import { + type RowData, + type TableOptions, + type TableOptionsResolved, + type TableState, + createTable, +} from "@tanstack/table-core"; + +/** + * Creates a reactive TanStack table object for Svelte. + * @param options Table options to create the table with. + * @returns A reactive table object. + * @example + * ```svelte + * + * + * + * + * {#each table.getHeaderGroups() as headerGroup} + * + * {#each headerGroup.headers as header} + * + * {/each} + * + * {/each} + * + * + *
      + * + *
      + * ``` + */ +export function createSvelteTable(options: TableOptions) { + const resolvedOptions: TableOptionsResolved = mergeObjects( + { + state: {}, + onStateChange() {}, + renderFallbackValue: null, + mergeOptions: ( + defaultOptions: TableOptions, + options: Partial> + ) => { + return mergeObjects(defaultOptions, options); + }, + }, + options + ); + + const table = createTable(resolvedOptions); + let state = $state>(table.initialState); + + function updateOptions() { + table.setOptions((prev) => { + return mergeObjects(prev, options, { + state: mergeObjects(state, options.state || {}), + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + onStateChange: (updater: any) => { + if (updater instanceof Function) state = updater(state); + else state = mergeObjects(state, updater); + + options.onStateChange?.(updater); + }, + }); + }); + } + + updateOptions(); + + $effect.pre(() => { + updateOptions(); + }); + + return table; +} + +type MaybeThunk = T | (() => T | null | undefined); +type Intersection = (T extends [infer H, ...infer R] + ? H & Intersection + : unknown) & {}; + +/** + * Lazily merges several objects (or thunks) while preserving + * getter semantics from every source. + * + * Proxy-based to avoid known WebKit recursion issue. + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export function mergeObjects[]>( + ...sources: Sources +): Intersection<{ [K in keyof Sources]: Sources[K] }> { + const resolve = (src: MaybeThunk): T | undefined => + typeof src === "function" ? (src() ?? undefined) : src; + + const findSourceWithKey = (key: PropertyKey) => { + for (let i = sources.length - 1; i >= 0; i--) { + const obj = resolve(sources[i]); + if (obj && key in obj) return obj; + } + return undefined; + }; + + return new Proxy(Object.create(null), { + get(_, key) { + const src = findSourceWithKey(key); + + return src?.[key as never]; + }, + + has(_, key) { + return !!findSourceWithKey(key); + }, + + ownKeys(): (string | symbol)[] { + // eslint-disable-next-line svelte/prefer-svelte-reactivity + const all = new Set(); + for (const s of sources) { + const obj = resolve(s); + if (obj) { + for (const k of Reflect.ownKeys(obj) as (string | symbol)[]) { + all.add(k); + } + } + } + return [...all]; + }, + + getOwnPropertyDescriptor(_, key) { + const src = findSourceWithKey(key); + if (!src) return undefined; + return { + configurable: true, + enumerable: true, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + value: (src as any)[key], + writable: true, + }; + }, + }) as Intersection<{ [K in keyof Sources]: Sources[K] }>; +} diff --git a/front-end/src/lib/components/ui/data-table/flex-render.svelte b/front-end/src/lib/components/ui/data-table/flex-render.svelte new file mode 100644 index 0000000..ac82a58 --- /dev/null +++ b/front-end/src/lib/components/ui/data-table/flex-render.svelte @@ -0,0 +1,40 @@ + + +{#if typeof content === "string"} + {content} +{:else if content instanceof Function} + + + {@const result = content(context as any)} + {#if result instanceof RenderComponentConfig} + {@const { component: Component, props } = result} + + {:else if result instanceof RenderSnippetConfig} + {@const { snippet, params } = result} + {@render snippet({ ...params, attach })} + {:else} + {result} + {/if} +{/if} diff --git a/front-end/src/lib/components/ui/data-table/index.ts b/front-end/src/lib/components/ui/data-table/index.ts new file mode 100644 index 0000000..5f4e77e --- /dev/null +++ b/front-end/src/lib/components/ui/data-table/index.ts @@ -0,0 +1,3 @@ +export { default as FlexRender } from "./flex-render.svelte"; +export { renderComponent, renderSnippet } from "./render-helpers.js"; +export { createSvelteTable } from "./data-table.svelte.js"; diff --git a/front-end/src/lib/components/ui/data-table/render-helpers.ts b/front-end/src/lib/components/ui/data-table/render-helpers.ts new file mode 100644 index 0000000..fa036d6 --- /dev/null +++ b/front-end/src/lib/components/ui/data-table/render-helpers.ts @@ -0,0 +1,111 @@ +import type { Component, ComponentProps, Snippet } from "svelte"; + +/** + * A helper class to make it easy to identify Svelte components in + * `columnDef.cell` and `columnDef.header` properties. + * + * > NOTE: This class should only be used internally by the adapter. If you're + * reading this and you don't know what this is for, you probably don't need it. + * + * @example + * ```svelte + * {@const result = content(context as any)} + * {#if result instanceof RenderComponentConfig} + * {@const { component: Component, props } = result} + * + * {/if} + * ``` + */ +export class RenderComponentConfig { + component: TComponent; + props: ComponentProps | Record; + constructor( + component: TComponent, + props: ComponentProps | Record = {} + ) { + this.component = component; + this.props = props; + } +} + +/** + * A helper class to make it easy to identify Svelte Snippets in `columnDef.cell` and `columnDef.header` properties. + * + * > NOTE: This class should only be used internally by the adapter. If you're + * reading this and you don't know what this is for, you probably don't need it. + * + * @example + * ```svelte + * {@const result = content(context as any)} + * {#if result instanceof RenderSnippetConfig} + * {@const { snippet, params } = result} + * {@render snippet(params)} + * {/if} + * ``` + */ +export class RenderSnippetConfig { + snippet: Snippet<[TProps]>; + params: TProps; + constructor(snippet: Snippet<[TProps]>, params: TProps) { + this.snippet = snippet; + this.params = params; + } +} + +/** + * A helper function to help create cells from Svelte components through ColumnDef's `cell` and `header` properties. + * + * This is only to be used with Svelte Components - use `renderSnippet` for Svelte Snippets. + * + * @param component A Svelte component + * @param props The props to pass to `component` + * @returns A `RenderComponentConfig` object that helps svelte-table know how to render the header/cell component. + * @example + * ```ts + * // +page.svelte + * const defaultColumns = [ + * columnHelper.accessor('name', { + * header: header => renderComponent(SortHeader, { label: 'Name', header }), + * }), + * columnHelper.accessor('state', { + * header: header => renderComponent(SortHeader, { label: 'State', header }), + * }), + * ] + * ``` + * @see {@link https://tanstack.com/table/latest/docs/guide/column-defs} + */ +export function renderComponent< + // eslint-disable-next-line @typescript-eslint/no-explicit-any + T extends Component, + Props extends ComponentProps, +>(component: T, props: Props = {} as Props) { + return new RenderComponentConfig(component, props); +} + +/** + * A helper function to help create cells from Svelte Snippets through ColumnDef's `cell` and `header` properties. + * + * The snippet must only take one parameter. + * + * This is only to be used with Snippets - use `renderComponent` for Svelte Components. + * + * @param snippet + * @param params + * @returns - A `RenderSnippetConfig` object that helps svelte-table know how to render the header/cell snippet. + * @example + * ```ts + * // +page.svelte + * const defaultColumns = [ + * columnHelper.accessor('name', { + * cell: cell => renderSnippet(nameSnippet, { name: cell.row.name }), + * }), + * columnHelper.accessor('state', { + * cell: cell => renderSnippet(stateSnippet, { state: cell.row.state }), + * }), + * ] + * ``` + * @see {@link https://tanstack.com/table/latest/docs/guide/column-defs} + */ +export function renderSnippet(snippet: Snippet<[TProps]>, params: TProps = {} as TProps) { + return new RenderSnippetConfig(snippet, params); +} diff --git a/front-end/src/lib/components/ui/dialog/dialog-close.svelte b/front-end/src/lib/components/ui/dialog/dialog-close.svelte new file mode 100644 index 0000000..840b2f6 --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog-close.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/dialog/dialog-content.svelte b/front-end/src/lib/components/ui/dialog/dialog-content.svelte new file mode 100644 index 0000000..5c6ee6d --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog-content.svelte @@ -0,0 +1,45 @@ + + + + + + {@render children?.()} + {#if showCloseButton} + + + Close + + {/if} + + diff --git a/front-end/src/lib/components/ui/dialog/dialog-description.svelte b/front-end/src/lib/components/ui/dialog/dialog-description.svelte new file mode 100644 index 0000000..3845023 --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog-description.svelte @@ -0,0 +1,17 @@ + + + diff --git a/front-end/src/lib/components/ui/dialog/dialog-footer.svelte b/front-end/src/lib/components/ui/dialog/dialog-footer.svelte new file mode 100644 index 0000000..e7ff446 --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog-footer.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/dialog/dialog-header.svelte b/front-end/src/lib/components/ui/dialog/dialog-header.svelte new file mode 100644 index 0000000..4e5c447 --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog-header.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/dialog/dialog-overlay.svelte b/front-end/src/lib/components/ui/dialog/dialog-overlay.svelte new file mode 100644 index 0000000..f81ad83 --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog-overlay.svelte @@ -0,0 +1,20 @@ + + + diff --git a/front-end/src/lib/components/ui/dialog/dialog-portal.svelte b/front-end/src/lib/components/ui/dialog/dialog-portal.svelte new file mode 100644 index 0000000..ccfa79c --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/dialog/dialog-title.svelte b/front-end/src/lib/components/ui/dialog/dialog-title.svelte new file mode 100644 index 0000000..e4d4b34 --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog-title.svelte @@ -0,0 +1,17 @@ + + + diff --git a/front-end/src/lib/components/ui/dialog/dialog-trigger.svelte b/front-end/src/lib/components/ui/dialog/dialog-trigger.svelte new file mode 100644 index 0000000..9d1e801 --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/dialog/dialog.svelte b/front-end/src/lib/components/ui/dialog/dialog.svelte new file mode 100644 index 0000000..211672c --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/dialog.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/dialog/index.ts b/front-end/src/lib/components/ui/dialog/index.ts new file mode 100644 index 0000000..076cef5 --- /dev/null +++ b/front-end/src/lib/components/ui/dialog/index.ts @@ -0,0 +1,34 @@ +import Root from "./dialog.svelte"; +import Portal from "./dialog-portal.svelte"; +import Title from "./dialog-title.svelte"; +import Footer from "./dialog-footer.svelte"; +import Header from "./dialog-header.svelte"; +import Overlay from "./dialog-overlay.svelte"; +import Content from "./dialog-content.svelte"; +import Description from "./dialog-description.svelte"; +import Trigger from "./dialog-trigger.svelte"; +import Close from "./dialog-close.svelte"; + +export { + Root, + Title, + Portal, + Footer, + Header, + Trigger, + Overlay, + Content, + Description, + Close, + // + Root as Dialog, + Title as DialogTitle, + Portal as DialogPortal, + Footer as DialogFooter, + Header as DialogHeader, + Trigger as DialogTrigger, + Overlay as DialogOverlay, + Content as DialogContent, + Description as DialogDescription, + Close as DialogClose, +}; diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte new file mode 100644 index 0000000..e0e1971 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte @@ -0,0 +1,16 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte new file mode 100644 index 0000000..6d9ef85 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte @@ -0,0 +1,43 @@ + + + + {#snippet children({ checked, indeterminate })} + + {#if indeterminate} + + {:else} + + {/if} + + {@render childrenProp?.()} + {/snippet} + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte new file mode 100644 index 0000000..1e96782 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte @@ -0,0 +1,29 @@ + + + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte new file mode 100644 index 0000000..433540f --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte @@ -0,0 +1,22 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte new file mode 100644 index 0000000..aca1f7b --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte new file mode 100644 index 0000000..04cd110 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte @@ -0,0 +1,27 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte new file mode 100644 index 0000000..9681c2b --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte @@ -0,0 +1,24 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte new file mode 100644 index 0000000..274cfef --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte new file mode 100644 index 0000000..189aef4 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte @@ -0,0 +1,16 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte new file mode 100644 index 0000000..ce2ad09 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte @@ -0,0 +1,33 @@ + + + + {#snippet children({ checked })} + + {#if checked} + + {/if} + + {@render childrenProp?.({ checked })} + {/snippet} + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte new file mode 100644 index 0000000..90f1b6f --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte @@ -0,0 +1,17 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte new file mode 100644 index 0000000..7c6e9c6 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte new file mode 100644 index 0000000..3f06dc4 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte @@ -0,0 +1,20 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte new file mode 100644 index 0000000..5f49d01 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte @@ -0,0 +1,29 @@ + + + + {@render children?.()} + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte new file mode 100644 index 0000000..f044581 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte new file mode 100644 index 0000000..cb05344 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte new file mode 100644 index 0000000..cb4bc62 --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/dropdown-menu/index.ts b/front-end/src/lib/components/ui/dropdown-menu/index.ts new file mode 100644 index 0000000..7850c6a --- /dev/null +++ b/front-end/src/lib/components/ui/dropdown-menu/index.ts @@ -0,0 +1,54 @@ +import Root from "./dropdown-menu.svelte"; +import Sub from "./dropdown-menu-sub.svelte"; +import CheckboxGroup from "./dropdown-menu-checkbox-group.svelte"; +import CheckboxItem from "./dropdown-menu-checkbox-item.svelte"; +import Content from "./dropdown-menu-content.svelte"; +import Group from "./dropdown-menu-group.svelte"; +import Item from "./dropdown-menu-item.svelte"; +import Label from "./dropdown-menu-label.svelte"; +import RadioGroup from "./dropdown-menu-radio-group.svelte"; +import RadioItem from "./dropdown-menu-radio-item.svelte"; +import Separator from "./dropdown-menu-separator.svelte"; +import Shortcut from "./dropdown-menu-shortcut.svelte"; +import Trigger from "./dropdown-menu-trigger.svelte"; +import SubContent from "./dropdown-menu-sub-content.svelte"; +import SubTrigger from "./dropdown-menu-sub-trigger.svelte"; +import GroupHeading from "./dropdown-menu-group-heading.svelte"; +import Portal from "./dropdown-menu-portal.svelte"; + +export { + CheckboxGroup, + CheckboxItem, + Content, + Portal, + Root as DropdownMenu, + CheckboxGroup as DropdownMenuCheckboxGroup, + CheckboxItem as DropdownMenuCheckboxItem, + Content as DropdownMenuContent, + Portal as DropdownMenuPortal, + Group as DropdownMenuGroup, + Item as DropdownMenuItem, + Label as DropdownMenuLabel, + RadioGroup as DropdownMenuRadioGroup, + RadioItem as DropdownMenuRadioItem, + Separator as DropdownMenuSeparator, + Shortcut as DropdownMenuShortcut, + Sub as DropdownMenuSub, + SubContent as DropdownMenuSubContent, + SubTrigger as DropdownMenuSubTrigger, + Trigger as DropdownMenuTrigger, + GroupHeading as DropdownMenuGroupHeading, + Group, + GroupHeading, + Item, + Label, + RadioGroup, + RadioItem, + Root, + Separator, + Shortcut, + Sub, + SubContent, + SubTrigger, + Trigger, +}; diff --git a/front-end/src/lib/components/ui/input/index.ts b/front-end/src/lib/components/ui/input/index.ts new file mode 100644 index 0000000..f47b6d3 --- /dev/null +++ b/front-end/src/lib/components/ui/input/index.ts @@ -0,0 +1,7 @@ +import Root from "./input.svelte"; + +export { + Root, + // + Root as Input, +}; diff --git a/front-end/src/lib/components/ui/input/input.svelte b/front-end/src/lib/components/ui/input/input.svelte new file mode 100644 index 0000000..ff1a4c8 --- /dev/null +++ b/front-end/src/lib/components/ui/input/input.svelte @@ -0,0 +1,52 @@ + + +{#if type === "file"} + +{:else} + +{/if} diff --git a/front-end/src/lib/components/ui/item/index.ts b/front-end/src/lib/components/ui/item/index.ts new file mode 100644 index 0000000..168bc3e --- /dev/null +++ b/front-end/src/lib/components/ui/item/index.ts @@ -0,0 +1,34 @@ +import Root from "./item.svelte"; +import Group from "./item-group.svelte"; +import Separator from "./item-separator.svelte"; +import Header from "./item-header.svelte"; +import Footer from "./item-footer.svelte"; +import Content from "./item-content.svelte"; +import Title from "./item-title.svelte"; +import Description from "./item-description.svelte"; +import Actions from "./item-actions.svelte"; +import Media from "./item-media.svelte"; + +export { + Root, + Group, + Separator, + Header, + Footer, + Content, + Title, + Description, + Actions, + Media, + // + Root as Item, + Group as ItemGroup, + Separator as ItemSeparator, + Header as ItemHeader, + Footer as ItemFooter, + Content as ItemContent, + Title as ItemTitle, + Description as ItemDescription, + Actions as ItemActions, + Media as ItemMedia, +}; diff --git a/front-end/src/lib/components/ui/item/item-actions.svelte b/front-end/src/lib/components/ui/item/item-actions.svelte new file mode 100644 index 0000000..83a6bb2 --- /dev/null +++ b/front-end/src/lib/components/ui/item/item-actions.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/item/item-content.svelte b/front-end/src/lib/components/ui/item/item-content.svelte new file mode 100644 index 0000000..55516f2 --- /dev/null +++ b/front-end/src/lib/components/ui/item/item-content.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/item/item-description.svelte b/front-end/src/lib/components/ui/item/item-description.svelte new file mode 100644 index 0000000..65e6e7d --- /dev/null +++ b/front-end/src/lib/components/ui/item/item-description.svelte @@ -0,0 +1,24 @@ + + +

      a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", + className + )} + {...restProps} +> + {@render children?.()} +

      diff --git a/front-end/src/lib/components/ui/item/item-footer.svelte b/front-end/src/lib/components/ui/item/item-footer.svelte new file mode 100644 index 0000000..c998caa --- /dev/null +++ b/front-end/src/lib/components/ui/item/item-footer.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/item/item-group.svelte b/front-end/src/lib/components/ui/item/item-group.svelte new file mode 100644 index 0000000..57ebbd5 --- /dev/null +++ b/front-end/src/lib/components/ui/item/item-group.svelte @@ -0,0 +1,21 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/item/item-header.svelte b/front-end/src/lib/components/ui/item/item-header.svelte new file mode 100644 index 0000000..1afe1fa --- /dev/null +++ b/front-end/src/lib/components/ui/item/item-header.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/item/item-media.svelte b/front-end/src/lib/components/ui/item/item-media.svelte new file mode 100644 index 0000000..78490fd --- /dev/null +++ b/front-end/src/lib/components/ui/item/item-media.svelte @@ -0,0 +1,42 @@ + + + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/item/item-separator.svelte b/front-end/src/lib/components/ui/item/item-separator.svelte new file mode 100644 index 0000000..6f2f51a --- /dev/null +++ b/front-end/src/lib/components/ui/item/item-separator.svelte @@ -0,0 +1,19 @@ + + + diff --git a/front-end/src/lib/components/ui/item/item-title.svelte b/front-end/src/lib/components/ui/item/item-title.svelte new file mode 100644 index 0000000..8d13d5e --- /dev/null +++ b/front-end/src/lib/components/ui/item/item-title.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/item/item.svelte b/front-end/src/lib/components/ui/item/item.svelte new file mode 100644 index 0000000..77f8ce6 --- /dev/null +++ b/front-end/src/lib/components/ui/item/item.svelte @@ -0,0 +1,60 @@ + + + + +{#if child} + {@render child({ props: mergedProps })} +{:else} +
      + {@render mergedProps.children?.()} +
      +{/if} diff --git a/front-end/src/lib/components/ui/label/index.ts b/front-end/src/lib/components/ui/label/index.ts new file mode 100644 index 0000000..8bfca0b --- /dev/null +++ b/front-end/src/lib/components/ui/label/index.ts @@ -0,0 +1,7 @@ +import Root from "./label.svelte"; + +export { + Root, + // + Root as Label, +}; diff --git a/front-end/src/lib/components/ui/label/label.svelte b/front-end/src/lib/components/ui/label/label.svelte new file mode 100644 index 0000000..d71afbc --- /dev/null +++ b/front-end/src/lib/components/ui/label/label.svelte @@ -0,0 +1,20 @@ + + + diff --git a/front-end/src/lib/components/ui/popover/index.ts b/front-end/src/lib/components/ui/popover/index.ts new file mode 100644 index 0000000..b79d12e --- /dev/null +++ b/front-end/src/lib/components/ui/popover/index.ts @@ -0,0 +1,19 @@ +import Root from "./popover.svelte"; +import Close from "./popover-close.svelte"; +import Content from "./popover-content.svelte"; +import Trigger from "./popover-trigger.svelte"; +import Portal from "./popover-portal.svelte"; + +export { + Root, + Content, + Trigger, + Close, + Portal, + // + Root as Popover, + Content as PopoverContent, + Trigger as PopoverTrigger, + Close as PopoverClose, + Portal as PopoverPortal, +}; diff --git a/front-end/src/lib/components/ui/popover/popover-close.svelte b/front-end/src/lib/components/ui/popover/popover-close.svelte new file mode 100644 index 0000000..c360925 --- /dev/null +++ b/front-end/src/lib/components/ui/popover/popover-close.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/popover/popover-content.svelte b/front-end/src/lib/components/ui/popover/popover-content.svelte new file mode 100644 index 0000000..3d79f3c --- /dev/null +++ b/front-end/src/lib/components/ui/popover/popover-content.svelte @@ -0,0 +1,31 @@ + + + + + diff --git a/front-end/src/lib/components/ui/popover/popover-portal.svelte b/front-end/src/lib/components/ui/popover/popover-portal.svelte new file mode 100644 index 0000000..dd8265f --- /dev/null +++ b/front-end/src/lib/components/ui/popover/popover-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/popover/popover-trigger.svelte b/front-end/src/lib/components/ui/popover/popover-trigger.svelte new file mode 100644 index 0000000..586323c --- /dev/null +++ b/front-end/src/lib/components/ui/popover/popover-trigger.svelte @@ -0,0 +1,17 @@ + + + diff --git a/front-end/src/lib/components/ui/popover/popover.svelte b/front-end/src/lib/components/ui/popover/popover.svelte new file mode 100644 index 0000000..6b1aa5f --- /dev/null +++ b/front-end/src/lib/components/ui/popover/popover.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/progress/index.ts b/front-end/src/lib/components/ui/progress/index.ts new file mode 100644 index 0000000..25eee61 --- /dev/null +++ b/front-end/src/lib/components/ui/progress/index.ts @@ -0,0 +1,7 @@ +import Root from "./progress.svelte"; + +export { + Root, + // + Root as Progress, +}; diff --git a/front-end/src/lib/components/ui/progress/progress.svelte b/front-end/src/lib/components/ui/progress/progress.svelte new file mode 100644 index 0000000..6833013 --- /dev/null +++ b/front-end/src/lib/components/ui/progress/progress.svelte @@ -0,0 +1,27 @@ + + + +
      +
      diff --git a/front-end/src/lib/components/ui/select/index.ts b/front-end/src/lib/components/ui/select/index.ts new file mode 100644 index 0000000..4dec358 --- /dev/null +++ b/front-end/src/lib/components/ui/select/index.ts @@ -0,0 +1,37 @@ +import Root from "./select.svelte"; +import Group from "./select-group.svelte"; +import Label from "./select-label.svelte"; +import Item from "./select-item.svelte"; +import Content from "./select-content.svelte"; +import Trigger from "./select-trigger.svelte"; +import Separator from "./select-separator.svelte"; +import ScrollDownButton from "./select-scroll-down-button.svelte"; +import ScrollUpButton from "./select-scroll-up-button.svelte"; +import GroupHeading from "./select-group-heading.svelte"; +import Portal from "./select-portal.svelte"; + +export { + Root, + Group, + Label, + Item, + Content, + Trigger, + Separator, + ScrollDownButton, + ScrollUpButton, + GroupHeading, + Portal, + // + Root as Select, + Group as SelectGroup, + Label as SelectLabel, + Item as SelectItem, + Content as SelectContent, + Trigger as SelectTrigger, + Separator as SelectSeparator, + ScrollDownButton as SelectScrollDownButton, + ScrollUpButton as SelectScrollUpButton, + GroupHeading as SelectGroupHeading, + Portal as SelectPortal, +}; diff --git a/front-end/src/lib/components/ui/select/select-content.svelte b/front-end/src/lib/components/ui/select/select-content.svelte new file mode 100644 index 0000000..4b9ca43 --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-content.svelte @@ -0,0 +1,45 @@ + + + + + + + {@render children?.()} + + + + diff --git a/front-end/src/lib/components/ui/select/select-group-heading.svelte b/front-end/src/lib/components/ui/select/select-group-heading.svelte new file mode 100644 index 0000000..1fab5f0 --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-group-heading.svelte @@ -0,0 +1,21 @@ + + + + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/select/select-group.svelte b/front-end/src/lib/components/ui/select/select-group.svelte new file mode 100644 index 0000000..a1f43bf --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-group.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/select/select-item.svelte b/front-end/src/lib/components/ui/select/select-item.svelte new file mode 100644 index 0000000..b85eef6 --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-item.svelte @@ -0,0 +1,38 @@ + + + + {#snippet children({ selected, highlighted })} + + {#if selected} + + {/if} + + {#if childrenProp} + {@render childrenProp({ selected, highlighted })} + {:else} + {label || value} + {/if} + {/snippet} + diff --git a/front-end/src/lib/components/ui/select/select-label.svelte b/front-end/src/lib/components/ui/select/select-label.svelte new file mode 100644 index 0000000..4696025 --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-label.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/select/select-portal.svelte b/front-end/src/lib/components/ui/select/select-portal.svelte new file mode 100644 index 0000000..424bcdd --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/select/select-scroll-down-button.svelte b/front-end/src/lib/components/ui/select/select-scroll-down-button.svelte new file mode 100644 index 0000000..3629205 --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-scroll-down-button.svelte @@ -0,0 +1,20 @@ + + + + + diff --git a/front-end/src/lib/components/ui/select/select-scroll-up-button.svelte b/front-end/src/lib/components/ui/select/select-scroll-up-button.svelte new file mode 100644 index 0000000..1aa2300 --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-scroll-up-button.svelte @@ -0,0 +1,20 @@ + + + + + diff --git a/front-end/src/lib/components/ui/select/select-separator.svelte b/front-end/src/lib/components/ui/select/select-separator.svelte new file mode 100644 index 0000000..0eac3eb --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-separator.svelte @@ -0,0 +1,18 @@ + + + diff --git a/front-end/src/lib/components/ui/select/select-trigger.svelte b/front-end/src/lib/components/ui/select/select-trigger.svelte new file mode 100644 index 0000000..dbb81df --- /dev/null +++ b/front-end/src/lib/components/ui/select/select-trigger.svelte @@ -0,0 +1,29 @@ + + + + {@render children?.()} + + diff --git a/front-end/src/lib/components/ui/select/select.svelte b/front-end/src/lib/components/ui/select/select.svelte new file mode 100644 index 0000000..05eb663 --- /dev/null +++ b/front-end/src/lib/components/ui/select/select.svelte @@ -0,0 +1,11 @@ + + + diff --git a/front-end/src/lib/components/ui/separator/index.ts b/front-end/src/lib/components/ui/separator/index.ts new file mode 100644 index 0000000..82442d2 --- /dev/null +++ b/front-end/src/lib/components/ui/separator/index.ts @@ -0,0 +1,7 @@ +import Root from "./separator.svelte"; + +export { + Root, + // + Root as Separator, +}; diff --git a/front-end/src/lib/components/ui/separator/separator.svelte b/front-end/src/lib/components/ui/separator/separator.svelte new file mode 100644 index 0000000..f40999f --- /dev/null +++ b/front-end/src/lib/components/ui/separator/separator.svelte @@ -0,0 +1,21 @@ + + + diff --git a/front-end/src/lib/components/ui/sheet/index.ts b/front-end/src/lib/components/ui/sheet/index.ts new file mode 100644 index 0000000..28d7da1 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/index.ts @@ -0,0 +1,34 @@ +import Root from "./sheet.svelte"; +import Portal from "./sheet-portal.svelte"; +import Trigger from "./sheet-trigger.svelte"; +import Close from "./sheet-close.svelte"; +import Overlay from "./sheet-overlay.svelte"; +import Content from "./sheet-content.svelte"; +import Header from "./sheet-header.svelte"; +import Footer from "./sheet-footer.svelte"; +import Title from "./sheet-title.svelte"; +import Description from "./sheet-description.svelte"; + +export { + Root, + Close, + Trigger, + Portal, + Overlay, + Content, + Header, + Footer, + Title, + Description, + // + Root as Sheet, + Close as SheetClose, + Trigger as SheetTrigger, + Portal as SheetPortal, + Overlay as SheetOverlay, + Content as SheetContent, + Header as SheetHeader, + Footer as SheetFooter, + Title as SheetTitle, + Description as SheetDescription, +}; diff --git a/front-end/src/lib/components/ui/sheet/sheet-close.svelte b/front-end/src/lib/components/ui/sheet/sheet-close.svelte new file mode 100644 index 0000000..ae382c1 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet-close.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/sheet/sheet-content.svelte b/front-end/src/lib/components/ui/sheet/sheet-content.svelte new file mode 100644 index 0000000..065fe04 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet-content.svelte @@ -0,0 +1,60 @@ + + + + + + + + {@render children?.()} + + + Close + + + diff --git a/front-end/src/lib/components/ui/sheet/sheet-description.svelte b/front-end/src/lib/components/ui/sheet/sheet-description.svelte new file mode 100644 index 0000000..333b17a --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet-description.svelte @@ -0,0 +1,17 @@ + + + diff --git a/front-end/src/lib/components/ui/sheet/sheet-footer.svelte b/front-end/src/lib/components/ui/sheet/sheet-footer.svelte new file mode 100644 index 0000000..dd9ed84 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet-footer.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sheet/sheet-header.svelte b/front-end/src/lib/components/ui/sheet/sheet-header.svelte new file mode 100644 index 0000000..757a6a5 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet-header.svelte @@ -0,0 +1,20 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sheet/sheet-overlay.svelte b/front-end/src/lib/components/ui/sheet/sheet-overlay.svelte new file mode 100644 index 0000000..345e197 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet-overlay.svelte @@ -0,0 +1,20 @@ + + + diff --git a/front-end/src/lib/components/ui/sheet/sheet-portal.svelte b/front-end/src/lib/components/ui/sheet/sheet-portal.svelte new file mode 100644 index 0000000..f3085a3 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/sheet/sheet-title.svelte b/front-end/src/lib/components/ui/sheet/sheet-title.svelte new file mode 100644 index 0000000..9fda327 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet-title.svelte @@ -0,0 +1,17 @@ + + + diff --git a/front-end/src/lib/components/ui/sheet/sheet-trigger.svelte b/front-end/src/lib/components/ui/sheet/sheet-trigger.svelte new file mode 100644 index 0000000..e266975 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/sheet/sheet.svelte b/front-end/src/lib/components/ui/sheet/sheet.svelte new file mode 100644 index 0000000..5bf9783 --- /dev/null +++ b/front-end/src/lib/components/ui/sheet/sheet.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/sidebar/constants.ts b/front-end/src/lib/components/ui/sidebar/constants.ts new file mode 100644 index 0000000..4de4435 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/constants.ts @@ -0,0 +1,6 @@ +export const SIDEBAR_COOKIE_NAME = "sidebar:state"; +export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7; +export const SIDEBAR_WIDTH = "16rem"; +export const SIDEBAR_WIDTH_MOBILE = "18rem"; +export const SIDEBAR_WIDTH_ICON = "3rem"; +export const SIDEBAR_KEYBOARD_SHORTCUT = "b"; diff --git a/front-end/src/lib/components/ui/sidebar/context.svelte.ts b/front-end/src/lib/components/ui/sidebar/context.svelte.ts new file mode 100644 index 0000000..15248ad --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/context.svelte.ts @@ -0,0 +1,81 @@ +import { IsMobile } from "$lib/hooks/is-mobile.svelte.js"; +import { getContext, setContext } from "svelte"; +import { SIDEBAR_KEYBOARD_SHORTCUT } from "./constants.js"; + +type Getter = () => T; + +export type SidebarStateProps = { + /** + * A getter function that returns the current open state of the sidebar. + * We use a getter function here to support `bind:open` on the `Sidebar.Provider` + * component. + */ + open: Getter; + + /** + * A function that sets the open state of the sidebar. To support `bind:open`, we need + * a source of truth for changing the open state to ensure it will be synced throughout + * the sub-components and any `bind:` references. + */ + setOpen: (open: boolean) => void; +}; + +class SidebarState { + readonly props: SidebarStateProps; + open = $derived.by(() => this.props.open()); + openMobile = $state(false); + setOpen: SidebarStateProps["setOpen"]; + #isMobile: IsMobile; + state = $derived.by(() => (this.open ? "expanded" : "collapsed")); + + constructor(props: SidebarStateProps) { + this.setOpen = props.setOpen; + this.#isMobile = new IsMobile(); + this.props = props; + } + + // Convenience getter for checking if the sidebar is mobile + // without this, we would need to use `sidebar.isMobile.current` everywhere + get isMobile() { + return this.#isMobile.current; + } + + // Event handler to apply to the `` + handleShortcutKeydown = (e: KeyboardEvent) => { + if (e.key === SIDEBAR_KEYBOARD_SHORTCUT && (e.metaKey || e.ctrlKey)) { + e.preventDefault(); + this.toggle(); + } + }; + + setOpenMobile = (value: boolean) => { + this.openMobile = value; + }; + + toggle = () => { + return this.#isMobile.current + ? (this.openMobile = !this.openMobile) + : this.setOpen(!this.open); + }; +} + +const SYMBOL_KEY = "scn-sidebar"; + +/** + * Instantiates a new `SidebarState` instance and sets it in the context. + * + * @param props The constructor props for the `SidebarState` class. + * @returns The `SidebarState` instance. + */ +export function setSidebar(props: SidebarStateProps): SidebarState { + return setContext(Symbol.for(SYMBOL_KEY), new SidebarState(props)); +} + +/** + * Retrieves the `SidebarState` instance from the context. This is a class instance, + * so you cannot destructure it. + * @returns The `SidebarState` instance. + */ +export function useSidebar(): SidebarState { + return getContext(Symbol.for(SYMBOL_KEY)); +} diff --git a/front-end/src/lib/components/ui/sidebar/index.ts b/front-end/src/lib/components/ui/sidebar/index.ts new file mode 100644 index 0000000..318a341 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/index.ts @@ -0,0 +1,75 @@ +import { useSidebar } from "./context.svelte.js"; +import Content from "./sidebar-content.svelte"; +import Footer from "./sidebar-footer.svelte"; +import GroupAction from "./sidebar-group-action.svelte"; +import GroupContent from "./sidebar-group-content.svelte"; +import GroupLabel from "./sidebar-group-label.svelte"; +import Group from "./sidebar-group.svelte"; +import Header from "./sidebar-header.svelte"; +import Input from "./sidebar-input.svelte"; +import Inset from "./sidebar-inset.svelte"; +import MenuAction from "./sidebar-menu-action.svelte"; +import MenuBadge from "./sidebar-menu-badge.svelte"; +import MenuButton from "./sidebar-menu-button.svelte"; +import MenuItem from "./sidebar-menu-item.svelte"; +import MenuSkeleton from "./sidebar-menu-skeleton.svelte"; +import MenuSubButton from "./sidebar-menu-sub-button.svelte"; +import MenuSubItem from "./sidebar-menu-sub-item.svelte"; +import MenuSub from "./sidebar-menu-sub.svelte"; +import Menu from "./sidebar-menu.svelte"; +import Provider from "./sidebar-provider.svelte"; +import Rail from "./sidebar-rail.svelte"; +import Separator from "./sidebar-separator.svelte"; +import Trigger from "./sidebar-trigger.svelte"; +import Root from "./sidebar.svelte"; + +export { + Content, + Footer, + Group, + GroupAction, + GroupContent, + GroupLabel, + Header, + Input, + Inset, + Menu, + MenuAction, + MenuBadge, + MenuButton, + MenuItem, + MenuSkeleton, + MenuSub, + MenuSubButton, + MenuSubItem, + Provider, + Rail, + Root, + Separator, + // + Root as Sidebar, + Content as SidebarContent, + Footer as SidebarFooter, + Group as SidebarGroup, + GroupAction as SidebarGroupAction, + GroupContent as SidebarGroupContent, + GroupLabel as SidebarGroupLabel, + Header as SidebarHeader, + Input as SidebarInput, + Inset as SidebarInset, + Menu as SidebarMenu, + MenuAction as SidebarMenuAction, + MenuBadge as SidebarMenuBadge, + MenuButton as SidebarMenuButton, + MenuItem as SidebarMenuItem, + MenuSkeleton as SidebarMenuSkeleton, + MenuSub as SidebarMenuSub, + MenuSubButton as SidebarMenuSubButton, + MenuSubItem as SidebarMenuSubItem, + Provider as SidebarProvider, + Rail as SidebarRail, + Separator as SidebarSeparator, + Trigger as SidebarTrigger, + Trigger, + useSidebar, +}; diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-content.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-content.svelte new file mode 100644 index 0000000..f121800 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-content.svelte @@ -0,0 +1,24 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-footer.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-footer.svelte new file mode 100644 index 0000000..6259cb9 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-footer.svelte @@ -0,0 +1,21 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-group-action.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-group-action.svelte new file mode 100644 index 0000000..a76dfe1 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-group-action.svelte @@ -0,0 +1,36 @@ + + +{#if child} + {@render child({ props: mergedProps })} +{:else} + +{/if} diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-group-content.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-group-content.svelte new file mode 100644 index 0000000..415255f --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-group-content.svelte @@ -0,0 +1,21 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-group-label.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-group-label.svelte new file mode 100644 index 0000000..b2e72b6 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-group-label.svelte @@ -0,0 +1,34 @@ + + +{#if child} + {@render child({ props: mergedProps })} +{:else} +
      + {@render children?.()} +
      +{/if} diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-group.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-group.svelte new file mode 100644 index 0000000..ec18a69 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-group.svelte @@ -0,0 +1,21 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-header.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-header.svelte new file mode 100644 index 0000000..a1b2db1 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-header.svelte @@ -0,0 +1,21 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-input.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-input.svelte new file mode 100644 index 0000000..19b3666 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-input.svelte @@ -0,0 +1,21 @@ + + + diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-inset.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-inset.svelte new file mode 100644 index 0000000..7d6d459 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-inset.svelte @@ -0,0 +1,24 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-menu-action.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-menu-action.svelte new file mode 100644 index 0000000..d3fe295 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-menu-action.svelte @@ -0,0 +1,43 @@ + + +{#if child} + {@render child({ props: mergedProps })} +{:else} + +{/if} diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-menu-badge.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-menu-badge.svelte new file mode 100644 index 0000000..e8ecdb4 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-menu-badge.svelte @@ -0,0 +1,29 @@ + + +
      + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-menu-button.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-menu-button.svelte new file mode 100644 index 0000000..0acd1ec --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-menu-button.svelte @@ -0,0 +1,103 @@ + + + + +{#snippet Button({ props }: { props?: Record })} + {@const mergedProps = mergeProps(buttonProps, props)} + {#if child} + {@render child({ props: mergedProps })} + {:else} + + {/if} +{/snippet} + +{#if !tooltipContent} + {@render Button({})} +{:else} + + + {#snippet child({ props })} + {@render Button({ props })} + {/snippet} + + + +{/if} diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-menu-item.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-menu-item.svelte new file mode 100644 index 0000000..4db4453 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-menu-item.svelte @@ -0,0 +1,21 @@ + + +
    3. + {@render children?.()} +
    4. diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-menu-skeleton.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-menu-skeleton.svelte new file mode 100644 index 0000000..68604e2 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-menu-skeleton.svelte @@ -0,0 +1,36 @@ + + +
      + {#if showIcon} + + {/if} + + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-menu-sub-button.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-menu-sub-button.svelte new file mode 100644 index 0000000..c8cd4ff --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-menu-sub-button.svelte @@ -0,0 +1,43 @@ + + +{#if child} + {@render child({ props: mergedProps })} +{:else} + + {@render children?.()} + +{/if} diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-menu-sub-item.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-menu-sub-item.svelte new file mode 100644 index 0000000..681d0f1 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-menu-sub-item.svelte @@ -0,0 +1,21 @@ + + +
    5. + {@render children?.()} +
    6. diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-menu-sub.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-menu-sub.svelte new file mode 100644 index 0000000..76bd1d9 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-menu-sub.svelte @@ -0,0 +1,25 @@ + + +
        + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-menu.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-menu.svelte new file mode 100644 index 0000000..946ccce --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-menu.svelte @@ -0,0 +1,21 @@ + + +
        + {@render children?.()} +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-provider.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-provider.svelte new file mode 100644 index 0000000..5b0d0aa --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-provider.svelte @@ -0,0 +1,53 @@ + + + + + +
      + {@render children?.()} +
      +
      diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-rail.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-rail.svelte new file mode 100644 index 0000000..704d54f --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-rail.svelte @@ -0,0 +1,36 @@ + + + diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-separator.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-separator.svelte new file mode 100644 index 0000000..5a7deda --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-separator.svelte @@ -0,0 +1,19 @@ + + + diff --git a/front-end/src/lib/components/ui/sidebar/sidebar-trigger.svelte b/front-end/src/lib/components/ui/sidebar/sidebar-trigger.svelte new file mode 100644 index 0000000..1825182 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar-trigger.svelte @@ -0,0 +1,35 @@ + + + diff --git a/front-end/src/lib/components/ui/sidebar/sidebar.svelte b/front-end/src/lib/components/ui/sidebar/sidebar.svelte new file mode 100644 index 0000000..bac55d8 --- /dev/null +++ b/front-end/src/lib/components/ui/sidebar/sidebar.svelte @@ -0,0 +1,104 @@ + + +{#if collapsible === "none"} +
      + {@render children?.()} +
      +{:else if sidebar.isMobile} + sidebar.openMobile, (v) => sidebar.setOpenMobile(v)} + {...restProps} + > + + + Sidebar + Displays the mobile sidebar. + +
      + {@render children?.()} +
      +
      +
      +{:else} + +{/if} diff --git a/front-end/src/lib/components/ui/skeleton/index.ts b/front-end/src/lib/components/ui/skeleton/index.ts new file mode 100644 index 0000000..186db21 --- /dev/null +++ b/front-end/src/lib/components/ui/skeleton/index.ts @@ -0,0 +1,7 @@ +import Root from "./skeleton.svelte"; + +export { + Root, + // + Root as Skeleton, +}; diff --git a/front-end/src/lib/components/ui/skeleton/skeleton.svelte b/front-end/src/lib/components/ui/skeleton/skeleton.svelte new file mode 100644 index 0000000..c7e3d26 --- /dev/null +++ b/front-end/src/lib/components/ui/skeleton/skeleton.svelte @@ -0,0 +1,17 @@ + + +
      diff --git a/front-end/src/lib/components/ui/sonner/index.ts b/front-end/src/lib/components/ui/sonner/index.ts new file mode 100644 index 0000000..1ad9f4a --- /dev/null +++ b/front-end/src/lib/components/ui/sonner/index.ts @@ -0,0 +1 @@ +export { default as Toaster } from "./sonner.svelte"; diff --git a/front-end/src/lib/components/ui/sonner/sonner.svelte b/front-end/src/lib/components/ui/sonner/sonner.svelte new file mode 100644 index 0000000..08a1865 --- /dev/null +++ b/front-end/src/lib/components/ui/sonner/sonner.svelte @@ -0,0 +1,34 @@ + + +{#snippet loadingIcon()} + + {/snippet} + {#snippet successIcon()} + + {/snippet} + {#snippet errorIcon()} + + {/snippet} + {#snippet infoIcon()} + + {/snippet} + {#snippet warningIcon()} + + {/snippet} + diff --git a/front-end/src/lib/components/ui/spinner/index.ts b/front-end/src/lib/components/ui/spinner/index.ts new file mode 100644 index 0000000..f8b1ced --- /dev/null +++ b/front-end/src/lib/components/ui/spinner/index.ts @@ -0,0 +1 @@ +export { default as Spinner } from "./spinner.svelte"; diff --git a/front-end/src/lib/components/ui/spinner/spinner.svelte b/front-end/src/lib/components/ui/spinner/spinner.svelte new file mode 100644 index 0000000..9b12131 --- /dev/null +++ b/front-end/src/lib/components/ui/spinner/spinner.svelte @@ -0,0 +1,14 @@ + + + diff --git a/front-end/src/lib/components/ui/switch/index.ts b/front-end/src/lib/components/ui/switch/index.ts new file mode 100644 index 0000000..f5533db --- /dev/null +++ b/front-end/src/lib/components/ui/switch/index.ts @@ -0,0 +1,7 @@ +import Root from "./switch.svelte"; + +export { + Root, + // + Root as Switch, +}; diff --git a/front-end/src/lib/components/ui/switch/switch.svelte b/front-end/src/lib/components/ui/switch/switch.svelte new file mode 100644 index 0000000..80661fd --- /dev/null +++ b/front-end/src/lib/components/ui/switch/switch.svelte @@ -0,0 +1,29 @@ + + + + + diff --git a/front-end/src/lib/components/ui/table/index.ts b/front-end/src/lib/components/ui/table/index.ts new file mode 100644 index 0000000..14695c8 --- /dev/null +++ b/front-end/src/lib/components/ui/table/index.ts @@ -0,0 +1,28 @@ +import Root from "./table.svelte"; +import Body from "./table-body.svelte"; +import Caption from "./table-caption.svelte"; +import Cell from "./table-cell.svelte"; +import Footer from "./table-footer.svelte"; +import Head from "./table-head.svelte"; +import Header from "./table-header.svelte"; +import Row from "./table-row.svelte"; + +export { + Root, + Body, + Caption, + Cell, + Footer, + Head, + Header, + Row, + // + Root as Table, + Body as TableBody, + Caption as TableCaption, + Cell as TableCell, + Footer as TableFooter, + Head as TableHead, + Header as TableHeader, + Row as TableRow, +}; diff --git a/front-end/src/lib/components/ui/table/table-body.svelte b/front-end/src/lib/components/ui/table/table-body.svelte new file mode 100644 index 0000000..29e9687 --- /dev/null +++ b/front-end/src/lib/components/ui/table/table-body.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/table/table-caption.svelte b/front-end/src/lib/components/ui/table/table-caption.svelte new file mode 100644 index 0000000..4696cff --- /dev/null +++ b/front-end/src/lib/components/ui/table/table-caption.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/table/table-cell.svelte b/front-end/src/lib/components/ui/table/table-cell.svelte new file mode 100644 index 0000000..2c0c26a --- /dev/null +++ b/front-end/src/lib/components/ui/table/table-cell.svelte @@ -0,0 +1,23 @@ + + + + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/table/table-footer.svelte b/front-end/src/lib/components/ui/table/table-footer.svelte new file mode 100644 index 0000000..b9b14eb --- /dev/null +++ b/front-end/src/lib/components/ui/table/table-footer.svelte @@ -0,0 +1,20 @@ + + +tr]:last:border-b-0", className)} + {...restProps} +> + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/table/table-head.svelte b/front-end/src/lib/components/ui/table/table-head.svelte new file mode 100644 index 0000000..b67a6f9 --- /dev/null +++ b/front-end/src/lib/components/ui/table/table-head.svelte @@ -0,0 +1,23 @@ + + + + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/table/table-header.svelte b/front-end/src/lib/components/ui/table/table-header.svelte new file mode 100644 index 0000000..f47d259 --- /dev/null +++ b/front-end/src/lib/components/ui/table/table-header.svelte @@ -0,0 +1,20 @@ + + + + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/table/table-row.svelte b/front-end/src/lib/components/ui/table/table-row.svelte new file mode 100644 index 0000000..0df769e --- /dev/null +++ b/front-end/src/lib/components/ui/table/table-row.svelte @@ -0,0 +1,23 @@ + + +svelte-css-wrapper]:[&>th,td]:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", + className + )} + {...restProps} +> + {@render children?.()} + diff --git a/front-end/src/lib/components/ui/table/table.svelte b/front-end/src/lib/components/ui/table/table.svelte new file mode 100644 index 0000000..a334956 --- /dev/null +++ b/front-end/src/lib/components/ui/table/table.svelte @@ -0,0 +1,22 @@ + + +
      + + {@render children?.()} +
      +
      diff --git a/front-end/src/lib/components/ui/textarea/index.ts b/front-end/src/lib/components/ui/textarea/index.ts new file mode 100644 index 0000000..ace797a --- /dev/null +++ b/front-end/src/lib/components/ui/textarea/index.ts @@ -0,0 +1,7 @@ +import Root from "./textarea.svelte"; + +export { + Root, + // + Root as Textarea, +}; diff --git a/front-end/src/lib/components/ui/textarea/textarea.svelte b/front-end/src/lib/components/ui/textarea/textarea.svelte new file mode 100644 index 0000000..124e9d0 --- /dev/null +++ b/front-end/src/lib/components/ui/textarea/textarea.svelte @@ -0,0 +1,23 @@ + + + diff --git a/front-end/src/lib/components/ui/tooltip/index.ts b/front-end/src/lib/components/ui/tooltip/index.ts new file mode 100644 index 0000000..1718604 --- /dev/null +++ b/front-end/src/lib/components/ui/tooltip/index.ts @@ -0,0 +1,19 @@ +import Root from "./tooltip.svelte"; +import Trigger from "./tooltip-trigger.svelte"; +import Content from "./tooltip-content.svelte"; +import Provider from "./tooltip-provider.svelte"; +import Portal from "./tooltip-portal.svelte"; + +export { + Root, + Trigger, + Content, + Provider, + Portal, + // + Root as Tooltip, + Content as TooltipContent, + Trigger as TooltipTrigger, + Provider as TooltipProvider, + Portal as TooltipPortal, +}; diff --git a/front-end/src/lib/components/ui/tooltip/tooltip-content.svelte b/front-end/src/lib/components/ui/tooltip/tooltip-content.svelte new file mode 100644 index 0000000..2662522 --- /dev/null +++ b/front-end/src/lib/components/ui/tooltip/tooltip-content.svelte @@ -0,0 +1,52 @@ + + + + + {@render children?.()} + + {#snippet child({ props })} +
      + {/snippet} +
      +
      +
      diff --git a/front-end/src/lib/components/ui/tooltip/tooltip-portal.svelte b/front-end/src/lib/components/ui/tooltip/tooltip-portal.svelte new file mode 100644 index 0000000..d234f7d --- /dev/null +++ b/front-end/src/lib/components/ui/tooltip/tooltip-portal.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/tooltip/tooltip-provider.svelte b/front-end/src/lib/components/ui/tooltip/tooltip-provider.svelte new file mode 100644 index 0000000..8150bef --- /dev/null +++ b/front-end/src/lib/components/ui/tooltip/tooltip-provider.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/tooltip/tooltip-trigger.svelte b/front-end/src/lib/components/ui/tooltip/tooltip-trigger.svelte new file mode 100644 index 0000000..1acdaa4 --- /dev/null +++ b/front-end/src/lib/components/ui/tooltip/tooltip-trigger.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/components/ui/tooltip/tooltip.svelte b/front-end/src/lib/components/ui/tooltip/tooltip.svelte new file mode 100644 index 0000000..0b0f9ce --- /dev/null +++ b/front-end/src/lib/components/ui/tooltip/tooltip.svelte @@ -0,0 +1,7 @@ + + + diff --git a/front-end/src/lib/composables/asset.svelte b/front-end/src/lib/composables/asset.svelte new file mode 100644 index 0000000..2f94ccd --- /dev/null +++ b/front-end/src/lib/composables/asset.svelte @@ -0,0 +1,194 @@ + + + +
      { + if ((e.target! as HTMLElement).closest("[data-stats]")) return + + window.dispatchEvent(new CustomEvent("ViewMedia", { + detail: asset + })) + }} + class="asset-container" data-cover={asset.optimized_poster_img_url} data-media={asset.optimized_asset_url} +> + + +
      + +
      + + {@render reactionsDropdown( + asset.stats.likeCountAllTime, + asset.stats.laughCountAllTime, + asset.stats.heartCountAllTime, + asset.stats.cryCountAllTime, + asset.stats.commentCountAllTime, + asset.stats.collectedCountAllTime + )} + +
      + + +
      +
      +
      +
      + +{#snippet reactionsDropdown(like: number, laugh: number, heart: number, cry: number, comment: number, collected: number)} + + + {#snippet child({ props })} + + {/snippet} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{/snippet} + + \ No newline at end of file diff --git a/front-end/src/lib/composables/assetLoader.ts b/front-end/src/lib/composables/assetLoader.ts new file mode 100644 index 0000000..b9e55c3 --- /dev/null +++ b/front-end/src/lib/composables/assetLoader.ts @@ -0,0 +1,75 @@ +export default function init_observer(settings: {rootMargin: number, target: HTMLElement, attributes: boolean, childList: boolean, subtree: boolean}) { + const config = { attributes: true, childList: true, subtree: true }; + + const observer = new MutationObserver(onMansonaryMutation); + + const intObsvConfig = new IntersectionObserver( + (entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + const target = entry.target as HTMLElement; + + target.appendChild(createMedia(target)) + } else { + entry.target.querySelector("video")?.remove() + } + }); + }, + { + root: null, + threshold: 0, + rootMargin: `${settings.rootMargin}px`, + } + ); + + function onMansonaryMutation(mutationList: MutationRecord[], observer: MutationObserver) { + mutationList.forEach((mut) => { + if(mut.addedNodes.length < 1) return; + + mut.addedNodes.forEach((node) => { + if (node.nodeName.startsWith("#")) return + + const assetContainer = (node as HTMLElement).querySelector("[data-asset-container]") + + if (!assetContainer) return + + intObsvConfig.observe(assetContainer); + }) + }) + } + + observer.observe(settings.target, config); +} + + + + + +export function createMedia(asset: HTMLElement) { + const src = asset.getAttribute("data-media")! + + const videoElement = document.createElement("video") + videoElement.loop = true; + videoElement.autoplay = false; + videoElement.muted = true; + videoElement.poster = asset.getAttribute("data-cover")! + videoElement.disablePictureInPicture = true + videoElement.disableRemotePlayback = true + + const sourceWebm = document.createElement("source") + sourceWebm.src = `${src}.webm` + sourceWebm.type = "video/webm" + + const sourceMp4 = document.createElement("source") + sourceMp4.src = `${src}.mp4` + sourceMp4.type = "video/mp4" + + videoElement.appendChild(sourceWebm) + videoElement.appendChild(sourceMp4) + + videoElement.addEventListener("pointerenter", () => { + videoElement.play() + }, {once: true}) + + return videoElement +} \ No newline at end of file diff --git a/front-end/src/lib/composables/asset_preview/preview.svelte b/front-end/src/lib/composables/asset_preview/preview.svelte new file mode 100644 index 0000000..7a95440 --- /dev/null +++ b/front-end/src/lib/composables/asset_preview/preview.svelte @@ -0,0 +1,285 @@ + + + +
      + +
      +
      +
      + +
      +
      + {@render quickActions()} + {#if gen_data} + {@render proccess()} + {/if} + + {#if gen_data} + {@render generation_data()} + {/if} +
      +
      +
      +
      +
      +
      + + + +{#snippet quickActions()} + + +
      + + + + + {#if hasComfyData} + + {/if} + + + + + +
      +
      + +
      +{/snippet} + +{#snippet proccess()} + {#if gen_data.tools.length > 0 || gen_data.techniques.length > 0} + + +
      +
      + +

      Proccess

      +
      + + {#if gen_data.tools.length > 0} +
      +

      Tools

      +
      + {#each gen_data.tools as tools} + {tools.name} + {/each} +
      +
      + {/if} + + + {#if gen_data.techniques.length > 0} +
      +

      Techniques

      +
      + {#each gen_data.techniques as techni} + {techni.name} + {/each} +
      +
      + {/if} +
      +
      + +
      + {/if} +{/snippet} + +{#snippet generation_data()} + + +
      +
      + +

      Generation data

      +
      + + {#if gen_data.resources.length > 0} +
      +

      Resources used

      +
      + {#each gen_data.resources as resource} + +
      {resource.modelName}
      + {resource.modelType} +
      + {/each} +
      +
      + {/if} + + {#if gen_data.meta?.prompt || gen_data.meta?.negativePrompt} +
      + + {#if gen_data.meta.prompt} + + Prompt + +

      {gen_data.meta.prompt}

      +
      +
      + {/if} + + {#if gen_data.meta.negativePrompt} + + Negative prompt + +

      {gen_data.meta.negativePrompt}

      +
      +
      + {/if} +
      +
      + {/if} +
      +
      + +
      +{/snippet} diff --git a/front-end/src/lib/composables/collections_manager.svelte b/front-end/src/lib/composables/collections_manager.svelte new file mode 100644 index 0000000..7c3c6a4 --- /dev/null +++ b/front-end/src/lib/composables/collections_manager.svelte @@ -0,0 +1,207 @@ + + + + + + Manage Collections + + {#if !isCreatingCollection} +
      +
      + Select which collections to add or remove +
      +
      + +
      +
      + {:else} +
      +
      + Create a new collection +
      +
      + +
      +
      + {/if} + +
      +
      +
      + {#if isLoading && !isCreatingCollection} +
      + +

      Loading

      +
      + {:else if !isCreatingCollection} +
      + {#each collections as collection} +
      + coll.collectionId === collection.id) ? true : false} value={collection.id} id="coll-item-{collection.id}" /> + +
      + {/each} +
      + {/if} + + {#if isCreatingCollection} +
      + +