diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index a252d01..0000000 --- a/.drone.yml +++ /dev/null @@ -1,18 +0,0 @@ -kind: pipeline -name: web -type: docker - -steps: - - name: deploy web - image: node:alpine - environment: - IS_PROD: true - TOKEN: - from_secret: VERCEL_TOKEN - when: - branch: - - main - commands: - - npm install -g vercel@latest - - cd web - - /bin/sh deploy.sh diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index 25c5513..0000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: "publish" -on: - push: - branches: - - release - -jobs: - publish-tauri: - permissions: - contents: write - strategy: - fail-fast: false - matrix: - platform: [macos-latest, ubuntu-20.04, windows-latest] - - runs-on: ${{ matrix.platform }} - - defaults: - run: - working-directory: app - - steps: - - uses: actions/checkout@v3 - - name: setup node - uses: actions/setup-node@v3 - with: - node-version: 16 - - name: install Rust stable - uses: dtolnay/rust-toolchain@stable - - name: install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-20.04' - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - - name: setup .npmrc - run: mv .npmrc.githubactions .npmrc - - name: install frontend dependencies - run: yarn install # change this to npm or pnpm depending on which one you use - env: - UNOM_PACKAGES_TOKEN: ${{ secrets.UNOM_PACKAGES_TOKEN }} - - uses: tauri-apps/tauri-action@v0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - UNOM_PACKAGES_TOKEN: ${{ secrets.UNOM_PACKAGES_TOKEN }} - with: - tagName: app-v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version - releaseName: "App v__VERSION__" - releaseBody: "See the assets to download this version and install." - releaseDraft: true - prerelease: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 23b691d..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: "test-on-pr" -on: [pull_request] - -jobs: - test-app: - strategy: - fail-fast: false - matrix: - platform: [macos-latest, ubuntu-20.04, windows-latest] - - runs-on: ${{ matrix.platform }} - - defaults: - run: - working-directory: app - - steps: - - uses: actions/checkout@v3 - - name: setup node - uses: actions/setup-node@v3 - with: - node-version: 16 - - name: install Rust stable - uses: dtolnay/rust-toolchain@stable - - name: install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-20.04' - run: | - sudo apt-get update - sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf - - name: setup .npmrc - run: mv .npmrc.githubactions .npmrc - - name: install frontend dependencies - run: yarn install # change this to npm or pnpm depending on which one you use - env: - UNOM_PACKAGES_TOKEN: ${{ secrets.UNOM_PACKAGES_TOKEN }} - - uses: tauri-apps/tauri-action@v0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - UNOM_PACKAGES_TOKEN: ${{ secrets.UNOM_PACKAGES_TOKEN }} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e43b0f9..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.DS_Store diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 9bdd5e7..0000000 --- a/LICENSE.md +++ /dev/null @@ -1,7 +0,0 @@ -Copyright 2023 Enrico Bühler - -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/app/.gitignore b/app/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/app/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/app/.npmrc.githubactions b/app/.npmrc.githubactions deleted file mode 100644 index e05150c..0000000 --- a/app/.npmrc.githubactions +++ /dev/null @@ -1,4 +0,0 @@ -//packages.unom.io/:_authToken=${UNOM_PACKAGES_TOKEN} -registry=https://registry.npmjs.org/ -@tempblade:registry=https://packages.unom.io -@unom:registry=https://packages.unom.io \ No newline at end of file diff --git a/app/.vscode/extensions.json b/app/.vscode/extensions.json deleted file mode 100644 index b864f8c..0000000 --- a/app/.vscode/extensions.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "recommendations": [ - "tauri-apps.tauri-vscode", - "rust-lang.rust-analyzer" - ] -} \ No newline at end of file diff --git a/app/.yarn/install-state.gz b/app/.yarn/install-state.gz deleted file mode 100644 index b244af4..0000000 Binary files a/app/.yarn/install-state.gz and /dev/null differ diff --git a/app/.yarnrc.yml b/app/.yarnrc.yml deleted file mode 100644 index 3186f3f..0000000 --- a/app/.yarnrc.yml +++ /dev/null @@ -1 +0,0 @@ -nodeLinker: node-modules diff --git a/app/README.md b/app/README.md deleted file mode 100644 index 25789e2..0000000 --- a/app/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# tempblade Creator - -This is the directory containing the application. It uses tauri with react/vite. - -## Commands - -Start the dev server: -```yarn tauri dev``` - -Create a production build: -```yarn tauri build``` diff --git a/app/app-icon.png b/app/app-icon.png deleted file mode 100644 index 3fa0ef7..0000000 Binary files a/app/app-icon.png and /dev/null differ diff --git a/app/index.html b/app/index.html deleted file mode 100644 index 2abef64..0000000 --- a/app/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - tempblade Creator - - - -
- - - - \ No newline at end of file diff --git a/app/package.json b/app/package.json deleted file mode 100644 index d3e6694..0000000 --- a/app/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "app", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "preview": "vite preview", - "tauri": "tauri" - }, - "dependencies": { - "@radix-ui/colors": "^0.1.8", - "@radix-ui/react-form": "^0.0.2", - "@radix-ui/react-icons": "^1.3.0", - "@radix-ui/react-menubar": "^1.0.2", - "@radix-ui/react-popover": "^1.0.6", - "@radix-ui/react-scroll-area": "^1.0.4", - "@radix-ui/react-select": "^1.2.2", - "@radix-ui/react-slider": "^1.1.1", - "@radix-ui/react-toggle-group": "^1.0.4", - "@radix-ui/react-toolbar": "^1.0.3", - "@tauri-apps/api": "^1.3.0", - "@tempblade/common": "^2.0.1", - "@types/d3-array": "^3.0.5", - "@types/lodash.set": "^4.3.7", - "@unom/style": "^0.2.14", - "@visx/axis": "^3.1.0", - "@visx/event": "^3.0.1", - "@visx/glyph": "^3.0.0", - "@visx/gradient": "^3.0.0", - "@visx/grid": "^3.0.1", - "@visx/group": "^3.0.0", - "@visx/responsive": "^3.0.0", - "@visx/scale": "^3.0.0", - "@visx/shape": "^3.0.0", - "@visx/tooltip": "^3.1.2", - "canvaskit-wasm": "^0.38.1", - "class-variance-authority": "^0.6.0", - "clsx": "^1.2.1", - "framer-motion": "^10.12.12", - "immer": "^10.0.2", - "lodash.set": "^4.3.2", - "lucide-react": "^0.229.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "tailwind-merge": "^1.12.0", - "tailwindcss-animate": "^1.0.5", - "uuid": "^9.0.0", - "zod": "^3.21.4", - "zustand": "^4.3.8" - }, - "devDependencies": { - "@tauri-apps/cli": "^1.3.0", - "@types/node": "^18.7.10", - "@types/react": "^18.0.15", - "@types/react-dom": "^18.0.6", - "@types/uuid": "^9", - "@vitejs/plugin-react": "^3.0.0", - "autoprefixer": "^10.4.14", - "postcss": "^8.4.23", - "tailwindcss": "^3.3.2", - "typescript": "^4.9.5", - "vite": "^4.2.1", - "vite-tsconfig-paths": "^4.2.0" - } -} diff --git a/app/postcss.config.js b/app/postcss.config.js deleted file mode 100644 index 2e7af2b..0000000 --- a/app/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/app/public/canvaskit.wasm b/app/public/canvaskit.wasm deleted file mode 100644 index 3f92994..0000000 Binary files a/app/public/canvaskit.wasm and /dev/null differ diff --git a/app/public/tauri.svg b/app/public/tauri.svg deleted file mode 100644 index 31b62c9..0000000 --- a/app/public/tauri.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/app/public/vite.svg b/app/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/app/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/src-tauri/.gitignore b/app/src-tauri/.gitignore deleted file mode 100644 index f4dfb82..0000000 --- a/app/src-tauri/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -# Generated by Cargo -# will have compiled files and executables -/target/ - diff --git a/app/src-tauri/Cargo.lock b/app/src-tauri/Cargo.lock deleted file mode 100644 index 8e3fb19..0000000 --- a/app/src-tauri/Cargo.lock +++ /dev/null @@ -1,4061 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[package]] -name = "aho-corasick" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" -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 = "anyhow" -version = "1.0.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" - -[[package]] -name = "atk" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" -dependencies = [ - "atk-sys", - "bitflags", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps 6.1.0", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "brotli" -version = "3.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "2.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bstr" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d4260bcc2e8fc9df1eac4919a720effeb63a3f0952f5bf4944adfa18897f09" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6ed94e98ecff0c12dd1b04c15ec0d7d9458ca8fe806cea6f12954efe74c63b" - -[[package]] -name = "bytemuck" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" - -[[package]] -name = "cairo-rs" -version = "0.15.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" -dependencies = [ - "bitflags", - "cairo-sys-rs", - "glib", - "libc", - "thiserror", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" -dependencies = [ - "glib-sys", - "libc", - "system-deps 6.1.0", -] - -[[package]] -name = "cargo_toml" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f83bc2e401ed041b7057345ebc488c005efa0341d5541ce7004d30458d0090b" -dependencies = [ - "serde", - "toml 0.7.3", -] - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfb" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" -dependencies = [ - "byteorder", - "fnv", - "uuid", -] - -[[package]] -name = "cfg-expr" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" -dependencies = [ - "smallvec", -] - -[[package]] -name = "cfg-expr" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8790cf1286da485c72cf5fc7aeba308438800036ec67d89425924c4807268c9" -dependencies = [ - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b" -dependencies = [ - "iana-time-zone", - "num-integer", - "num-traits", - "serde", - "winapi", -] - -[[package]] -name = "cmake" -version = "0.1.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" -dependencies = [ - "cc", -] - -[[package]] -name = "cocoa" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" -dependencies = [ - "bitflags", - "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "cocoa-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6" -dependencies = [ - "bitflags", - "block", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - -[[package]] -name = "color_quant" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" - -[[package]] -name = "combine" -version = "4.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "const-cstr" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3d0b5ff30645a68f35ece8cea4556ca14ef8a1651455f789a099a0513532a6" - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "core-graphics" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" -dependencies = [ - "bitflags", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" -dependencies = [ - "bitflags", - "core-foundation", - "foreign-types", - "libc", -] - -[[package]] -name = "core-text" -version = "19.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" -dependencies = [ - "core-foundation", - "core-graphics", - "foreign-types", - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c1eaa2012c47becbbad2ab175484c2a84d1185b566fb2cc5b8707343dfe58" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "creator_rs" -version = "0.1.0" -dependencies = [ - "font-kit", - "rayon", - "serde", - "serde_json", - "simple-easing", - "tauri", - "uuid", - "wasm-bindgen", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "memoffset 0.9.0", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cssparser" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa 0.4.8", - "matches", - "phf 0.8.0", - "proc-macro2", - "quote", - "smallvec", - "syn 1.0.109", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "cty" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" - -[[package]] -name = "cxx" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61f1b6389c3fe1c316bf8a4dccc90a38208354b330925bce1f74a6c4756eb93" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cee708e8962df2aeb38f594aae5d827c022b6460ac71a7a3e2c3c2aae5a07b" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn 2.0.16", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7944172ae7e4068c533afbb984114a56c46e9ccddda550499caa222902c7f7bb" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.94" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2345488264226bf682893e25de0769f3360aac9957980ec49361b083ddaa5bc5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "darling" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.16", -] - -[[package]] -name = "darling_macro" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.0", - "syn 1.0.109", -] - -[[package]] -name = "digest" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - -[[package]] -name = "dlib" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" -dependencies = [ - "libloading", -] - -[[package]] -name = "dtoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" - -[[package]] -name = "dtoa-short" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" -dependencies = [ - "dtoa", -] - -[[package]] -name = "dunce" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" - -[[package]] -name = "dwrote" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" -dependencies = [ - "lazy_static 1.4.0", - "libc", - "winapi", - "wio", -] - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[package]] -name = "embed-resource" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80663502655af01a2902dff3f06869330782267924bf1788410b74edcd93770a" -dependencies = [ - "cc", - "rustc_version 0.4.0", - "toml 0.7.3", - "vswhom", - "winreg", -] - -[[package]] -name = "embed_plist" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" - -[[package]] -name = "encoding_rs" -version = "0.8.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fdeflate" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "field-offset" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3cf3a800ff6e860c863ca6d4b16fd999db8b752819c1606884047b73e468535" -dependencies = [ - "memoffset 0.8.0", - "rustc_version 0.4.0", -] - -[[package]] -name = "filetime" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.2.16", - "windows-sys 0.48.0", -] - -[[package]] -name = "flate2" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "float-ord" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bad48618fdb549078c333a7a8528acb57af271d0433bdecd523eb620628364e" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "font-kit" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21fe28504d371085fae9ac7a3450f0b289ab71e07c8e57baa3fb68b9e57d6ce5" -dependencies = [ - "bitflags", - "byteorder", - "core-foundation", - "core-graphics", - "core-text", - "dirs-next", - "dwrote", - "float-ord", - "freetype", - "lazy_static 1.4.0", - "libc", - "log", - "pathfinder_geometry", - "pathfinder_simd", - "walkdir", - "winapi", - "yeslogic-fontconfig-sys", -] - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "freetype" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee38378a9e3db1cc693b4f88d166ae375338a0ff75cb8263e1c601d51f35dc6" -dependencies = [ - "freetype-sys", - "libc", -] - -[[package]] -name = "freetype-sys" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" -dependencies = [ - "cmake", - "libc", - "pkg-config", -] - -[[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-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-executor" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-macro" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-core", - "futures-macro", - "futures-task", - "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 = "gdk" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" -dependencies = [ - "bitflags", - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" -dependencies = [ - "bitflags", - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps 6.1.0", -] - -[[package]] -name = "gdk-sys" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", - "system-deps 6.1.0", -] - -[[package]] -name = "gdkwayland-sys" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" -dependencies = [ - "gdk-sys", - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", - "system-deps 6.1.0", -] - -[[package]] -name = "gdkx11-sys" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" -dependencies = [ - "gdk-sys", - "glib-sys", - "libc", - "system-deps 6.1.0", - "x11", -] - -[[package]] -name = "generator" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e123d9ae7c02966b4d892e550bdc32164f05853cd40ab570650ad600596a8a" -dependencies = [ - "cc", - "libc", - "log", - "rustversion", - "windows 0.48.0", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gio" -version = "0.15.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" -dependencies = [ - "bitflags", - "futures-channel", - "futures-core", - "futures-io", - "gio-sys", - "glib", - "libc", - "once_cell", - "thiserror", -] - -[[package]] -name = "gio-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps 6.1.0", - "winapi", -] - -[[package]] -name = "glib" -version = "0.15.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" -dependencies = [ - "bitflags", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "once_cell", - "smallvec", - "thiserror", -] - -[[package]] -name = "glib-macros" -version = "0.15.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" -dependencies = [ - "anyhow", - "heck 0.4.1", - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "glib-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" -dependencies = [ - "libc", - "system-deps 6.1.0", -] - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "globset" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" -dependencies = [ - "aho-corasick 0.7.20", - "bstr", - "fnv", - "log", - "regex", -] - -[[package]] -name = "gobject-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" -dependencies = [ - "glib-sys", - "libc", - "system-deps 6.1.0", -] - -[[package]] -name = "gtk" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" -dependencies = [ - "atk", - "bitflags", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk-sys", - "gtk3-macros", - "libc", - "once_cell", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "system-deps 6.1.0", -] - -[[package]] -name = "gtk3-macros" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" -dependencies = [ - "anyhow", - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "html5ever" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes", - "fnv", - "itoa 1.0.6", -] - -[[package]] -name = "http-range" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" - -[[package]] -name = "iana-time-zone" -version = "0.1.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0722cd7114b7de04316e7ea5456a0bbb20e4adb46fd27a3697adb812cff0f37c" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows 0.48.0", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" -dependencies = [ - "cxx", - "cxx-build", -] - -[[package]] -name = "ico" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" -dependencies = [ - "byteorder", - "png", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "ignore" -version = "0.4.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" -dependencies = [ - "crossbeam-utils", - "globset", - "lazy_static 1.4.0", - "log", - "memchr", - "regex", - "same-file", - "thread_local", - "walkdir", - "winapi-util", -] - -[[package]] -name = "image" -version = "0.24.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" -dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "num-rational", - "num-traits", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown", - "serde", -] - -[[package]] -name = "infer" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a898e4b7951673fce96614ce5751d13c40fc5674bc2d759288e46c3ab62598b3" -dependencies = [ - "cfb", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" - -[[package]] -name = "javascriptcore-rs" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" -dependencies = [ - "bitflags", - "glib", - "javascriptcore-rs-sys", -] - -[[package]] -name = "javascriptcore-rs-sys" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps 5.0.0", -] - -[[package]] -name = "jni" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" -dependencies = [ - "cesu8", - "combine", - "jni-sys", - "log", - "thiserror", - "walkdir", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - -[[package]] -name = "js-sys" -version = "0.3.62" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68c16e1bfd491478ab155fd8b4896b86f9ede344949b641e61501e07c2b8b4d5" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f54898088ccb91df1b492cc80029a6fdf1c48ca0db7c6822a8babad69c94658" -dependencies = [ - "serde", - "serde_json", - "thiserror", - "treediff", -] - -[[package]] -name = "kuchiki" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" -dependencies = [ - "cssparser", - "html5ever", - "matches", - "selectors", -] - -[[package]] -name = "lazy_static" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.144" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1" - -[[package]] -name = "libloading" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "line-wrap" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" -dependencies = [ - "safemem", -] - -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - -[[package]] -name = "linux-raw-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ece97ea872ece730aed82664c424eb4c8291e1ff2480247ccf7409044bc6479f" - -[[package]] -name = "lock_api" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "logging_timer" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e96f261d684b7089aa576bb74e823241dccd994b27d30fabf1dcb3af284fe9" -dependencies = [ - "log", - "logging_timer_proc_macros", -] - -[[package]] -name = "logging_timer_proc_macros" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a9062912d7952c5588cc474795e0b9ee008e7e6781127945b85413d4b99d81" -dependencies = [ - "log", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "loom" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "serde", - "serde_json", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - -[[package]] -name = "markup5ever" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" -dependencies = [ - "log", - "phf 0.8.0", - "phf_codegen", - "string_cache", - "string_cache_codegen", - "tendril", -] - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memoffset" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" -dependencies = [ - "autocfg", -] - -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", - "simd-adler32", -] - -[[package]] -name = "ndk" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" -dependencies = [ - "bitflags", - "jni-sys", - "ndk-sys", - "num_enum", - "thiserror", -] - -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - -[[package]] -name = "ndk-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" -dependencies = [ - "jni-sys", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -dependencies = [ - "hermit-abi 0.2.6", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "num_threads" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" -dependencies = [ - "libc", -] - -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", - "objc_exception", -] - -[[package]] -name = "objc-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" -dependencies = [ - "block", - "objc", - "objc_id", -] - -[[package]] -name = "objc_exception" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" -dependencies = [ - "cc", -] - -[[package]] -name = "objc_id" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" -dependencies = [ - "objc", -] - -[[package]] -name = "once_cell" -version = "1.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - -[[package]] -name = "open" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" -dependencies = [ - "pathdiff", - "windows-sys 0.42.0", -] - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "pango" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" -dependencies = [ - "bitflags", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps 6.1.0", -] - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "windows-sys 0.45.0", -] - -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - -[[package]] -name = "pathfinder_geometry" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b7e7b4ea703700ce73ebf128e1450eb69c3a8329199ffbfb9b2a0418e5ad3" -dependencies = [ - "log", - "pathfinder_simd", -] - -[[package]] -name = "pathfinder_simd" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39fe46acc5503595e5949c17b818714d26fdf9b4920eacf3b2947f0199f4a6ff" -dependencies = [ - "rustc_version 0.3.3", -] - -[[package]] -name = "percent-encoding" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" - -[[package]] -name = "pest" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73935e4d55e2abf7f130186537b19e7a4abc886a0252380b59248af473a3fc9" -dependencies = [ - "thiserror", - "ucd-trie", -] - -[[package]] -name = "phf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" -dependencies = [ - "phf_macros 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", -] - -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_macros 0.10.0", - "phf_shared 0.10.0", - "proc-macro-hack", -] - -[[package]] -name = "phf_codegen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", -] - -[[package]] -name = "phf_generator" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" -dependencies = [ - "phf_shared 0.8.0", - "rand 0.7.3", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared 0.10.0", - "rand 0.8.5", -] - -[[package]] -name = "phf_macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_macros" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_shared" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - -[[package]] -name = "plist" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd9647b268a3d3e14ff09c23201133a62589c658db02bb7388c7246aafe0590" -dependencies = [ - "base64 0.21.0", - "indexmap", - "line-wrap", - "quick-xml", - "serde", - "time", -] - -[[package]] -name = "png" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa" -dependencies = [ - "bitflags", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - -[[package]] -name = "proc-macro2" -version = "1.0.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quick-xml" -version = "0.28.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", - "rand_pcg", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.9", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "raw-window-handle" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" -dependencies = [ - "cty", -] - -[[package]] -name = "rayon" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom 0.2.9", - "redox_syscall 0.2.16", - "thiserror", -] - -[[package]] -name = "regex" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af83e617f331cc6ae2da5443c602dfa5af81e517212d9d611a5b3ba1777b5370" -dependencies = [ - "aho-corasick 1.0.1", - "memchr", - "regex-syntax 0.7.1", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5996294f19bd3aae0453a862ad728f60e6600695733dd5df01da90c54363a3c" - -[[package]] -name = "rfd" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" -dependencies = [ - "block", - "dispatch", - "glib-sys", - "gobject-sys", - "gtk-sys", - "js-sys", - "lazy_static 1.4.0", - "log", - "objc", - "objc-foundation", - "objc_id", - "raw-window-handle", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows 0.37.0", -] - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver 1.0.17", -] - -[[package]] -name = "rustix" -version = "0.37.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acf8729d8542766f1b2cf77eb034d52f40d375bb8b615d0b147089946e16613d" -dependencies = [ - "bitflags", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustversion" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" - -[[package]] -name = "ryu" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" - -[[package]] -name = "safemem" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" - -[[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 = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "scratch" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" - -[[package]] -name = "selectors" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" -dependencies = [ - "bitflags", - "cssparser", - "derive_more", - "fxhash", - "log", - "matches", - "phf 0.8.0", - "phf_codegen", - "precomputed-hash", - "servo_arc", - "smallvec", - "thin-slice", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" -dependencies = [ - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.163" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2113ab51b87a539ae008b5c6c02dc020ffa39afd2d83cffcb3f4eb2722cebec2" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.163" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c805777e3930c8883389c602315a24224bcc738b63905ef87cd1420353ea93e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "serde_json" -version = "1.0.96" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" -dependencies = [ - "itoa 1.0.6", - "ryu", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "serde_spanned" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0efd8caf556a6cebd3b285caf480045fcc1ac04f6bd786b09a6f11af30c4fcf4" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_with" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02d8aa6e3c385bf084924f660ce2a3a6bd333ba55b35e8590b321f35d88513" -dependencies = [ - "base64 0.21.0", - "chrono", - "hex", - "indexmap", - "serde", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc7d5d3932fb12ce722ee5e64dd38c504efba37567f0c402f6ca728c3b8b070" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "serialize-to-javascript" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] - -[[package]] -name = "serialize-to-javascript-impl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "servo_arc" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" -dependencies = [ - "nodrop", - "stable_deref_trait", -] - -[[package]] -name = "sha2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static 1.4.0", -] - -[[package]] -name = "simd-adler32" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" - -[[package]] -name = "simple-easing" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "832ddd7df0d98d6fd93b973c330b7c8e0742d5cb8f1afc7dea89dba4d2531aa1" - -[[package]] -name = "siphasher" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" - -[[package]] -name = "slab" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "soup2" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" -dependencies = [ - "bitflags", - "gio", - "glib", - "libc", - "once_cell", - "soup2-sys", -] - -[[package]] -name = "soup2-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" -dependencies = [ - "bitflags", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps 5.0.0", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "state" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" -dependencies = [ - "loom", -] - -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro2", - "quote", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "system-deps" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" -dependencies = [ - "cfg-expr 0.9.1", - "heck 0.3.3", - "pkg-config", - "toml 0.5.11", - "version-compare 0.0.11", -] - -[[package]] -name = "system-deps" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5fa6fb9ee296c0dc2df41a656ca7948546d061958115ddb0bcaae43ad0d17d2" -dependencies = [ - "cfg-expr 0.15.1", - "heck 0.4.1", - "pkg-config", - "toml 0.7.3", - "version-compare 0.1.1", -] - -[[package]] -name = "tao" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd3cde9c0cd2b872616bba26b818e0d6469330196869d7e5000dba96ce9431df" -dependencies = [ - "bitflags", - "cairo-rs", - "cc", - "cocoa", - "core-foundation", - "core-graphics", - "crossbeam-channel", - "dispatch", - "gdk", - "gdk-pixbuf", - "gdk-sys", - "gdkwayland-sys", - "gdkx11-sys", - "gio", - "glib", - "glib-sys", - "gtk", - "image", - "instant", - "jni", - "lazy_static 1.4.0", - "libc", - "log", - "ndk", - "ndk-context", - "ndk-sys", - "objc", - "once_cell", - "parking_lot", - "png", - "raw-window-handle", - "scopeguard", - "serde", - "tao-macros", - "unicode-segmentation", - "uuid", - "windows 0.39.0", - "windows-implement", - "x11-dl", -] - -[[package]] -name = "tao-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b27a4bcc5eb524658234589bdffc7e7bfb996dbae6ce9393bfd39cb4159b445" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tar" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "target-lexicon" -version = "0.12.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd1ba337640d60c3e96bc6f0638a939b9c9a7f2c316a1598c279828b3d1dc8c5" - -[[package]] -name = "tauri" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbe522898e35407a8e60dc3870f7579fea2fc262a6a6072eccdd37ae1e1d91e" -dependencies = [ - "anyhow", - "cocoa", - "dirs-next", - "embed_plist", - "encoding_rs", - "flate2", - "futures-util", - "glib", - "glob", - "gtk", - "heck 0.4.1", - "http", - "ignore", - "objc", - "once_cell", - "open", - "percent-encoding", - "rand 0.8.5", - "raw-window-handle", - "regex", - "rfd", - "semver 1.0.17", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "state", - "tar", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "tempfile", - "thiserror", - "tokio", - "url", - "uuid", - "webkit2gtk", - "webview2-com", - "windows 0.39.0", -] - -[[package]] -name = "tauri-build" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d2edd6a259b5591c8efdeb9d5702cb53515b82a6affebd55c7fd6d3a27b7d1b" -dependencies = [ - "anyhow", - "cargo_toml", - "heck 0.4.1", - "json-patch", - "semver 1.0.17", - "serde", - "serde_json", - "tauri-utils", - "tauri-winres", -] - -[[package]] -name = "tauri-codegen" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ad2d49fdeab4a08717f5b49a163bdc72efc3b1950b6758245fcde79b645e1a" -dependencies = [ - "base64 0.21.0", - "brotli", - "ico", - "json-patch", - "plist", - "png", - "proc-macro2", - "quote", - "regex", - "semver 1.0.17", - "serde", - "serde_json", - "sha2", - "tauri-utils", - "thiserror", - "time", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb12a2454e747896929338d93b0642144bb51e0dddbb36e579035731f0d76b7" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 1.0.109", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-runtime" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "108683199cb18f96d2d4134187bb789964143c845d2d154848dda209191fd769" -dependencies = [ - "gtk", - "http", - "http-range", - "rand 0.8.5", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror", - "url", - "uuid", - "webview2-com", - "windows 0.39.0", -] - -[[package]] -name = "tauri-runtime-wry" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7aa256a1407a3a091b5d843eccc1a5042289baf0a43d1179d9f0fcfea37c1b" -dependencies = [ - "cocoa", - "gtk", - "percent-encoding", - "rand 0.8.5", - "raw-window-handle", - "tauri-runtime", - "tauri-utils", - "uuid", - "webkit2gtk", - "webview2-com", - "windows 0.39.0", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fc02bb6072bb397e1d473c6f76c953cda48b4a2d0cce605df284aa74a12e84" -dependencies = [ - "brotli", - "ctor", - "dunce", - "glob", - "heck 0.4.1", - "html5ever", - "infer", - "json-patch", - "kuchiki", - "memchr", - "phf 0.10.1", - "proc-macro2", - "quote", - "semver 1.0.17", - "serde", - "serde_json", - "serde_with", - "thiserror", - "url", - "walkdir", - "windows 0.39.0", -] - -[[package]] -name = "tauri-winres" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" -dependencies = [ - "embed-resource", - "toml 0.7.3", -] - -[[package]] -name = "tempblade-creator-app" -version = "0.0.0" -dependencies = [ - "creator_rs", - "logging_timer", - "serde", - "serde_json", - "tauri", - "tauri-build", - "tint", -] - -[[package]] -name = "tempfile" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" -dependencies = [ - "cfg-if", - "fastrand", - "redox_syscall 0.3.5", - "rustix", - "windows-sys 0.45.0", -] - -[[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 = "termcolor" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thin-slice" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" - -[[package]] -name = "thiserror" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" -dependencies = [ - "itoa 1.0.6", - "libc", - "num_threads", - "serde", -] - -[[package]] -name = "tint" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7af24570664a3074673dbbf69a65bdae0ae0b72f2949b1adfbacb736ee4d6896" -dependencies = [ - "lazy_static 0.2.11", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -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.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa32867d44e6f2ce3385e89dceb990188b8bb0fb25b0cf576647a6f98ac5105" -dependencies = [ - "autocfg", - "bytes", - "num_cpus", - "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b403acf6f2bb0859c93c7f0d967cb4a75a7ac552100f9322faf64dc047669b21" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "tracing-core" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static 1.4.0", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "treediff" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" -dependencies = [ - "serde_json", -] - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "ucd-trie" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - -[[package]] -name = "unicode-ident" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "url" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "uuid" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345444e32442451b267fc254ae85a209c64be56d2890e601a0c37ff0c3c5ecd2" -dependencies = [ - "getrandom 0.2.9", - "uuid-macro-internal", - "wasm-bindgen", -] - -[[package]] -name = "uuid-macro-internal" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8614dda80b9075fbca36bc31b58d1447715b1236af98dee21db521c47a0cc2c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "version-compare" -version = "0.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" - -[[package]] -name = "version-compare" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "vswhom" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" -dependencies = [ - "libc", - "vswhom-sys", -] - -[[package]] -name = "vswhom-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "walkdir" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b6cb788c4e39112fbe1822277ef6fb3c55cd86b95cb3d3c4c1c9597e4ac74b4" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e522ed4105a9d626d885b35d62501b30d9666283a5c8be12c14a8bdafe7822" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.16", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "083abe15c5d88556b77bdf7aef403625be9e327ad37c62c4e4129af740168163" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "358a79a0cb89d21db8120cbfb91392335913e4890665b1a7981d9e956903b434" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4783ce29f09b9d93134d41297aded3a712b7b979e9c6f28c32cb88c973a94869" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.16", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.85" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a901d592cafaa4d711bc324edfaff879ac700b19c3dfd60058d2b445be2691eb" - -[[package]] -name = "web-sys" -version = "0.3.62" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b5f940c7edfdc6d12126d98c9ef4d1b3d470011c47c76a6581df47ad9ba721" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webkit2gtk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" -dependencies = [ - "bitflags", - "cairo-rs", - "gdk", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "gtk", - "gtk-sys", - "javascriptcore-rs", - "libc", - "once_cell", - "soup2", - "webkit2gtk-sys", -] - -[[package]] -name = "webkit2gtk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" -dependencies = [ - "atk-sys", - "bitflags", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "gtk-sys", - "javascriptcore-rs-sys", - "libc", - "pango-sys", - "pkg-config", - "soup2-sys", - "system-deps 6.1.0", -] - -[[package]] -name = "webview2-com" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" -dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows 0.39.0", - "windows-implement", -] - -[[package]] -name = "webview2-com-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "webview2-com-sys" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" -dependencies = [ - "regex", - "serde", - "serde_json", - "thiserror", - "windows 0.39.0", - "windows-bindgen", - "windows-metadata", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" -dependencies = [ - "windows_aarch64_msvc 0.37.0", - "windows_i686_gnu 0.37.0", - "windows_i686_msvc 0.37.0", - "windows_x86_64_gnu 0.37.0", - "windows_x86_64_msvc 0.37.0", -] - -[[package]] -name = "windows" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" -dependencies = [ - "windows-implement", - "windows_aarch64_msvc 0.39.0", - "windows_i686_gnu 0.39.0", - "windows_i686_msvc 0.39.0", - "windows_x86_64_gnu 0.39.0", - "windows_x86_64_msvc 0.39.0", -] - -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-bindgen" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" -dependencies = [ - "windows-metadata", - "windows-tokens", -] - -[[package]] -name = "windows-implement" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" -dependencies = [ - "syn 1.0.109", - "windows-tokens", -] - -[[package]] -name = "windows-metadata" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" -dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", -] - -[[package]] -name = "windows-tokens" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" - -[[package]] -name = "windows_i686_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" - -[[package]] -name = "windows_i686_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - -[[package]] -name = "winnow" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a1a57ff50e9b408431e8f97d5456f2807f8eb2a2cd79b06068fc87f8ecf189" -dependencies = [ - "cfg-if", - "winapi", -] - -[[package]] -name = "wio" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" -dependencies = [ - "winapi", -] - -[[package]] -name = "wry" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33748f35413c8a98d45f7a08832d848c0c5915501803d1faade5a4ebcd258cea" -dependencies = [ - "base64 0.13.1", - "block", - "cocoa", - "core-graphics", - "crossbeam-channel", - "dunce", - "gdk", - "gio", - "glib", - "gtk", - "html5ever", - "http", - "kuchiki", - "libc", - "log", - "objc", - "objc_id", - "once_cell", - "serde", - "serde_json", - "sha2", - "soup2", - "tao", - "thiserror", - "url", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows 0.39.0", - "windows-implement", -] - -[[package]] -name = "x11" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" -dependencies = [ - "libc", - "pkg-config", -] - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "xattr" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" -dependencies = [ - "libc", -] - -[[package]] -name = "yeslogic-fontconfig-sys" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bbd69036d397ebbff671b1b8e4d918610c181c5a16073b96f984a38d08c386" -dependencies = [ - "const-cstr", - "dlib", - "once_cell", - "pkg-config", -] diff --git a/app/src-tauri/Cargo.toml b/app/src-tauri/Cargo.toml deleted file mode 100644 index e5a71f2..0000000 --- a/app/src-tauri/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "tempblade-creator-app" -version = "0.0.0" -description = "An open motion design tool written in rust" -authors = ["enricobuehler"] -license = "BSD 3-Clause" -repository = "https://git.unom.io/tempblade/creator" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[build-dependencies] -tauri-build = { version = "1.4", features = [] } - - -[dependencies] -creator_core = { path = "../../lib/creator_rs", features = [ - "fonts", - "parallelization", - "tauri", -], version = "*", package = "creator_rs" } -tauri = { version = "1.4", features = ["dialog-open", "dialog-save", "shell-open"] } -serde = { version = "1.0", features = ["derive", "rc"] } -serde_json = "1.0" -tint = "1.0.0" -logging_timer = "1.1.0" - -[features] -# this feature is used for production builds or when `devPath` points to the filesystem -# DO NOT REMOVE!! -custom-protocol = ["tauri/custom-protocol"] diff --git a/app/src-tauri/build.rs b/app/src-tauri/build.rs deleted file mode 100644 index 795b9b7..0000000 --- a/app/src-tauri/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build() -} diff --git a/app/src-tauri/icons/128x128.png b/app/src-tauri/icons/128x128.png deleted file mode 100644 index 8d0dd67..0000000 Binary files a/app/src-tauri/icons/128x128.png and /dev/null differ diff --git a/app/src-tauri/icons/128x128@2x.png b/app/src-tauri/icons/128x128@2x.png deleted file mode 100644 index 283d004..0000000 Binary files a/app/src-tauri/icons/128x128@2x.png and /dev/null differ diff --git a/app/src-tauri/icons/32x32.png b/app/src-tauri/icons/32x32.png deleted file mode 100644 index 2e7f186..0000000 Binary files a/app/src-tauri/icons/32x32.png and /dev/null differ diff --git a/app/src-tauri/icons/Square107x107Logo.png b/app/src-tauri/icons/Square107x107Logo.png deleted file mode 100644 index 069045e..0000000 Binary files a/app/src-tauri/icons/Square107x107Logo.png and /dev/null differ diff --git a/app/src-tauri/icons/Square142x142Logo.png b/app/src-tauri/icons/Square142x142Logo.png deleted file mode 100644 index dcecda4..0000000 Binary files a/app/src-tauri/icons/Square142x142Logo.png and /dev/null differ diff --git a/app/src-tauri/icons/Square150x150Logo.png b/app/src-tauri/icons/Square150x150Logo.png deleted file mode 100644 index 42ed661..0000000 Binary files a/app/src-tauri/icons/Square150x150Logo.png and /dev/null differ diff --git a/app/src-tauri/icons/Square284x284Logo.png b/app/src-tauri/icons/Square284x284Logo.png deleted file mode 100644 index 3bfb930..0000000 Binary files a/app/src-tauri/icons/Square284x284Logo.png and /dev/null differ diff --git a/app/src-tauri/icons/Square30x30Logo.png b/app/src-tauri/icons/Square30x30Logo.png deleted file mode 100644 index f25cfc4..0000000 Binary files a/app/src-tauri/icons/Square30x30Logo.png and /dev/null differ diff --git a/app/src-tauri/icons/Square310x310Logo.png b/app/src-tauri/icons/Square310x310Logo.png deleted file mode 100644 index bd2d209..0000000 Binary files a/app/src-tauri/icons/Square310x310Logo.png and /dev/null differ diff --git a/app/src-tauri/icons/Square44x44Logo.png b/app/src-tauri/icons/Square44x44Logo.png deleted file mode 100644 index 7291761..0000000 Binary files a/app/src-tauri/icons/Square44x44Logo.png and /dev/null differ diff --git a/app/src-tauri/icons/Square71x71Logo.png b/app/src-tauri/icons/Square71x71Logo.png deleted file mode 100644 index 8355891..0000000 Binary files a/app/src-tauri/icons/Square71x71Logo.png and /dev/null differ diff --git a/app/src-tauri/icons/Square89x89Logo.png b/app/src-tauri/icons/Square89x89Logo.png deleted file mode 100644 index 87c7e13..0000000 Binary files a/app/src-tauri/icons/Square89x89Logo.png and /dev/null differ diff --git a/app/src-tauri/icons/StoreLogo.png b/app/src-tauri/icons/StoreLogo.png deleted file mode 100644 index f6e8e5b..0000000 Binary files a/app/src-tauri/icons/StoreLogo.png and /dev/null differ diff --git a/app/src-tauri/icons/icon.icns b/app/src-tauri/icons/icon.icns deleted file mode 100644 index 0fdba38..0000000 Binary files a/app/src-tauri/icons/icon.icns and /dev/null differ diff --git a/app/src-tauri/icons/icon.ico b/app/src-tauri/icons/icon.ico deleted file mode 100644 index c3fef03..0000000 Binary files a/app/src-tauri/icons/icon.ico and /dev/null differ diff --git a/app/src-tauri/icons/icon.png b/app/src-tauri/icons/icon.png deleted file mode 100644 index f8260b1..0000000 Binary files a/app/src-tauri/icons/icon.png and /dev/null differ diff --git a/app/src-tauri/src/main.rs b/app/src-tauri/src/main.rs deleted file mode 100644 index 60894e8..0000000 --- a/app/src-tauri/src/main.rs +++ /dev/null @@ -1,33 +0,0 @@ -// Prevents additional console window on Windows in release, DO NOT REMOVE!! -#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] - -use creator_core::{ - __cmd__calculate_timeline_at_curr_frame, __cmd__get_system_families, __cmd__get_system_font, - __cmd__get_system_fonts, __cmd__get_values_at_frame_range_from_animated_float, - __cmd__get_values_at_frame_range_from_animated_float_vec2, - __cmd__get_values_at_frame_range_from_animated_float_vec3, - animation::{ - primitives::values::animated_values::{ - get_values_at_frame_range_from_animated_float, - get_values_at_frame_range_from_animated_float_vec2, - get_values_at_frame_range_from_animated_float_vec3, - }, - timeline::calculate_timeline_at_curr_frame, - }, - fonts::fonts::{get_system_families, get_system_font, get_system_fonts}, -}; - -fn main() { - tauri::Builder::default() - .invoke_handler(tauri::generate_handler![ - calculate_timeline_at_curr_frame, - get_system_font, - get_system_families, - get_system_fonts, - get_values_at_frame_range_from_animated_float, - get_values_at_frame_range_from_animated_float_vec2, - get_values_at_frame_range_from_animated_float_vec3 - ]) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} diff --git a/app/src-tauri/tauri.conf.json b/app/src-tauri/tauri.conf.json deleted file mode 100644 index 4ae1b5e..0000000 --- a/app/src-tauri/tauri.conf.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "build": { - "beforeDevCommand": "yarn dev", - "beforeBuildCommand": "yarn build", - "devPath": "http://localhost:1420", - "distDir": "../dist", - "withGlobalTauri": false - }, - "package": { - "productName": "tempblade Creator", - "version": "0.1.0" - }, - "tauri": { - "allowlist": { - "all": false, - "dialog": { - "open": true, - "save": true - }, - "shell": { - "all": false, - "open": true - } - }, - "bundle": { - "active": true, - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "identifier": "com.tempblade.creator", - "targets": "all" - }, - "security": { - "csp": null - }, - "updater": { - "active": false - }, - "windows": [ - { - "fullscreen": false, - "resizable": true, - "title": "tempblade Creator", - "width": 1300, - "height": 900 - } - ] - } -} \ No newline at end of file diff --git a/app/src/App.css b/app/src/App.css deleted file mode 100644 index a89ebd1..0000000 --- a/app/src/App.css +++ /dev/null @@ -1,7 +0,0 @@ -.logo.vite:hover { - filter: drop-shadow(0 0 2em #747bff); -} - -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafb); -} diff --git a/app/src/App.tsx b/app/src/App.tsx deleted file mode 100644 index 3a3852f..0000000 --- a/app/src/App.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import "./App.css"; -import Timeline from "./components/Timeline"; -import Canvas from "./components/Canvas"; -import Properties, { PropertiesContainer } from "components/Properties"; -import ToolBar from "components/ToolBar"; -import useKeyControls from "hooks/useKeyControls"; -import { useFontsStore } from "stores/fonts.store"; -import * as ScrollArea from "@radix-ui/react-scroll-area"; -import ScrollBar from "components/ScrollArea"; - -export default function App() { - const fontsStoreDidInit = useFontsStore((store) => store.didInit); - - useKeyControls(); - - return ( -
- {/* */} -
- - {fontsStoreDidInit && ( - - -
-
- - - - -
- -
-
- -
- )} -
-
- ); -} diff --git a/app/src/components/Canvas/index.tsx b/app/src/components/Canvas/index.tsx deleted file mode 100644 index 92df8ec..0000000 --- a/app/src/components/Canvas/index.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import { FC, useMemo } from "react"; -import { useEffect, useRef, useState } from "react"; -import { PlaybackService } from "services/playback.service"; - -type CanvasProps = {}; - -const CanvasComponent: FC = () => { - const canvas = useRef(null); - const [didInit, setDidInit] = useState(false); - - const playbackService = useMemo(() => new PlaybackService(), []); - - useEffect(() => { - if (canvas.current && !didInit) { - playbackService - .init(canvas.current) - .then(() => { - setDidInit(true); - }) - .catch((e) => console.error(e)); - } - }, []); - - return ( -
- -
- ); -}; - -export default CanvasComponent; diff --git a/app/src/components/Inputs/FloatInput.tsx b/app/src/components/Inputs/FloatInput.tsx deleted file mode 100644 index 7c7eba3..0000000 --- a/app/src/components/Inputs/FloatInput.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { useCallback, useState } from "react"; -import { z } from "zod"; - -type FloatInputProps = { - value: number; - onChange: (value: number) => void; - id: string; -}; - -const FloatInput: React.FC = ({ value, onChange, id }) => { - const [inputValue, setInputValue] = useState(value.toString()); - - const handleInputChange = useCallback( - (e: React.ChangeEvent) => { - const val = e.target.value.replace(",", "."); - setInputValue(val); - - const nextValue = z.coerce.number().min(-9999).max(9999).safeParse(val); - - if (nextValue.success) { - onChange(nextValue.data); - } - }, - [setInputValue, onChange] - ); - - return ; -}; - -export default FloatInput; diff --git a/app/src/components/Inputs/Select.tsx b/app/src/components/Inputs/Select.tsx deleted file mode 100644 index 7aea662..0000000 --- a/app/src/components/Inputs/Select.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import * as React from "react"; -import * as SelectPrimitive from "@radix-ui/react-select"; -import { Check, ChevronDown } from "lucide-react"; - -import { cn } from "utils"; - -const Select = SelectPrimitive.Root; - -const SelectGroup = SelectPrimitive.Group; - -const SelectValue = SelectPrimitive.Value; - -const SelectTrigger = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - {children} - - - - -)); -SelectTrigger.displayName = SelectPrimitive.Trigger.displayName; - -const SelectContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, position = "popper", ...props }, ref) => ( - - - - {children} - - - -)); -SelectContent.displayName = SelectPrimitive.Content.displayName; - -const SelectLabel = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -SelectLabel.displayName = SelectPrimitive.Label.displayName; - -const SelectItem = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - - - - - {children} - -)); -SelectItem.displayName = SelectPrimitive.Item.displayName; - -const SelectSeparator = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -SelectSeparator.displayName = SelectPrimitive.Separator.displayName; - -export { - Select, - SelectGroup, - SelectValue, - SelectTrigger, - SelectContent, - SelectLabel, - SelectItem, - SelectSeparator, -}; diff --git a/app/src/components/Loading.tsx b/app/src/components/Loading.tsx deleted file mode 100644 index 3247a14..0000000 --- a/app/src/components/Loading.tsx +++ /dev/null @@ -1,9 +0,0 @@ -const Loading = () => { - return ( -
-

Lädt Skia...

-
- ); -}; - -export default Loading; diff --git a/app/src/components/MenuBar/index.tsx b/app/src/components/MenuBar/index.tsx deleted file mode 100644 index bc81eb8..0000000 --- a/app/src/components/MenuBar/index.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import { FC } from "react"; -import * as Menubar from "@radix-ui/react-menubar"; -import { ChevronRightIcon } from "@radix-ui/react-icons"; -import { open, save } from "@tauri-apps/api/dialog"; - -const MenuBarTrigger: FC<{ label: string }> = ({ label }) => { - return ( - - {label} - - ); -}; - -const MenuBarSubTrigger: FC<{ label: string }> = ({ label }) => { - return ( - - {label} -
- -
-
- ); -}; - -const MenuBarItem: FC<{ label: string; onClick?: () => void }> = ({ - label, - onClick, -}) => { - return ( - - {label} - - ); -}; - -const MenuBarSeperator = () => { - return ; -}; - -const MenuBar = () => { - const menuBarContentClassName = - "min-w-[220px] bg-gray-800 rounded-md p-[5px]"; - - const menuBarSubContentClassName = - "min-w-[220px] bg-gray-800 rounded-md p-[5px]"; - - return ( - - - - - - - open({ multiple: false })} - label="Open File" - /> - - save({ - title: "Save Project", - defaultPath: "project.tbcp", - }).then((val) => { - console.log(val); - }) - } - label="Save" - /> - save()} label="Save as" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ); -}; - -export default MenuBar; diff --git a/app/src/components/Panel.tsx b/app/src/components/Panel.tsx deleted file mode 100644 index 037e8fd..0000000 --- a/app/src/components/Panel.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { FC, ReactNode } from "react"; - -const Panel: FC<{ title: string; children: ReactNode }> = ({ - title, - children, -}) => { - return ( -
-

{title}

-
{children}
-
- ); -}; - -export default Panel; diff --git a/app/src/components/Popover.tsx b/app/src/components/Popover.tsx deleted file mode 100644 index 6aacdd7..0000000 --- a/app/src/components/Popover.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import * as React from "react"; -import * as PopoverPrimitive from "@radix-ui/react-popover"; -import { cn } from "utils"; -import { Cross2Icon } from "@radix-ui/react-icons"; - -const Popover = PopoverPrimitive.Root; - -const PopoverTrigger = PopoverPrimitive.Trigger; - -const PopoverArrow = PopoverPrimitive.Arrow; - -const PopoverClose: React.FC<{ onClick?: () => void }> = ({ onClick }) => ( - - - -); - -const PopoverContent = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, align = "center", sideOffset = 4, ...props }, ref) => ( - - - -)); -PopoverContent.displayName = PopoverPrimitive.Content.displayName; - -export { Popover, PopoverTrigger, PopoverClose, PopoverContent, PopoverArrow }; diff --git a/app/src/components/Properties/Primitives.tsx b/app/src/components/Properties/Primitives.tsx deleted file mode 100644 index e4e8c93..0000000 --- a/app/src/components/Properties/Primitives.tsx +++ /dev/null @@ -1,255 +0,0 @@ -import { ease } from "@unom/style"; -import { motion } from "framer-motion"; -import { - AnimatedTextEntity, - AnimatedRectEntity, - AnimatedStaggeredTextEntity, - AnimatedEllipseEntity, -} from "primitives/AnimatedEntities"; -import { Paint, PaintStyle, PaintStyleType } from "primitives/Paint"; -import { FC } from "react"; -import { z } from "zod"; -import { ColorProperties } from "./Values"; -import { PropertiesProps } from "./common"; -import { useFontsStore } from "stores/fonts.store"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "components/Inputs/Select"; - -type TextPropertiesProps = PropertiesProps>; -type StaggeredTextPropertiesProps = PropertiesProps< - z.input ->; -type PaintPropertiesProps = PropertiesProps>; -type RectPropertiesProps = PropertiesProps>; -type EllipsePropertiesProps = PropertiesProps< - z.input ->; - -export const PaintProperties: FC = ({ - entity, - onUpdate, -}) => { - return ( -
-
- - -
- {entity.style.color && ( - - onUpdate({ ...entity, style: { ...entity.style, color } }) - } - entity={entity.style.color} - /> - )} -
- ); -}; - -export const TextProperties: FC = ({ - entity, - onUpdate, -}) => { - const { fonts } = useFontsStore(); - - return ( - -
- - onUpdate({ ...entity, text: e.target.value })} - /> -
-
- - - onUpdate({ - ...entity, - paint: { ...entity.paint, size: Number(e.target.value) }, - }) - } - /> -
-
- - - -
-
- ); -}; - -export const StaggeredTextProperties: FC = ({ - entity, - onUpdate, -}) => { - const { fonts } = useFontsStore(); - - return ( - -
- - - onUpdate({ - ...entity, - text: e.target.value, - cache: { valid: false }, - }) - } - /> -
-
- - -
-
- - - onUpdate({ - ...entity, - cache: { valid: false }, - letter: { - ...entity.letter, - paint: { - ...entity.letter.paint, - size: Number(e.target.value), - }, - }, - }) - } - /> -
- - onUpdate({ - ...entity, - letter: { - ...entity.letter, - paint: { ...entity.letter.paint, ...paint }, - }, - }) - } - /> -
- ); -}; - -export const RectProperties: FC = ({ - entity, - onUpdate, -}) => { - return ( -
- - onUpdate({ ...entity, paint: { ...entity.paint, ...paint } }) - } - /> -
- ); -}; - -export const EllipseProperties: FC = ({ - entity, - onUpdate, -}) => { - return ( -
- - onUpdate({ ...entity, paint: { ...entity.paint, ...paint } }) - } - /> -
- ); -}; diff --git a/app/src/components/Properties/Values.tsx b/app/src/components/Properties/Values.tsx deleted file mode 100644 index 13211a7..0000000 --- a/app/src/components/Properties/Values.tsx +++ /dev/null @@ -1,273 +0,0 @@ -import { AnimatedNumber, AnimatedVec2 } from "primitives/Values"; -import { PropertiesProps } from "./common"; -import { FC } from "react"; -import { z } from "zod"; -import { produce } from "immer"; -import { Interpolation, InterpolationType } from "primitives/Interpolation"; -import { Color, PaintStyle, PaintStyleType } from "primitives/Paint"; -import { parseCssColor } from "@tempblade/common"; -import { rgbToHex } from "utils"; -import { SpringInterpolation } from "primitives/Interpolation"; -import FloatInput from "components/Inputs/FloatInput"; -import { Keyframe } from "primitives/Keyframe"; -import { - Select, - SelectTrigger, - SelectValue, - SelectContent, - SelectItem, -} from "components/Inputs/Select"; - -const SpringInterpolationProperties: FC< - PropertiesProps> -> = ({ entity, onUpdate }) => { - return
; -}; - -export const InterpolationProperties: FC< - PropertiesProps> -> = ({ entity, onUpdate }) => { - return ( -
- - -
- ); -}; - -export const KeyframeProperties: FC< - PropertiesProps> -> = ({ entity, onUpdate }) => { - return ( - <> -
- - - onUpdate( - produce(entity, (draft) => { - draft.offset = value; - }) - ) - } - id="keyframe-offset" - /> -
-
- - - onUpdate( - produce(entity, (draft) => { - draft.value = value; - }) - ) - } - id="keyframe-value" - /> -
- - {entity.interpolation && ( - - onUpdate( - produce(entity, (draft) => { - draft.interpolation = updatedEntity; - }) - ) - } - entity={entity.interpolation} - /> - )} - - ); -}; - -const AnimatedNumberProperties: FC< - PropertiesProps> & { label: string } -> = ({ entity, onUpdate, label }) => { - return ( -
- {label} - {entity.keyframes.values.map((keyframe, index) => { - return ( -
- - onUpdate( - produce(entity, (draft) => { - draft.keyframes.values[index] = nextKeyframe; - }) - ) - } - /> -
- ); - })} -
- ); -}; - -export const ColorProperties: FC< - PropertiesProps> & { - label: string; - mode?: "RGB" | "Picker"; - } -> = ({ entity, onUpdate, mode = "Picker" }) => { - if (mode === "Picker") { - return ( -
- - - onUpdate( - produce(entity, (draft) => { - const color = parseCssColor(e.target.value); - - if (color) { - draft.value = [...color, 1.0]; - } - }) - ) - } - /> -
- ); - } - - return ( - - ); -}; - -export const AnimatedVec2Properties: FC< - PropertiesProps> & { label: string } -> = ({ entity, onUpdate, label }) => { - return ( -
- -
- ); -}; diff --git a/app/src/components/Properties/common.tsx b/app/src/components/Properties/common.tsx deleted file mode 100644 index 420cedc..0000000 --- a/app/src/components/Properties/common.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export type PropertiesProps = { - entity: E; - onUpdate: (entity: E) => void; -}; diff --git a/app/src/components/Properties/index.tsx b/app/src/components/Properties/index.tsx deleted file mode 100644 index d198620..0000000 --- a/app/src/components/Properties/index.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { FC, ReactNode } from "react"; -import { useEntitiesStore } from "stores/entities.store"; - -import { shallow } from "zustand/shallow"; -import { - RectProperties, - EllipseProperties, - TextProperties, - StaggeredTextProperties, -} from "./Primitives"; - -const PropertiesContainer: FC<{ children: ReactNode }> = ({ children }) => { - return ( -
- {children} -
- ); -}; - -const Properties = () => { - const { selectedEntity, entities, updateEntity } = useEntitiesStore( - (store) => ({ - updateEntity: store.updateEntity, - selectedEntity: store.selectedEntity, - entities: store.entities, - }), - shallow - ); - - const entity = selectedEntity !== undefined && entities[selectedEntity]; - - if (entity) { - switch (entity.type) { - case "StaggeredText": - return ( - updateEntity(selectedEntity, entity)} - entity={entity} - /> - ); - - case "Text": - return ( - updateEntity(selectedEntity, entity)} - entity={entity} - /> - ); - - case "Rect": - return ( - updateEntity(selectedEntity, entity)} - entity={entity} - /> - ); - - case "Ellipse": - return ( - updateEntity(selectedEntity, entity)} - entity={entity} - /> - ); - - default: - return null; - } - } - - return ( -
-

Wähle ein Element aus

-
- ); -}; - -export { PropertiesContainer }; -export default Properties; diff --git a/app/src/components/ScrollArea.tsx b/app/src/components/ScrollArea.tsx deleted file mode 100644 index d2a5abe..0000000 --- a/app/src/components/ScrollArea.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import * as ScrollArea from "@radix-ui/react-scroll-area"; -import { FC } from "react"; - -const ScrollBar: FC<{ orientation?: "horizontal" | "vertical" }> = ({ - orientation = "vertical", -}) => { - return ( - - - - ); -}; - -export default ScrollBar; diff --git a/app/src/components/Timeline/KeyframeIndicator.tsx b/app/src/components/Timeline/KeyframeIndicator.tsx deleted file mode 100644 index f06abf2..0000000 --- a/app/src/components/Timeline/KeyframeIndicator.tsx +++ /dev/null @@ -1,270 +0,0 @@ -import { ease } from "@unom/style"; -import { PanInfo, motion } from "framer-motion"; -import { AnimationData } from "primitives/AnimatedEntities"; -import { Keyframe } from "primitives/Keyframe"; -import { FC, useCallback, useMemo, useState } from "react"; -import { z } from "zod"; -import { TIMELINE_SCALE, calculateOffset } from "./common"; -import { AnimatedNumber, AnimatedVec2, AnimatedVec3 } from "primitives/Values"; -import { useKeyframeStore } from "stores/keyframe.store"; -import { produce } from "immer"; -import KeyframePopover from "./KeyframePopover"; -import { Popover, PopoverContent, PopoverTrigger } from "components/Popover"; - -const KeyframeIndicator: FC<{ - keyframe: z.input; - animationData: z.input; - onUpdate?: (e: z.input) => void; -}> = ({ keyframe, animationData, onUpdate }) => { - const { selectedKeyframe, selectKeyframe, deselectKeyframe } = - useKeyframeStore(); - - const handleUpdate = useCallback( - (info: PanInfo) => { - if (onUpdate) { - let offset = info.offset.x; - - offset = calculateOffset(offset); - - offset += keyframe.offset; - - onUpdate({ ...keyframe, offset: offset < 0 ? 0 : offset }); - } - }, - [onUpdate, animationData, keyframe] - ); - - const handleValueUpdate = useCallback( - (keyframe: z.input) => { - if (onUpdate) { - onUpdate(keyframe); - } - }, - [onUpdate] - ); - - const selected = useMemo( - () => selectedKeyframe === keyframe.id, - [keyframe.id, selectedKeyframe] - ); - - const [isDragged, setIsDragged] = useState(false); - - return ( - <> - - - setIsDragged(true)} - onDragEnd={(e, info) => { - e.preventDefault(); - setIsDragged(false); - if (onUpdate) { - handleUpdate(info); - } - }} - dragConstraints={{ left: 0 }} - initial={{ - x: (animationData.offset + keyframe.offset) * TIMELINE_SCALE + 2, - scale: 0, - }} - whileTap={{ - scale: 1.6, - transition: { - scale: { - type: "spring", - stiffness: 200, - damping: 10, - mass: 1, - }, - }, - }} - animate={{ - x: (animationData.offset + keyframe.offset) * TIMELINE_SCALE + 2, - scale: 1, - }} - transition={ease.quint(0.4).out} - onClick={() => { - if (isDragged) { - if (!selected) selectKeyframe(keyframe.id); - } else { - selected ? deselectKeyframe() : selectKeyframe(keyframe.id); - } - }} - className="h-full absolute z-30 select-none w-3 flex items-center justify-center filter - data-[selected=true]:drop-shadow-[0px_2px_6px_rgba(230,230,255,1)] transition-colors" - > - - - - - deselectKeyframe()} - onUpdate={handleValueUpdate} - keyframe={keyframe} - /> - - - - ); -}; - -const AnimatedNumberKeyframeIndicator: FC<{ - animatedNumber: z.input; - animationData: z.input; - onUpdate: (e: z.input) => void; -}> = ({ animatedNumber, animationData, onUpdate }) => { - return ( - <> - {animatedNumber.keyframes.values.map((keyframe, index) => ( - - onUpdate( - produce(animatedNumber, (draft) => { - draft.keyframes.values[index] = keyframe; - }) - ) - } - key={keyframe.id} - keyframe={keyframe} - animationData={animationData} - /> - ))} - - ); -}; - -type DimensionsVec2 = "x" | "y"; -const VEC2_DIMENSION_INDEX_MAPPING: Record = { - x: 0, - y: 1, -}; - -const AnimatedVec2KeyframeIndicator: FC<{ - animatedVec2: z.input; - dimension?: DimensionsVec2; - animationData: z.input; - onUpdate: (e: z.input) => void; -}> = ({ animatedVec2, animationData, dimension, onUpdate }) => { - const handleUpdate = useCallback( - ( - animatedNumber: z.input, - dimensionIndex: number - ) => { - onUpdate( - produce(animatedVec2, (draft) => { - draft.keyframes[dimensionIndex] = animatedNumber; - }) - ); - }, - [animatedVec2] - ); - - if (dimension) { - return ( - - handleUpdate(animatedNumber, VEC2_DIMENSION_INDEX_MAPPING[dimension]) - } - animatedNumber={ - animatedVec2.keyframes[VEC2_DIMENSION_INDEX_MAPPING[dimension]] - } - /> - ); - } - - return ( - <> - {animatedVec2.keyframes.map((animatedNumber, index) => ( - handleUpdate(animatedNumber, index)} - key={index} - animatedNumber={animatedNumber} - animationData={animationData} - /> - ))} - - ); -}; - -type DimensionsVec3 = "x" | "y" | "z"; -const VEC3_DIMENSION_INDEX_MAPPING: Record = { - x: 0, - y: 1, - z: 2, -}; - -const AnimatedVec3KeyframeIndicator: FC<{ - animatedVec3: z.input; - animationData: z.input; - dimension?: DimensionsVec3; - onUpdate: (e: z.input) => void; -}> = ({ animatedVec3, animationData, dimension, onUpdate }) => { - const handleUpdate = useCallback( - ( - animatedNumber: z.input, - dimensionIndex: number - ) => { - onUpdate( - produce(animatedVec3, (draft) => { - draft.keyframes[dimensionIndex] = animatedNumber; - }) - ); - }, - [animatedVec3] - ); - - if (dimension) { - return ( - - handleUpdate(animatedNumber, VEC3_DIMENSION_INDEX_MAPPING[dimension]) - } - animatedNumber={ - animatedVec3.keyframes[VEC3_DIMENSION_INDEX_MAPPING[dimension]] - } - /> - ); - } - - return ( - <> - {animatedVec3.keyframes.map((animatedNumber, index) => ( - handleUpdate(animatedNumber, index)} - animatedNumber={animatedNumber} - animationData={animationData} - /> - ))} - - ); -}; - -export { - AnimatedNumberKeyframeIndicator, - AnimatedVec3KeyframeIndicator, - AnimatedVec2KeyframeIndicator, -}; -export default KeyframeIndicator; diff --git a/app/src/components/Timeline/KeyframePopover.tsx b/app/src/components/Timeline/KeyframePopover.tsx deleted file mode 100644 index 7a0fc46..0000000 --- a/app/src/components/Timeline/KeyframePopover.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { PopoverClose } from "components/Popover"; -import { KeyframeProperties } from "components/Properties/Values"; -import { Keyframe } from "primitives/Keyframe"; -import { FC } from "react"; -import { z } from "zod"; - -const KeyframePopover: FC<{ - keyframe: z.input; - onUpdate: (k: z.input) => void; - onClose: () => void; -}> = ({ keyframe, onUpdate, onClose }) => { - return ( -
- - -
- ); -}; - -export default KeyframePopover; diff --git a/app/src/components/Timeline/Timepicker.tsx b/app/src/components/Timeline/Timepicker.tsx deleted file mode 100644 index 6e438ab..0000000 --- a/app/src/components/Timeline/Timepicker.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { FC } from "react"; -import * as Slider from "@radix-ui/react-slider"; -import { useRenderStateStore } from "stores/render-state.store"; -import { TIMELINE_SCALE } from "./common"; -import { useTimelineStore } from "stores/timeline.store"; - -export type TimePickerProps = {}; - -const TimePicker: FC = () => { - const { renderState, setCurrentFrame } = useRenderStateStore(); - const timeline = useTimelineStore(); - - return ( - setCurrentFrame(val[0])} - max={timeline.fps * timeline.duration} - step={1} - aria-label="Current Frame" - > - - - - - - ); -}; - -export default TimePicker; diff --git a/app/src/components/Timeline/Timestamp.tsx b/app/src/components/Timeline/Timestamp.tsx deleted file mode 100644 index 4f484d8..0000000 --- a/app/src/components/Timeline/Timestamp.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { useRenderStateStore } from "stores/render-state.store"; -import { useTimelineStore } from "stores/timeline.store"; - -const Timestamp = () => { - const { renderState } = useRenderStateStore(); - const timeline = useTimelineStore(); - - return ( -
-

- Frame {renderState.curr_frame} / {timeline.fps * timeline.duration} -

-

- {(renderState.curr_frame / timeline.fps).toPrecision(3)} /{" "} - {timeline.duration.toPrecision(3)} - / {timeline.fps}FPS -

-
- ); -}; - -export default Timestamp; diff --git a/app/src/components/Timeline/Track.tsx b/app/src/components/Timeline/Track.tsx deleted file mode 100644 index cda336f..0000000 --- a/app/src/components/Timeline/Track.tsx +++ /dev/null @@ -1,209 +0,0 @@ -import { ease } from "@unom/style"; -import { useDragControls, Reorder, motion } from "framer-motion"; -import { AnimationData, AnimatedEntity } from "primitives/AnimatedEntities"; -import { FC, memo, useState, useMemo } from "react"; -import { useEntitiesStore } from "stores/entities.store"; -import { z } from "zod"; -import { shallow } from "zustand/shallow"; -import KeyframeIndicator from "./KeyframeIndicator"; -import { TIMELINE_SCALE, calculateOffset } from "./common"; -import { TriangleDownIcon } from "@radix-ui/react-icons"; -import TrackPropertiesEditor from "./TrackDisplay/TrackPropertiesEditor"; -import { cn, flattenedKeyframesByEntity } from "utils"; - -type TrackProps = { - animationData: z.input; - name: string; - index: number; - entity: z.input; -}; - -const TrackDisplayTypeOptions = ["Default", "Graph"] as const; - -export const TrackDisplayType = z.enum(TrackDisplayTypeOptions); - -const Track: FC = ({ animationData, index, name, entity }) => { - const controls = useDragControls(); - - const flattenedKeyframes = useMemo( - () => flattenedKeyframesByEntity(entity), - [entity] - ); - - const [isExpanded, setIsExpanded] = useState(false); - - const { updateEntity, selectEntity, selectedEntity, deselectEntity } = - useEntitiesStore( - (store) => ({ - updateEntity: store.updateEntity, - selectedEntity: store.selectedEntity, - selectEntity: store.selectEntity, - deselectEntity: store.deselectEntity, - }), - shallow - ); - - return ( - e.preventDefault()} - className="h-6 relative flex flex-1 flex-col gap-1 select-none" - > - e.preventDefault()} - className="flex flex-row gap-1 select-none" - > -
e.preventDefault()} - onPointerDown={(e) => controls.start(e)} - className={`h-full transition-all rounded-sm min-w-[200px] p-1 px-2 flex flex-col ${ - selectedEntity === index - ? "bg-highlight text-neutral dark:text-main" - : "bg-neutral-accent text-main" - }`} - > -
- setIsExpanded(!isExpanded)} - className={cn("will-change-transform")} - animate={{ rotate: isExpanded ? 0 : -90 }} - > - - -

- selectedEntity !== undefined && selectedEntity === index - ? deselectEntity() - : selectEntity(index) - } - className="h-2 text-base leading-loose font-semibold select-none cursor-pointer" - > - {name} -

-
-
- -
-
- {!isExpanded && - flattenedKeyframes.map((keyframe, index) => ( - - ))} - - e.preventDefault()} - transition={ease.circ(0.6).out} - dragElastic={false} - dragConstraints={{ left: 0 }} - onDragEnd={(e, info) => { - let offset = info.offset.x; - - offset = calculateOffset(offset); - - const animationOffset = - animationData.offset + offset < 0 - ? 0 - : animationData.offset + offset; - - const duration = animationData.duration - offset; - - updateEntity(index, { - animation_data: { - ...animationData, - offset: animationOffset < 0 ? 0 : animationOffset, - duration: duration < 0 ? 0 : duration, - }, - }); - }} - className="z-10 w-4 bg-primary/50 h-full top-0 absolute rounded-md select-none cursor-w-resize" - /> - e.preventDefault()} - drag="x" - animate={{ - x: - (animationData.duration + animationData.offset) * - TIMELINE_SCALE - - 16, - }} - whileHover={{ - scale: 1.1, - }} - whileTap={{ - scale: 0.9, - }} - transition={ease.circ(0.6).out} - dragConstraints={{ left: 0 }} - onDragEnd={(e, info) => { - let offset = info.offset.x; - - offset = calculateOffset(offset); - - const duration = animationData.duration + offset; - - updateEntity(index, { - animation_data: { - ...animationData, - duration: duration < 0 ? 0 : duration, - }, - }); - }} - /> - e.preventDefault()} - transition={ease.circ(0.8).out} - onDragEnd={(_e, info) => { - let offset = info.offset.x; - - offset = calculateOffset(offset); - - offset += animationData.offset; - - updateEntity(index, { - animation_data: { - ...animationData, - offset: offset < 0 ? 0 : offset, - }, - }); - }} - className="z-5 h-full top-0 absolute rounded-md transition-colors bg-primary/30 hover:bg-primary/50 select-none cursor-grab" - > -
- - {isExpanded && } - - ); -}; - -export default memo(Track); diff --git a/app/src/components/Timeline/TrackDisplay/Graph.tsx b/app/src/components/Timeline/TrackDisplay/Graph.tsx deleted file mode 100644 index 0181814..0000000 --- a/app/src/components/Timeline/TrackDisplay/Graph.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { FC } from "react"; -import { extent, bisector } from "d3-array"; -import { curveNatural } from "@visx/curve"; - -import { scaleLinear } from "@visx/scale"; -import { LinePath } from "@visx/shape"; -import { Group } from "@visx/group"; - -const HEIGHT = 300; -const WIDTH = 1200; - -type PropertyValue = { - value: number; - frame: number; -}; - -const getValue = (d: PropertyValue) => d.value; -const getFrame = (d: PropertyValue) => d.frame; - -const PropertyGraph: FC<{ - values: Array<{ frame: number; value: number }>; -}> = ({ values }) => { - const framesScale = scaleLinear({ - range: [0, WIDTH], - domain: extent(values, getFrame) as [number, number], - nice: true, - }); - - const valuesScale = scaleLinear({ - range: [HEIGHT, 0], - domain: extent(values, getValue) as [number, number], - nice: true, - }); - - return ( - - framesScale(getFrame(d)) ?? 0} - y={(d) => valuesScale(getValue(d)) ?? 0} - /> - - ); -}; - -const Graphs: FC<{ values: Array> }> = ({ values }) => { - return ( - - {values.map((propertyValues) => ( - ({ - frame: index, - value: val, - }))} - /> - ))} - - ); -}; - -export default Graphs; diff --git a/app/src/components/Timeline/TrackDisplay/TrackPropertiesEditor.tsx b/app/src/components/Timeline/TrackDisplay/TrackPropertiesEditor.tsx deleted file mode 100644 index 5ad48c6..0000000 --- a/app/src/components/Timeline/TrackDisplay/TrackPropertiesEditor.tsx +++ /dev/null @@ -1,242 +0,0 @@ -import { - AnimatedEntity, - AnimationData, - getAnimatedPropertiesByAnimatedEntity, -} from "primitives/AnimatedEntities"; -import { AnimatedProperty } from "primitives/AnimatedProperty"; -import { AnimatedVec2, ValueType } from "primitives/Values"; -import { FC, memo, useCallback, useMemo, useState } from "react"; -import { z } from "zod"; -import { - AnimatedNumberKeyframeIndicator, - AnimatedVec2KeyframeIndicator, - AnimatedVec3KeyframeIndicator, -} from "../KeyframeIndicator"; -import { ToggleGroup, ToggleGroupItem } from "components/ToggleGroup"; -import { produce } from "immer"; -import set from "lodash.set"; -import { useEntitiesStore } from "stores/entities.store"; -import { AnimatedValue } from "primitives/Values"; -import { motion } from "framer-motion"; -import { ease } from "@unom/style"; -import { TrackDisplayType } from "../Track"; -import TrackPropertyGraph from "./TrackPropertyGraph"; -import { LineChart } from "lucide-react"; - -type DisplayState = { - type: z.input; - selectedAnimatedProperties: Array; -}; - -const TrackAnimatedPropertyKeyframes: FC<{ - animatedProperty: z.input; - animationData: z.input; - onUpdate: (animatedProperty: z.input) => void; - selectedDimension?: "x" | "y" | "z"; -}> = ({ animatedProperty, animationData, selectedDimension, onUpdate }) => { - const handleUpdate = useCallback( - (animatedValue: z.input) => { - onUpdate({ ...animatedProperty, animatedValue }); - }, - [onUpdate, animatedProperty] - ); - - switch (animatedProperty.animatedValue.type) { - case "Number": - return ( - - ); - case "Vec2": - return ( - - ); - - case "Vec3": - return ( - - ); - default: - return null; - } -}; - -const TrackAnimatedProperty: FC<{ - animatedProperty: z.input; - animationData: z.input; - displayState: DisplayState; - index: number; - onDisplayStateUpdate: (s: DisplayState) => void; - onUpdate: (e: z.input) => void; -}> = ({ - animatedProperty, - animationData, - onUpdate, - displayState, - index, - onDisplayStateUpdate, -}) => { - const [selectedDimension, setSelectedDimension] = useState<"x" | "y" | "z">(); - - return ( - -
-

{animatedProperty.label}

- - - selectedDimension === "x" - ? setSelectedDimension(undefined) - : setSelectedDimension("x") - } - selected={selectedDimension === "x"} - > - X - - - selectedDimension === "y" - ? setSelectedDimension(undefined) - : setSelectedDimension("y") - } - selected={selectedDimension === "y"} - > - Y - - {animatedProperty.animatedValue.type === ValueType.Enum.Vec3 && ( - - selectedDimension === "z" - ? setSelectedDimension(undefined) - : setSelectedDimension("z") - } - selected={selectedDimension === "z"} - > - Z - - )} - { - if (displayState.selectedAnimatedProperties.includes(index)) { - onDisplayStateUpdate({ - ...displayState, - selectedAnimatedProperties: - displayState.selectedAnimatedProperties.filter( - (index) => index !== index - ), - }); - } else { - onDisplayStateUpdate({ - ...displayState, - selectedAnimatedProperties: [ - ...displayState.selectedAnimatedProperties, - index, - ], - }); - } - }} - > - - - -
- -
- -
-
- ); -}; - -const TrackPropertiesEditor: FC<{ - entity: z.input; -}> = ({ entity }) => { - const animatedProperties = useMemo( - () => getAnimatedPropertiesByAnimatedEntity(entity), - [entity] - ); - - const handleUpdate = useCallback( - (animatedProperty: z.input) => { - const entitiesStore = useEntitiesStore.getState(); - - const nextValue = produce(entity, (draft) => { - const animatedValue = animatedProperty.animatedValue; - - set(draft, animatedProperty.propertyPath, animatedValue); - }); - - const parsedEntity = AnimatedEntity.parse(nextValue); - - entitiesStore.updateEntityById(parsedEntity.id, parsedEntity); - }, - [entity] - ); - - const [displayState, setDisplayState] = useState({ - type: TrackDisplayType.Enum.Default, - selectedAnimatedProperties: [], - }); - - return ( - - - {animatedProperties.map((animatedProperty, index) => ( - - ))} - - {displayState.selectedAnimatedProperties.length > 0 && ( - animatedProperties[index] - )} - /> - )} - - ); -}; - -export default memo(TrackPropertiesEditor); diff --git a/app/src/components/Timeline/TrackDisplay/TrackPropertyGraph.tsx b/app/src/components/Timeline/TrackDisplay/TrackPropertyGraph.tsx deleted file mode 100644 index af96458..0000000 --- a/app/src/components/Timeline/TrackDisplay/TrackPropertyGraph.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import { invoke } from "@tauri-apps/api"; -import { AnimationData } from "primitives/AnimatedEntities"; -import { AnimatedProperty } from "primitives/AnimatedProperty"; -import { AnimatedValue, ValueType } from "primitives/Values"; -import { FC, useEffect, useState } from "react"; -import { z } from "zod"; -import Graph from "./Graph"; - -type TrackPropertyPathProps = { - animatedProperties: Array>; - animationData: z.input; -}; - -const TrackPropertyGraph: FC = ({ - animatedProperties, - animationData, -}) => { - const [values, setValues] = useState>>([]); - - useEffect(() => { - const tasks: Array>>> = []; - - animatedProperties.forEach((animatedProperty) => { - animatedProperty.animatedValue.type; - const animatedValue = animatedProperty.animatedValue; - - const commonValues: { - animatedValue: z.input; - startFrame: number; - endFrame: number; - fps: number; - animationData: z.input; - } = { - animatedValue: AnimatedValue.parse(animatedValue), - startFrame: 0, - endFrame: 600, - fps: 60, - animationData: AnimationData.parse(animationData), - }; - - switch (animatedValue.type) { - case ValueType.Enum.Number: - tasks.push( - invoke( - "get_values_at_frame_range_from_animated_float", - commonValues - ).then((data) => { - const numbers = data as Array; - - return [numbers]; - }) - ); - break; - case ValueType.Enum.Vec2: - tasks.push( - invoke( - "get_values_at_frame_range_from_animated_float_vec2", - commonValues - ).then((data) => { - const vectors = data as [Array, Array]; - - const xValues = vectors.map((vec2) => vec2[0]); - const yValues = vectors.map((vec2) => vec2[1]); - - return [xValues, yValues]; - }) - ); - break; - - case ValueType.Enum.Vec3: - tasks.push( - invoke( - "get_values_at_frame_range_from_animated_float_vec3", - commonValues - ).then((data) => { - const vectors = data as [ - Array, - Array, - Array - ]; - - const xValues = vectors.map((vec2) => vec2[0]); - const yValues = vectors.map((vec2) => vec2[1]); - const zValues = vectors.map((vec2) => vec2[2]); - - return [xValues, yValues, zValues]; - }) - ); - break; - } - }); - - Promise.all(tasks).then((values) => { - const flatValues = values.flat(); - - console.log("flattened Values", flatValues); - setValues(flatValues); - }); - }, animatedProperties); - - return ( -
- -
- ); -}; - -export default TrackPropertyGraph; diff --git a/app/src/components/Timeline/common.ts b/app/src/components/Timeline/common.ts deleted file mode 100644 index c5cf969..0000000 --- a/app/src/components/Timeline/common.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const TIMELINE_SCALE = 100; - -export const calculateOffset = (offset: number) => { - let nextOffset = offset / TIMELINE_SCALE; - - return nextOffset; -}; diff --git a/app/src/components/Timeline/index.tsx b/app/src/components/Timeline/index.tsx deleted file mode 100644 index 3030cad..0000000 --- a/app/src/components/Timeline/index.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { FC } from "react"; -import { Reorder } from "framer-motion"; -import TimePicker from "./Timepicker"; -import { useEntitiesStore } from "stores/entities.store"; -import Timestamp from "./Timestamp"; -import { PauseIcon, PlayIcon } from "@radix-ui/react-icons"; -import { useRenderStateStore } from "stores/render-state.store"; -import Track from "./Track"; -import * as ScrollArea from "@radix-ui/react-scroll-area"; -import ScrollBar from "components/ScrollArea"; - -export type AnimationEntity = { - offset: number; - duration: number; -}; - -type TimelineProps = {}; - -const Timeline: FC = () => { - const { entities, setEntities } = useEntitiesStore((store) => ({ - entities: store.entities, - setEntities: store.setEntities, - })); - - const { setPlaying } = useRenderStateStore((store) => ({ - setPlaying: store.setPlaying, - })); - - return ( -
-
-
- - -
- -
- - -
-
-
- -
- - {entities.map((entity, index) => ( - - ))} - -
- -
- -
- -
- ); -}; - -export default Timeline; diff --git a/app/src/components/ToggleGroup.tsx b/app/src/components/ToggleGroup.tsx deleted file mode 100644 index 27d938b..0000000 --- a/app/src/components/ToggleGroup.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { FC, ReactNode } from "react"; -import * as ToggleGroupComponents from "@radix-ui/react-toggle-group"; -import { motion } from "framer-motion"; - -const ToggleGroupItem: FC<{ - children: ReactNode; - selected: boolean; - onClick?: () => void; -}> = ({ children, selected, onClick }) => { - return ( - - - {children} - - - ); -}; - -const ToggleGroup: FC<{ children: ReactNode }> = ({ children }) => ( - - {children} - -); - -export { ToggleGroup, ToggleGroupItem }; diff --git a/app/src/components/ToolBar/index.tsx b/app/src/components/ToolBar/index.tsx deleted file mode 100644 index a94de5b..0000000 --- a/app/src/components/ToolBar/index.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { - BoxIcon, - CircleIcon, - CursorArrowIcon, - FontStyleIcon, - MixIcon, - Pencil1Icon, - Pencil2Icon, - SymbolIcon, - TextIcon, -} from "@radix-ui/react-icons"; -import * as Toolbar from "@radix-ui/react-toolbar"; -import { motion } from "framer-motion"; -import { FC, ReactNode, useMemo, useState } from "react"; -import { EntitiesService } from "services/entities.service"; - -const ToolBarButton: FC<{ children: ReactNode; onClick?: () => void }> = ({ - children, - onClick, -}) => { - const [didHover, setDidHover] = useState(false); - - return ( - !didHover && setDidHover(true)} - asChild - className="text-main p-[10px] bg-neutral flex-shrink-0 flex-grow-0 - basis-auto w-[40px] h-[40px] rounded inline-flex text-[13px] leading-none - items-center justify-center outline-none hover:bg-primary/50 - transition-colors - focus:relative focus:shadow-[0_0_0_2px] focus:shadow-indigo" - > - - {children} - - - ); -}; - -const ToolBar = () => { - const entitiesService = useMemo(() => new EntitiesService(), []); - - return ( - - - - - - - entitiesService.createRect()}> - - - entitiesService.createEllipse()}> - - - - - - - - - - entitiesService.createText()}> - - - entitiesService.createStaggeredText()}> - - - - - ); -}; - -export default ToolBar; diff --git a/app/src/drawers/cache.ts b/app/src/drawers/cache.ts deleted file mode 100644 index d36cb7c..0000000 --- a/app/src/drawers/cache.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { BaseEntity } from "primitives/Entities"; -import { z } from "zod"; - -export interface EntityCache { - build: () => T; - get: () => T | undefined; - set: (id: string, cache: T) => void; - cleanup: (cache: T) => void; -} - -export function handleEntityCache< - E extends z.output, - C, - EC extends EntityCache ->(entity: E, cache: EC): C { - const cached = cache.get(); - - if (!entity.cache.valid) { - // console.log("Invalid cache"); - if (cached) { - cache.cleanup(cached); - } - - const nextCache = cache.build(); - - cache.set(entity.id, nextCache); - - return nextCache; - } else { - if (!cached) { - const nextCache = cache.build(); - - cache.set(entity.id, nextCache); - - return nextCache; - } else { - return cached; - } - } -} diff --git a/app/src/drawers/draw.ts b/app/src/drawers/draw.ts deleted file mode 100644 index aaf724b..0000000 --- a/app/src/drawers/draw.ts +++ /dev/null @@ -1,257 +0,0 @@ -import { invoke } from "@tauri-apps/api"; -import InitCanvasKit, { Canvas, CanvasKit, Surface } from "canvaskit-wasm"; -import { AnimatedEntities } from "primitives/AnimatedEntities"; -import { - Entities, - EntityType, - StaggeredTextEntity, - TextEntity, -} from "primitives/Entities"; -import { useRenderStateStore } from "stores/render-state.store"; -import { useTimelineStore } from "stores/timeline.store"; -import { z } from "zod"; -import drawStaggeredText, { - StaggeredTextCache, - StaggeredTextEntityCache, - calculateLetters, -} from "./staggered-text"; -import drawText, { TextCache, TextEntityCache, buildTextCache } from "./text"; -import drawEllipse from "./ellipse"; -import drawRect from "./rect"; -import { useEntitiesStore } from "stores/entities.store"; -import { handleEntityCache } from "./cache"; -import { DependenciesService } from "services/dependencies.service"; -import { RenderState } from "primitives/Timeline"; - -/** - * - * TODO Add more sophisticated dependency logic for e.g. dynamically loading fonts, images etc. - */ - -export class Drawer { - private didLoad: boolean; - private entities: z.output | undefined; - private ckDidLoad: boolean; - drawCount: number; - private CanvasKit: CanvasKit | undefined; - cache: { - staggeredText: Map; - text: Map; - }; - surface: Surface | undefined; - fontData: ArrayBuffer | undefined; - raf: number | undefined; - isLocked: boolean; - dependenciesService: DependenciesService; - - constructor() { - this.entities = undefined; - this.CanvasKit = undefined; - this.ckDidLoad = false; - this.drawCount = 0; - this.surface = undefined; - this.fontData = undefined; - this.cache = { - staggeredText: new Map(), - text: new Map(), - }; - this.dependenciesService = new DependenciesService(); - this.isLocked = false; - this.raf = undefined; - this.didLoad = this.ckDidLoad; - } - - async init(canvas: HTMLCanvasElement) { - await this.loadCanvasKit(canvas); - - this.didLoad = this.ckDidLoad; - } - - async loadCanvasKit(canvas: HTMLCanvasElement) { - await InitCanvasKit({ - locateFile: (file) => file, - }).then((CanvasKit) => { - if (canvas) { - const CSurface = CanvasKit.MakeWebGLCanvasSurface(canvas); - if (CSurface) { - this.CanvasKit = CanvasKit; - this.surface = CSurface; - this.ckDidLoad = true; - } - } - }); - } - - async calculateAnimatedEntities( - animatedEntities: z.input, - renderState: z.output - ) { - const { fps, size, duration } = useTimelineStore.getState(); - - const parsedAnimatedEntities = AnimatedEntities.parse(animatedEntities); - - const data = await invoke("calculate_timeline_at_curr_frame", { - timeline: { - entities: parsedAnimatedEntities, - render_state: renderState, - fps, - size, - duration, - }, - }); - - const parsedEntities = Entities.parse(data); - - return parsedEntities; - } - - get isCached(): boolean { - if (this.entities) { - return this.entities.reduce( - (prev, curr) => prev && curr.cache.valid, - true - ); - } else { - return false; - } - } - - /** - * Updates the entities based on the input - */ - update( - animatedEntities: z.input, - prepareDependencies: boolean - ) { - // console.time("calculate"); - - if (this.didLoad) { - const renderState = useRenderStateStore.getState().renderState; - - this.calculateAnimatedEntities(animatedEntities, renderState).then( - (entities) => { - this.entities = entities; - - if (prepareDependencies) { - this.dependenciesService - .prepareForEntities(this.entities) - .then(() => { - this.requestRedraw(!this.isCached); - }); - } else { - this.requestRedraw(!this.isCached); - } - } - ); - } else { - // console.timeEnd("calculate"); - } - } - - requestRedraw(rebuild: boolean) { - if (this.didLoad && this.surface && !this.isLocked) { - if (rebuild && this.raf !== undefined) { - cancelAnimationFrame(this.raf); - // this.surface.flush(); - this.raf = this.surface.requestAnimationFrame((canvas) => - this.draw(canvas) - ); - } else { - // this.surface.flush(); - this.raf = this.surface.requestAnimationFrame((canvas) => - this.draw(canvas) - ); - } - } - } - - draw(canvas: Canvas) { - if (this.CanvasKit && this.entities && !this.isLocked) { - this.isLocked = true; - //console.time("draw"); - const CanvasKit = this.CanvasKit; - - canvas.clear(CanvasKit.WHITE); - - this.drawCount++; - - [...this.entities].reverse().forEach((entity) => { - switch (entity.type) { - case EntityType.Enum.Rect: - drawRect(CanvasKit, canvas, entity); - break; - case EntityType.Enum.Ellipse: - drawEllipse(CanvasKit, canvas, entity); - break; - case EntityType.Enum.Text: - { - const cache = handleEntityCache< - z.output, - TextCache, - TextEntityCache - >(entity, { - build: () => { - const cache = buildTextCache( - CanvasKit, - entity, - this.dependenciesService.dependencies - ); - - useEntitiesStore - .getState() - .updateEntityById(entity.id, { cache: { valid: true } }); - - return cache; - }, - get: () => this.cache.text.get(entity.id), - set: (id, cache) => this.cache.text.set(id, cache), - cleanup: (cache) => { - cache.fontManager.delete(); - }, - }); - - drawText(CanvasKit, canvas, entity, cache); - } - - break; - case EntityType.Enum.StaggeredText: - { - const cache = handleEntityCache< - z.output, - StaggeredTextCache, - StaggeredTextEntityCache - >(entity, { - build: () => { - const cache = calculateLetters( - CanvasKit, - entity, - this.dependenciesService.dependencies - ); - useEntitiesStore - .getState() - .updateEntityById(entity.id, { cache: { valid: true } }); - - return cache; - }, - get: () => this.cache.staggeredText.get(entity.id), - set: (id, cache) => this.cache.staggeredText.set(id, cache), - cleanup: (cache) => { - cache.font.delete(); - cache.typeface.delete(); - CanvasKit.Free(cache.glyphs); - }, - }); - - drawStaggeredText(CanvasKit, canvas, entity, cache); - } - - break; - default: - break; - } - }); - this.isLocked = false; - //console.timeEnd("draw"); - } - } -} diff --git a/app/src/drawers/effects/blur.ts b/app/src/drawers/effects/blur.ts deleted file mode 100644 index 3bd9170..0000000 --- a/app/src/drawers/effects/blur.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Canvas, CanvasKit, Surface } from "canvaskit-wasm"; -import { BlurEffectLayer } from "primitives/Effects"; -import { z } from "zod"; - -export default function applyBlur( - CanvasKit: CanvasKit, - canvas: Canvas, - surface: Surface, - options: z.input -) { - const image = surface.makeImageSnapshot(); - - if (image) { - const blurFilter = CanvasKit.ImageFilter.MakeBlur( - options.amountX, - options.amountY, - CanvasKit.TileMode[options.tileMode], - null - ); - - const paint = new CanvasKit.Paint(); - - paint.setImageFilter(blurFilter); - - canvas.drawImage(image, 0, 0, paint); - } -} diff --git a/app/src/drawers/ellipse.ts b/app/src/drawers/ellipse.ts deleted file mode 100644 index bc8f17a..0000000 --- a/app/src/drawers/ellipse.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { convertToFloat } from "@tempblade/common"; -import { Canvas, CanvasKit } from "canvaskit-wasm"; -import { EllipseEntity } from "primitives/Entities"; -import { z } from "zod"; -import { buildPaintStyle } from "./paint"; - -export default function drawEllipse( - CanvasKit: CanvasKit, - canvas: Canvas, - entity: z.infer -) { - const paint = new CanvasKit.Paint(); - - buildPaintStyle(CanvasKit, paint, entity.paint); - - const mappedPosition = entity.position.map( - (val, index) => val - entity.radius[index] * 0.5 - ); - - const rect = CanvasKit.XYWHRect( - mappedPosition[0], - mappedPosition[1], - entity.radius[0], - entity.radius[1] - ); - - canvas.drawOval(rect, paint); -} diff --git a/app/src/drawers/paint.ts b/app/src/drawers/paint.ts deleted file mode 100644 index 4743765..0000000 --- a/app/src/drawers/paint.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { convertToFloat } from "@tempblade/common"; -import { Paint as SkPaint, CanvasKit } from "canvaskit-wasm"; -import { Paint } from "primitives/Paint"; -import { z } from "zod"; - -export function buildPaintStyle( - CanvasKit: CanvasKit, - skPaint: SkPaint, - paint: z.output -) { - const color = convertToFloat(paint.style.color.value); - - skPaint.setAntiAlias(true); - skPaint.setColor(color); - - switch (paint.style.type) { - case "Fill": - skPaint.setStyle(CanvasKit.PaintStyle.Fill); - break; - - case "Stroke": - skPaint.setStyle(CanvasKit.PaintStyle.Stroke); - skPaint.setStrokeWidth(paint.style.width); - break; - - default: - console.error("Paint Style not supported!"); - break; - } -} diff --git a/app/src/drawers/rect.ts b/app/src/drawers/rect.ts deleted file mode 100644 index 06c8d30..0000000 --- a/app/src/drawers/rect.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { Canvas, CanvasKit } from "canvaskit-wasm"; -import { z } from "zod"; -import { RectEntity } from "primitives/Entities"; -import { buildPaintStyle } from "./paint"; - -export default function drawRect( - CanvasKit: CanvasKit, - canvas: Canvas, - entity: z.infer -) { - canvas.save(); - - const paint = new CanvasKit.Paint(); - - buildPaintStyle(CanvasKit, paint, entity.paint); - - const mappedPosition = entity.position.map( - (val, index) => val - entity.size[index] * 0.5 - ); - - const rect = CanvasKit.XYWHRect( - mappedPosition[0], - mappedPosition[1], - entity.size[0], - entity.size[1] - ); - - if (entity.transform) { - const origin = [0, entity.size[1]]; - - canvas.translate(origin[0], origin[1]); - - canvas.scale(entity.transform.scale[0], entity.transform.scale[1]); - - canvas.rotate; - - canvas.translate(-origin[0], -origin[1]); - } - - canvas.drawRect(rect, paint); - - canvas.restore(); -} diff --git a/app/src/drawers/staggered-text.ts b/app/src/drawers/staggered-text.ts deleted file mode 100644 index 4308df3..0000000 --- a/app/src/drawers/staggered-text.ts +++ /dev/null @@ -1,302 +0,0 @@ -import { - Canvas, - CanvasKit, - Font, - FontMetrics, - MallocObj, - TypedArray, - Typeface, -} from "canvaskit-wasm"; -import { StaggeredTextEntity } from "primitives/Entities"; -import { z } from "zod"; -import { buildPaintStyle } from "./paint"; -import { EntityCache } from "./cache"; -import { Dependencies } from "services/dependencies.service"; - -export type StaggeredTextCache = { - letterMeasures: Array; - metrics: FontMetrics; - typeface: Typeface; - font: Font; - glyphs: MallocObj; -}; - -export type StaggeredTextEntityCache = EntityCache; - -function getUniqueCharacters(str: string): string { - const uniqueCharacters: string[] = []; - - for (let i = 0; i < str.length; i++) { - const character = str[i]; - - if (!uniqueCharacters.includes(character)) { - uniqueCharacters.push(character); - } - } - - return uniqueCharacters.join(""); -} - -function measureLetters( - glyphArr: TypedArray, - boundsById: Record, - maxWidth: number -): Array { - const measuredLetters: Array = []; - - let currentWidth = 0; - let currentLine = 0; - - for (let i = 0; i < glyphArr.length; i++) { - const nextGlyph = boundsById[glyphArr[i]]; - - const nextGlyphWidth = nextGlyph.x_advance; - - currentWidth += nextGlyphWidth; - - if (currentWidth > maxWidth) { - currentLine += 1; - currentWidth = 0; - } - - measuredLetters.push({ - bounds: nextGlyph, - line: currentLine, - offset: { - x: currentWidth - nextGlyphWidth, - }, - }); - } - - return measuredLetters; -} - -type LetterBounds = { - x: { - max: number; - min: number; - }; - y: { - max: number; - min: number; - }; - width: number; - height: number; - x_advance: number; -}; - -type LetterMeasures = { - offset: { - x: number; - }; - line: number; - bounds: LetterBounds; -}; - -export function calculateLetters( - CanvasKit: CanvasKit, - entity: z.output, - dependencies: Dependencies -): StaggeredTextCache { - const fontData = dependencies.fonts.get( - entity.letter.paint.font_name - ) as ArrayBuffer; - - const typeface = CanvasKit.Typeface.MakeFreeTypeFaceFromData( - fontData - ) as Typeface; - - const font = new CanvasKit.Font(typeface, entity.letter.paint.size); - - const glyphIDs = font.getGlyphIDs(entity.text); - - // font.setLinearMetrics(true); - font.setSubpixel(true); - font.setHinting(CanvasKit.FontHinting.None); - - const alphabet = getUniqueCharacters(entity.text); - const ids = font.getGlyphIDs(alphabet); - const unknownCharacterGlyphID = ids[0]; - - const charsToGlyphIDs: Record = {}; - - let glyphIdx = 0; - for (let i = 0; i < alphabet.length; i++) { - charsToGlyphIDs[alphabet[i]] = ids[glyphIdx]; - if ((alphabet.codePointAt(i) as number) > 65535) { - i++; // skip the next index because that will be the second half of the code point. - } - glyphIdx++; - } - - const metrics = font.getMetrics(); - const bounds = font.getGlyphBounds(glyphIDs); - const widths = font.getGlyphWidths(glyphIDs); - - const glyphMetricsByGlyphID: Record = {}; - for (let i = 0; i < glyphIDs.length; i++) { - const id = glyphIDs[i]; - - const x_min = bounds[i * 4]; - const x_max = bounds[i * 4 + 2]; - const y_min = bounds[i * 4 + 3]; - const y_max = bounds[i * 4 + 1]; - const width = x_max - x_min; - const height = Math.abs(y_max - y_min); - - glyphMetricsByGlyphID[id] = { - x: { - min: x_min, - max: x_max, - }, - y: { - min: y_min, - max: y_max, - }, - width, - height, - x_advance: widths[i], - }; - } - - const glyphs = CanvasKit.MallocGlyphIDs(entity.text.length); - let glyphArr = glyphs.toTypedArray(); - - const MAX_WIDTH = 900; - - // Turn the code points into glyphs, accounting for up to 2 ligatures. - let shapedGlyphIdx = -1; - for (let i = 0; i < entity.text.length; i++) { - const char = entity.text[i]; - shapedGlyphIdx++; - glyphArr[shapedGlyphIdx] = charsToGlyphIDs[char] || unknownCharacterGlyphID; - if ((entity.text.codePointAt(i) as number) > 65535) { - i++; // skip the next index because that will be the second half of the code point. - } - } - // Trim down our array of glyphs to only the amount we have after ligatures and code points - // that are > 16 bits. - glyphArr = glyphs.subarray(0, shapedGlyphIdx + 1); - - // Break our glyphs into runs based on the maxWidth and the xAdvance. - - const letterMeasures = measureLetters( - glyphArr, - glyphMetricsByGlyphID, - MAX_WIDTH - ); - - return { letterMeasures, metrics, font, typeface, glyphs }; -} - -export default function drawStaggeredText( - CanvasKit: CanvasKit, - canvas: Canvas, - entity: z.output, - cache: StaggeredTextCache -) { - const paint = new CanvasKit.Paint(); - - const { letterMeasures: measuredLetters, font, glyphs, metrics } = cache; - - buildPaintStyle(CanvasKit, paint, entity.letter.paint); - - if (glyphs) { - // Draw all those runs. - for (let i = 0; i < measuredLetters.length; i++) { - const measuredLetter = measuredLetters[i]; - - const glyph = glyphs.subarray(i, i + 1); - - const blob = CanvasKit.TextBlob.MakeFromGlyphs( - glyph as unknown as Array, - font - ); - if (blob) { - canvas.save(); - - const width = measuredLetters - .filter((letter) => letter.line === 0) - .reduce((prev, curr) => curr.bounds.x_advance + prev, 0); - - const lineOffset = (entity.letter.paint.size / 2) * measuredLetter.line; - - const entityOrigin = [ - entity.origin[0] - width / 2, - entity.origin[1] + lineOffset, - ]; - - const lineCount = measuredLetters - .map((e) => e.line) - .sort((a, b) => a - b)[measuredLetters.length - 1]; - - if (entity.letter.transform && entity.letter.transform[i]) { - const letterTransform = entity.letter.transform[i]; - const letterOrigin = [0, 0]; - - let origin = letterOrigin.map( - (val, index) => val + entityOrigin[index] - ); - - // Calculate the spacing - - const spacing = - measuredLetter.bounds.x_advance - measuredLetter.bounds.width; - - //console.log(spacing); - - // Center the origin - - origin[0] = - origin[0] + - measuredLetter.bounds.width / 2 + - measuredLetter.offset.x + - letterTransform.translate[0]; - origin[1] = - origin[1] - - metrics.descent + - lineOffset + - letterTransform.translate[1]; - - //console.log(measuredLetter.bounds); - - canvas.translate(origin[0], origin[1]); - - canvas.rotate( - letterTransform.rotate[2], - letterTransform.rotate[0], - letterTransform.rotate[1] - ); - - canvas.scale(letterTransform.scale[0], letterTransform.scale[1]); - - canvas.translate( - letterTransform.translate[0], - letterTransform.translate[1] - ); - - canvas.translate( - -origin[0] + measuredLetter.offset.x, - -origin[1] + lineOffset - ); - - /* canvas.translate( - measuredLetter.offset.x + measuredLetter.bounds.width / 2, - 0 - ); */ - } - - /* canvas.translate( - width * -0.5, - lineCount * (-entity.letter.paint.size / 2) - ); */ - - canvas.drawTextBlob(blob, entityOrigin[0], entityOrigin[1], paint); - - canvas.restore(); - - blob.delete(); - } - } - } -} diff --git a/app/src/drawers/text.ts b/app/src/drawers/text.ts deleted file mode 100644 index 6f8c724..0000000 --- a/app/src/drawers/text.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { Canvas, CanvasKit, Font, FontMgr, Typeface } from "canvaskit-wasm"; -import { TextEntity } from "primitives/Entities"; -import { convertToFloat } from "@tempblade/common"; -import { z } from "zod"; -import { EntityCache } from "./cache"; -import { Dependencies } from "services/dependencies.service"; -import { buildPaintStyle } from "./paint"; - -export type TextCache = { - fontManager: FontMgr; -}; - -export type TextEntityCache = EntityCache; - -export function buildTextCache( - CanvasKit: CanvasKit, - entity: z.output, - dependencies: Dependencies -): TextCache { - const fontData = dependencies.fonts.get( - entity.paint.font_name - ) as ArrayBuffer; - - const fontManager = CanvasKit.FontMgr.FromData(fontData) as FontMgr; - - return { - fontManager, - }; -} - -export default function drawText( - CanvasKit: CanvasKit, - canvas: Canvas, - entity: z.output, - cache: TextCache -) { - canvas.save(); - - const paint = new CanvasKit.Paint(); - - const color = convertToFloat(entity.paint.style.color.value); - - buildPaintStyle(CanvasKit, paint, entity.paint); - - const pStyle = new CanvasKit.ParagraphStyle({ - textStyle: { - color: color, - fontFamilies: [entity.paint.font_name], - fontSize: entity.paint.size, - }, - textDirection: CanvasKit.TextDirection.LTR, - textAlign: CanvasKit.TextAlign[entity.paint.align], - }); - - const builder = CanvasKit.ParagraphBuilder.Make(pStyle, cache.fontManager); - builder.addText(entity.text); - const p = builder.build(); - p.layout(900); - const height = p.getHeight() / 2; - const width = p.getMaxWidth() / 2; - - canvas.drawParagraph(p, entity.origin[0] - width, entity.origin[1] - height); - - canvas.restore(); - - builder.delete(); -} diff --git a/app/src/example.ts b/app/src/example.ts deleted file mode 100644 index fff9d05..0000000 --- a/app/src/example.ts +++ /dev/null @@ -1,406 +0,0 @@ -import { AnimatedEntity } from "primitives/AnimatedEntities"; -import { Color } from "primitives/Paint"; -import { Timeline } from "primitives/Timeline"; -import { - staticAnimatedNumber, - staticAnimatedVec2, - staticAnimatedVec3, -} from "primitives/Values"; -import { z } from "zod"; -import { v4 as uuid } from "uuid"; - -function buildRect1( - offset: number, - color: z.infer -): z.input { - return { - id: uuid(), - cache: {}, - type: "Rect", - paint: { - style: { - type: "Stroke", - width: 50, - color, - }, - }, - size: { - type: "Vec2", - keyframes: [ - { - type: "Number", - keyframes: { - values: [ - { - id: uuid(), - interpolation: { - type: "EasingFunction", - easing_function: "CircOut", - }, - value: 0.0, - offset: 0.0, - }, - { - id: uuid(), - interpolation: { - type: "Linear", - }, - value: 1280.0, - offset: 4.0, - }, - ], - }, - }, - staticAnimatedNumber(720), - ], - }, - origin: staticAnimatedVec2(1280 / 2, 720 / 2), - position: staticAnimatedVec2(0, 0), - animation_data: { - offset, - duration: 10.0, - }, - }; -} - -function buildRect( - offset: number, - color: z.infer -): z.input { - return { - type: "Rect", - id: uuid(), - cache: {}, - paint: { - style: { - type: "Fill", - color, - }, - }, - size: staticAnimatedVec2(1280, 720), - origin: staticAnimatedVec2(0, -720), - position: staticAnimatedVec2(1280 / 2, 720 / 2), - transform: { - type: "Transform", - translate: staticAnimatedVec2(0, 0), - rotate: staticAnimatedVec3(0, 0, 0), - skew: staticAnimatedVec2(0, 0), - scale: { - type: "Vec2", - keyframes: [ - { - type: "Number", - keyframes: { - values: [ - { - id: uuid(), - - interpolation: { - type: "Linear", - }, - value: 1.0, - offset: 0.0, - }, - ], - }, - }, - { - type: "Number", - keyframes: { - values: [ - { - id: uuid(), - - interpolation: { - type: "EasingFunction", - easing_function: "CircOut", - }, - value: 0.0, - offset: 0.0, - }, - { - id: uuid(), - - interpolation: { - type: "Linear", - }, - value: 1.0, - offset: 4.0, - }, - ], - }, - }, - ], - }, - }, - animation_data: { - offset, - duration: 10.0, - }, - }; -} - -function buildText( - text: string, - offset: number, - size: number, - y_offset: number, - color: z.infer -): z.input { - return { - type: "Text", - id: uuid(), - cache: {}, - paint: { - style: { - type: "Fill", - color, - }, - font_name: "Gilroy-Regular", - size, - align: "Center", - }, - text, - animation_data: { - offset, - duration: 5.0, - }, - origin: { - type: "Vec2", - keyframes: [ - { - type: "Number", - keyframes: { - values: [ - { - id: uuid(), - - interpolation: { - type: "EasingFunction", - easing_function: "CircOut", - }, - value: (1280 / 2) * -1 - 300, - offset: 0.0, - }, - { - id: uuid(), - - interpolation: { - type: "EasingFunction", - easing_function: "QuartOut", - }, - value: 1280 / 2, - offset: 5.0, - }, - ], - }, - }, - staticAnimatedNumber(720 / 2 + y_offset), - ], - }, - }; -} - -function buildStaggeredText( - text: string, - offset: number, - color: z.input -): z.input { - return { - type: "StaggeredText", - text, - cache: { valid: false }, - id: uuid(), - origin: staticAnimatedVec2(1280 / 2, 720 / 2), - transform: { - type: "Transform", - translate: staticAnimatedVec2(0, 0), - rotate: staticAnimatedVec3(0, 0, 0), - skew: staticAnimatedVec2(0, 0), - scale: staticAnimatedVec2(1, 1), - }, - animation_data: { - offset, - duration: 5.0, - }, - stagger: 0.1, - letter: { - paint: { - font_name: "Gilroy-Regular", - style: { - type: "Fill", - color, - }, - size: 90, - align: "Center", - }, - transform: { - type: "Transform", - translate: { - type: "Vec2", - keyframes: [ - staticAnimatedNumber(0), - { - type: "Number", - keyframes: { - values: [ - { - id: uuid(), - interpolation: { - type: "Spring", - damping: 15, - stiffness: 350, - mass: 1, - }, - value: 200.0, - offset: 0.0, - }, - { - id: uuid(), - - interpolation: { - type: "Linear", - }, - value: 0.0, - offset: 4.0, - }, - ], - }, - }, - ], - }, - rotate: { - type: "Vec3", - keyframes: [ - staticAnimatedNumber(0), - staticAnimatedNumber(0), - { - type: "Number", - keyframes: { - values: [ - { - id: uuid(), - - interpolation: { - type: "Spring", - damping: 15, - stiffness: 150, - mass: 1, - }, - value: -180.0, - offset: 0.0, - }, - { - id: uuid(), - - interpolation: { - type: "Linear", - }, - value: 0.0, - offset: 4.0, - }, - ], - }, - }, - ], - }, - skew: staticAnimatedVec2(0, 0), - scale: { - type: "Vec2", - keyframes: [ - { - type: "Number", - keyframes: { - values: [ - { - id: uuid(), - - interpolation: { - type: "EasingFunction", - easing_function: "CircOut", - }, - value: 0.0, - offset: 0.0, - }, - { - id: uuid(), - - interpolation: { - type: "Linear", - }, - value: 1.0, - offset: 2.0, - }, - ], - }, - }, - { - type: "Number", - keyframes: { - values: [ - { - id: uuid(), - - interpolation: { - type: "EasingFunction", - easing_function: "CircOut", - }, - value: 0.0, - offset: 0.0, - }, - { - id: uuid(), - - interpolation: { - type: "Linear", - }, - value: 1.0, - offset: 2.0, - }, - ], - }, - }, - ], - }, - }, - }, - }; -} - -export const EXAMPLE_ANIMATED_ENTITIES: Array> = - [ - buildStaggeredText("Work in Progress...", 2.0, { - value: [255, 255, 255, 1.0], - }), - // buildText("Wie gehts?", 2.5, 40, 40, { value: [200, 200, 200, 1.0] }), - buildRect(0.6, { value: [30, 30, 30, 1.0] }), - buildRect(0.4, { value: [20, 20, 20, 1.0] }), - buildRect(0.2, { value: [10, 10, 10, 1.0] }), - buildRect(0, { value: [0, 0, 0, 1.0] }), - ]; - -export const EXAMPLE_ANIMATED_ENTITIES_2: Array< - z.input -> = [ - buildText("Kleine Dumpfkopf!", 1.0, 80, -30, { - value: [255, 255, 255, 1.0], - }), - // buildText("Wie gehts?", 1.5, 40, 30, { value: [255, 255, 255, 1.0] }), - buildRect(0.8, { value: [40, 40, 40, 1.0] }), - buildRect(0.6, { value: [30, 30, 30, 1.0] }), - buildRect(0.4, { value: [20, 20, 20, 1.0] }), - buildRect(0.2, { value: [10, 10, 10, 1.0] }), - buildRect(0, { value: [0, 0, 0, 1.0] }), -]; - -const ExampleTimeline: z.input = { - size: [1920, 1080], - duration: 10.0, - render_state: { - curr_frame: 20, - }, - fps: 120, - entities: EXAMPLE_ANIMATED_ENTITIES, -}; - -export { ExampleTimeline }; diff --git a/app/src/hooks/useKeyControls.ts b/app/src/hooks/useKeyControls.ts deleted file mode 100644 index 88f6b07..0000000 --- a/app/src/hooks/useKeyControls.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { useCallback, useEffect } from "react"; -import { useEntitiesStore } from "stores/entities.store"; -import { useRenderStateStore } from "stores/render-state.store"; - -export default function useKeyControls() { - const handleKeyPress = useCallback((e: KeyboardEvent) => { - // Only run shortcuts if no input is focused - - if (document.activeElement?.nodeName !== "INPUT") { - if (e.code === "Space") { - e.preventDefault(); - useRenderStateStore.getState().togglePlaying(); - } - if (e.code === "Backspace") { - const selectedEntity = useEntitiesStore.getState().selectedEntity; - - if (selectedEntity !== undefined) { - useEntitiesStore.getState().deleteEntity(selectedEntity); - } - } - } - }, []); - - useEffect(() => { - // attach the event listener - document.addEventListener("keydown", handleKeyPress); - - // remove the event listener - return () => { - document.removeEventListener("keydown", handleKeyPress); - }; - }, [handleKeyPress]); -} diff --git a/app/src/hooks/useMap.ts b/app/src/hooks/useMap.ts deleted file mode 100644 index ab0154f..0000000 --- a/app/src/hooks/useMap.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { useCallback, useState } from "react"; - -export type MapOrEntries = Map | [K, V][]; - -// Public interface -export interface Actions { - set: (key: K, value: V) => void; - setAll: (entries: MapOrEntries) => void; - remove: (key: K) => void; - reset: Map["clear"]; -} - -// We hide some setters from the returned map to disable autocompletion -type Return = [ - Omit, "set" | "clear" | "delete">, - Actions -]; - -function useMap( - initialState: MapOrEntries = new Map() -): Return { - const [map, setMap] = useState(new Map(initialState)); - - const actions: Actions = { - set: useCallback((key, value) => { - setMap((prev) => { - const copy = new Map(prev); - copy.set(key, value); - return copy; - }); - }, []), - - setAll: useCallback((entries) => { - setMap(() => new Map(entries)); - }, []), - - remove: useCallback((key) => { - setMap((prev) => { - const copy = new Map(prev); - copy.delete(key); - return copy; - }); - }, []), - - reset: useCallback(() => { - setMap(() => new Map()); - }, []), - }; - - return [map, actions]; -} - -export default useMap; diff --git a/app/src/main.tsx b/app/src/main.tsx deleted file mode 100644 index 71d5890..0000000 --- a/app/src/main.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import App from "./App"; -import "./styles.css"; -import { useFontsStore } from "stores/fonts.store"; -import { invoke } from "@tauri-apps/api"; - -invoke("get_system_families").then((data) => { - if (data && Array.isArray(data)) { - const fontsStore = useFontsStore.getState(); - fontsStore.setFonts(data); - fontsStore.setDidInit(true); - } -}); - -ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( - - - -); diff --git a/app/src/primitives/AnimatedEntities.ts b/app/src/primitives/AnimatedEntities.ts deleted file mode 100644 index 5c6be5e..0000000 --- a/app/src/primitives/AnimatedEntities.ts +++ /dev/null @@ -1,194 +0,0 @@ -import { z } from "zod"; -import { - BaseEntity, - EllipseEntity, - EntityType, - RectEntity, - TextEntity, -} from "./Entities"; -import { AnimatedTransform, AnimatedVec2 } from "./Values"; -import { TextPaint } from "./Paint"; -import { AnimatedProperties } from "./AnimatedProperty"; - -export const AnimationData = z.object({ - offset: z.number(), - duration: z.number(), - visible: z.boolean().optional().default(true), -}); - -export const AnimatedStaggeredTextEntity = BaseEntity.extend({ - /** Transform applied to the whole layer. */ - transform: AnimatedTransform, - /** The staggered delay that is applied for each letter. Gets multiplied by the index of the letter. */ - stagger: z.number().min(0), - /** These properties get applied to each letter */ - letter: z.object({ - transform: AnimatedTransform, - paint: TextPaint, - }), - text: z.string(), - origin: AnimatedVec2, - animation_data: AnimationData, - type: z.literal(EntityType.Enum.StaggeredText), -}); - -export const AnimatedRectEntity = RectEntity.extend({ - position: AnimatedVec2, - size: AnimatedVec2, - origin: AnimatedVec2, - transform: AnimatedTransform.optional(), - animation_data: AnimationData, -}); - -export const AnimatedTextEntity = TextEntity.extend({ - origin: AnimatedVec2, - transform: AnimatedTransform.optional(), - animation_data: AnimationData, -}); - -export const AnimatedEllipseEntity = EllipseEntity.extend({ - radius: AnimatedVec2, - position: AnimatedVec2, - origin: AnimatedVec2, - transform: AnimatedTransform.optional(), - animation_data: AnimationData, -}); - -export const AnimatedEntity = z.discriminatedUnion("type", [ - AnimatedRectEntity, - AnimatedTextEntity, - AnimatedStaggeredTextEntity, - AnimatedEllipseEntity, -]); - -export const AnimatedEntities = z.array(AnimatedEntity); - -export function animatedTransformToAnimatedProperties( - animatedTransform: z.input, - basePath?: string -): z.input { - return [ - { - animatedValue: animatedTransform.translate, - label: "Translation", - propertyPath: basePath - ? basePath + ".transform.translate" - : "transform.translate", - }, - { - animatedValue: animatedTransform.rotate, - label: "Rotation", - propertyPath: basePath - ? basePath + ".transform.rotate" - : "transform.rotate", - }, - { - animatedValue: animatedTransform.scale, - label: "Scale", - propertyPath: basePath - ? basePath + ".transform.scale" - : "transform.scale", - }, - { - animatedValue: animatedTransform.skew, - label: "Skew", - propertyPath: basePath ? basePath + ".transform.skew" : "transform.skew", - }, - ]; -} - -export function getAnimatedPropertiesByAnimatedEntity( - animatedEntity: z.input -) { - const animatedProperties: z.input = []; - - switch (animatedEntity.type) { - case "Ellipse": - animatedProperties.push({ - propertyPath: "origin", - animatedValue: animatedEntity.origin, - label: "Origin", - }); - animatedProperties.push({ - propertyPath: "radius", - animatedValue: animatedEntity.radius, - label: "Radius", - }); - - if (animatedEntity.transform) { - animatedProperties.push( - ...animatedTransformToAnimatedProperties(animatedEntity.transform) - ); - } - - break; - - case "Rect": - animatedProperties.push({ - propertyPath: "origin", - animatedValue: animatedEntity.origin, - label: "Origin", - }); - animatedProperties.push({ - propertyPath: "size", - animatedValue: animatedEntity.size, - label: "Size", - }); - - if (animatedEntity.transform) { - animatedProperties.push( - ...animatedTransformToAnimatedProperties(animatedEntity.transform) - ); - } - break; - - case "StaggeredText": - animatedProperties.push({ - propertyPath: "origin", - animatedValue: animatedEntity.origin, - label: "Origin", - }); - - if (animatedEntity.transform) { - animatedProperties.push( - ...animatedTransformToAnimatedProperties(animatedEntity.transform) - ); - } - - if (animatedEntity.letter.transform) { - animatedProperties.push( - ...animatedTransformToAnimatedProperties( - animatedEntity.letter.transform, - "letter" - ) - ); - } - break; - - case "Text": - animatedProperties.push({ - propertyPath: "origin", - animatedValue: animatedEntity.origin, - label: "Origin", - }); - - if (animatedEntity.transform) { - animatedProperties.push( - ...animatedTransformToAnimatedProperties(animatedEntity.transform) - ); - } - break; - } - - return animatedProperties; -} - -export function getAnimatedPropertiesByAnimatedEnties( - animatedEntities: z.input -) { - const animatedProperties: z.input = []; - - animatedEntities.forEach((aEnt) => { - animatedProperties.push(...getAnimatedPropertiesByAnimatedEntity(aEnt)); - }); -} diff --git a/app/src/primitives/AnimatedProperty.ts b/app/src/primitives/AnimatedProperty.ts deleted file mode 100644 index 3d89ccd..0000000 --- a/app/src/primitives/AnimatedProperty.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { z } from "zod"; -import { AnimatedValue } from "./Values"; - -export const AnimatedProperty = z.object({ - propertyPath: z.string(), - animatedValue: AnimatedValue, - label: z.string(), -}); - -export const AnimatedProperties = z.array(AnimatedProperty); diff --git a/app/src/primitives/Effects.ts b/app/src/primitives/Effects.ts deleted file mode 100644 index 917958e..0000000 --- a/app/src/primitives/Effects.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { z } from "zod"; - -export const EffectTypeOptions = ["Blur", "Erode", "Displace"] as const; - -export const TileModeOptions = ["Clamp", "Decal", "Mirror", "Repeat"] as const; - -export const EffectType = z.enum(EffectTypeOptions); -export const TileMode = z.enum(TileModeOptions); - -export const EffectLayer = z.object({ - entityId: z.string().uuid(), -}); - -export const BlurEffectLayer = EffectLayer.extend({ - type: z.literal(EffectType.enum.Blur), - amountX: z.number().min(0), - amountY: z.number().min(0), - tileMode: TileMode, -}); diff --git a/app/src/primitives/Entities.ts b/app/src/primitives/Entities.ts deleted file mode 100644 index 785cfcf..0000000 --- a/app/src/primitives/Entities.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { z } from "zod"; -import { Vec2, Vec3 } from "./Values"; -import { Paint, TextPaint } from "./Paint"; - -const EntityTypeOptions = ["Text", "Ellipse", "Rect", "StaggeredText"] as const; - -export const EntityType = z.enum(EntityTypeOptions); - -export const Transform = z.object({ - skew: Vec2, - rotate: Vec3, - translate: Vec2, - scale: Vec2, -}); - -export const Cache = z.object({ - valid: z.boolean().optional().default(true), -}); - -export const BaseEntity = z.object({ - id: z.string(), - cache: Cache, -}); - -export const GeometryEntity = BaseEntity.extend({ - paint: Paint, -}); - -export const StaggeredTextEntity = BaseEntity.extend({ - letter: z.object({ - transform: z.array(Transform).optional(), - paint: TextPaint, - }), - origin: Vec2, - text: z.string(), - type: z.literal(EntityType.Enum.StaggeredText), -}); - -export const RectEntity = GeometryEntity.extend({ - type: z.literal(EntityType.Enum.Rect), - size: Vec2, - position: Vec2, - origin: Vec2, - transform: z.nullable(Transform), -}); - -export const EllipseEntity = GeometryEntity.extend({ - type: z.literal(EntityType.Enum.Ellipse), - radius: Vec2, - position: Vec2, - origin: Vec2, - transform: z.nullable(Transform), -}); - -export const TextEntity = BaseEntity.extend({ - type: z.literal(EntityType.Enum.Text), - paint: TextPaint, - origin: Vec2, - text: z.string(), - transform: z.nullable(Transform), -}); - -export const Entity = z.discriminatedUnion("type", [ - RectEntity, - EllipseEntity, - TextEntity, - StaggeredTextEntity, -]); - -export const Entities = z.array(Entity); diff --git a/app/src/primitives/Interpolation.ts b/app/src/primitives/Interpolation.ts deleted file mode 100644 index 2a96472..0000000 --- a/app/src/primitives/Interpolation.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { z } from "zod"; - -const InterpolationTypeOptions = [ - "Linear", - "Spring", - "EasingFunction", -] as const; - -const EasingFunctionOptions = [ - "QuintOut", - "QuintIn", - "QuintInOut", - "CircOut", - "CircIn", - "CircInOut", - "CubicOut", - "CubicIn", - "CubicInOut", - "ExpoOut", - "ExpoIn", - "ExpoInOut", - "QuadOut", - "QuadIn", - "QuadInOut", - "QuartOut", - "QuartIn", - "QuartInOut", -] as const; - -export const EasingFunction = z.enum(EasingFunctionOptions); -export const InterpolationType = z.enum(InterpolationTypeOptions); - -export const LinearInterpolation = z.object({ - type: z.literal(InterpolationType.Enum.Linear), -}); - -export const EasingFunctionInterpolation = z.object({ - type: z.literal(InterpolationType.Enum.EasingFunction), - easing_function: EasingFunction.default("CircOut"), -}); - -export const SpringInterpolation = z.object({ - mass: z.number().default(1), - damping: z.number().default(15), - stiffness: z.number().default(200), - type: z.literal(InterpolationType.Enum.Spring), -}); - -export const Interpolation = z.discriminatedUnion("type", [ - SpringInterpolation, - EasingFunctionInterpolation, - LinearInterpolation, -]); diff --git a/app/src/primitives/Keyframe.ts b/app/src/primitives/Keyframe.ts deleted file mode 100644 index 25078d8..0000000 --- a/app/src/primitives/Keyframe.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { z } from "zod"; -import { Interpolation } from "./Interpolation"; - -export const Keyframe = z.object({ - id: z.string().uuid(), - value: z.number(), - offset: z.number(), - interpolation: z.optional(Interpolation), -}); - -export const Keyframes = z.object({ - values: z.array(Keyframe), -}); diff --git a/app/src/primitives/Paint.ts b/app/src/primitives/Paint.ts deleted file mode 100644 index fbb6f23..0000000 --- a/app/src/primitives/Paint.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { z } from "zod"; - -export const Color = z.object({ - value: z.array(z.number().min(0).max(255)).max(4), -}); - -const PaintStyleTypeOptions = ["Fill", "Stroke"] as const; - -export const PaintStyleType = z.enum(PaintStyleTypeOptions); - -const ColorWithDefault = Color.optional().default({ value: [0, 0, 0, 1] }); - -export const StrokeStyle = z.object({ - width: z.number().min(0).optional().default(10), - color: ColorWithDefault, - type: z.literal(PaintStyleType.Enum.Stroke), -}); - -export const FillStyle = z.object({ - color: ColorWithDefault, - type: z.literal(PaintStyleType.Enum.Fill), -}); - -export const TextAlign = z.enum(["Left", "Center", "Right"]); - -export const PaintStyle = z.discriminatedUnion("type", [ - StrokeStyle, - FillStyle, -]); - -export const Paint = z.object({ - style: PaintStyle, -}); - -export const TextPaint = z.object({ - style: PaintStyle, - align: TextAlign, - font_name: z.string(), - size: z.number().min(0), -}); - -/* const NestedFillStyle = FillStyle.omit({ type: true }).default({}); -const NestedStrokeStyle = StrokeStyle.omit({ type: true }).default({}); - -export const StrokeAndFillStyle = z.object({ - color: ColorWithDefault, - type: z.literal(PaintStyleType.Enum.StrokeAndFill), - fill: NestedFillStyle, - stroke: NestedStrokeStyle, -}); */ diff --git a/app/src/primitives/Timeline.ts b/app/src/primitives/Timeline.ts deleted file mode 100644 index 8706f02..0000000 --- a/app/src/primitives/Timeline.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { z } from "zod"; -import { AnimatedEntities } from "./AnimatedEntities"; - -export const RenderState = z.object({ - curr_frame: z.number(), -}); - -export const Timeline = z.object({ - entities: AnimatedEntities, - render_state: RenderState, - duration: z.number(), - fps: z.number().int(), - size: z.array(z.number().int()).length(2), -}); diff --git a/app/src/primitives/Values.ts b/app/src/primitives/Values.ts deleted file mode 100644 index 37e7193..0000000 --- a/app/src/primitives/Values.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { z } from "zod"; -import { Keyframes } from "./Keyframe"; -import { v4 as uuid } from "uuid"; - -export const Vec2 = z.array(z.number()).length(2); -export const Vec3 = z.array(z.number()).length(3); - - - -const ValueTypeOptions = ["Vec2", "Vec3", "Number"] as const; - -export const ValueType = z.enum(ValueTypeOptions); - -export const AnimatedNumber = z.object({ - keyframes: Keyframes, - type: z.literal(ValueType.Enum.Number), -}); - -export const AnimatedVec2 = z.object({ - keyframes: z.array(AnimatedNumber).length(2), - type: z.literal(ValueType.Enum.Vec2), -}); - -export const AnimatedVec3 = z.object({ - keyframes: z.array(AnimatedNumber).length(3), - type: z.literal(ValueType.Enum.Vec3), -}); - -export const AnimatedTransform = z.object({ - type: z.literal("Transform"), - /** Translates by the given animated vec2 */ - translate: AnimatedVec2, - /** Skews by the given animated vec2 */ - skew: AnimatedVec2, - /** Rotates by the given animated vec3 */ - rotate: AnimatedVec3, - /** Scales on the x and y axis by the given animated vec2 */ - scale: AnimatedVec2, -}); - -export const AnimatedValue = z.discriminatedUnion("type", [ - AnimatedNumber, - AnimatedVec2, - AnimatedVec3, - AnimatedTransform, -]); - -export function staticAnimatedNumber( - number: number -): z.infer { - return { - type: ValueType.Enum.Number, - keyframes: { - values: [ - { - id: uuid(), - interpolation: { - type: "Linear", - }, - value: number, - offset: 0, - }, - ], - }, - }; -} - -export function staticAnimatedVec2( - x: number, - y: number -): z.infer { - return { - type: ValueType.Enum.Vec2, - keyframes: [staticAnimatedNumber(x), staticAnimatedNumber(y)], - }; -} - -export function staticAnimatedVec3( - x: number, - y: number, - z: number -): z.infer { - return { - type: ValueType.Enum.Vec3, - keyframes: [ - staticAnimatedNumber(x), - staticAnimatedNumber(y), - staticAnimatedNumber(z), - ], - }; -} - -export function staticAnimatedTransform( - translate: [number, number], - scale: [number, number], - rotate: [number, number, number], - skew: [number, number] -): z.input { - return { - type: "Transform", - translate: staticAnimatedVec2(...translate), - scale: staticAnimatedVec2(...scale), - rotate: staticAnimatedVec3(...rotate), - skew: staticAnimatedVec2(...skew), - }; -} diff --git a/app/src/services/dependencies.service.ts b/app/src/services/dependencies.service.ts deleted file mode 100644 index 0d56d83..0000000 --- a/app/src/services/dependencies.service.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { invoke } from "@tauri-apps/api"; -import { AnimatedEntities } from "primitives/AnimatedEntities"; -import { Entities, EntityType } from "primitives/Entities"; -import { z } from "zod"; - -function typedArrayToBuffer(array: Uint8Array): ArrayBuffer { - return array.buffer.slice( - array.byteOffset, - array.byteLength + array.byteOffset - ); -} - -export type Dependencies = { - fonts: Map; -}; - -export class DependenciesService { - dependencies: Dependencies; - - constructor() { - this.dependencies = { - fonts: new Map(), - }; - } - - private async prepare( - entities: z.output | z.output - ) { - const fontNames = new Set(); - - entities.forEach((entity) => { - switch (entity.type) { - case EntityType.Enum.Text: - fontNames.add(entity.paint.font_name); - break; - case EntityType.Enum.StaggeredText: - fontNames.add(entity.letter.paint.font_name); - break; - default: - break; - } - }); - - await this.loadFonts(fontNames); - - return this.dependencies; - } - - async prepareForEntities(entities: z.output) { - await this.prepare(entities); - } - - async prepareForAnimatedEntities( - animatedEntities: z.output - ) { - await this.prepare(animatedEntities); - } - - async loadFonts(fontNames: Set) { - const resolveFonts: Array> = []; - - const loadFont = async (fontName: string) => { - return invoke("get_system_font", { fontName }).then((data) => { - if (Array.isArray(data)) { - const u8 = new Uint8Array(data as any); - const buffer = typedArrayToBuffer(u8); - this.dependencies.fonts.set(fontName, buffer); - } - }); - }; - - fontNames.forEach((fontName) => { - if (!this.dependencies.fonts.has(fontName)) { - resolveFonts.push(loadFont(fontName)); - } - }); - - await Promise.all(resolveFonts); - } -} diff --git a/app/src/services/entities.service.ts b/app/src/services/entities.service.ts deleted file mode 100644 index 0d0adcf..0000000 --- a/app/src/services/entities.service.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { EntityType } from "primitives/Entities"; -import { PaintStyleType, TextAlign } from "primitives/Paint"; -import { staticAnimatedTransform, staticAnimatedVec2 } from "primitives/Values"; -import { useEntitiesStore } from "stores/entities.store"; -import { useTimelineStore } from "stores/timeline.store"; -import { v4 as uuid } from "uuid"; - -export class EntitiesService { - get entitiesStore() { - return useEntitiesStore.getState(); - } - - private get timelineStore() { - return useTimelineStore.getState(); - } - - createUuid() { - return uuid(); - } - - createRect() { - return this.entitiesStore.createEntity({ - type: EntityType.Enum.Rect, - id: this.createUuid(), - cache: {}, - paint: { - style: { - type: PaintStyleType.Enum.Fill, - color: { - value: [233, 100, 150, 1.0], - }, - }, - }, - size: staticAnimatedVec2(500, 500), - origin: staticAnimatedVec2(-250, -250), - position: staticAnimatedVec2(...this.timelineStore.size), - transform: staticAnimatedTransform([0, 0], [1, 1], [0, 0, 0], [0, 0]), - animation_data: { - offset: 0, - duration: 3, - }, - }); - } - - createEllipse() { - return this.entitiesStore.createEntity({ - type: EntityType.Enum.Ellipse, - id: this.createUuid(), - cache: {}, - paint: { - style: { - type: PaintStyleType.Enum.Fill, - color: { - value: [233, 100, 150, 1.0], - }, - }, - }, - radius: staticAnimatedVec2(500, 500), - origin: staticAnimatedVec2(-250, -250), - position: staticAnimatedVec2(...this.timelineStore.size), - transform: staticAnimatedTransform([0, 0], [1, 1], [0, 0, 0], [0, 0]), - animation_data: { - offset: 0, - duration: 3, - }, - }); - } - - createText(text?: string) { - return this.entitiesStore.createEntity({ - type: EntityType.Enum.Text, - id: this.createUuid(), - cache: {}, - text: text || "Hallo Welt", - paint: { - align: TextAlign.Enum.Center, - size: 20, - font_name: "Helvetica-Bold", - style: { - type: PaintStyleType.Enum.Fill, - color: { - value: [233, 100, 150, 1.0], - }, - }, - }, - origin: staticAnimatedVec2(-250, -250), - transform: staticAnimatedTransform([0, 0], [1, 1], [0, 0, 0], [0, 0]), - animation_data: { - offset: 0, - duration: 3, - }, - }); - } - - createStaggeredText(text?: string) { - return this.entitiesStore.createEntity({ - type: EntityType.Enum.StaggeredText, - id: this.createUuid(), - cache: {}, - text: text || "Hallo Welt", - stagger: 0.1, - letter: { - paint: { - align: TextAlign.Enum.Center, - size: 20, - font_name: "Helvetica-Bold", - style: { - type: PaintStyleType.Enum.Fill, - color: { - value: [233, 100, 150, 1.0], - }, - }, - }, - transform: staticAnimatedTransform([0, 0], [1, 1], [0, 0, 0], [0, 0]), - }, - origin: staticAnimatedVec2(-250, -250), - transform: staticAnimatedTransform([0, 0], [1, 1], [0, 0, 0], [0, 0]), - animation_data: { - offset: 0, - duration: 3, - }, - }); - } -} diff --git a/app/src/services/playback.service.ts b/app/src/services/playback.service.ts deleted file mode 100644 index 5f73ceb..0000000 --- a/app/src/services/playback.service.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { Drawer } from "drawers/draw"; -import { AnimatedEntities } from "primitives/AnimatedEntities"; -import { useEntitiesStore } from "stores/entities.store"; -import { useRenderStateStore } from "stores/render-state.store"; -import { useTimelineStore } from "stores/timeline.store"; - -export class PlaybackService { - drawer: Drawer; - lastDrawTime: number | undefined; - raf: number | undefined; - playing: boolean; - - constructor() { - this.drawer = new Drawer(); - this.lastDrawTime = undefined; - this.raf = undefined; - this.playing = false; - } - - async init(canvas: HTMLCanvasElement) { - await this.drawer.init(canvas); - - useRenderStateStore.subscribe((state) => { - if (!this.playing && state.playing) { - this.playing = true; - this.play(); - } - - if (this.playing && !state.playing) { - this.playing = false; - this.stop(); - } - - if (!this.playing && !state.playing) { - this.seek(); - } - }); - - useEntitiesStore.subscribe((state) => { - if (!this.playing) { - this.seek(); - } - }); - - this.seek(); - } - - play() { - this.drawer.dependenciesService.prepareForAnimatedEntities( - this.animatedEntities - ); - - const currentTime = window.performance.now(); - this.lastDrawTime = currentTime; - this.playLoop(currentTime); - } - - stop() { - if (this.raf !== undefined) { - cancelAnimationFrame(this.raf); - } - } - - seek() { - this.drawer.update(this.animatedEntities, true); - } - - get animatedEntities() { - return AnimatedEntities.parse(useEntitiesStore.getState().entities); - } - - get timelineStore() { - return useTimelineStore.getState(); - } - - get fpsInterval() { - return 1000 / this.timelineStore.fps; - } - - get currFrame() { - return useRenderStateStore.getState().renderState.curr_frame; - } - - get totalFrameCount() { - return this.timelineStore.fps * this.timelineStore.duration; - } - - playLoop(currentTime: number) { - this.raf = requestAnimationFrame(this.playLoop.bind(this)); - - if (this.lastDrawTime !== undefined) { - const elapsed = currentTime - this.lastDrawTime; - - if (elapsed > this.fpsInterval) { - this.lastDrawTime = currentTime - (elapsed % this.fpsInterval); - - const nextFrame = - this.currFrame + 1 < this.totalFrameCount ? this.currFrame + 1 : 0; - - useRenderStateStore.getState().setCurrentFrame(nextFrame); - - this.drawer.update(this.animatedEntities, false); - } - } - } -} diff --git a/app/src/services/project.service.ts b/app/src/services/project.service.ts deleted file mode 100644 index 251706f..0000000 --- a/app/src/services/project.service.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { useTimelineStore } from "stores/timeline.store"; -import { useEntitiesStore } from "stores/entities.store"; -import { useRenderStateStore } from "stores/render-state.store"; -import { z } from "zod"; -import { Timeline } from "primitives/Timeline"; - -export class ProjectService { - public saveProject() { - const timelineStore = useTimelineStore.getState(); - const entitiesStore = useEntitiesStore.getState(); - const renderStateStore = useRenderStateStore.getState(); - - const timeline: z.input = { - ...timelineStore, - entities: entitiesStore.entities, - render_state: renderStateStore.renderState, - }; - - const parsedTimeline = Timeline.parse(timeline); - - const serializedTimeline = JSON.stringify(parsedTimeline); - - return serializedTimeline; - } - - public loadProject() {} -} diff --git a/app/src/services/render.service.ts b/app/src/services/render.service.ts deleted file mode 100644 index baf629e..0000000 --- a/app/src/services/render.service.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Timeline } from "primitives/Timeline"; -// TODO: publish package maybe provide wrapper etc. -import * as creatorWasm from "../../../lib/creator_rs/pkg"; -import { z } from "zod"; -import { useTimelineStore } from "stores/timeline.store"; -import { useEntitiesStore } from "stores/entities.store"; -import { useRenderStateStore } from "stores/render-state.store"; - -export class RenderService { - render() { - - } - - calculate() { - const timelineStore = useTimelineStore.getState(); - const entitiesStore = useEntitiesStore.getState(); - const renderStateStore = useRenderStateStore.getState(); - - - let timeline: z.input = { - ...timelineStore, - entities: entitiesStore.entities, - render_state: renderStateStore.renderState - } - - timeline = Timeline.parse(timeline); - - const renderedEntities = creatorWasm.calculate_timeline_from_json_at_curr_frame(JSON.stringify(timeline)); - - console.log(renderedEntities); - } -} \ No newline at end of file diff --git a/app/src/stores/entities.store.ts b/app/src/stores/entities.store.ts deleted file mode 100644 index b3b8306..0000000 --- a/app/src/stores/entities.store.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { EXAMPLE_ANIMATED_ENTITIES } from "example"; -import { produce } from "immer"; -import { AnimatedEntities, AnimatedEntity } from "primitives/AnimatedEntities"; -import { z } from "zod"; -import { create } from "zustand"; - -interface EntitiesStore { - entities: z.input; - selectedEntity: number | undefined; - selectedKeyframe: string | undefined; - selectEntity: (index: number) => void; - deselectEntity: () => void; - setEntities: (entities: z.input) => void; - updateEntity: ( - index: number, - entity: Partial> - ) => void; - createEntity: ( - entity: z.input - ) => z.input; - deleteEntity: (index: number) => void; - updateEntityById: ( - id: string, - entity: Partial> - ) => void; -} - -const useEntitiesStore = create((set, get) => ({ - entities: EXAMPLE_ANIMATED_ENTITIES, - selectedKeyframe: undefined, - selectEntity: (index) => set(() => ({ selectedEntity: index })), - deselectEntity: () => set(() => ({ selectedEntity: undefined })), - selectedEntity: undefined, - setEntities: (entities) => { - console.log("set entities"); - set({ entities }); - }, - createEntity: (entity) => { - set({ entities: [...get().entities, entity] }); - return entity; - }, - updateEntityById: (id, entity) => - set(({ entities }) => { - const nextEntities = produce(entities, (draft) => { - const index = draft.findIndex((e) => e.id === id); - - draft[index] = { ...draft[index], ...entity } as z.infer< - typeof AnimatedEntity - >; - }); - - return { entities: nextEntities }; - }), - deleteEntity: (index) => - set(({ entities }) => { - const nextEntities = produce(entities, (draft) => { - draft.splice(index, 1); - }); - - return { entities: nextEntities }; - }), - updateEntity: (index, entity) => - set(({ entities }) => { - const nextEntities = produce(entities, (draft) => { - draft[index] = { ...draft[index], ...entity } as z.infer< - typeof AnimatedEntity - >; - }); - - return { entities: nextEntities }; - }), -})); - -export { useEntitiesStore }; diff --git a/app/src/stores/fonts.store.ts b/app/src/stores/fonts.store.ts deleted file mode 100644 index 55eab52..0000000 --- a/app/src/stores/fonts.store.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { create } from "zustand"; - -interface FontsStore { - fonts: Array; - didInit: boolean; - setDidInit: (didInit: boolean) => void; - setFonts: (fonts: Array) => void; -} - -const useFontsStore = create((set) => ({ - fonts: [], - didInit: false, - setDidInit: (didInit) => set({ didInit }), - setFonts: (fonts) => set({ fonts }), -})); - -export { useFontsStore }; diff --git a/app/src/stores/keyframe.store.ts b/app/src/stores/keyframe.store.ts deleted file mode 100644 index 0f4960b..0000000 --- a/app/src/stores/keyframe.store.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { create } from "zustand"; - -interface KeyframeStore { - selectedKeyframe: string | undefined; - selectKeyframe: (id: string) => void; - deselectKeyframe: () => void; -} - -const useKeyframeStore = create((set) => ({ - selectKeyframe: (id) => set({ selectedKeyframe: id }), - deselectKeyframe: () => set({ selectedKeyframe: undefined }), - selectedKeyframe: undefined, -})); - -export { useKeyframeStore }; diff --git a/app/src/stores/render-state.store.ts b/app/src/stores/render-state.store.ts deleted file mode 100644 index c2a2f11..0000000 --- a/app/src/stores/render-state.store.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { RenderState } from "primitives/Timeline"; -import { z } from "zod"; -import { create } from "zustand"; - -interface RenderStateStore { - renderState: z.infer; - playing: boolean; - setPlaying: (playing: boolean) => void; - togglePlaying: () => void; - setCurrentFrame: (target: number) => void; -} - -const useRenderStateStore = create((set, get) => ({ - renderState: { - curr_frame: 20, - }, - playing: false, - togglePlaying: () => set({ playing: !get().playing }), - setPlaying: (playing) => set({ playing }), - setCurrentFrame: (target) => - set((store) => { - store.renderState = { - curr_frame: target, - }; - - return { renderState: store.renderState }; - }), -})); - -export { useRenderStateStore }; diff --git a/app/src/stores/timeline.store.ts b/app/src/stores/timeline.store.ts deleted file mode 100644 index 15ed8d3..0000000 --- a/app/src/stores/timeline.store.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { create } from "zustand"; - -interface TimelineStore { - fps: number; - duration: number; - size: [number, number]; -} - -const useTimelineStore = create((set) => ({ - fps: 60, - size: [1280, 720], - duration: 10.0, -})); - -export { useTimelineStore }; diff --git a/app/src/styles.css b/app/src/styles.css deleted file mode 100644 index c79214d..0000000 --- a/app/src/styles.css +++ /dev/null @@ -1,98 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer base { - h1 { - @apply text-2xl; - } - h2 { - @apply text-xl; - } - h3 { - @apply text-lg; - } - - a { - @apply text-blue-600 underline; - } - - input { - @apply box-border bg-transparent shadow-main/10 hover:shadow-primary/50 - focus:ring-primary focus:ring-2 focus:ring-offset-1 - focus:shadow-primary selection:bg-secondary selection:text-black - outline-none px-3 py-2 rounded-md shadow-[0_0_0_1px] - appearance-none items-center justify-center - w-full text-base leading-none transition-all; - } - - select { - @apply appearance-none; - } - - :root { - --color-main: 0 0% 0%; - - --color-secondary: 0 0% 10%; - - --color-neutral: 0 0% 100%; - --color-neutral-accent: 0 0% 90%; - - --color-highlight: 0 0% 0%; - - --color-primary: 222.2 47.4% 11.2%; - } - - @media (prefers-color-scheme: dark) { - :root { - --color-main: 0 0% 100%; - - --color-primary: 260 80% 50%; - --color-secondary: 260 50% 70%; - - --color-neutral: 250 30% 8%; - --color-neutral-accent: 250 40% 12%; - - --color-highlight: 250 20% 15%; - } - } -} - -@layer base { - * { - @apply border-highlight; - } - body { - @apply bg-neutral text-main; - font-feature-settings: "rlig" 1, "calt" 1; - } -} - -label { - @apply mb-1 text-sm opacity-70; -} - -fieldset { - @apply mb-2 flex flex-col items-start; -} - -:root { - font-family: Inter, Avenir, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 400; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -html, -body, -#root { - width: 100%; - height: 100%; - overflow: hidden; -} diff --git a/app/src/utils/index.ts b/app/src/utils/index.ts deleted file mode 100644 index 46ad367..0000000 --- a/app/src/utils/index.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { AnimatedEntity } from "primitives/AnimatedEntities"; -import { Keyframe } from "primitives/Keyframe"; -import { AnimatedNumber, AnimatedVec2, AnimatedVec3 } from "primitives/Values"; -import { z } from "zod"; -import { ClassValue, clsx } from "clsx"; -import { twMerge } from "tailwind-merge"; - -export function flattenAnimatedNumberKeyframes( - aNumber: z.input -): Array> { - return aNumber.keyframes.values; -} - -function componentToHex(c: number) { - var hex = c.toString(16); - return hex.length == 1 ? "0" + hex : hex; -} - -export function rgbToHex(r: number, g: number, b: number) { - return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b); -} - -export function flattenAnimatedVec2Keyframes( - aVec2: z.input -): Array> { - const keyframes: Array> = [ - ...flattenAnimatedNumberKeyframes(aVec2.keyframes[0]), - ...flattenAnimatedNumberKeyframes(aVec2.keyframes[1]), - ]; - - return keyframes; -} - -export function flattenAnimatedVec3Keyframes( - aVec3: z.input -): Array> { - const keyframes: Array> = [ - ...flattenAnimatedNumberKeyframes(aVec3.keyframes[0]), - ...flattenAnimatedNumberKeyframes(aVec3.keyframes[1]), - ...flattenAnimatedNumberKeyframes(aVec3.keyframes[2]), - ]; - - return keyframes; -} - -export function flattenedKeyframesByEntity( - entity: z.input -): Array> { - const keyframes: Array> = []; - - switch (entity.type) { - case "Text": - keyframes.push(...flattenAnimatedVec2Keyframes(entity.origin)); - break; - case "Rect": - keyframes.push(...flattenAnimatedVec2Keyframes(entity.position)); - keyframes.push(...flattenAnimatedVec2Keyframes(entity.size)); - break; - case "Ellipse": - keyframes.push(...flattenAnimatedVec2Keyframes(entity.position)); - keyframes.push(...flattenAnimatedVec2Keyframes(entity.radius)); - break; - case "StaggeredText": - keyframes.push( - ...flattenAnimatedVec3Keyframes(entity.letter.transform.rotate) - ); - keyframes.push( - ...flattenAnimatedVec2Keyframes(entity.letter.transform.translate) - ); - keyframes.push( - ...flattenAnimatedVec2Keyframes(entity.letter.transform.skew) - ); - keyframes.push( - ...flattenAnimatedVec2Keyframes(entity.letter.transform.scale) - ); - keyframes.push(...flattenAnimatedVec2Keyframes(entity.origin)); - break; - default: - break; - } - - return keyframes; -} - -/** - * Set a value inside an object with its path: example: set({}, 'a.b.c', '...') => { a: { b: { c: '...' } } } - * If one of the keys in path doesn't exists in object, it'll be created. - * - * @param object Object to manipulate - * @param path Path to the object field that need to be created/updated - * @param value Value to set - */ -export function set(object: any, path: string, value: any) { - const decomposedPath = path.split("."); - const base = decomposedPath[0]; - - if (base === undefined) { - return object; - } - - // assign an empty object in order to spread object - if (!object.hasOwnProperty(base)) { - object[base] = {}; - } - - // Determine if there is still layers to traverse - value = - decomposedPath.length <= 1 - ? value - : set(object[base], decomposedPath.slice(1).join("."), value); - - return { - ...object, - [base]: value, - }; -} - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)); -} diff --git a/app/src/vite-env.d.ts b/app/src/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/app/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/app/tailwind.config.js b/app/tailwind.config.js deleted file mode 100644 index f9b987b..0000000 --- a/app/tailwind.config.js +++ /dev/null @@ -1,32 +0,0 @@ -/** @type {import('tailwindcss').Config} */ - -export default { - content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], - theme: { - extend: { - colors: { - main: "hsl(var(--color-main))", - secondary: "hsl(var(--color-secondary))", - neutral: "hsl(var(--color-neutral))", - "neutral-accent": "hsl(var(--color-neutral-accent))", - highlight: "hsl(var(--color-highlight))", - primary: "hsl(var(--color-primary))", - }, - keyframes: { - "accordion-down": { - from: { height: 0 }, - to: { height: "var(--radix-accordion-content-height)" }, - }, - "accordion-up": { - from: { height: "var(--radix-accordion-content-height)" }, - to: { height: 0 }, - }, - }, - animation: { - "accordion-down": "accordion-down 0.2s ease-out", - "accordion-up": "accordion-up 0.2s ease-out", - }, - }, - }, - plugins: [require("tailwindcss-animate")], -}; diff --git a/app/tsconfig.json b/app/tsconfig.json deleted file mode 100644 index 82bd78a..0000000 --- a/app/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": [ - "DOM", - "DOM.Iterable", - "ESNext" - ], - "allowJs": false, - "baseUrl": "src", - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx" - }, - "include": [ - "src" - ], - "references": [ - { - "path": "./tsconfig.node.json" - } - ] -} \ No newline at end of file diff --git a/app/tsconfig.node.json b/app/tsconfig.node.json deleted file mode 100644 index 9d31e2a..0000000 --- a/app/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/app/vite.config.ts b/app/vite.config.ts deleted file mode 100644 index d24c888..0000000 --- a/app/vite.config.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react"; -import tsconfigPaths from "vite-tsconfig-paths"; - -// https://vitejs.dev/config/ -export default defineConfig(async () => ({ - plugins: [tsconfigPaths(), react()], - - // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` - // prevent vite from obscuring rust errors - clearScreen: false, - // tauri expects a fixed port, fail if that port is not available - server: { - port: 1420, - strictPort: true, - }, - // to make use of `TAURI_DEBUG` and other env variables - // https://tauri.studio/v1/api/config#buildconfig.beforedevcommand - envPrefix: ["VITE_", "TAURI_"], - build: { - // Tauri supports es2021 - target: process.env.TAURI_PLATFORM == "windows" ? "chrome105" : "safari13", - // don't minify for debug builds - minify: !process.env.TAURI_DEBUG ? "esbuild" : false, - // produce sourcemaps for debug builds - sourcemap: !!process.env.TAURI_DEBUG, - }, -})); diff --git a/app/yarn.lock b/app/yarn.lock deleted file mode 100644 index ca1c2d1..0000000 --- a/app/yarn.lock +++ /dev/null @@ -1,2339 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@alloc/quick-lru@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" - integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz" - integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/compat-data@^7.22.0": - version "7.22.3" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz" - integrity sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ== - -"@babel/core@^7.20.12": - version "7.22.1" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz" - integrity sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.22.0" - "@babel/helper-compilation-targets" "^7.22.1" - "@babel/helper-module-transforms" "^7.22.1" - "@babel/helpers" "^7.22.0" - "@babel/parser" "^7.22.0" - "@babel/template" "^7.21.9" - "@babel/traverse" "^7.22.1" - "@babel/types" "^7.22.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/generator@^7.22.0", "@babel/generator@^7.22.3": - version "7.22.3" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz" - integrity sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A== - dependencies: - "@babel/types" "^7.22.3" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.22.1": - version "7.22.1" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz" - integrity sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ== - dependencies: - "@babel/compat-data" "^7.22.0" - "@babel/helper-validator-option" "^7.21.0" - browserslist "^4.21.3" - lru-cache "^5.1.1" - semver "^6.3.0" - -"@babel/helper-environment-visitor@^7.22.1": - version "7.22.1" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz" - integrity sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA== - -"@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== - dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.21.4": - version "7.21.4" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz" - integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== - dependencies: - "@babel/types" "^7.21.4" - -"@babel/helper-module-transforms@^7.22.1": - version "7.22.1" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz" - integrity sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw== - dependencies: - "@babel/helper-environment-visitor" "^7.22.1" - "@babel/helper-module-imports" "^7.21.4" - "@babel/helper-simple-access" "^7.21.5" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.21.9" - "@babel/traverse" "^7.22.1" - "@babel/types" "^7.22.0" - -"@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz" - integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== - -"@babel/helper-simple-access@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz" - integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== - dependencies: - "@babel/types" "^7.21.5" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.21.5": - version "7.21.5" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz" - integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-option@^7.21.0": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz" - integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== - -"@babel/helpers@^7.22.0": - version "7.22.3" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz" - integrity sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w== - dependencies: - "@babel/template" "^7.21.9" - "@babel/traverse" "^7.22.1" - "@babel/types" "^7.22.3" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.21.9", "@babel/parser@^7.22.0", "@babel/parser@^7.22.4": - version "7.22.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.4.tgz" - integrity sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA== - -"@babel/plugin-transform-react-jsx-self@^7.18.6": - version "7.21.0" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz" - integrity sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-react-jsx-source@^7.19.6": - version "7.19.6" - resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz" - integrity sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.19.0" - -"@babel/runtime@^7.13.10": - version "7.22.3" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz" - integrity sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/template@^7.20.7", "@babel/template@^7.21.9": - version "7.21.9" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz" - integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/parser" "^7.21.9" - "@babel/types" "^7.21.5" - -"@babel/traverse@^7.22.1": - version "7.22.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.4.tgz" - integrity sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ== - dependencies: - "@babel/code-frame" "^7.21.4" - "@babel/generator" "^7.22.3" - "@babel/helper-environment-visitor" "^7.22.1" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.22.4" - "@babel/types" "^7.22.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.18.6", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.22.0", "@babel/types@^7.22.3", "@babel/types@^7.22.4": - version "7.22.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.22.4.tgz" - integrity sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA== - dependencies: - "@babel/helper-string-parser" "^7.21.5" - "@babel/helper-validator-identifier" "^7.19.1" - to-fast-properties "^2.0.0" - -"@emotion/is-prop-valid@^0.8.2": - version "0.8.8" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - dependencies: - "@emotion/memoize" "0.7.4" - -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - -"@esbuild/android-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" - integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== - -"@esbuild/android-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" - integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== - -"@esbuild/android-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" - integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== - -"@esbuild/darwin-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" - integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== - -"@esbuild/darwin-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" - integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== - -"@esbuild/freebsd-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" - integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== - -"@esbuild/freebsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" - integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== - -"@esbuild/linux-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" - integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== - -"@esbuild/linux-arm@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" - integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== - -"@esbuild/linux-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" - integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== - -"@esbuild/linux-loong64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" - integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== - -"@esbuild/linux-mips64el@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" - integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== - -"@esbuild/linux-ppc64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" - integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== - -"@esbuild/linux-riscv64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" - integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== - -"@esbuild/linux-s390x@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" - integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== - -"@esbuild/linux-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" - integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== - -"@esbuild/netbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" - integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== - -"@esbuild/openbsd-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" - integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== - -"@esbuild/sunos-x64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" - integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== - -"@esbuild/win32-arm64@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" - integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== - -"@esbuild/win32-ia32@0.17.19": - version "0.17.19" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" - integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== - -"@esbuild/win32-x64@0.17.19": - version "0.17.19" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz" - integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== - -"@floating-ui/core@^1.2.6": - version "1.2.6" - resolved "https://registry.npmjs.org/@floating-ui/core/-/core-1.2.6.tgz" - integrity sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg== - -"@floating-ui/dom@^1.2.7": - version "1.2.9" - resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.2.9.tgz" - integrity sha512-sosQxsqgxMNkV3C+3UqTS6LxP7isRLwX8WMepp843Rb3/b0Wz8+MdUkxJksByip3C2WwLugLHN1b4ibn//zKwQ== - dependencies: - "@floating-ui/core" "^1.2.6" - -"@floating-ui/react-dom@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.0.tgz" - integrity sha512-Ke0oU3SeuABC2C4OFu2mSAwHIP5WUiV98O9YWoHV4Q5aT6E9k06DV0Khi5uYspR8xmmBk08t8ZDcz3TR3ARkEg== - dependencies: - "@floating-ui/dom" "^1.2.7" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13": - version "1.4.15" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@radix-ui/colors@^0.1.8": - version "0.1.8" - resolved "https://registry.npmjs.org/@radix-ui/colors/-/colors-0.1.8.tgz" - integrity sha512-jwRMXYwC0hUo0mv6wGpuw254Pd9p/R6Td5xsRpOmaWkUHlooNWqVcadgyzlRumMq3xfOTXwJReU0Jv+EIy4Jbw== - -"@radix-ui/number@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz" - integrity sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/primitive@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz" - integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/primitive@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz" - integrity sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-arrow@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz" - integrity sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-collection@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz" - integrity sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-slot" "1.0.2" - -"@radix-ui/react-compose-refs@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz" - integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-compose-refs@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz" - integrity sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-context@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz" - integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-context@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz" - integrity sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-direction@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz" - integrity sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-dismissable-layer@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz" - integrity sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-escape-keydown" "1.0.3" - -"@radix-ui/react-focus-guards@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz" - integrity sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-focus-scope@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz" - integrity sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-form@^0.0.2": - version "0.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-form/-/react-form-0.0.2.tgz" - integrity sha512-+WQU4Gs4MqjYsHwh5d19Ka4CMcWeXd7WPuWYCYGtNbDRMHFG2TtgM9PlEK4Yrk7wG1f5/da6Bgtteky2ggDXUg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.0" - "@radix-ui/react-compose-refs" "1.0.0" - "@radix-ui/react-context" "1.0.0" - "@radix-ui/react-id" "1.0.0" - "@radix-ui/react-label" "2.0.1" - "@radix-ui/react-primitive" "1.0.2" - -"@radix-ui/react-icons@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz" - integrity sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw== - -"@radix-ui/react-id@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.0.tgz" - integrity sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.0" - -"@radix-ui/react-id@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz" - integrity sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-label@2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.1.tgz" - integrity sha512-qcfbS3B8hTYmEO44RNcXB6pegkxRsJIbdxTMu0PEX0Luv5O2DvTIwwVYxQfUwLpM88EL84QRPLOLgwUSApMsLQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.2" - -"@radix-ui/react-menu@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.5.tgz" - integrity sha512-Gw4f9pwdH+w5w+49k0gLjN0PfRDHvxmAgG16AbyJZ7zhwZ6PBHKtWohvnSwfusfnK3L68dpBREHpVkj8wEM7ZA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-dismissable-layer" "1.0.4" - "@radix-ui/react-focus-guards" "1.0.1" - "@radix-ui/react-focus-scope" "1.0.3" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-popper" "1.1.2" - "@radix-ui/react-portal" "1.0.3" - "@radix-ui/react-presence" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-roving-focus" "1.0.4" - "@radix-ui/react-slot" "1.0.2" - "@radix-ui/react-use-callback-ref" "1.0.1" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.5" - -"@radix-ui/react-menubar@^1.0.2": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.0.3.tgz" - integrity sha512-GqjdxzYCjjKhcgEODDP8SrYfbWNh/Hm3lyuFkP5Q5IbX0QfXklLF1o1AqA3oTV2kulUgN/kOZVS92hIIShEgpA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-menu" "2.0.5" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-roving-focus" "1.0.4" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-popover@^1.0.6": - version "1.0.6" - resolved "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.6.tgz" - integrity sha512-cZ4defGpkZ0qTRtlIBzJLSzL6ht7ofhhW4i1+pkemjV1IKXm0wgCRnee154qlV6r9Ttunmh2TNZhMfV2bavUyA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-dismissable-layer" "1.0.4" - "@radix-ui/react-focus-guards" "1.0.1" - "@radix-ui/react-focus-scope" "1.0.3" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-popper" "1.1.2" - "@radix-ui/react-portal" "1.0.3" - "@radix-ui/react-presence" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-slot" "1.0.2" - "@radix-ui/react-use-controllable-state" "1.0.1" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.5" - -"@radix-ui/react-popper@1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz" - integrity sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg== - dependencies: - "@babel/runtime" "^7.13.10" - "@floating-ui/react-dom" "^2.0.0" - "@radix-ui/react-arrow" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - "@radix-ui/react-use-rect" "1.0.1" - "@radix-ui/react-use-size" "1.0.1" - "@radix-ui/rect" "1.0.1" - -"@radix-ui/react-portal@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz" - integrity sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-presence@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz" - integrity sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-primitive@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.2.tgz" - integrity sha512-zY6G5Qq4R8diFPNwtyoLRZBxzu1Z+SXMlfYpChN7Dv8gvmx9X3qhDqiLWvKseKVJMuedFeU/Sa0Sy/Ia+t06Dw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-slot" "1.0.1" - -"@radix-ui/react-primitive@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz" - integrity sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-slot" "1.0.2" - -"@radix-ui/react-roving-focus@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz" - integrity sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-scroll-area@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.4.tgz#13c36c453b2880aba57df67fb91a1d3f9b18998d" - integrity sha512-OIClwBkwPG+FKvC4OMTRaa/3cfD069nkKFFL/TQzRzaO42Ce5ivKU9VMKgT7UU6UIkjcQqKBrDOIzWtPGw6e6w== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/number" "1.0.1" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-presence" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-select@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-1.2.2.tgz#caa981fa0d672cf3c1b2a5240135524e69b32181" - integrity sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/number" "1.0.1" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-dismissable-layer" "1.0.4" - "@radix-ui/react-focus-guards" "1.0.1" - "@radix-ui/react-focus-scope" "1.0.3" - "@radix-ui/react-id" "1.0.1" - "@radix-ui/react-popper" "1.1.2" - "@radix-ui/react-portal" "1.0.3" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-slot" "1.0.2" - "@radix-ui/react-use-callback-ref" "1.0.1" - "@radix-ui/react-use-controllable-state" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - "@radix-ui/react-use-previous" "1.0.1" - "@radix-ui/react-visually-hidden" "1.0.3" - aria-hidden "^1.1.1" - react-remove-scroll "2.5.5" - -"@radix-ui/react-separator@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz" - integrity sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/react-slider@^1.1.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.1.2.tgz" - integrity sha512-NKs15MJylfzVsCagVSWKhGGLNR1W9qWs+HtgbmjjVUB3B9+lb3PYoXxVju3kOrpf0VKyVCtZp+iTwVoqpa1Chw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/number" "1.0.1" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-collection" "1.0.3" - "@radix-ui/react-compose-refs" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-controllable-state" "1.0.1" - "@radix-ui/react-use-layout-effect" "1.0.1" - "@radix-ui/react-use-previous" "1.0.1" - "@radix-ui/react-use-size" "1.0.1" - -"@radix-ui/react-slot@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz" - integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.0" - -"@radix-ui/react-slot@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz" - integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "1.0.1" - -"@radix-ui/react-toggle-group@1.0.4", "@radix-ui/react-toggle-group@^1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.0.4.tgz" - integrity sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-roving-focus" "1.0.4" - "@radix-ui/react-toggle" "1.0.3" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-toggle@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.0.3.tgz" - integrity sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-use-controllable-state" "1.0.1" - -"@radix-ui/react-toolbar@^1.0.3": - version "1.0.4" - resolved "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz" - integrity sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "1.0.1" - "@radix-ui/react-context" "1.0.1" - "@radix-ui/react-direction" "1.0.1" - "@radix-ui/react-primitive" "1.0.3" - "@radix-ui/react-roving-focus" "1.0.4" - "@radix-ui/react-separator" "1.0.3" - "@radix-ui/react-toggle-group" "1.0.4" - -"@radix-ui/react-use-callback-ref@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz" - integrity sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-controllable-state@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz" - integrity sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-use-escape-keydown@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz" - integrity sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-callback-ref" "1.0.1" - -"@radix-ui/react-use-layout-effect@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz" - integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-layout-effect@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz" - integrity sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-previous@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz" - integrity sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw== - dependencies: - "@babel/runtime" "^7.13.10" - -"@radix-ui/react-use-rect@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz" - integrity sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/rect" "1.0.1" - -"@radix-ui/react-use-size@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz" - integrity sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-use-layout-effect" "1.0.1" - -"@radix-ui/react-visually-hidden@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz#51aed9dd0fe5abcad7dee2a234ad36106a6984ac" - integrity sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-primitive" "1.0.3" - -"@radix-ui/rect@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz" - integrity sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ== - dependencies: - "@babel/runtime" "^7.13.10" - -"@tauri-apps/api@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@tauri-apps/api/-/api-1.3.0.tgz" - integrity sha512-AH+3FonkKZNtfRtGrObY38PrzEj4d+1emCbwNGu0V2ENbXjlLHMZQlUh+Bhu/CRmjaIwZMGJ3yFvWaZZgTHoog== - -"@tauri-apps/cli-darwin-arm64@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.3.1.tgz#ef0fe290e0a6e3e53fa2cc4f1a72a0c87921427c" - integrity sha512-QlepYVPgOgspcwA/u4kGG4ZUijlXfdRtno00zEy+LxinN/IRXtk+6ErVtsmoLi1ZC9WbuMwzAcsRvqsD+RtNAg== - -"@tauri-apps/cli-darwin-x64@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.3.1.tgz#4c84ea0f08a5b636b067943d637a38e091a4aad3" - integrity sha512-fKcAUPVFO3jfDKXCSDGY0MhZFF/wDtx3rgFnogWYu4knk38o9RaqRkvMvqJhLYPuWaEM5h6/z1dRrr9KKCbrVg== - -"@tauri-apps/cli-linux-arm-gnueabihf@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.3.1.tgz#a4f1b237189e4f8f89cc890e1dc2eec76d4345be" - integrity sha512-+4H0dv8ltJHYu/Ma1h9ixUPUWka9EjaYa8nJfiMsdCI4LJLNE6cPveE7RmhZ59v9GW1XB108/k083JUC/OtGvA== - -"@tauri-apps/cli-linux-arm64-gnu@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.3.1.tgz#e2391326b64dfe13c7442bdcc13c4988ce5e6df9" - integrity sha512-Pj3odVO1JAxLjYmoXKxcrpj/tPxcA8UP8N06finhNtBtBaxAjrjjxKjO4968KB0BUH7AASIss9EL4Tr0FGnDuw== - -"@tauri-apps/cli-linux-arm64-musl@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.3.1.tgz#49354349f80f879ffc6950c0c03c0aea1395efa5" - integrity sha512-tA0JdDLPFaj42UDIVcF2t8V0tSha40rppcmAR/MfQpTCxih6399iMjwihz9kZE1n4b5O4KTq9GliYo50a8zYlQ== - -"@tauri-apps/cli-linux-x64-gnu@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.3.1.tgz#9a33ffe9e0d9b1b3825db57cbcfcddeb773682c6" - integrity sha512-FDU+Mnvk6NLkqQimcNojdKpMN4Y3W51+SQl+NqG9AFCWprCcSg62yRb84751ujZuf2MGT8HQOfmd0i77F4Q3tQ== - -"@tauri-apps/cli-linux-x64-musl@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.3.1.tgz#5283731e894c17bc070c499e73145cfe2633ef21" - integrity sha512-MpO3akXFmK8lZYEbyQRDfhdxz1JkTBhonVuz5rRqxwA7gnGWHa1aF1+/2zsy7ahjB2tQ9x8DDFDMdVE20o9HrA== - -"@tauri-apps/cli-win32-ia32-msvc@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.3.1.tgz#f31538abfd94f27ade1f17d01f30da6be1660c6f" - integrity sha512-9Boeo3K5sOrSBAZBuYyGkpV2RfnGQz3ZhGJt4hE6P+HxRd62lS6+qDKAiw1GmkZ0l1drc2INWrNeT50gwOKwIQ== - -"@tauri-apps/cli-win32-x64-msvc@1.3.1": - version "1.3.1" - resolved "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.3.1.tgz" - integrity sha512-wMrTo91hUu5CdpbElrOmcZEoJR4aooTG+fbtcc87SMyPGQy1Ux62b+ZdwLvL1sVTxnIm//7v6QLRIWGiUjCPwA== - -"@tauri-apps/cli@^1.3.0": - version "1.3.1" - resolved "https://registry.npmjs.org/@tauri-apps/cli/-/cli-1.3.1.tgz" - integrity sha512-o4I0JujdITsVRm3/0spfJX7FcKYrYV1DXJqzlWIn6IY25/RltjU6qbC1TPgVww3RsRX63jyVUTcWpj5wwFl+EQ== - optionalDependencies: - "@tauri-apps/cli-darwin-arm64" "1.3.1" - "@tauri-apps/cli-darwin-x64" "1.3.1" - "@tauri-apps/cli-linux-arm-gnueabihf" "1.3.1" - "@tauri-apps/cli-linux-arm64-gnu" "1.3.1" - "@tauri-apps/cli-linux-arm64-musl" "1.3.1" - "@tauri-apps/cli-linux-x64-gnu" "1.3.1" - "@tauri-apps/cli-linux-x64-musl" "1.3.1" - "@tauri-apps/cli-win32-ia32-msvc" "1.3.1" - "@tauri-apps/cli-win32-x64-msvc" "1.3.1" - -"@tempblade/common@^2.0.1": - version "2.0.1" - resolved "https://packages.unom.io/@tempblade%2fcommon/-/common-2.0.1.tgz" - integrity sha512-8uCqsfu2tcQq4O4XODS7Hn7Mj9hZh+Rh+Y0Fsej9Bbemn/WwlIT0WrUSzWGMZLcTspvgl6kz/ljBzCqLAa3Yyw== - -"@types/d3-array@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.5.tgz#857c1afffd3f51319bbc5b301956aca68acaa7b8" - integrity sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A== - -"@types/d3-color@*": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.0.tgz#6594da178ded6c7c3842f3cc0ac84b156f12f2d4" - integrity sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA== - -"@types/d3-interpolate@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz#e7d17fa4a5830ad56fe22ce3b4fac8541a9572dc" - integrity sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw== - dependencies: - "@types/d3-color" "*" - -"@types/d3-path@^1", "@types/d3-path@^1.0.8": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-1.0.9.tgz#73526b150d14cd96e701597cbf346cfd1fd4a58c" - integrity sha512-NaIeSIBiFgSC6IGUBjZWcscUJEq7vpVu7KthHN8eieTV9d9MqkSOZLH4chq1PmcKy06PNe3axLeKmRIyxJ+PZQ== - -"@types/d3-scale@^4.0.2": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.3.tgz#7a5780e934e52b6f63ad9c24b105e33dd58102b5" - integrity sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ== - dependencies: - "@types/d3-time" "*" - -"@types/d3-shape@^1.3.1": - version "1.3.8" - resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-1.3.8.tgz#c3c15ec7436b4ce24e38de517586850f1fea8e89" - integrity sha512-gqfnMz6Fd5H6GOLYixOZP/xlrMtJms9BaS+6oWxTKHNqPGZ93BkWWupQSCYm6YHqx6h9wjRupuJb90bun6ZaYg== - dependencies: - "@types/d3-path" "^1" - -"@types/d3-time@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.0.tgz#e1ac0f3e9e195135361fa1a1d62f795d87e6e819" - integrity sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg== - -"@types/d3-time@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-2.1.1.tgz#743fdc821c81f86537cbfece07093ac39b4bc342" - integrity sha512-9MVYlmIgmRR31C5b4FVSWtuMmBHh2mOWQYfl7XAYOa8dsnb7iEmUmRSWSFgXFtkjxO65d7hTUHQC+RhR/9IWFg== - -"@types/lodash.set@^4.3.7": - version "4.3.7" - resolved "https://registry.npmjs.org/@types/lodash.set/-/lodash.set-4.3.7.tgz" - integrity sha512-bS5Wkg/nrT82YUfkNYPSccFrNZRL+irl7Yt4iM6OTSQ0VZJED2oUIVm15NkNtUAQ8SRhCe+axqERUV6MJgkeEg== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*", "@types/lodash@^4.14.172": - version "4.14.195" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz" - integrity sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg== - -"@types/node@^18.7.10": - version "18.16.16" - resolved "https://registry.npmjs.org/@types/node/-/node-18.16.16.tgz" - integrity sha512-NpaM49IGQQAUlBhHMF82QH80J08os4ZmyF9MkpCzWAGuOHqE4gTEbhzd7L3l5LmWuZ6E0OiC1FweQ4tsiW35+g== - -"@types/prop-types@*": - version "15.7.5" - resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== - -"@types/react-dom@*": - version "18.2.6" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.6.tgz#ad621fa71a8db29af7c31b41b2ea3d8a6f4144d1" - integrity sha512-2et4PDvg6PVCyS7fuTc4gPoksV58bW0RwSxWKcPRcHZf0PRUGq03TKcD/rUHe3azfV6/5/biUBJw+HhCQjaP0A== - dependencies: - "@types/react" "*" - -"@types/react-dom@^18.0.6": - version "18.2.4" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.4.tgz" - integrity sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@^18.0.15": - version "18.2.7" - resolved "https://registry.npmjs.org/@types/react/-/react-18.2.7.tgz" - integrity sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.3" - resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" - integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== - -"@types/uuid@^9": - version "9.0.1" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz" - integrity sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA== - -"@unom/style@^0.2.14": - version "0.2.14" - resolved "https://packages.unom.io/@unom%2fstyle/-/style-0.2.14.tgz" - integrity sha512-xl5u0JQQurdPvApgDnxgHsKAH++E24DknNkdhiPCVaWuNmo9zxLTNW4Jbj7kaTT6GC3jEM22mTE5RTan2SKihQ== - dependencies: - css-color-converter "^2.0.0" - -"@visx/axis@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@visx/axis/-/axis-3.1.0.tgz#775b221e5abfdec25304c607eeae8cda1a8bade6" - integrity sha512-JDj/1VYx0JO0pHFtwoFtYcnqdoZFh/dpHImEl169S5nTslSFlIoNTXA/ekpBP6ELkEZ59gmF1X5k29x6MFBwCA== - dependencies: - "@types/react" "*" - "@visx/group" "3.0.0" - "@visx/point" "3.0.1" - "@visx/scale" "3.0.0" - "@visx/shape" "3.0.0" - "@visx/text" "3.0.0" - classnames "^2.3.1" - prop-types "^15.6.0" - -"@visx/bounds@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@visx/bounds/-/bounds-3.0.0.tgz#cf357cbff90a1fe5f95eb9d9288dd8794b744a7f" - integrity sha512-YQaSSER9erxlhppzRms6cvYdKqcIwk6eksrGdbJkBoHobhPo1JCIUXlmrA4qgrEnXInPJpueGE+PE5F+Dk12DA== - dependencies: - "@types/react" "*" - "@types/react-dom" "*" - prop-types "^15.5.10" - -"@visx/curve@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@visx/curve/-/curve-3.0.0.tgz#c54568472e00a38483c58cf52e4a6ddb2887c2d4" - integrity sha512-kvHJDLBeczTQ87ZExSTfRxej06l6o6UiQ0NHf9+xpAin06y6Qk1ThOHHWJTGM6KGzwlu7jEauJGHwZs6nMhDvA== - dependencies: - "@types/d3-shape" "^1.3.1" - d3-shape "^1.0.6" - -"@visx/event@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@visx/event/-/event-3.0.1.tgz#d5358f52ff5ef30036d955bd2b68b96472ff2d6f" - integrity sha512-tK1EUYQLLStBuoCMbm8LJ3VbDyCVI8HjT0pMRQxm+C75FSIVWvrThgrfrC9sWOFnEMEYWspZO7hI5zjsPKjLQA== - dependencies: - "@types/react" "*" - "@visx/point" "3.0.1" - -"@visx/glyph@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@visx/glyph/-/glyph-3.0.0.tgz#218a96aa0ccba95dc77e46ab08d26ad89198f3a8" - integrity sha512-r1B0IocfWfhTABKjam0qqsWKjxLxZfGwefnwn8IcfELSd9iAUtLbI/46nP4roQRHhB/Wl3RBbgA97fZw8f1MxA== - dependencies: - "@types/d3-shape" "^1.3.1" - "@types/react" "*" - "@visx/group" "3.0.0" - classnames "^2.3.1" - d3-shape "^1.2.0" - prop-types "^15.6.2" - -"@visx/gradient@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@visx/gradient/-/gradient-3.0.0.tgz#39b55dd5a0b34feb219fcb2ea5525388c5ae0c1b" - integrity sha512-UoM9R9PIPLO/w7hCW9gFncrLdpKNqh13sLS9/0Iy6b75uP2l05FLG2HX4kXljeyOrj4/XyzRCMYm0HHk/p5iMA== - dependencies: - "@types/react" "*" - prop-types "^15.5.7" - -"@visx/grid@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@visx/grid/-/grid-3.0.1.tgz#d91085ed92e7e1c0c2e58710bc33b2f0f33b8e74" - integrity sha512-cln5CVvFG58C5Uz1Uf0KRBFmGmgD1NALOQdYDu5yPsTuY2yLzVYPvCIlYBMdUtE0uzfNq972SmkZHfZYs03jxQ== - dependencies: - "@types/react" "*" - "@visx/curve" "3.0.0" - "@visx/group" "3.0.0" - "@visx/point" "3.0.1" - "@visx/scale" "3.0.0" - "@visx/shape" "3.0.0" - classnames "^2.3.1" - prop-types "^15.6.2" - -"@visx/group@3.0.0", "@visx/group@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@visx/group/-/group-3.0.0.tgz#e7f9752599bcc7e141ff5317a2a9a502577ab8df" - integrity sha512-SFjXhTMcsaVAb1/TVL1KM5vn8gQTIVgSx0ATdDl4BJSFp2ym1lO8LY4jpV4SFweaHnWxVwrrfGLTn5QsYnvmjQ== - dependencies: - "@types/react" "*" - classnames "^2.3.1" - prop-types "^15.6.2" - -"@visx/point@3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@visx/point/-/point-3.0.1.tgz#77587ddaabf6f3023f09f8a0ce33a2c27c9d64c8" - integrity sha512-S5WOBMgEP2xHcgs3A2BFB2vwzrk0tMmn3PGZAbQJ+lu4HlnalDP72klUnxLTH8xclNNvpUHtHM5eLIJXyHx6Pw== - -"@visx/responsive@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@visx/responsive/-/responsive-3.0.0.tgz#e183c54ce04cffe756378872d30ac88c66a137ac" - integrity sha512-immnxQwOWlrxbnlCIqJWuDpPfrM6tglgMTN1WsyXyGluLMJqhuuxqxllfXaRPkQFS4fcvs66KCEELdazh96U2w== - dependencies: - "@types/lodash" "^4.14.172" - "@types/react" "*" - lodash "^4.17.21" - prop-types "^15.6.1" - -"@visx/scale@3.0.0", "@visx/scale@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@visx/scale/-/scale-3.0.0.tgz#727123f0c930d3346a4473e926831c45997e0312" - integrity sha512-WSf+wrxZEvu5TPGfGTafzzX1MbogbIxfD9ZKM9p7xfw65v23G0dNMy4bqVBUbOJigONoQkIZyqQ+gz5AJ/ioIg== - dependencies: - "@types/d3-interpolate" "^3.0.1" - "@types/d3-scale" "^4.0.2" - "@types/d3-time" "^2.0.0" - d3-interpolate "^3.0.1" - d3-scale "^4.0.2" - d3-time "^2.1.1" - -"@visx/shape@3.0.0", "@visx/shape@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@visx/shape/-/shape-3.0.0.tgz#a1d4bd0e12cc94c164252f175997932a09c24652" - integrity sha512-t6lpP9bIA1vwChDwiOUWl92ro29XF/M8IVNWRA0pm4LGxGGTACvxG3Agfcdi3JprahUVqPpnRCwuR36PDanq3Q== - dependencies: - "@types/d3-path" "^1.0.8" - "@types/d3-shape" "^1.3.1" - "@types/lodash" "^4.14.172" - "@types/react" "*" - "@visx/curve" "3.0.0" - "@visx/group" "3.0.0" - "@visx/scale" "3.0.0" - classnames "^2.3.1" - d3-path "^1.0.5" - d3-shape "^1.2.0" - lodash "^4.17.21" - prop-types "^15.5.10" - -"@visx/text@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@visx/text/-/text-3.0.0.tgz#9099c3605027b9ab4c54bde97518a648136c3629" - integrity sha512-LW6v5T/gpd9RGw83/ScXncYc6IlcfzXTpaN8WbbxLRI65gdvSqrykwAMR0cbpQmzoVFuZXljqOf0QslHGnBg1w== - dependencies: - "@types/lodash" "^4.14.172" - "@types/react" "*" - classnames "^2.3.1" - lodash "^4.17.21" - prop-types "^15.7.2" - reduce-css-calc "^1.3.0" - -"@visx/tooltip@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@visx/tooltip/-/tooltip-3.1.2.tgz#6c7bb36a296f4501adb99b59487412e39fe06f44" - integrity sha512-p46qztGRNkEDbxzc3V1virahvz3UQ29TzddUjA0oaTIBCrOd9UJuLvv1Tq9OpeUYPdbrO/ZRwaEeri2pbwv04Q== - dependencies: - "@types/react" "*" - "@visx/bounds" "3.0.0" - classnames "^2.3.1" - prop-types "^15.5.10" - react-use-measure "^2.0.4" - -"@vitejs/plugin-react@^3.0.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz" - integrity sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g== - dependencies: - "@babel/core" "^7.20.12" - "@babel/plugin-transform-react-jsx-self" "^7.18.6" - "@babel/plugin-transform-react-jsx-source" "^7.19.6" - magic-string "^0.27.0" - react-refresh "^0.14.0" - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - -aria-hidden@^1.1.1: - version "1.2.3" - resolved "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz" - integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== - dependencies: - tslib "^2.0.0" - -autoprefixer@^10.4.14: - version "10.4.14" - resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz" - integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== - dependencies: - browserslist "^4.21.5" - caniuse-lite "^1.0.30001464" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - integrity sha512-STw03mQKnGUYtoNjmowo4F2cRmIIxYEGiMsjjwla/u5P1lxadj/05WkNaFjNiKTgJkj8KiXbgAiRTmcQRwQNtg== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.21.3, browserslist@^4.21.5: - version "4.21.7" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz" - integrity sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA== - dependencies: - caniuse-lite "^1.0.30001489" - electron-to-chromium "^1.4.411" - node-releases "^2.0.12" - update-browserslist-db "^1.0.11" - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001489: - version "1.0.30001491" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001491.tgz" - integrity sha512-17EYIi4TLnPiTzVKMveIxU5ETlxbSO3B6iPvMbprqnKh4qJsQGk5Nh1Lp4jIMAE0XfrujsJuWZAM3oJdMHaKBA== - -canvaskit-wasm@^0.38.1: - version "0.38.1" - resolved "https://registry.npmjs.org/canvaskit-wasm/-/canvaskit-wasm-0.38.1.tgz" - integrity sha512-iGEoP55jY2itbdiFONJBH6nRb8rMMNGbT2yWUg8Pah2okNdn/eLW92rutbzAUl7Yd1nutCMQNta+yDYCj/nlWA== - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -class-variance-authority@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.6.0.tgz" - integrity sha512-qdRDgfjx3GRb9fpwpSvn+YaidnT7IUJNe4wt5/SWwM+PmUwJUhQRk/8zAyNro0PmVfmen2635UboTjIBXXxy5A== - dependencies: - clsx "1.2.1" - -classnames@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" - integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== - -clsx@1.2.1, clsx@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - -color-convert@^0.5.2: - version "0.5.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz" - integrity sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -css-color-converter@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/css-color-converter/-/css-color-converter-2.0.0.tgz" - integrity sha512-oLIG2soZz3wcC3aAl/7Us5RS8Hvvc6I8G8LniF/qfMmrm7fIKQ8RIDDRZeKyGL2SrWfNqYspuLShbnjBMVWm8g== - dependencies: - color-convert "^0.5.2" - color-name "^1.1.4" - css-unit-converter "^1.1.2" - -css-unit-converter@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz" - integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -csstype@^3.0.2: - version "3.1.2" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" - integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== - -d3-array@2: - version "2.12.1" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" - integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== - dependencies: - internmap "^1.0.0" - -"d3-array@2 - 3", "d3-array@2.10.0 - 3": - version "3.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" - integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== - dependencies: - internmap "1 - 2" - -"d3-color@1 - 3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" - integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== - -"d3-format@1 - 3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" - integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== - -"d3-interpolate@1.2.0 - 3", d3-interpolate@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" - integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== - dependencies: - d3-color "1 - 3" - -d3-path@1, d3-path@^1.0.5: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== - -d3-scale@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" - integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== - dependencies: - d3-array "2.10.0 - 3" - d3-format "1 - 3" - d3-interpolate "1.2.0 - 3" - d3-time "2.1.1 - 3" - d3-time-format "2 - 4" - -d3-shape@^1.0.6, d3-shape@^1.2.0: - version "1.3.7" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" - integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== - dependencies: - d3-path "1" - -"d3-time-format@2 - 4": - version "4.1.0" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" - integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== - dependencies: - d3-time "1 - 3" - -"d3-time@1 - 3", "d3-time@2.1.1 - 3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" - integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== - dependencies: - d3-array "2 - 3" - -d3-time@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-2.1.1.tgz#e9d8a8a88691f4548e68ca085e5ff956724a6682" - integrity sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ== - dependencies: - d3-array "2" - -debounce@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - -debug@^4.1.0, debug@^4.1.1: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -electron-to-chromium@^1.4.411: - version "1.4.413" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.413.tgz" - integrity sha512-Gd+/OAhRca06dkVxIQo/W7dr6Nmk9cx6lQdZ19GvFp51k5B/lUAokm6SJfNkdV8kFLsC3Z4sLTyEHWCnB1Efbw== - -esbuild@^0.17.5: - version "0.17.19" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz" - integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== - optionalDependencies: - "@esbuild/android-arm" "0.17.19" - "@esbuild/android-arm64" "0.17.19" - "@esbuild/android-x64" "0.17.19" - "@esbuild/darwin-arm64" "0.17.19" - "@esbuild/darwin-x64" "0.17.19" - "@esbuild/freebsd-arm64" "0.17.19" - "@esbuild/freebsd-x64" "0.17.19" - "@esbuild/linux-arm" "0.17.19" - "@esbuild/linux-arm64" "0.17.19" - "@esbuild/linux-ia32" "0.17.19" - "@esbuild/linux-loong64" "0.17.19" - "@esbuild/linux-mips64el" "0.17.19" - "@esbuild/linux-ppc64" "0.17.19" - "@esbuild/linux-riscv64" "0.17.19" - "@esbuild/linux-s390x" "0.17.19" - "@esbuild/linux-x64" "0.17.19" - "@esbuild/netbsd-x64" "0.17.19" - "@esbuild/openbsd-x64" "0.17.19" - "@esbuild/sunos-x64" "0.17.19" - "@esbuild/win32-arm64" "0.17.19" - "@esbuild/win32-ia32" "0.17.19" - "@esbuild/win32-x64" "0.17.19" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -fast-glob@^3.2.12: - version "3.2.12" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - -framer-motion@^10.12.12: - version "10.12.16" - resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-10.12.16.tgz" - integrity sha512-w/SfWEIWJkYSgRHYBmln7EhcNo31ao8Xexol8lGXf1pR/tlnBtf1HcxoUmEiEh6pacB4/geku5ami53AAQWHMQ== - dependencies: - tslib "^2.4.0" - optionalDependencies: - "@emotion/is-prop-valid" "^0.8.2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-nonce@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz" - integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -immer@^10.0.2: - version "10.0.2" - resolved "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz" - integrity sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -"internmap@1 - 2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" - integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== - -internmap@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" - integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.11.0: - version "2.12.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== - dependencies: - has "^1.0.3" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -jiti@^1.18.2: - version "1.18.2" - resolved "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz" - integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json5@^2.2.2: - version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -lilconfig@^2.0.5, lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lodash.set@^4.3.2: - version "4.3.2" - resolved "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz" - integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lucide-react@^0.229.0: - version "0.229.0" - resolved "https://registry.npmjs.org/lucide-react/-/lucide-react-0.229.0.tgz" - integrity sha512-b0/KSFXhPi++vUbnYEDUgP8Z8Rw9MQpRfBr+dRZNPMT3FD1HrVgMHXhSpkm9ZrrEtuqIfHf/O+tAGmw4WOmIog== - -magic-string@^0.27.0: - version "0.27.0" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - -math-expression-evaluator@^1.2.14: - version "1.4.0" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.4.0.tgz#3d66031117fbb7b9715ea6c9c68c2cd2eebd37e2" - integrity sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -minimatch@^3.0.4: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - -node-releases@^2.0.12: - version "2.0.12" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz" - integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -object-assign@^4.0.1, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pirates@^4.0.1: - version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -postcss-import@^15.1.0: - version "15.1.0" - resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" - integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-js@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz" - integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== - dependencies: - camelcase-css "^2.0.1" - -postcss-load-config@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz" - integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== - dependencies: - lilconfig "^2.0.5" - yaml "^2.1.1" - -postcss-nested@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== - dependencies: - postcss-selector-parser "^6.0.11" - -postcss-selector-parser@^6.0.11: - version "6.0.13" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" - integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8.4.23: - version "8.4.24" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz" - integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -prop-types@^15.5.10, prop-types@^15.5.7, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-refresh@^0.14.0: - version "0.14.0" - resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz" - integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== - -react-remove-scroll-bar@^2.3.3: - version "2.3.4" - resolved "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz" - integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== - dependencies: - react-style-singleton "^2.2.1" - tslib "^2.0.0" - -react-remove-scroll@2.5.5: - version "2.5.5" - resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz" - integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw== - dependencies: - react-remove-scroll-bar "^2.3.3" - react-style-singleton "^2.2.1" - tslib "^2.1.0" - use-callback-ref "^1.3.0" - use-sidecar "^1.1.2" - -react-style-singleton@^2.2.1: - version "2.2.1" - resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz" - integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== - dependencies: - get-nonce "^1.0.0" - invariant "^2.2.4" - tslib "^2.0.0" - -react-use-measure@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/react-use-measure/-/react-use-measure-2.1.1.tgz#5824537f4ee01c9469c45d5f7a8446177c6cc4ba" - integrity sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig== - dependencies: - debounce "^1.2.1" - -react@^18.2.0: - version "18.2.0" - resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reduce-css-calc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - integrity sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA== - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.3.tgz#60350f7fb252c0a67eb10fd4694d16909971300f" - integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ== - dependencies: - balanced-match "^1.0.0" - -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -resolve@^1.1.7, resolve@^1.22.2: - version "1.22.2" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== - dependencies: - is-core-module "^2.11.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rollup@^3.21.0: - version "3.23.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-3.23.0.tgz" - integrity sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ== - optionalDependencies: - fsevents "~2.3.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -sucrase@^3.32.0: - version "3.32.0" - resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz" - integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "7.1.6" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -tailwind-merge@^1.12.0: - version "1.12.0" - resolved "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-1.12.0.tgz" - integrity sha512-Y17eDp7FtN1+JJ4OY0Bqv9OA41O+MS8c1Iyr3T6JFLnOgLg3EvcyMKZAnQ8AGyvB5Nxm3t9Xb5Mhe139m8QT/g== - -tailwindcss-animate@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.5.tgz" - integrity sha512-UU3qrOJ4lFQABY+MVADmBm+0KW3xZyhMdRvejwtXqYOL7YjHYxmuREFAZdmVG5LPe5E9CAst846SLC4j5I3dcw== - -tailwindcss@^3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz" - integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== - dependencies: - "@alloc/quick-lru" "^5.2.0" - arg "^5.0.2" - chokidar "^3.5.3" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.2.12" - glob-parent "^6.0.2" - is-glob "^4.0.3" - jiti "^1.18.2" - lilconfig "^2.1.0" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" - postcss-import "^15.1.0" - postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - postcss-value-parser "^4.2.0" - resolve "^1.22.2" - sucrase "^3.32.0" - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -tsconfck@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/tsconfck/-/tsconfck-2.1.1.tgz" - integrity sha512-ZPCkJBKASZBmBUNqGHmRhdhM8pJYDdOXp4nRgj/O0JwUwsMq50lCDRQP/M5GBNAA0elPrq4gAeu4dkaVCuKWww== - -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0: - version "2.5.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz" - integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA== - -typescript@^4.9.5: - version "4.9.5" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -use-callback-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz" - integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== - dependencies: - tslib "^2.0.0" - -use-sidecar@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz" - integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== - dependencies: - detect-node-es "^1.1.0" - tslib "^2.0.0" - -use-sync-external-store@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz" - integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== - -vite-tsconfig-paths@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.0.tgz" - integrity sha512-jGpus0eUy5qbbMVGiTxCL1iB9ZGN6Bd37VGLJU39kTDD6ZfULTTb1bcc5IeTWqWJKiWV5YihCaibeASPiGi8kw== - dependencies: - debug "^4.1.1" - globrex "^0.1.2" - tsconfck "^2.1.0" - -vite@^4.2.1: - version "4.3.9" - resolved "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz" - integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg== - dependencies: - esbuild "^0.17.5" - postcss "^8.4.23" - rollup "^3.21.0" - optionalDependencies: - fsevents "~2.3.2" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yaml@^2.1.1: - version "2.3.1" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== - -zod@^3.21.4: - version "3.21.4" - resolved "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz" - integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== - -zustand@^4.3.8: - version "4.3.8" - resolved "https://registry.npmjs.org/zustand/-/zustand-4.3.8.tgz" - integrity sha512-4h28KCkHg5ii/wcFFJ5Fp+k1J3gJoasaIbppdgZFO4BPJnsNxL0mQXBSFgOgAdCdBj35aDTPvdAJReTMntFPGg== - dependencies: - use-sync-external-store "1.2.0" diff --git a/lib/creator_rs/.gitignore b/lib/creator_rs/.gitignore deleted file mode 100644 index eb5a316..0000000 --- a/lib/creator_rs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -target diff --git a/lib/creator_rs/Cargo.lock b/lib/creator_rs/Cargo.lock deleted file mode 100644 index d90f51a..0000000 --- a/lib/creator_rs/Cargo.lock +++ /dev/null @@ -1,3834 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aho-corasick" -version = "0.7.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" -dependencies = [ - "memchr", -] - -[[package]] -name = "aho-corasick" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" -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-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[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 = "anyhow" -version = "1.0.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" - -[[package]] -name = "atk" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" -dependencies = [ - "atk-sys", - "bitflags", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps 6.1.1", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "brotli" -version = "3.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "2.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bstr" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a246e68bb43f6cd9db24bea052a53e40405417c5fb372e3d1a8a7f770a564ef5" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" - -[[package]] -name = "bytemuck" -version = "1.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" - -[[package]] -name = "cairo-rs" -version = "0.15.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" -dependencies = [ - "bitflags", - "cairo-sys-rs", - "glib", - "libc", - "thiserror", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" -dependencies = [ - "glib-sys", - "libc", - "system-deps 6.1.1", -] - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfb" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" -dependencies = [ - "byteorder", - "fnv", - "uuid", -] - -[[package]] -name = "cfg-expr" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" -dependencies = [ - "smallvec", -] - -[[package]] -name = "cfg-expr" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "215c0072ecc28f92eeb0eea38ba63ddfcb65c2828c46311d646f1a3ff5f9841c" -dependencies = [ - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "num-traits", - "serde", - "winapi", -] - -[[package]] -name = "cmake" -version = "0.1.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" -dependencies = [ - "cc", -] - -[[package]] -name = "cocoa" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" -dependencies = [ - "bitflags", - "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "cocoa-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6" -dependencies = [ - "bitflags", - "block", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "color_quant" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" - -[[package]] -name = "combine" -version = "4.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "const-cstr" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3d0b5ff30645a68f35ece8cea4556ca14ef8a1651455f789a099a0513532a6" - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "core-graphics" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" -dependencies = [ - "bitflags", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" -dependencies = [ - "bitflags", - "core-foundation", - "libc", -] - -[[package]] -name = "core-text" -version = "19.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" -dependencies = [ - "core-foundation", - "core-graphics", - "foreign-types", - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "creator_rs" -version = "0.1.0" -dependencies = [ - "font-kit", - "rayon", - "serde", - "serde_json", - "simple-easing", - "tauri", - "uuid", - "wasm-bindgen", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cssparser" -version = "0.27.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa 0.4.8", - "matches", - "phf 0.8.0", - "proc-macro2", - "quote", - "smallvec", - "syn 1.0.109", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" -dependencies = [ - "quote", - "syn 2.0.22", -] - -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "darling" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0558d22a7b463ed0241e993f76f09f30b126687447751a8638587b864e4b3944" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab8bfa2e259f8ee1ce5e97824a3c55ec4404a0d772ca7fa96bf19f0752a046eb" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.22", -] - -[[package]] -name = "darling_macro" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a358ff9f12ec09c3e61fef9b5a9902623a695a46a917b07f269bff1445611a" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.22", -] - -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version 0.4.0", - "syn 1.0.109", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "dispatch" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" - -[[package]] -name = "dlib" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" -dependencies = [ - "libloading", -] - -[[package]] -name = "dtoa" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65d09067bfacaa79114679b279d7f5885b53295b1e2cfb4e79c8e4bd3d633169" - -[[package]] -name = "dtoa-short" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" -dependencies = [ - "dtoa", -] - -[[package]] -name = "dunce" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" - -[[package]] -name = "dwrote" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" -dependencies = [ - "lazy_static", - "libc", - "winapi", - "wio", -] - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[package]] -name = "embed_plist" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" - -[[package]] -name = "encoding_rs" -version = "0.8.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1" - -[[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fdeflate" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "field-offset" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" -dependencies = [ - "memoffset", - "rustc_version 0.4.0", -] - -[[package]] -name = "filetime" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.2.16", - "windows-sys 0.48.0", -] - -[[package]] -name = "flate2" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "float-ord" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bad48618fdb549078c333a7a8528acb57af271d0433bdecd523eb620628364e" - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "font-kit" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21fe28504d371085fae9ac7a3450f0b289ab71e07c8e57baa3fb68b9e57d6ce5" -dependencies = [ - "bitflags", - "byteorder", - "core-foundation", - "core-graphics", - "core-text", - "dirs-next", - "dwrote", - "float-ord", - "freetype", - "lazy_static", - "libc", - "log", - "pathfinder_geometry", - "pathfinder_simd", - "walkdir", - "winapi", - "yeslogic-fontconfig-sys", -] - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "freetype" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee38378a9e3db1cc693b4f88d166ae375338a0ff75cb8263e1c601d51f35dc6" -dependencies = [ - "freetype-sys", - "libc", -] - -[[package]] -name = "freetype-sys" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" -dependencies = [ - "cmake", - "libc", - "pkg-config", -] - -[[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-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-executor" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-macro" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.22", -] - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-core", - "futures-macro", - "futures-task", - "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 = "gdk" -version = "0.15.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" -dependencies = [ - "bitflags", - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" -dependencies = [ - "bitflags", - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps 6.1.1", -] - -[[package]] -name = "gdk-sys" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", - "system-deps 6.1.1", -] - -[[package]] -name = "gdkwayland-sys" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" -dependencies = [ - "gdk-sys", - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", - "system-deps 6.1.1", -] - -[[package]] -name = "gdkx11-sys" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" -dependencies = [ - "gdk-sys", - "glib-sys", - "libc", - "system-deps 6.1.1", - "x11", -] - -[[package]] -name = "generator" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" -dependencies = [ - "cc", - "libc", - "log", - "rustversion", - "windows 0.48.0", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", -] - -[[package]] -name = "gio" -version = "0.15.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" -dependencies = [ - "bitflags", - "futures-channel", - "futures-core", - "futures-io", - "gio-sys", - "glib", - "libc", - "once_cell", - "thiserror", -] - -[[package]] -name = "gio-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps 6.1.1", - "winapi", -] - -[[package]] -name = "glib" -version = "0.15.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" -dependencies = [ - "bitflags", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "once_cell", - "smallvec", - "thiserror", -] - -[[package]] -name = "glib-macros" -version = "0.15.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" -dependencies = [ - "anyhow", - "heck 0.4.1", - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "glib-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" -dependencies = [ - "libc", - "system-deps 6.1.1", -] - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "globset" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc" -dependencies = [ - "aho-corasick 0.7.20", - "bstr", - "fnv", - "log", - "regex", -] - -[[package]] -name = "gobject-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" -dependencies = [ - "glib-sys", - "libc", - "system-deps 6.1.1", -] - -[[package]] -name = "gtk" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" -dependencies = [ - "atk", - "bitflags", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk-sys", - "gtk3-macros", - "libc", - "once_cell", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.15.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "system-deps 6.1.1", -] - -[[package]] -name = "gtk3-macros" -version = "0.15.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" -dependencies = [ - "anyhow", - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "html5ever" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes", - "fnv", - "itoa 1.0.6", -] - -[[package]] -name = "http-range" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" - -[[package]] -name = "iana-time-zone" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows 0.48.0", -] - -[[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 = "ico" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" -dependencies = [ - "byteorder", - "png", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "ignore" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" -dependencies = [ - "globset", - "lazy_static", - "log", - "memchr", - "regex", - "same-file", - "thread_local", - "walkdir", - "winapi-util", -] - -[[package]] -name = "image" -version = "0.24.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" -dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "num-rational", - "num-traits", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" -dependencies = [ - "equivalent", - "hashbrown 0.14.0", -] - -[[package]] -name = "infer" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a898e4b7951673fce96614ce5751d13c40fc5674bc2d759288e46c3ab62598b3" -dependencies = [ - "cfb", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" - -[[package]] -name = "javascriptcore-rs" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" -dependencies = [ - "bitflags", - "glib", - "javascriptcore-rs-sys", -] - -[[package]] -name = "javascriptcore-rs-sys" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps 5.0.0", -] - -[[package]] -name = "jni" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" -dependencies = [ - "cesu8", - "combine", - "jni-sys", - "log", - "thiserror", - "walkdir", -] - -[[package]] -name = "jni-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" - -[[package]] -name = "js-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f54898088ccb91df1b492cc80029a6fdf1c48ca0db7c6822a8babad69c94658" -dependencies = [ - "serde", - "serde_json", - "thiserror", - "treediff", -] - -[[package]] -name = "kuchiki" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358" -dependencies = [ - "cssparser", - "html5ever", - "matches", - "selectors", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.147" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - -[[package]] -name = "libloading" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "line-wrap" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" -dependencies = [ - "safemem", -] - -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "lock_api" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" - -[[package]] -name = "loom" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" -dependencies = [ - "cfg-if", - "generator", - "scoped-tls", - "serde", - "serde_json", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - -[[package]] -name = "markup5ever" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" -dependencies = [ - "log", - "phf 0.8.0", - "phf_codegen", - "string_cache", - "string_cache_codegen", - "tendril", -] - -[[package]] -name = "matchers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" -dependencies = [ - "regex-automata", -] - -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", - "simd-adler32", -] - -[[package]] -name = "ndk" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" -dependencies = [ - "bitflags", - "jni-sys", - "ndk-sys", - "num_enum", - "thiserror", -] - -[[package]] -name = "ndk-context" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" - -[[package]] -name = "ndk-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" -dependencies = [ - "jni-sys", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -dependencies = [ - "hermit-abi 0.2.6", - "libc", -] - -[[package]] -name = "num_enum" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", - "objc_exception", -] - -[[package]] -name = "objc-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" -dependencies = [ - "block", - "objc", - "objc_id", -] - -[[package]] -name = "objc_exception" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" -dependencies = [ - "cc", -] - -[[package]] -name = "objc_id" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" -dependencies = [ - "objc", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "open" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" -dependencies = [ - "pathdiff", - "windows-sys 0.42.0", -] - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "pango" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" -dependencies = [ - "bitflags", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.15.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps 6.1.1", -] - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.3.5", - "smallvec", - "windows-targets", -] - -[[package]] -name = "pathdiff" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" - -[[package]] -name = "pathfinder_geometry" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b7e7b4ea703700ce73ebf128e1450eb69c3a8329199ffbfb9b2a0418e5ad3" -dependencies = [ - "log", - "pathfinder_simd", -] - -[[package]] -name = "pathfinder_simd" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39fe46acc5503595e5949c17b818714d26fdf9b4920eacf3b2947f0199f4a6ff" -dependencies = [ - "rustc_version 0.3.3", -] - -[[package]] -name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "pest" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73935e4d55e2abf7f130186537b19e7a4abc886a0252380b59248af473a3fc9" -dependencies = [ - "thiserror", - "ucd-trie", -] - -[[package]] -name = "phf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" -dependencies = [ - "phf_macros 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", -] - -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_macros 0.10.0", - "phf_shared 0.10.0", - "proc-macro-hack", -] - -[[package]] -name = "phf_codegen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", -] - -[[package]] -name = "phf_generator" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" -dependencies = [ - "phf_shared 0.8.0", - "rand 0.7.3", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared 0.10.0", - "rand 0.8.5", -] - -[[package]] -name = "phf_macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_macros" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro-hack", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_shared" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - -[[package]] -name = "plist" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd9647b268a3d3e14ff09c23201133a62589c658db02bb7388c7246aafe0590" -dependencies = [ - "base64 0.21.2", - "indexmap 1.9.3", - "line-wrap", - "quick-xml", - "serde", - "time", -] - -[[package]] -name = "png" -version = "0.17.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" -dependencies = [ - "bitflags", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - -[[package]] -name = "proc-macro2" -version = "1.0.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quick-xml" -version = "0.28.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", - "rand_pcg", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.10", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "raw-window-handle" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" - -[[package]] -name = "rayon" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" -dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom 0.2.10", - "redox_syscall 0.2.16", - "thiserror", -] - -[[package]] -name = "regex" -version = "1.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" -dependencies = [ - "aho-corasick 1.0.2", - "memchr", - "regex-syntax 0.7.2", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" - -[[package]] -name = "rfd" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" -dependencies = [ - "block", - "dispatch", - "glib-sys", - "gobject-sys", - "gtk-sys", - "js-sys", - "lazy_static", - "log", - "objc", - "objc-foundation", - "objc_id", - "raw-window-handle", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows 0.37.0", -] - -[[package]] -name = "rustc_version" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" -dependencies = [ - "semver 0.11.0", -] - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver 1.0.17", -] - -[[package]] -name = "rustix" -version = "0.37.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" -dependencies = [ - "bitflags", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustversion" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" - -[[package]] -name = "ryu" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" - -[[package]] -name = "safemem" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" - -[[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 = "scoped-tls" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "selectors" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" -dependencies = [ - "bitflags", - "cssparser", - "derive_more", - "fxhash", - "log", - "matches", - "phf 0.8.0", - "phf_codegen", - "precomputed-hash", - "servo_arc", - "smallvec", - "thin-slice", -] - -[[package]] -name = "semver" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" -dependencies = [ - "serde", -] - -[[package]] -name = "semver-parser" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" -dependencies = [ - "pest", -] - -[[package]] -name = "serde" -version = "1.0.164" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.164" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.22", -] - -[[package]] -name = "serde_json" -version = "1.0.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" -dependencies = [ - "itoa 1.0.6", - "ryu", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.22", -] - -[[package]] -name = "serde_spanned" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_with" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02d8aa6e3c385bf084924f660ce2a3a6bd333ba55b35e8590b321f35d88513" -dependencies = [ - "base64 0.21.2", - "chrono", - "hex", - "indexmap 1.9.3", - "serde", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edc7d5d3932fb12ce722ee5e64dd38c504efba37567f0c402f6ca728c3b8b070" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.22", -] - -[[package]] -name = "serialize-to-javascript" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] - -[[package]] -name = "serialize-to-javascript-impl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "servo_arc" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" -dependencies = [ - "nodrop", - "stable_deref_trait", -] - -[[package]] -name = "sha2" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "simd-adler32" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" - -[[package]] -name = "simple-easing" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "832ddd7df0d98d6fd93b973c330b7c8e0742d5cb8f1afc7dea89dba4d2531aa1" - -[[package]] -name = "siphasher" -version = "0.3.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" - -[[package]] -name = "slab" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "soup2" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" -dependencies = [ - "bitflags", - "gio", - "glib", - "libc", - "once_cell", - "soup2-sys", -] - -[[package]] -name = "soup2-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" -dependencies = [ - "bitflags", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps 5.0.0", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - -[[package]] -name = "state" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" -dependencies = [ - "loom", -] - -[[package]] -name = "string_cache" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", - "serde", -] - -[[package]] -name = "string_cache_codegen" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro2", - "quote", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "system-deps" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" -dependencies = [ - "cfg-expr 0.9.1", - "heck 0.3.3", - "pkg-config", - "toml 0.5.11", - "version-compare 0.0.11", -] - -[[package]] -name = "system-deps" -version = "6.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c2de8a4d8f4b823d634affc9cd2a74ec98c53a756f317e529a48046cbf71f3" -dependencies = [ - "cfg-expr 0.15.3", - "heck 0.4.1", - "pkg-config", - "toml 0.7.5", - "version-compare 0.1.1", -] - -[[package]] -name = "tao" -version = "0.16.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6d198e01085564cea63e976ad1566c1ba2c2e4cc79578e35d9f05521505e31" -dependencies = [ - "bitflags", - "cairo-rs", - "cc", - "cocoa", - "core-foundation", - "core-graphics", - "crossbeam-channel", - "dispatch", - "gdk", - "gdk-pixbuf", - "gdk-sys", - "gdkwayland-sys", - "gdkx11-sys", - "gio", - "glib", - "glib-sys", - "gtk", - "image", - "instant", - "jni", - "lazy_static", - "libc", - "log", - "ndk", - "ndk-context", - "ndk-sys", - "objc", - "once_cell", - "parking_lot", - "png", - "raw-window-handle", - "scopeguard", - "serde", - "tao-macros", - "unicode-segmentation", - "uuid", - "windows 0.39.0", - "windows-implement", - "x11-dl", -] - -[[package]] -name = "tao-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b27a4bcc5eb524658234589bdffc7e7bfb996dbae6ce9393bfd39cb4159b445" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tar" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "target-lexicon" -version = "0.12.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1c7f239eb94671427157bd93b3694320f3668d4e1eff08c7285366fd777fac" - -[[package]] -name = "tauri" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbe522898e35407a8e60dc3870f7579fea2fc262a6a6072eccdd37ae1e1d91e" -dependencies = [ - "anyhow", - "cocoa", - "dirs-next", - "embed_plist", - "encoding_rs", - "flate2", - "futures-util", - "glib", - "glob", - "gtk", - "heck 0.4.1", - "http", - "ignore", - "objc", - "once_cell", - "open", - "percent-encoding", - "rand 0.8.5", - "raw-window-handle", - "regex", - "rfd", - "semver 1.0.17", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "state", - "tar", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "tempfile", - "thiserror", - "tokio", - "url", - "uuid", - "webkit2gtk", - "webview2-com", - "windows 0.39.0", -] - -[[package]] -name = "tauri-codegen" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54ad2d49fdeab4a08717f5b49a163bdc72efc3b1950b6758245fcde79b645e1a" -dependencies = [ - "base64 0.21.2", - "brotli", - "ico", - "json-patch", - "plist", - "png", - "proc-macro2", - "quote", - "regex", - "semver 1.0.17", - "serde", - "serde_json", - "sha2", - "tauri-utils", - "thiserror", - "time", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb12a2454e747896929338d93b0642144bb51e0dddbb36e579035731f0d76b7" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 1.0.109", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-runtime" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "108683199cb18f96d2d4134187bb789964143c845d2d154848dda209191fd769" -dependencies = [ - "gtk", - "http", - "http-range", - "rand 0.8.5", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror", - "url", - "uuid", - "webview2-com", - "windows 0.39.0", -] - -[[package]] -name = "tauri-runtime-wry" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7aa256a1407a3a091b5d843eccc1a5042289baf0a43d1179d9f0fcfea37c1b" -dependencies = [ - "cocoa", - "gtk", - "percent-encoding", - "rand 0.8.5", - "raw-window-handle", - "tauri-runtime", - "tauri-utils", - "uuid", - "webkit2gtk", - "webview2-com", - "windows 0.39.0", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fc02bb6072bb397e1d473c6f76c953cda48b4a2d0cce605df284aa74a12e84" -dependencies = [ - "brotli", - "ctor", - "dunce", - "glob", - "heck 0.4.1", - "html5ever", - "infer", - "json-patch", - "kuchiki", - "memchr", - "phf 0.10.1", - "proc-macro2", - "quote", - "semver 1.0.17", - "serde", - "serde_json", - "serde_with", - "thiserror", - "url", - "walkdir", - "windows 0.39.0", -] - -[[package]] -name = "tempfile" -version = "3.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" -dependencies = [ - "autocfg", - "cfg-if", - "fastrand", - "redox_syscall 0.3.5", - "rustix", - "windows-sys 0.48.0", -] - -[[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 = "thin-slice" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" - -[[package]] -name = "thiserror" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.22", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "time" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" -dependencies = [ - "itoa 1.0.6", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" - -[[package]] -name = "time-macros" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b" -dependencies = [ - "time-core", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -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.28.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94d7b1cfd2aa4011f2de74c2c4c63665e27a71006b0a192dcd2710272e73dfa2" -dependencies = [ - "autocfg", - "bytes", - "num_cpus", - "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", -] - -[[package]] -name = "toml_datetime" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7" -dependencies = [ - "indexmap 2.0.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.22", -] - -[[package]] -name = "tracing-core" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" -dependencies = [ - "matchers", - "nu-ansi-term", - "once_cell", - "regex", - "sharded-slab", - "smallvec", - "thread_local", - "tracing", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "treediff" -version = "4.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" -dependencies = [ - "serde_json", -] - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "ucd-trie" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - -[[package]] -name = "unicode-ident" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - -[[package]] -name = "url" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "uuid" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d023da39d1fde5a8a3fe1f3e01ca9632ada0a63e9797de55a879d6e2236277be" -dependencies = [ - "getrandom 0.2.10", - "uuid-macro-internal", - "wasm-bindgen", -] - -[[package]] -name = "uuid-macro-internal" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8614dda80b9075fbca36bc31b58d1447715b1236af98dee21db521c47a0cc2c0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.22", -] - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "version-compare" -version = "0.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" - -[[package]] -name = "version-compare" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "walkdir" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.22", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.22", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" - -[[package]] -name = "web-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webkit2gtk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" -dependencies = [ - "bitflags", - "cairo-rs", - "gdk", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "gtk", - "gtk-sys", - "javascriptcore-rs", - "libc", - "once_cell", - "soup2", - "webkit2gtk-sys", -] - -[[package]] -name = "webkit2gtk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" -dependencies = [ - "atk-sys", - "bitflags", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "gtk-sys", - "javascriptcore-rs-sys", - "libc", - "pango-sys", - "pkg-config", - "soup2-sys", - "system-deps 6.1.1", -] - -[[package]] -name = "webview2-com" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" -dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows 0.39.0", - "windows-implement", -] - -[[package]] -name = "webview2-com-macros" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "webview2-com-sys" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" -dependencies = [ - "regex", - "serde", - "serde_json", - "thiserror", - "windows 0.39.0", - "windows-bindgen", - "windows-metadata", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" -dependencies = [ - "windows_aarch64_msvc 0.37.0", - "windows_i686_gnu 0.37.0", - "windows_i686_msvc 0.37.0", - "windows_x86_64_gnu 0.37.0", - "windows_x86_64_msvc 0.37.0", -] - -[[package]] -name = "windows" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" -dependencies = [ - "windows-implement", - "windows_aarch64_msvc 0.39.0", - "windows_i686_gnu 0.39.0", - "windows_i686_msvc 0.39.0", - "windows_x86_64_gnu 0.39.0", - "windows_x86_64_msvc 0.39.0", -] - -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-bindgen" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" -dependencies = [ - "windows-metadata", - "windows-tokens", -] - -[[package]] -name = "windows-implement" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" -dependencies = [ - "syn 1.0.109", - "windows-tokens", -] - -[[package]] -name = "windows-metadata" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" -dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", -] - -[[package]] -name = "windows-tokens" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" - -[[package]] -name = "windows_i686_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" - -[[package]] -name = "windows_i686_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - -[[package]] -name = "winnow" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448" -dependencies = [ - "memchr", -] - -[[package]] -name = "wio" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" -dependencies = [ - "winapi", -] - -[[package]] -name = "wry" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33748f35413c8a98d45f7a08832d848c0c5915501803d1faade5a4ebcd258cea" -dependencies = [ - "base64 0.13.1", - "block", - "cocoa", - "core-graphics", - "crossbeam-channel", - "dunce", - "gdk", - "gio", - "glib", - "gtk", - "html5ever", - "http", - "kuchiki", - "libc", - "log", - "objc", - "objc_id", - "once_cell", - "serde", - "serde_json", - "sha2", - "soup2", - "tao", - "thiserror", - "url", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows 0.39.0", - "windows-implement", -] - -[[package]] -name = "x11" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" -dependencies = [ - "libc", - "pkg-config", -] - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "xattr" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc" -dependencies = [ - "libc", -] - -[[package]] -name = "yeslogic-fontconfig-sys" -version = "3.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bbd69036d397ebbff671b1b8e4d918610c181c5a16073b96f984a38d08c386" -dependencies = [ - "const-cstr", - "dlib", - "once_cell", - "pkg-config", -] diff --git a/lib/creator_rs/Cargo.toml b/lib/creator_rs/Cargo.toml deleted file mode 100644 index aae8b3c..0000000 --- a/lib/creator_rs/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "creator_rs" -version = "0.1.0" -edition = "2021" -authors = ["Enrico Bühler "] -description = "Motion Design toolkit with spring, eased and linear based value interpolation, timeline functionality and more" -license = "MIT" -repository = "https://github.com/tempblade/creator" - -[lib] -crate-type = ["cdylib", "lib"] - -[dependencies] -rayon = { version = "1.7", optional = true } -font-kit = { version = "0.11", optional = true } -serde = { version = "1.0", features = ["derive", "rc"] } -serde_json = "1.0" -simple-easing = "1.0" -tauri = { version = "1.4", optional = true, features = [ - "dialog-open", - "dialog-save", - "shell-open", -] } -uuid = { version = "1.3", features = ["v4", "macro-diagnostics", "js"] } -wasm-bindgen = "0.2" - - -[features] -tauri = ["dep:tauri"] -parallelization = ["dep:rayon"] -fonts = ["dep:font-kit"] diff --git a/lib/creator_rs/src/animation/mod.rs b/lib/creator_rs/src/animation/mod.rs deleted file mode 100644 index 818b3eb..0000000 --- a/lib/creator_rs/src/animation/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod primitives; -pub mod timeline; diff --git a/lib/creator_rs/src/animation/primitives/circular_text.rs b/lib/creator_rs/src/animation/primitives/circular_text.rs deleted file mode 100644 index 17081ee..0000000 --- a/lib/creator_rs/src/animation/primitives/circular_text.rs +++ /dev/null @@ -1,36 +0,0 @@ -impl Animateable for AnimatedCircularText<'_> { - fn draw(&mut self, mut canvas: &mut Canvas, timeline: &Timeline<'_>) { - self.prepare(&mut canvas, &self.animation_data); - - self.sort_keyframes(); - - self.paint.set_anti_alias(true); - - let default_text_typeface = &Typeface::default(); - - let default_text_font = &Font::from_typeface(default_text_typeface, 190.0); - - let text_font: &Font = match self.font { - Some(font) => font, - None => default_text_font, - }; - - let radius: f32 = 0.35 * timeline.size.0.min(timeline.size.1) as f32; - - let mut path = Path::new(); - - path.add_circle( - (timeline.size.0 / 2, timeline.size.1 / 2), - radius, - PathDirection::CW, - ); - - let text_width = text_font.measure_str(self.text, Some(&self.paint)); - - canvas.draw - } - - fn sort_keyframes(&mut self) { - self.origin.sort_keyframes(); - } -} diff --git a/lib/creator_rs/src/animation/primitives/entities/common.rs b/lib/creator_rs/src/animation/primitives/entities/common.rs deleted file mode 100644 index 4dadd90..0000000 --- a/lib/creator_rs/src/animation/primitives/entities/common.rs +++ /dev/null @@ -1,78 +0,0 @@ -use serde::{Deserialize, Serialize}; - -use crate::animation::{primitives::utils::timestamp_to_frame, timeline::Timeline}; - -use super::{ - ellipse::{AnimatedEllipseEntity, EllipseEntity}, - rect::{AnimatedRectEntity, RectEntity}, - staggered_text::{AnimatedStaggeredTextEntity, StaggeredTextEntity}, - text::{AnimatedTextEntity, TextEntity}, -}; - -pub trait Drawable { - fn should_draw(&self, animation_data: &AnimationData, timeline: &Timeline) -> bool { - let start_frame = timestamp_to_frame(animation_data.offset, timeline.fps); - let end_frame = timestamp_to_frame( - animation_data.offset + animation_data.duration, - timeline.fps, - ); - - // println!("start {0} end {1}", start_frame, end_frame); - - let is_before = timeline.render_state.curr_frame < start_frame; - let is_after = timeline.render_state.curr_frame > end_frame; - let is_between = !is_after && !is_before; - - if is_between { - return true; - } else { - return false; - } - } -} - -pub trait Animateable { - fn sort_keyframes(&mut self); - - fn calculate(&mut self, timeline: &Timeline) -> Option; -} - -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] -pub struct Cache { - pub valid: bool, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(tag = "type")] -pub enum AnimatedEntity { - Text(AnimatedTextEntity), - StaggeredText(AnimatedStaggeredTextEntity), - Ellipse(AnimatedEllipseEntity), - Rect(AnimatedRectEntity), -} -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(tag = "type")] -pub enum Entity { - Text(TextEntity), - StaggeredText(StaggeredTextEntity), - Ellipse(EllipseEntity), - Rect(RectEntity), -} - -impl AnimatedEntity { - pub fn calculate(&mut self, timeline: &Timeline) -> Option { - match self { - Self::Text(text_entity) => text_entity.calculate(timeline), - Self::Rect(box_entity) => box_entity.calculate(timeline), - Self::StaggeredText(staggered_text_entity) => staggered_text_entity.calculate(timeline), - Self::Ellipse(ellipse_entity) => ellipse_entity.calculate(timeline), - } - } -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct AnimationData { - pub offset: f32, - pub duration: f32, - pub visible: bool, -} diff --git a/lib/creator_rs/src/animation/primitives/entities/ellipse.rs b/lib/creator_rs/src/animation/primitives/entities/ellipse.rs deleted file mode 100644 index c89d49a..0000000 --- a/lib/creator_rs/src/animation/primitives/entities/ellipse.rs +++ /dev/null @@ -1,92 +0,0 @@ -use serde::{Deserialize, Serialize}; - -use crate::animation::{ - primitives::{ - paint::Paint, - transform::{AnimatedTransform, Transform}, - values::animated_values::{AnimatedFloatVec2, AnimatedValue}, - }, - timeline::Timeline, -}; - -use super::common::{Animateable, AnimationData, Cache, Drawable, Entity}; - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct AnimatedEllipseEntity { - pub paint: Paint, - pub id: String, - pub cache: Cache, - pub radius: AnimatedFloatVec2, - pub origin: AnimatedFloatVec2, - pub position: AnimatedFloatVec2, - pub animation_data: AnimationData, - pub transform: Option, -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct EllipseEntity { - pub radius: (f32, f32), - pub cache: Cache, - pub id: String, - pub position: (f32, f32), - pub origin: (f32, f32), - pub paint: Paint, - pub transform: Option, -} - -impl Drawable for AnimatedEllipseEntity {} -impl Animateable for AnimatedEllipseEntity { - fn calculate(&mut self, timeline: &Timeline) -> Option { - let should_draw = self.should_draw(&self.animation_data, timeline); - - if should_draw { - self.sort_keyframes(); - - let radius = self.radius.get_value_at_frame( - timeline.render_state.curr_frame, - &self.animation_data, - timeline.fps, - ); - - let position = self.position.get_value_at_frame( - timeline.render_state.curr_frame, - &self.animation_data, - timeline.fps, - ); - - let origin = self.origin.get_value_at_frame( - timeline.render_state.curr_frame, - &self.animation_data, - timeline.fps, - ); - - let transform: Option = match self.transform.clone() { - Some(mut val) => Some(val.calculate(timeline, &self.animation_data)), - None => None, - }; - - Some(Entity::Ellipse(EllipseEntity { - id: self.id.clone(), - radius, - position, - origin, - cache: self.cache.clone(), - paint: self.paint.clone(), - transform, - })) - } else { - None - } - } - - fn sort_keyframes(&mut self) { - let transform = self.transform.clone(); - - if let Some(mut transform) = transform { - transform.sort_keyframes(); - } - - self.position.sort_keyframes(); - self.radius.sort_keyframes(); - } -} diff --git a/lib/creator_rs/src/animation/primitives/entities/mod.rs b/lib/creator_rs/src/animation/primitives/entities/mod.rs deleted file mode 100644 index d5ca160..0000000 --- a/lib/creator_rs/src/animation/primitives/entities/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod common; -pub mod ellipse; -pub mod rect; -pub mod staggered_text; -pub mod text; diff --git a/lib/creator_rs/src/animation/primitives/entities/rect.rs b/lib/creator_rs/src/animation/primitives/entities/rect.rs deleted file mode 100644 index e7ec536..0000000 --- a/lib/creator_rs/src/animation/primitives/entities/rect.rs +++ /dev/null @@ -1,90 +0,0 @@ -use serde::{Deserialize, Serialize}; - -use crate::animation::{ - primitives::{ - paint::Paint, - transform::{AnimatedTransform, Transform}, - values::animated_values::{AnimatedFloatVec2, AnimatedValue}, - }, - timeline::Timeline, -}; - -use super::common::{Animateable, AnimationData, Cache, Drawable, Entity}; - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct AnimatedRectEntity { - pub id: String, - pub cache: Cache, - pub position: AnimatedFloatVec2, - pub size: AnimatedFloatVec2, - pub origin: AnimatedFloatVec2, - pub paint: Paint, - pub animation_data: AnimationData, - pub transform: Option, -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct RectEntity { - pub id: String, - pub cache: Cache, - pub position: (f32, f32), - pub size: (f32, f32), - pub origin: (f32, f32), - pub paint: Paint, - pub transform: Option, -} - -impl Drawable for AnimatedRectEntity {} -impl Animateable for AnimatedRectEntity { - fn sort_keyframes(&mut self) { - if let Some(x) = &mut self.transform { - x.sort_keyframes(); - } - - self.position.sort_keyframes(); - self.size.sort_keyframes(); - } - - fn calculate(&mut self, timeline: &Timeline) -> Option { - let should_draw = self.should_draw(&self.animation_data, timeline); - - if should_draw { - self.sort_keyframes(); - - let position = self.position.get_value_at_frame( - timeline.render_state.curr_frame, - &self.animation_data, - timeline.fps, - ); - - let size = self.size.get_value_at_frame( - timeline.render_state.curr_frame, - &self.animation_data, - timeline.fps, - ); - - let origin = self.origin.get_value_at_frame( - timeline.render_state.curr_frame, - &self.animation_data, - timeline.fps, - ); - - let transform: Option = match self.transform.clone() { - Some(mut val) => Some(val.calculate(timeline, &self.animation_data)), - None => None, - }; - - Some(Entity::Rect(RectEntity { - id: self.id.clone(), - cache: self.cache.clone(), - position, - size, - origin, - paint: self.paint.clone(), - transform, - })) - } else { - None - } - } -} diff --git a/lib/creator_rs/src/animation/primitives/entities/staggered_text.rs b/lib/creator_rs/src/animation/primitives/entities/staggered_text.rs deleted file mode 100644 index 62a2cb2..0000000 --- a/lib/creator_rs/src/animation/primitives/entities/staggered_text.rs +++ /dev/null @@ -1,112 +0,0 @@ -use super::common::{Animateable, AnimationData, Cache, Drawable, Entity}; -use crate::animation::{ - primitives::{ - paint::TextPaint, - transform::{AnimatedTransform, Transform}, - values::animated_values::{AnimatedFloatVec2, AnimatedValue}, - }, - timeline::Timeline, -}; -use serde::{Deserialize, Serialize}; - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct AnimatedStaggeredTextLetter { - pub transform: Option, - pub paint: TextPaint, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct StaggeredTextLetter { - pub transform: Option>, - pub paint: TextPaint, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct AnimatedStaggeredTextEntity { - pub id: String, - pub cache: Cache, - pub text: String, - pub stagger: f32, - pub origin: AnimatedFloatVec2, - pub animation_data: AnimationData, - pub transform: Option, - pub letter: AnimatedStaggeredTextLetter, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct StaggeredTextEntity { - pub id: String, - pub cache: Cache, - pub text: String, - pub stagger: f32, - pub origin: (f32, f32), - pub transform: Option, - pub animation_data: AnimationData, - pub letter: StaggeredTextLetter, -} - -impl Drawable for AnimatedStaggeredTextEntity {} -impl Animateable for AnimatedStaggeredTextEntity { - fn calculate(&mut self, timeline: &Timeline) -> Option { - let should_draw: bool = self.should_draw(&self.animation_data, timeline); - - if should_draw { - self.sort_keyframes(); - - let transform: Option = match self.transform.clone() { - Some(mut val) => Some(val.calculate(timeline, &self.animation_data)), - None => None, - }; - - // Iterate over the chars of the string and calculate the animation with the staggered offset - let letter_transform: Option> = match self.letter.transform.clone() { - Some(mut val) => { - let mut transforms: Vec = Vec::new(); - - for c in self.text.chars().enumerate() { - let mut animation_data = self.animation_data.clone(); - animation_data.offset += self.stagger * c.0 as f32; - - let transform = val.calculate(timeline, &animation_data); - transforms.push(transform); - } - - Some(transforms) - } - None => None, - }; - - let origin = self.origin.get_value_at_frame( - timeline.render_state.curr_frame, - &self.animation_data, - timeline.fps, - ); - - Some(Entity::StaggeredText(StaggeredTextEntity { - id: self.id.clone(), - transform, - cache: self.cache.clone(), - stagger: self.stagger, - origin, - text: self.text.clone(), - animation_data: self.animation_data.clone(), - letter: StaggeredTextLetter { - transform: letter_transform, - paint: self.letter.paint.clone(), - }, - })) - } else { - None - } - } - - fn sort_keyframes(&mut self) { - if let Some(x) = &mut self.transform { - x.sort_keyframes(); - } - - if let Some(x) = &mut self.letter.transform { - x.sort_keyframes(); - } - } -} diff --git a/lib/creator_rs/src/animation/primitives/entities/text.rs b/lib/creator_rs/src/animation/primitives/entities/text.rs deleted file mode 100644 index cf8dfcc..0000000 --- a/lib/creator_rs/src/animation/primitives/entities/text.rs +++ /dev/null @@ -1,82 +0,0 @@ -use crate::animation::{ - primitives::{ - paint::TextPaint, - transform::{AnimatedTransform, Transform}, - values::animated_values::{AnimatedFloatVec2, AnimatedValue}, - }, - timeline::Timeline, -}; -use serde::{Deserialize, Serialize}; - -use super::common::{Animateable, AnimationData, Cache, Drawable, Entity}; - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct TextEntity { - pub id: String, - pub cache: Cache, - pub text: String, - pub origin: (f32, f32), - pub paint: TextPaint, - pub transform: Option, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct AnimatedTextEntity { - pub id: String, - pub cache: Cache, - pub text: String, - pub origin: AnimatedFloatVec2, - pub paint: TextPaint, - pub animation_data: AnimationData, - pub transform: Option, -} - -impl Drawable for AnimatedTextEntity {} - -impl AnimatedTextEntity { - fn into_static(&mut self, timeline: &Timeline) -> TextEntity { - self.sort_keyframes(); - - let origin = self.origin.get_value_at_frame( - timeline.render_state.curr_frame, - &self.animation_data, - timeline.fps, - ); - - let transform: Option = match self.transform.clone() { - Some(mut val) => Some(val.calculate(timeline, &self.animation_data)), - None => None, - }; - - TextEntity { - id: self.id.clone(), - cache: self.cache.clone(), - transform, - text: self.text.clone(), - origin, - paint: self.paint.clone(), - } - } -} - -impl Animateable for AnimatedTextEntity { - fn calculate(&mut self, timeline: &Timeline) -> Option { - let should_draw = self.should_draw(&self.animation_data, timeline); - - if should_draw { - self.sort_keyframes(); - - Some(Entity::Text(self.into_static(timeline))) - } else { - None - } - } - - fn sort_keyframes(&mut self) { - if let Some(x) = &mut self.transform { - x.sort_keyframes(); - } - - self.origin.sort_keyframes(); - } -} diff --git a/lib/creator_rs/src/animation/primitives/interpolations.rs b/lib/creator_rs/src/animation/primitives/interpolations.rs deleted file mode 100644 index 6055b14..0000000 --- a/lib/creator_rs/src/animation/primitives/interpolations.rs +++ /dev/null @@ -1,170 +0,0 @@ -use std::cmp::Ordering; - -use super::keyframe::RenderedKeyframe; -use serde::{Deserialize, Serialize}; -use simple_easing::{ - circ_in, circ_in_out, circ_out, cubic_in, cubic_in_out, cubic_out, expo_in, expo_in_out, - expo_out, quad_in, quad_in_out, quad_out, quart_in, quart_in_out, quart_out, quint_in, - quint_in_out, quint_out, -}; - -#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)] -pub struct SpringProperties { - pub mass: f32, - pub damping: f32, - pub stiffness: f32, -} - -#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)] -pub struct SpringState { - pub velocity: f32, - pub last_val: f32, -} - -#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)] -#[serde(tag = "easing_function")] -pub enum EasingFunction { - QuintOut, - QuintIn, - QuintInOut, - CircOut, - CircIn, - CircInOut, - CubicOut, - CubicIn, - CubicInOut, - ExpoOut, - ExpoIn, - ExpoInOut, - QuadOut, - QuadIn, - QuadInOut, - QuartOut, - QuartIn, - QuartInOut, -} - -impl EasingFunction { - fn ease(self: &Self, t: f32) -> f32 { - match self { - EasingFunction::QuintOut => quint_out(t), - EasingFunction::QuintIn => quint_in(t), - EasingFunction::QuintInOut => quint_in_out(t), - EasingFunction::CircOut => circ_out(t), - EasingFunction::CircIn => circ_in(t), - EasingFunction::CircInOut => circ_in_out(t), - EasingFunction::CubicOut => cubic_out(t), - EasingFunction::CubicIn => cubic_in(t), - EasingFunction::CubicInOut => cubic_in_out(t), - EasingFunction::ExpoOut => expo_out(t), - EasingFunction::ExpoIn => expo_in(t), - EasingFunction::ExpoInOut => expo_in_out(t), - EasingFunction::QuadOut => quad_out(t), - EasingFunction::QuadIn => quad_in(t), - EasingFunction::QuadInOut => quad_in_out(t), - EasingFunction::QuartOut => quart_out(t), - EasingFunction::QuartIn => quart_in(t), - EasingFunction::QuartInOut => quart_in_out(t), - } - } -} - -#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)] -#[serde(tag = "type")] -pub enum InterpolationType { - Linear, - Spring(SpringProperties), - EasingFunction(EasingFunction), -} - -pub fn calculate_spring_value( - curr_frame: i32, - start_value: f32, - target_value: f32, - start_frame: i32, - _end_frame: i32, - spring_props: &SpringProperties, -) -> f32 { - const PRECISION: f32 = 0.01; - const STEP: f32 = 10.0; - const REST_VELOCITY: f32 = PRECISION / 10.0; - - let _is_growing = match start_value.total_cmp(&target_value) { - Ordering::Equal => false, - Ordering::Less => false, - Ordering::Greater => true, - }; - - let mut _is_moving = false; - let mut spring_state = SpringState { - last_val: start_value, - velocity: 0.0, - }; - - let mut position = start_value; - let relative_curr_frame = curr_frame - start_frame; - - // println!("target_value {target_value} start_value {start_value}"); - // println!("start_frame {start_frame} end_frame {end_frame}"); - - for _ in 0..relative_curr_frame { - let _is_moving = spring_state.velocity.abs() > REST_VELOCITY; - - let spring_force = -spring_props.stiffness * 0.000001 * (position - target_value); - let damping_force = -spring_props.damping * 0.001 * spring_state.velocity; - let acceleration = (spring_force + damping_force) / spring_props.mass; // pt/ms^2 - - spring_state.velocity = spring_state.velocity + acceleration * STEP; // pt/ms - position = position + spring_state.velocity * STEP; - // println!("{position}") - } - - position -} - -pub fn interpolate_rendered_keyframes( - first_ren_keyframe: &RenderedKeyframe, - second_ren_keyframe: &RenderedKeyframe, - curr_frame: i32, - interpolation_type: InterpolationType, - _fps: i16, -) -> f32 { - let frame_range = second_ren_keyframe.absolute_frame - first_ren_keyframe.absolute_frame; - let position_in_range = curr_frame - first_ren_keyframe.absolute_frame; - let progress: f32 = (1.0 / frame_range as f32) * position_in_range as f32; - - /* println!( - "Progress:{0} Frame_Range: {1} Position_In_Range: {2}", - progress, frame_range, position_in_range - ); */ - - let value_diff = second_ren_keyframe.keyframe.value - first_ren_keyframe.keyframe.value; - - match interpolation_type { - InterpolationType::Linear => { - let interpolated_val = - first_ren_keyframe.keyframe.value + (value_diff * progress as f32); - - return interpolated_val; - } - InterpolationType::EasingFunction(easing_function) => { - let eased_progress = easing_function.ease(progress); - - let interpolated_val = - first_ren_keyframe.keyframe.value + (value_diff * eased_progress as f32); - - return interpolated_val; - } - InterpolationType::Spring(spring_properties) => { - let interpolated_value = calculate_spring_value( - curr_frame, - first_ren_keyframe.keyframe.value, - second_ren_keyframe.keyframe.value, - first_ren_keyframe.absolute_frame, - second_ren_keyframe.absolute_frame, - &spring_properties, - ); - return interpolated_value; - } - }; -} diff --git a/lib/creator_rs/src/animation/primitives/keyframe.rs b/lib/creator_rs/src/animation/primitives/keyframe.rs deleted file mode 100644 index 68c104f..0000000 --- a/lib/creator_rs/src/animation/primitives/keyframe.rs +++ /dev/null @@ -1,158 +0,0 @@ -use std::{cmp::Ordering, sync::Arc}; - -use serde::{Deserialize, Serialize}; - -use super::{ - entities::common::AnimationData, - interpolations::{interpolate_rendered_keyframes, InterpolationType}, - utils::render_keyframe, - values::values::Float, -}; - -#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] -pub struct Keyframe { - pub value: Float, - pub offset: f32, - pub id: Arc, - pub interpolation: Option, -} - -impl Keyframe { - pub fn new( - value: f32, - offset: f32, - id: Arc, - interpolation: Option, - ) -> Self { - Keyframe { - value, - offset, - id, - interpolation, - } - } -} - -#[derive(Debug, Clone)] -pub struct RenderedKeyframe { - pub absolute_frame: i32, - pub keyframe: Keyframe, - pub index: usize, - pub distance_from_curr: i32, - pub abs_distance_from_curr: i32, -} - -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] -pub struct Keyframes { - pub values: Vec, -} - -impl Keyframes { - pub fn get_value_at_frame( - &self, - curr_frame: i32, - animation_data: &AnimationData, - fps: i16, - ) -> f32 { - let keyframe_count = self.values.len(); - - if keyframe_count > 0 { - let mut rendered_keyframes: Vec = self - .values - .to_vec() - .into_iter() - .enumerate() - .map(|(index, keyframe)| { - render_keyframe(keyframe, animation_data, index, curr_frame, fps) - }) - .collect(); - - rendered_keyframes - .sort_by(|a, b| a.abs_distance_from_curr.cmp(&b.abs_distance_from_curr)); - - let closest_keyframe = rendered_keyframes.get(0).unwrap(); - - let result = match (closest_keyframe.distance_from_curr).cmp(&0) { - Ordering::Equal => closest_keyframe.keyframe.value, - Ordering::Greater => { - if closest_keyframe.absolute_frame == curr_frame { - return closest_keyframe.keyframe.value; - } else { - let previous_keyframe = - rendered_keyframes.to_vec().into_iter().find(|keyframe| { - if closest_keyframe.index > 0 { - keyframe.index == closest_keyframe.index - 1 - } else { - false - } - }); - - if let Some(previous_keyframe) = previous_keyframe { - let interpolation = match previous_keyframe.keyframe.interpolation { - Some(val) => val, - None => InterpolationType::Linear, - }; - - let interpolated_value = interpolate_rendered_keyframes( - &previous_keyframe, - closest_keyframe, - curr_frame, - interpolation, - fps, - ); - - return interpolated_value; - } else { - if closest_keyframe.absolute_frame > curr_frame { - return closest_keyframe.keyframe.value; - } else { - return 0.0; - } - } - } - } - Ordering::Less => { - if closest_keyframe.absolute_frame == curr_frame { - return closest_keyframe.keyframe.value; - } else { - let next_keyframe = rendered_keyframes - .to_vec() - .into_iter() - .find(|keyframe| keyframe.index == closest_keyframe.index + 1); - - if let Some(next_keyframe) = next_keyframe { - let interpolation = match closest_keyframe.keyframe.interpolation { - Some(val) => val, - None => InterpolationType::Linear, - }; - - let interpolated_value = interpolate_rendered_keyframes( - closest_keyframe, - &next_keyframe, - curr_frame, - interpolation, - fps, - ); - - return interpolated_value; - } else { - if closest_keyframe.absolute_frame < curr_frame { - return closest_keyframe.keyframe.value; - } else { - return 0.0; - } - } - } - } - }; - - result - } else { - 0.0 - } - } - - pub fn sort(&mut self) { - self.values.sort_by(|a, b| a.offset.total_cmp(&b.offset)); - } -} diff --git a/lib/creator_rs/src/animation/primitives/mod.rs b/lib/creator_rs/src/animation/primitives/mod.rs deleted file mode 100644 index f047a2f..0000000 --- a/lib/creator_rs/src/animation/primitives/mod.rs +++ /dev/null @@ -1,8 +0,0 @@ -pub mod entities; -pub mod interpolations; -pub mod keyframe; -pub mod paint; -pub mod tests; -pub mod transform; -pub mod utils; -pub mod values; diff --git a/lib/creator_rs/src/animation/primitives/paint.rs b/lib/creator_rs/src/animation/primitives/paint.rs deleted file mode 100644 index 695c5af..0000000 --- a/lib/creator_rs/src/animation/primitives/paint.rs +++ /dev/null @@ -1,70 +0,0 @@ -use serde::{Deserialize, Serialize}; - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct Color { - value: (u8, u8, u8, f32), -} - -impl Color { - pub fn new(red: u8, green: u8, blue: u8, alpha: f32) -> Color { - Color { - value: (red, green, blue, alpha), - } - } -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -#[serde(tag = "type")] -pub enum PaintStyle { - Fill(FillStyle), - Stroke(StrokeStyle), - StrokeAndFill(StrokeAndFillStyle), -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct Paint { - pub style: PaintStyle, -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct TextPaint { - pub style: PaintStyle, - pub align: TextAlign, - pub font_name: String, - pub size: f32, -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct StrokeStyle { - pub color: Color, - pub width: f32, -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct StrokeAndFillStyle { - pub stroke: StrokeStyle, - pub fill: FillStyle, -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct FillStyle { - pub color: Color, -} -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub enum TextAlign { - Left, - Center, - Right, -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct FontDefinition { - pub family_name: String, -} - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct Font { - pub glyph_count: i32, - pub weight: i32, - pub style: String, -} diff --git a/lib/creator_rs/src/animation/primitives/tests.rs b/lib/creator_rs/src/animation/primitives/tests.rs deleted file mode 100644 index 1c2957d..0000000 --- a/lib/creator_rs/src/animation/primitives/tests.rs +++ /dev/null @@ -1,183 +0,0 @@ -#[cfg(test)] -use crate::animation::primitives::{ - entities::common::AnimationData, - interpolations::{calculate_spring_value, SpringProperties}, - keyframe::{Keyframe, Keyframes}, - utils::timestamp_to_frame, -}; - -#[test] -fn interpolates_the_input() { - use crate::animation::primitives::{ - interpolations::{interpolate_rendered_keyframes, InterpolationType}, - keyframe::{Keyframe, Keyframes, RenderedKeyframe}, - utils::render_keyframe, - }; - - let animation_data = AnimationData { - offset: 0.0, - duration: 3.0, - visible: true, - }; - - let fps = 60; - - let keyframes1 = Keyframes { - values: vec![ - Keyframe { - id: "1".into(), - value: 0.0, - offset: 0.0, - interpolation: None, - }, - Keyframe { - id: "2".into(), - value: 100.0, - offset: 1.0, - interpolation: None, - }, - Keyframe { - id: "3".into(), - value: 300.0, - offset: 3.0, - interpolation: None, - }, - ], - }; - - let keyframes2 = Keyframes { - values: vec![ - Keyframe { - id: "4".into(), - value: -100.0, - offset: 0.0, - interpolation: None, - }, - Keyframe { - id: "5".into(), - value: 0.0, - offset: 1.0, - interpolation: None, - }, - ], - }; - - let rendered_keyframes1: Vec = keyframes1 - .values - .into_iter() - .enumerate() - .map(|(index, keyframe)| { - let rendered_keyframe = render_keyframe(keyframe, &animation_data, index, 120, 60); - rendered_keyframe - }) - .collect(); - - let rendered_keyframes2: Vec = keyframes2 - .values - .into_iter() - .enumerate() - .map(|(index, keyframe)| { - let rendered_keyframe = render_keyframe(keyframe, &animation_data, index, 120, 60); - rendered_keyframe - }) - .collect(); - - let val1 = interpolate_rendered_keyframes( - rendered_keyframes1.get(1).unwrap(), - rendered_keyframes1.get(2).unwrap(), - 120, - InterpolationType::Linear, - fps, - ); - - let _val2 = interpolate_rendered_keyframes( - rendered_keyframes2.get(0).unwrap(), - rendered_keyframes2.get(1).unwrap(), - 30, - InterpolationType::Linear, - fps, - ); - - assert_eq!(val1, 200.0); - //println!("{0}", val2); -} - -#[test] -fn calculates_the_spring_value() { - let _fps = 60; - let previous_value = 0.0; - let next_value = 500.0; - - let mut spring_props = SpringProperties { - mass: 1.0, // Mass of the object attached to the spring - stiffness: 100.0, // Stiffness of the spring - damping: 10.0, // Damping factor of the spring - }; - - let value1 = - calculate_spring_value(100, previous_value, next_value, 100, 300, &mut spring_props); - let value2 = - calculate_spring_value(150, previous_value, next_value, 100, 300, &mut spring_props); - let value3 = - calculate_spring_value(200, previous_value, next_value, 100, 300, &mut spring_props); - - println!("{value1}"); - println!("{value2}"); - println!("{value3}"); -} - -#[test] -fn converts_timestamp_to_frame() { - let frame1 = timestamp_to_frame(0.0, 60); - let frame2 = timestamp_to_frame(1.0, 60); - let frame3 = timestamp_to_frame(1.5, 60); - - assert_eq!(frame1, 0); - assert_eq!(frame2, 60); - assert_eq!(frame3, 90); -} - -#[test] -fn gets_value_at_frame() { - let animation_data = AnimationData { - offset: 0.0, - duration: 5.0, - visible: true, - }; - - let fps = 60; - - let keyframes = Keyframes { - values: vec![ - Keyframe { - id: "1".into(), - value: 0.0, - offset: 0.0, - interpolation: None, - }, - Keyframe { - id: "2".into(), - value: 100.0, - offset: 1.0, - interpolation: None, - }, - Keyframe { - id: "3".into(), - value: 300.0, - offset: 3.0, - interpolation: None, - }, - ], - }; - - let value1 = keyframes.get_value_at_frame(50, &animation_data, fps); - let value2 = keyframes.get_value_at_frame(90, &animation_data, fps); - let value3 = keyframes.get_value_at_frame(120, &animation_data, fps); - let value4 = keyframes.get_value_at_frame(180, &animation_data, fps); - let value5 = keyframes.get_value_at_frame(220, &animation_data, fps); - println!("value1: {0}", value1); - println!("value2: {0}", value2); - println!("value3: {0}", value3); - println!("value4: {0}", value4); - println!("value5: {0}", value5); -} diff --git a/lib/creator_rs/src/animation/primitives/transform.rs b/lib/creator_rs/src/animation/primitives/transform.rs deleted file mode 100644 index 6b52b76..0000000 --- a/lib/creator_rs/src/animation/primitives/transform.rs +++ /dev/null @@ -1,64 +0,0 @@ -use super::{ - entities::common::AnimationData, - values::animated_values::{AnimatedFloatVec2, AnimatedFloatVec3, AnimatedValue}, -}; -use crate::animation::timeline::Timeline; -use serde::{Deserialize, Serialize}; - -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] -pub struct AnimatedTransform { - pub translate: AnimatedFloatVec2, - pub scale: AnimatedFloatVec2, - pub skew: AnimatedFloatVec2, - pub rotate: AnimatedFloatVec3, -} - -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] -pub struct Transform { - pub translate: (f32, f32), - pub scale: (f32, f32), - pub skew: (f32, f32), - pub rotate: (f32, f32, f32), -} - -impl AnimatedTransform { - pub fn sort_keyframes(&mut self) { - self.rotate.sort_keyframes(); - self.skew.sort_keyframes(); - self.scale.sort_keyframes(); - self.translate.sort_keyframes(); - } - - pub fn calculate(&mut self, timeline: &Timeline, animation_data: &AnimationData) -> Transform { - let skew = self.skew.get_value_at_frame( - timeline.render_state.curr_frame, - animation_data, - timeline.fps, - ); - - let scale = self.scale.get_value_at_frame( - timeline.render_state.curr_frame, - animation_data, - timeline.fps, - ); - - let translate = self.translate.get_value_at_frame( - timeline.render_state.curr_frame, - animation_data, - timeline.fps, - ); - - let rotate = self.rotate.get_value_at_frame( - timeline.render_state.curr_frame, - animation_data, - timeline.fps, - ); - - Transform { - skew, - scale, - translate, - rotate, - } - } -} diff --git a/lib/creator_rs/src/animation/primitives/utils.rs b/lib/creator_rs/src/animation/primitives/utils.rs deleted file mode 100644 index 5cc0afe..0000000 --- a/lib/creator_rs/src/animation/primitives/utils.rs +++ /dev/null @@ -1,29 +0,0 @@ -use super::{ - entities::common::AnimationData, - keyframe::{Keyframe, RenderedKeyframe}, -}; - -pub fn timestamp_to_frame(timestamp: f32, fps: i16) -> i32 { - return (timestamp * fps as f32).round() as i32; -} - -pub fn render_keyframe( - keyframe: Keyframe, - animation_data: &AnimationData, - index: usize, - curr_frame: i32, - fps: i16, -) -> RenderedKeyframe { - let animation_start_frame = timestamp_to_frame(animation_data.offset, fps); - let frame_offset = timestamp_to_frame(keyframe.offset, fps); - let absolute_frame = animation_start_frame + frame_offset; - let distance_from_curr = absolute_frame - curr_frame; - - RenderedKeyframe { - absolute_frame, - keyframe, - index, - distance_from_curr, - abs_distance_from_curr: distance_from_curr.abs(), - } -} diff --git a/lib/creator_rs/src/animation/primitives/values/animated_values.rs b/lib/creator_rs/src/animation/primitives/values/animated_values.rs deleted file mode 100644 index bf9b3a8..0000000 --- a/lib/creator_rs/src/animation/primitives/values/animated_values.rs +++ /dev/null @@ -1,268 +0,0 @@ -use crate::animation::primitives::{ - entities::common::AnimationData, - keyframe::{Keyframe, Keyframes}, -}; -#[cfg(feature = "parallelization")] -use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator, ParallelIterator}; -use serde::{Deserialize, Serialize}; -use uuid::Uuid; - -use super::values::{Float, FloatVec2, FloatVec3}; - -pub trait AnimatedValue { - fn sort_keyframes(&mut self); - fn get_value_at_frame(&self, curr_frame: i32, animation_data: &AnimationData, fps: i16) -> T; - fn get_values_at_frame_range( - &self, - start_frame: i32, - end_frame: i32, - animation_data: &AnimationData, - fps: i16, - ) -> Vec; -} -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] -pub struct AnimatedFloat { - pub keyframes: Keyframes, -} - -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] -pub struct AnimatedFloatVec2 { - pub keyframes: (AnimatedFloat, AnimatedFloat), -} - -#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] -pub struct AnimatedFloatVec3 { - pub keyframes: (AnimatedFloat, AnimatedFloat, AnimatedFloat), -} - -#[cfg_attr(feature = "tauri", tauri::command)] -pub fn get_values_at_frame_range_from_animated_float( - animated_value: AnimatedFloat, - start_frame: i32, - end_frame: i32, - animation_data: AnimationData, - fps: i16, -) -> Vec { - animated_value.get_values_at_frame_range(start_frame, end_frame, &animation_data, fps) -} - -#[cfg_attr(feature = "tauri", tauri::command)] -pub fn get_values_at_frame_range_from_animated_float_vec2( - animated_value: AnimatedFloatVec2, - start_frame: i32, - end_frame: i32, - animation_data: AnimationData, - fps: i16, -) -> Vec { - animated_value.get_values_at_frame_range(start_frame, end_frame, &animation_data, fps) -} - -#[cfg_attr(feature = "tauri", tauri::command)] -pub fn get_values_at_frame_range_from_animated_float_vec3( - animated_value: AnimatedFloatVec3, - start_frame: i32, - end_frame: i32, - animation_data: AnimationData, - fps: i16, -) -> Vec { - animated_value.get_values_at_frame_range(start_frame, end_frame, &animation_data, fps) -} - -impl AnimatedFloat { - pub fn new(val: f32) -> AnimatedFloat { - AnimatedFloat { - keyframes: Keyframes { - values: vec![Keyframe { - id: Uuid::new_v4().to_string().into(), - value: val, - offset: 0.0, - interpolation: None, - }], - }, - } - } -} - -impl AnimatedFloatVec2 { - pub fn new(x: f32, y: f32) -> AnimatedFloatVec2 { - AnimatedFloatVec2 { - keyframes: (AnimatedFloat::new(x), AnimatedFloat::new(y)), - } - } -} - -impl AnimatedFloatVec3 { - pub fn new(x: f32, y: f32, z: f32) -> AnimatedFloatVec3 { - AnimatedFloatVec3 { - keyframes: ( - AnimatedFloat::new(x), - AnimatedFloat::new(y), - AnimatedFloat::new(z), - ), - } - } -} - -impl AnimatedValue for AnimatedFloat { - fn sort_keyframes(&mut self) { - self.keyframes.sort(); - } - - fn get_value_at_frame(&self, curr_frame: i32, animation_data: &AnimationData, fps: i16) -> f32 { - self.keyframes - .get_value_at_frame(curr_frame, &animation_data, fps) - } - - #[cfg(feature = "parallelization")] - fn get_values_at_frame_range( - &self, - start_frame: i32, - end_frame: i32, - animation_data: &AnimationData, - fps: i16, - ) -> Vec { - let values = (start_frame..end_frame) - .into_par_iter() - .map(|i| self.get_value_at_frame(i, animation_data, fps)) - .collect(); - - values - } - - #[cfg(not(feature = "parallelization"))] - fn get_values_at_frame_range( - &self, - start_frame: i32, - end_frame: i32, - animation_data: &AnimationData, - fps: i16, - ) -> Vec { - let values = (start_frame..end_frame) - .into_iter() - .map(|i| self.get_value_at_frame(i, animation_data, fps)) - .collect(); - - values - } -} - -impl AnimatedValue<(f32, f32, f32)> for AnimatedFloatVec3 { - fn sort_keyframes(&mut self) { - self.keyframes.0.sort_keyframes(); - self.keyframes.1.sort_keyframes(); - self.keyframes.2.sort_keyframes(); - } - - fn get_value_at_frame( - &self, - curr_frame: i32, - animation_data: &AnimationData, - fps: i16, - ) -> (f32, f32, f32) { - let x = self - .keyframes - .0 - .get_value_at_frame(curr_frame, animation_data, fps); - - let y = self - .keyframes - .1 - .get_value_at_frame(curr_frame, animation_data, fps); - - let z = self - .keyframes - .2 - .get_value_at_frame(curr_frame, animation_data, fps); - - return (x, y, z); - } - - fn get_values_at_frame_range( - &self, - start_frame: i32, - end_frame: i32, - animation_data: &AnimationData, - fps: i16, - ) -> Vec<(f32, f32, f32)> { - let x = - self.keyframes - .0 - .get_values_at_frame_range(start_frame, end_frame, animation_data, fps); - let y = - self.keyframes - .1 - .get_values_at_frame_range(start_frame, end_frame, animation_data, fps); - let z = - self.keyframes - .2 - .get_values_at_frame_range(start_frame, end_frame, animation_data, fps); - - let vectors: Vec<(f32, f32, f32)> = x - .into_iter() - .enumerate() - .map(|(index, val_x)| { - let val_y: f32 = *y.get(index).unwrap(); - let val_z: f32 = *z.get(index).unwrap(); - - (val_x, val_y, val_z) - }) - .collect(); - - vectors - } -} - -impl AnimatedValue<(f32, f32)> for AnimatedFloatVec2 { - fn sort_keyframes(&mut self) { - self.keyframes.0.sort_keyframes(); - self.keyframes.1.sort_keyframes(); - } - - fn get_value_at_frame( - &self, - curr_frame: i32, - animation_data: &AnimationData, - fps: i16, - ) -> (f32, f32) { - let x = self - .keyframes - .0 - .get_value_at_frame(curr_frame, animation_data, fps); - - let y = self - .keyframes - .1 - .get_value_at_frame(curr_frame, animation_data, fps); - - return (x, y); - } - - fn get_values_at_frame_range( - &self, - start_frame: i32, - end_frame: i32, - animation_data: &AnimationData, - fps: i16, - ) -> Vec<(f32, f32)> { - let x = - self.keyframes - .0 - .get_values_at_frame_range(start_frame, end_frame, animation_data, fps); - let y = - self.keyframes - .1 - .get_values_at_frame_range(start_frame, end_frame, animation_data, fps); - - let vectors: Vec<(f32, f32)> = x - .into_iter() - .enumerate() - .map(|(index, val_x)| { - let val_y: f32 = *y.get(index).unwrap(); - - (val_x, val_y) - }) - .collect(); - - vectors - } -} diff --git a/lib/creator_rs/src/animation/primitives/values/mod.rs b/lib/creator_rs/src/animation/primitives/values/mod.rs deleted file mode 100644 index f84a5e0..0000000 --- a/lib/creator_rs/src/animation/primitives/values/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod animated_values; -pub mod values; diff --git a/lib/creator_rs/src/animation/primitives/values/values.rs b/lib/creator_rs/src/animation/primitives/values/values.rs deleted file mode 100644 index e67c773..0000000 --- a/lib/creator_rs/src/animation/primitives/values/values.rs +++ /dev/null @@ -1,4 +0,0 @@ -pub type Float = f32; -pub type FloatVec2 = (f32, f32); -pub type FloatVec3 = (f32, f32, f32); -pub type FloatVec4 = (f32, f32, f32, f32); diff --git a/lib/creator_rs/src/animation/timeline.rs b/lib/creator_rs/src/animation/timeline.rs deleted file mode 100644 index 4961de9..0000000 --- a/lib/creator_rs/src/animation/timeline.rs +++ /dev/null @@ -1,318 +0,0 @@ -use super::primitives::{ - entities::{ - common::{AnimatedEntity, AnimationData, Cache, Entity}, - rect::AnimatedRectEntity, - text::AnimatedTextEntity, - }, - paint::{Color, FillStyle, Paint, PaintStyle, StrokeStyle, TextAlign, TextPaint}, - values::animated_values::{AnimatedFloat, AnimatedFloatVec2}, -}; -use crate::animation::primitives::{ - interpolations::{EasingFunction, InterpolationType, SpringProperties}, - keyframe::{Keyframe, Keyframes}, -}; -#[cfg(feature = "parallelization")] -use rayon::prelude::*; -use serde::{Deserialize, Serialize}; -use std::str::FromStr; -use wasm_bindgen::prelude::*; - -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] -pub struct Input { - pub title: String, - pub sub_title: String, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct Timeline { - entities: Vec, - pub render_state: RenderState, - pub duration: f32, - pub fps: i16, - pub size: (i32, i32), -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct RenderState { - pub curr_frame: i32, -} - -impl Timeline { - #[cfg(feature = "parallelization")] - fn calculate(&self) -> Vec { - let mut entities = self.entities.clone(); - - let entities = entities - .par_iter_mut() - .map(|entity| entity.calculate(self)) - .filter(|entity| entity.is_some()) - .map(|entity| entity.unwrap()) - .collect(); - - return entities; - } - - #[cfg(not(feature = "parallelization"))] - fn calculate(&self) -> Vec { - let mut entities = self.entities.clone(); - - let entities = entities - .iter_mut() - .map(|entity| entity.calculate(self)) - .filter(|entity| entity.is_some()) - .map(|entity| entity.unwrap()) - .collect(); - - return entities; - } -} - -fn build_bg(offset: f32, paint: Paint, size: (i32, i32)) -> AnimatedRectEntity { - let bg_box = AnimatedRectEntity { - id: String::from_str("1").unwrap(), - paint, - animation_data: AnimationData { - offset: 0.0 + offset, - duration: 5.0, - visible: true, - }, - cache: Cache { valid: false }, - transform: None, - origin: AnimatedFloatVec2::new(1280.0 / 2.0, 720.0 / 2.0), - position: AnimatedFloatVec2 { - keyframes: ( - AnimatedFloat { - keyframes: Keyframes { - values: vec![ - Keyframe { - id: "1".into(), - value: (size.0 * -1) as f32, - offset: 0.0, - interpolation: Some(InterpolationType::EasingFunction( - EasingFunction::QuintOut, - )), - }, - Keyframe { - id: "2".into(), - value: 0.0, - offset: 5.0, - interpolation: None, - }, - ], - }, - }, - AnimatedFloat { - keyframes: Keyframes { - values: vec![Keyframe { - id: "3".into(), - value: 0.0, - offset: 0.0, - interpolation: None, - }], - }, - }, - ), - }, - size: AnimatedFloatVec2 { - keyframes: ( - AnimatedFloat { - keyframes: Keyframes { - values: vec![Keyframe { - id: "4".into(), - interpolation: None, - value: size.0 as f32, - offset: 0.0, - }], - }, - }, - AnimatedFloat { - keyframes: Keyframes { - values: vec![Keyframe { - id: "5".into(), - value: size.1 as f32, - offset: 0.0, - interpolation: None, - }], - }, - }, - ), - }, - }; - return bg_box; -} - -#[cfg_attr(feature = "tauri", tauri::command)] -pub fn calculate_timeline_at_curr_frame(timeline: Timeline) -> Vec { - timeline.calculate() -} - -#[wasm_bindgen] -pub fn calculate_timeline_from_json_at_curr_frame(timeline_json: &str) -> String { - // TODO: Handle failure instead of unwrap - let timeline: Timeline = serde_json::from_str(timeline_json).unwrap(); - - let entities = calculate_timeline_at_curr_frame(timeline); - - // TODO: Handle failure instead of unwrap - let entities_json = serde_json::to_string(&entities).unwrap(); - - entities_json -} - -pub fn test_timeline_entities_at_frame( - render_state: RenderState, - size: (i32, i32), - input: Input, -) -> Vec { - let rect1_paint = Paint { - style: PaintStyle::Fill(FillStyle { - color: Color::new(34, 189, 58, 1.0), - }), - }; - - let rect2_paint = Paint { - style: PaintStyle::Fill(FillStyle { - color: Color::new(23, 178, 28, 1.0), - }), - }; - - let rect3_paint = Paint { - style: PaintStyle::Fill(FillStyle { - color: Color::new(43, 128, 98, 1.0), - }), - }; - - let title_paint = TextPaint { - style: PaintStyle::Stroke(StrokeStyle { - color: Color::new(0, 0, 0, 1.0), - width: 10.0, - }), - font_name: "Arial".into(), - align: TextAlign::Center, - size: 20.0, - }; - - let sub_title_paint = TextPaint { - style: PaintStyle::Fill(FillStyle { - color: Color::new(0, 0, 0, 1.0), - }), - font_name: "Arial".into(), - align: TextAlign::Center, - size: 10.0, - }; - - let timeline = Timeline { - fps: 60, - duration: 5.0, - size, - entities: vec![ - AnimatedEntity::Rect(build_bg(0.0, rect1_paint, size)), - AnimatedEntity::Rect(build_bg(0.5, rect2_paint, size)), - AnimatedEntity::Rect(build_bg(1.0, rect3_paint, size)), - AnimatedEntity::Text(AnimatedTextEntity { - id: String::from_str("2").unwrap(), - paint: title_paint, - cache: Cache { valid: false }, - text: input.title, - animation_data: AnimationData { - offset: 0.0, - duration: 6.0, - visible: true, - }, - transform: None, - origin: AnimatedFloatVec2 { - keyframes: ( - AnimatedFloat { - keyframes: Keyframes { - values: vec![ - Keyframe { - id: "1".into(), - value: 0.0, - offset: 0.0, - interpolation: Some(InterpolationType::Spring( - SpringProperties { - mass: 1.0, - damping: 20.0, - stiffness: 200.0, - }, - )), - }, - Keyframe { - id: "2".into(), - value: (size.0 / 2) as f32, - offset: 2.0, - interpolation: None, - }, - ], - }, - }, - AnimatedFloat { - keyframes: Keyframes { - values: vec![Keyframe { - id: "3".into(), - value: (size.1 / 2) as f32, - offset: 0.0, - interpolation: None, - }], - }, - }, - ), - }, - }), - AnimatedEntity::Text(AnimatedTextEntity { - id: String::from_str("3").unwrap(), - paint: sub_title_paint, - text: input.sub_title, - cache: Cache { valid: false }, - animation_data: AnimationData { - offset: 0.5, - duration: 6.0, - visible: true, - }, - transform: None, - origin: AnimatedFloatVec2 { - keyframes: ( - AnimatedFloat { - keyframes: Keyframes { - values: vec![ - Keyframe { - id: "5".into(), - value: 0.0, - offset: 0.0, - interpolation: Some(InterpolationType::Spring( - SpringProperties { - mass: 1.0, - damping: 20.0, - stiffness: 200.0, - }, - )), - }, - Keyframe { - id: "6".into(), - - value: (size.0 / 2) as f32, - offset: 2.0, - interpolation: None, - }, - ], - }, - }, - AnimatedFloat { - keyframes: Keyframes { - values: vec![Keyframe { - id: "7".into(), - value: ((size.1 / 2) as f32) + 80.0, - offset: 0.0, - interpolation: None, - }], - }, - }, - ), - }, - }), - ], - render_state: render_state, - }; - - timeline.calculate() -} diff --git a/lib/creator_rs/src/fonts/fonts.rs b/lib/creator_rs/src/fonts/fonts.rs deleted file mode 100644 index 484a762..0000000 --- a/lib/creator_rs/src/fonts/fonts.rs +++ /dev/null @@ -1,58 +0,0 @@ -use font_kit::source::SystemSource; - -#[cfg_attr(feature = "tauri", tauri::command)] -pub fn get_system_fonts() -> Option> { - let source = SystemSource::new(); - - let found_fonts = source.all_fonts(); - - match found_fonts { - Ok(found_fonts) => { - let font_names: Vec = found_fonts - .iter() - .map(|f| f.load()) - .filter(|f| f.is_ok()) - .map(|f| f.unwrap()) - .map(|f| f.postscript_name()) - .filter(|f| f.is_some()) - .map(|f| f.unwrap()) - .collect(); - - Some(font_names) - } - Err(_) => None, - } -} - -#[cfg_attr(feature = "tauri", tauri::command)] -pub fn get_system_families() -> Option> { - let source = SystemSource::new(); - - let found_families = source.all_families(); - - found_families.ok() -} - -#[cfg_attr(feature = "tauri", tauri::command)] -pub fn get_system_font(font_name: String) -> Option> { - let source = SystemSource::new(); - - let font = source.select_by_postscript_name(font_name.as_str()); - - match font { - Ok(font) => { - let font = font.load(); - - if let Ok(font) = font { - if let Some(font_data) = font.copy_font_data() { - Some(font_data.as_slice().to_owned()) - } else { - None - } - } else { - None - } - } - Err(_) => panic!("Err"), - } -} diff --git a/lib/creator_rs/src/fonts/mod.rs b/lib/creator_rs/src/fonts/mod.rs deleted file mode 100644 index bfbdc1d..0000000 --- a/lib/creator_rs/src/fonts/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod fonts; diff --git a/lib/creator_rs/src/lib.rs b/lib/creator_rs/src/lib.rs deleted file mode 100644 index ac15e3c..0000000 --- a/lib/creator_rs/src/lib.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod animation; -#[cfg(feature = "fonts")] -pub mod fonts; diff --git a/web/.gitignore b/web/.gitignore deleted file mode 100644 index 6d4c0aa..0000000 --- a/web/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -# build output -dist/ - -# generated types -.astro/ - -# dependencies -node_modules/ - -# logs -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - -# environment variables -.env -.env.production - -# macOS-specific files -.DS_Store diff --git a/web/.vercel/project.json b/web/.vercel/project.json deleted file mode 100644 index 673a50b..0000000 --- a/web/.vercel/project.json +++ /dev/null @@ -1 +0,0 @@ -{"orgId":"c0DV5ATsGbVZoMVVr9msnlC7","projectId":"prj_6wyilH72l9zcNlIfA9NUAJ0xON0v"} \ No newline at end of file diff --git a/web/.vscode/extensions.json b/web/.vscode/extensions.json deleted file mode 100644 index 22a1505..0000000 --- a/web/.vscode/extensions.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "recommendations": ["astro-build.astro-vscode"], - "unwantedRecommendations": [] -} diff --git a/web/.vscode/launch.json b/web/.vscode/launch.json deleted file mode 100644 index d642209..0000000 --- a/web/.vscode/launch.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "command": "./node_modules/.bin/astro dev", - "name": "Development server", - "request": "launch", - "type": "node-terminal" - } - ] -} diff --git a/web/.vscode/settings.json b/web/.vscode/settings.json deleted file mode 100644 index 26350f6..0000000 --- a/web/.vscode/settings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "tailwindCSS.experimental.classRegex": [ - [ - "cva\\(([^)]*)\\)", - "[\"'`]([^\"'`]*).*?[\"'`]" - ] - ] -} \ No newline at end of file diff --git a/web/README.md b/web/README.md deleted file mode 100644 index 43c1d6d..0000000 --- a/web/README.md +++ /dev/null @@ -1,55 +0,0 @@ -# Astro Starter Kit: Basics - -``` -npm create astro@latest -- --template basics -``` - -[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics) -[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/sandbox/github/withastro/astro/tree/latest/examples/basics) -[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/withastro/astro?devcontainer_path=.devcontainer/basics/devcontainer.json) - -> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun! - -![basics](https://user-images.githubusercontent.com/4677417/186188965-73453154-fdec-4d6b-9c34-cb35c248ae5b.png) - - -## 🚀 Project Structure - -Inside of your Astro project, you'll see the following folders and files: - -``` -/ -├── public/ -│ └── favicon.svg -├── src/ -│ ├── components/ -│ │ └── Card.astro -│ ├── layouts/ -│ │ └── Layout.astro -│ └── pages/ -│ └── index.astro -└── package.json -``` - -Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name. - -There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components. - -Any static assets, like images, can be placed in the `public/` directory. - -## 🧞 Commands - -All commands are run from the root of the project, from a terminal: - -| Command | Action | -| :------------------------ | :----------------------------------------------- | -| `npm install` | Installs dependencies | -| `npm run dev` | Starts local dev server at `localhost:3000` | -| `npm run build` | Build your production site to `./dist/` | -| `npm run preview` | Preview your build locally, before deploying | -| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` | -| `npm run astro -- --help` | Get help using the Astro CLI | - -## 👀 Want to learn more? - -Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat). diff --git a/web/astro.config.mjs b/web/astro.config.mjs deleted file mode 100644 index 1e8d329..0000000 --- a/web/astro.config.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { defineConfig } from "astro/config"; - -import tailwind from "@astrojs/tailwind"; - -// https://astro.build/config -export default defineConfig({ - integrations: [ - tailwind({ - applyBaseStyles: false, - }), - ], -}); diff --git a/web/deploy.sh b/web/deploy.sh deleted file mode 100644 index f335d78..0000000 --- a/web/deploy.sh +++ /dev/null @@ -1,9 +0,0 @@ -[ -z $TOKEN ] && printf "Token is missing" && exit 1 - -if [ -z $IS_PROD ]; then - printf "\nTEST DEPLOYMENT\n" -else - printf "\nPRODUCTION DEPLOYMENT\n" && PROD="--prod" -fi - -URL=$(vercel --yes --global-config ./.vercel --token $TOKEN $PROD) && printf "\nDEPLOYMENT SUCCESSFUL\n$URL" diff --git a/web/package.json b/web/package.json deleted file mode 100644 index 3d6a6ab..0000000 --- a/web/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "web", - "type": "module", - "version": "0.0.1", - "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro build", - "preview": "astro preview", - "astro": "astro" - }, - "dependencies": { - "@astrojs/tailwind": "^3.1.3", - "@types/marked": "^5.0.0", - "@unom/style": "^0.2.14", - "astro": "^2.5.0", - "astro-icon": "^0.8.1", - "autoprefixer": "^10.4.14", - "class-variance-authority": "^0.6.0", - "clsx": "^1.2.1", - "marked": "^5.1.0", - "motion": "^10.16.2", - "postcss": "^8.4.24", - "postcss-custom-media": "^9.1.5", - "postcss-import": "^15.1.0", - "tailwind-merge": "^1.13.2", - "tailwindcss": "^3.0.24" - } -} diff --git a/web/postcss.config.cjs b/web/postcss.config.cjs deleted file mode 100644 index 228a086..0000000 --- a/web/postcss.config.cjs +++ /dev/null @@ -1,11 +0,0 @@ -const postcssImport = require("postcss-import"); -const nesting = require("tailwindcss/nesting"); -const tailwind = require("tailwindcss"); -const autoprefixer = require("autoprefixer"); -const customMedia = require("postcss-custom-media"); - -const config = { - plugins: [postcssImport, nesting, tailwind, autoprefixer, customMedia], -}; - -module.exports = config; diff --git a/web/public/favicon.svg b/web/public/favicon.svg deleted file mode 100644 index f157bd1..0000000 --- a/web/public/favicon.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/web/src/components/Button.astro b/web/src/components/Button.astro deleted file mode 100644 index 1e7dd08..0000000 --- a/web/src/components/Button.astro +++ /dev/null @@ -1,46 +0,0 @@ ---- -import type { HTMLAttributes } from "astro/types"; -import { cva, type VariantProps } from "class-variance-authority"; -import { cn } from "@/lib/utils"; - -export const button = cva( - cn( - "inline-flex items-center justify-center rounded-md text-sm font-medium", - "transition-colors focus-visible:outline-none", - "ring-main focus-visible:ring-2 focus-visible:ring-ring", - "focus-visible:ring-offset-2 disabled:opacity-50", - "disabled:pointer-events-none ring-offset-background" - ), - { - variants: { - variant: { - default: "bg-main text-neutral hocus:bg-main/80", - primary: - "bg-primary dark:bg-primary/50 text-neutral dark:text-main hocus:bg-primary/80 dark:hocus:bg-primary/80", - destructive: - "bg-error text-destructive-foreground hocus:bg-destructive/90", - outline: - "border border-input hover:bg-accent hover:text-accent-foreground", - secondary: "bg-main/10 text-main hocus:bg-main/20", - ghost: "hocus:bg-accent hocus:text-accent-foreground", - link: "underline-offset-4 hocus:underline text-primary", - }, - size: { - default: "h-10 text-base py-2 px-4", - sm: "h-9 px-3 rounded-md", - lg: "h-11 px-8 rounded-md", - }, - }, - } -); - -export interface Props - extends HTMLAttributes<"button">, - VariantProps {} - -const { variant = "default", size = "default", ...props } = Astro.props; ---- - - diff --git a/web/src/components/Card.astro b/web/src/components/Card.astro deleted file mode 100644 index 7ce71d8..0000000 --- a/web/src/components/Card.astro +++ /dev/null @@ -1,36 +0,0 @@ ---- -import type { HTMLAttributes } from "astro/types"; -import { VariantProps, cva } from "class-variance-authority"; - -const card = cva( - "card rounded-card transition-colors bg-neutral-accent ring-2 ring-main/10", - { - variants: { - interactable: { - false: "transition-shadow focus-within:shadow-lg ring-2 ring-neutral", - true: "cursor-pointer shadow-sm hocus:bg-neutral-accent/50 \ - hocus:shadow-lg hocus:ring-2 hocus:outline-none", - }, - padding: { - true: "py-6 px-8", - false: "p-0", - }, - }, - } -); - -export interface Props - extends HTMLAttributes<"div">, - VariantProps {} - -const { - interactable = false, - padding = true, - class: _class, - ...props -} = Astro.props; ---- - -
- -
diff --git a/web/src/components/Cards/CardFeature.astro b/web/src/components/Cards/CardFeature.astro deleted file mode 100644 index aee24c2..0000000 --- a/web/src/components/Cards/CardFeature.astro +++ /dev/null @@ -1,26 +0,0 @@ ---- -import Card from "../Card.astro"; -import { Icon } from "astro-icon"; - -export interface Props { - title: string; - iconName: string; - description: string; -} - -const { title, description, iconName } = Astro.props; ---- - - -
- -
-

- {title} -

-

- {description} -

-
diff --git a/web/src/components/Heading.astro b/web/src/components/Heading.astro deleted file mode 100644 index f90ca39..0000000 --- a/web/src/components/Heading.astro +++ /dev/null @@ -1,52 +0,0 @@ ---- -import { cn } from "@/lib/utils"; -import type { HTMLAttributes } from "astro/types"; -import { VariantProps, cva } from "class-variance-authority"; - -const heading = cva("max-w-3xl m-[var(--section-heading-margin)]", { - variants: { - main: { - true: "font-bold", - false: "font-semibold", - }, - padding: { - true: "py-4", - false: "p-0", - }, - }, -}); - -export interface Props - extends HTMLAttributes<"h1" | "h2">, - VariantProps { - subtitle?: string; -} - -const { main = false, padding = true, subtitle } = Astro.props; - -const titleClass = cn( - heading({ main, padding }), - subtitle ? "mb-[calc(var(--section_heading-margin-bottom)_/_2)]" : "" -); ---- - -
- { - main ? ( -

- -

- ) : ( -

- -

- ) - } - { - subtitle && ( -

- {subtitle} -

- ) - } -
diff --git a/web/src/components/Layout/Footer.astro b/web/src/components/Layout/Footer.astro deleted file mode 100644 index f7f9522..0000000 --- a/web/src/components/Layout/Footer.astro +++ /dev/null @@ -1,92 +0,0 @@ ---- -import Section from "../Section.astro"; - -enum NavigationItemType { - Link, - Text, -} - -type NavigationItem = - | { - path: string; - label: string; - type: NavigationItemType.Link; - } - | { - type: NavigationItemType.Text; - content: string; - }; - -type NavigationGroup = { - title: string; - class?: string; - items: Array; -}; - -const tree: Array = [ - { - title: "Overview", - items: [ - { - path: "/", - type: NavigationItemType.Link, - label: "Landing", - }, - { - path: "https://github.com/tempblade/creator", - type: NavigationItemType.Link, - label: "GitHub", - }, - { - path: "https://tempblade.com", - type: NavigationItemType.Link, - label: "tempblade", - }, - ], - }, - { - title: "Legal", - items: [ - { - path: "/legal/imprint", - label: "Imprint", - type: NavigationItemType.Link, - }, - ], - }, - { - title: "", - class: "ml-auto mr-0 self-end", - items: [ - { - type: NavigationItemType.Text, - content: "Made with ❤️ in Rottweil", - }, - ], - }, -]; ---- - -
-
-
- { - tree.map((group) => ( -
- {group.title &&

{group.title}

} -
- {group.items.map((item) => { - switch (item.type) { - case NavigationItemType.Link: - return {item.label}; - case NavigationItemType.Text: - return

{item.content}

; - } - })} -
-
- )) - } -
-
-
diff --git a/web/src/components/Layout/Header.astro b/web/src/components/Layout/Header.astro deleted file mode 100644 index d14341d..0000000 --- a/web/src/components/Layout/Header.astro +++ /dev/null @@ -1,18 +0,0 @@ ---- -import Button, { button } from "../Button.astro"; -import TempbladeLogo from "components/Logo/tempblade.astro"; ---- - -
-
-
- -
- Download -
-
diff --git a/web/src/components/Logo/tempblade.astro b/web/src/components/Logo/tempblade.astro deleted file mode 100644 index edf4f91..0000000 --- a/web/src/components/Logo/tempblade.astro +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - diff --git a/web/src/components/Section.astro b/web/src/components/Section.astro deleted file mode 100644 index 4c53d63..0000000 --- a/web/src/components/Section.astro +++ /dev/null @@ -1,27 +0,0 @@ ---- -import type { HTMLAttributes } from "astro/types"; -import { cva, type VariantProps } from "class-variance-authority"; - -const section = cva("relative w-full", { - variants: { - padding: { - true: "p-main", - false: "p-0", - }, - maxWidth: { - true: "max-w-section mx-auto", - false: "", - }, - }, -}); - -export interface Props - extends HTMLAttributes<"section">, - VariantProps {} - -const { padding = true, maxWidth = true, ...props } = Astro.props; ---- - -
- -
diff --git a/web/src/env.d.ts b/web/src/env.d.ts deleted file mode 100644 index f964fe0..0000000 --- a/web/src/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/web/src/icons/Extensible.svg b/web/src/icons/Extensible.svg deleted file mode 100644 index fd62491..0000000 --- a/web/src/icons/Extensible.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/icons/Fast.svg b/web/src/icons/Fast.svg deleted file mode 100644 index 377952b..0000000 --- a/web/src/icons/Fast.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/web/src/icons/Open.svg b/web/src/icons/Open.svg deleted file mode 100644 index 86a6057..0000000 --- a/web/src/icons/Open.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/web/src/layouts/RootLayout.astro b/web/src/layouts/RootLayout.astro deleted file mode 100644 index c77d017..0000000 --- a/web/src/layouts/RootLayout.astro +++ /dev/null @@ -1,32 +0,0 @@ ---- -import Footer from "@/components/Layout/Footer.astro"; -import Header from "@/components/Layout/Header.astro"; -import "@/styles/global.css"; - -export interface Props { - title: string; -} - -const { title } = Astro.props; ---- - - - - - - - - - - - {title} - - -
- -