├── crates ├── backend │ ├── build.rs │ ├── icons │ │ ├── 32x32.png │ │ ├── icon.icns │ │ ├── icon.ico │ │ ├── icon.png │ │ ├── 128x128.png │ │ ├── 128x128@2x.png │ │ ├── StoreLogo.png │ │ ├── Square30x30Logo.png │ │ ├── Square44x44Logo.png │ │ ├── Square71x71Logo.png │ │ ├── Square89x89Logo.png │ │ ├── Square107x107Logo.png │ │ ├── Square142x142Logo.png │ │ ├── Square150x150Logo.png │ │ ├── Square284x284Logo.png │ │ └── Square310x310Logo.png │ ├── tauri.macos.conf.json │ ├── Cargo.toml │ ├── src │ │ ├── window_custom.rs │ │ └── main.rs │ └── tauri.conf.json └── frontend │ ├── src │ ├── vite-env.d.ts │ ├── index.css │ ├── types │ │ ├── SavedData.ts │ │ └── SearchApiResult.ts │ ├── functions │ │ ├── customCap.ts │ │ ├── stringToColour.ts │ │ ├── getItems.ts │ │ └── getSaved.ts │ ├── main.tsx │ ├── pages │ │ ├── Root.tsx │ │ └── Settings.tsx │ ├── components │ │ ├── Searchbar.tsx │ │ ├── Toggle.tsx │ │ ├── Max.tsx │ │ ├── EventHandler.tsx │ │ └── Card.tsx │ ├── App.tsx │ └── store.ts │ ├── tsconfig.node.json │ ├── vite.config.ts │ ├── index.html │ ├── tsconfig.json │ ├── package.json │ ├── vite.config.ts.timestamp-1660048399222.mjs │ ├── vite.config.ts.timestamp-1660248351471.mjs │ └── yarn.lock ├── assets └── screenshot.png ├── Cargo.toml ├── Commands.toml ├── LICENSE ├── README.md ├── .github └── workflows │ └── ci.yml └── .gitignore /crates/backend/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /crates/frontend/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /assets/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/assets/screenshot.png -------------------------------------------------------------------------------- /crates/backend/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/32x32.png -------------------------------------------------------------------------------- /crates/backend/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/icon.icns -------------------------------------------------------------------------------- /crates/backend/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/icon.ico -------------------------------------------------------------------------------- /crates/backend/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/icon.png -------------------------------------------------------------------------------- /crates/backend/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/128x128.png -------------------------------------------------------------------------------- /crates/backend/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/128x128@2x.png -------------------------------------------------------------------------------- /crates/backend/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/StoreLogo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /crates/backend/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codeaye/auxilium/HEAD/crates/backend/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = ["crates/backend"] 3 | 4 | [profile.release] 5 | panic = "abort" 6 | codegen-units = 1 7 | lto = true 8 | opt-level = "s" 9 | -------------------------------------------------------------------------------- /crates/frontend/src/index.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | position: fixed; 4 | overflow: hidden; 5 | width: 100%; 6 | height: 100%; 7 | color-scheme: dark; 8 | } -------------------------------------------------------------------------------- /crates/frontend/src/types/SavedData.ts: -------------------------------------------------------------------------------- 1 | export default interface SavedData { 2 | darkMode: boolean; 3 | denseMode: boolean; 4 | noTagsMode: boolean; 5 | } 6 | -------------------------------------------------------------------------------- /crates/frontend/src/functions/customCap.ts: -------------------------------------------------------------------------------- 1 | import unescape from "lodash/unescape"; 2 | 3 | export default function (text: string): string { 4 | return unescape(text[0].toUpperCase() + text.slice(1)); 5 | } 6 | -------------------------------------------------------------------------------- /crates/frontend/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /crates/frontend/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import react from "@vitejs/plugin-react"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | build: { 8 | target: "esnext", 9 | }, 10 | }); 11 | -------------------------------------------------------------------------------- /crates/frontend/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactDOM from "react-dom/client"; 3 | import App from "./App"; 4 | 5 | ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( 6 | 7 | 8 | 9 | ); 10 | -------------------------------------------------------------------------------- /crates/backend/tauri.macos.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "tauri": { 3 | "windows": [ 4 | { 5 | "title": "Auxilium", 6 | "width": 630, 7 | "height": 73, 8 | "resizable": false, 9 | "fullscreen": false, 10 | "alwaysOnTop": true, 11 | "visible": false, 12 | "decorations": true 13 | } 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Commands.toml: -------------------------------------------------------------------------------- 1 | [dev] 2 | tauri = { cmd = [{ cmd = "cargo tauri dev", working_dir = "crates/backend" }] } 3 | [build] 4 | tauri = { cmd = [ 5 | 6 | { cmd = "cargo tauri build", working_dir = "crates/backend" }, 7 | ] } 8 | [setup] 9 | all = { cmd = [ 10 | { cmd = "npm i -g yarn --silent", working_dir = "crates/frontend" }, 11 | { cmd = "yarn", working_dir = "crates/frontend" }, 12 | 13 | ] } 14 | -------------------------------------------------------------------------------- /crates/frontend/src/functions/stringToColour.ts: -------------------------------------------------------------------------------- 1 | export default function (string: string): string { 2 | let hash = 0; 3 | let i; 4 | for (i = 0; i < string.length; i += 1) { 5 | hash = string.charCodeAt(i) + ((hash << 5) - hash); 6 | } 7 | let color = "#"; 8 | for (i = 0; i < 3; i += 1) { 9 | const value = (hash >> (i * 8)) & 0xff; 10 | color += `00${value.toString(16)}`.substr(-2); 11 | } 12 | return color; 13 | } 14 | -------------------------------------------------------------------------------- /crates/frontend/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Auxilium 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /crates/frontend/src/pages/Root.tsx: -------------------------------------------------------------------------------- 1 | import { Box } from "@mui/material"; 2 | import Max from "../components/Max"; 3 | import Searchbar from "../components/Searchbar"; 4 | import { useStore } from "../store"; 5 | 6 | const Root = () => { 7 | const fullForm = useStore((store) => store.fullForm); 8 | 9 | return ( 10 | 11 | 12 | {fullForm && } 13 | 14 | ); 15 | }; 16 | 17 | export default Root; 18 | -------------------------------------------------------------------------------- /crates/frontend/src/functions/getItems.ts: -------------------------------------------------------------------------------- 1 | import { Item, Result } from "../types/SearchApiResult"; 2 | 3 | const URL = 4 | "https://api.stackexchange.com/2.3/search?order=desc&sort=relevance&site=stackoverflow&intitle="; 5 | 6 | export default async function (searchTerm: string): Promise { 7 | if (searchTerm === "") return []; 8 | try { 9 | return ((await (await fetch(URL + encodeURI(searchTerm))).json()) as Result) 10 | .items; 11 | } catch (err) { 12 | return []; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /crates/frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /crates/backend/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "auxilium" 3 | default-run = "auxilium" 4 | version = "1.0.1" 5 | description = "Spotlight for Developers" 6 | authors = ["codeaye"] 7 | license = "MIT" 8 | 9 | edition = "2021" 10 | rust-version = "1.57" 11 | 12 | [build-dependencies] 13 | tauri-build = { version = "1.0.4", features = [] } 14 | 15 | [dependencies] 16 | serde_json = "1.0" 17 | serde = { version = "1.0", features = ["derive"] } 18 | tauri = { version = "1.0.5", features = ["global-shortcut", "system-tray"] } 19 | window-shadows = "0.1.0" 20 | 21 | [dependencies.tauri-plugin-store] 22 | git = "https://github.com/tauri-apps/tauri-plugin-store" 23 | branch = "dev" 24 | 25 | [target.'cfg(target_os = "macos")'.dependencies] 26 | cocoa = "0.24" 27 | objc = "0.2.7" 28 | 29 | [features] 30 | default = ["custom-protocol"] 31 | custom-protocol = ["tauri/custom-protocol"] 32 | -------------------------------------------------------------------------------- /crates/frontend/src/components/Searchbar.tsx: -------------------------------------------------------------------------------- 1 | import { TextField } from "@mui/material"; 2 | import { useEffect, useState } from "react"; 3 | import { useStore } from "../store"; 4 | 5 | const fsetSearch = (store: any) => store.setSearchQuery; 6 | 7 | const Searchbar = () => { 8 | const [searchRaw, setSearchRaw] = useState(""); 9 | const setSearch = useStore(fsetSearch); 10 | 11 | useEffect(() => { 12 | const delayDebounceFn = setTimeout(() => { 13 | setSearch(searchRaw); 14 | }, 1500); 15 | return () => clearTimeout(delayDebounceFn); 16 | }, [searchRaw]); 17 | 18 | return ( 19 | setSearchRaw(e.target.value)} 26 | sx={{ pb: 1 }} 27 | /> 28 | ); 29 | }; 30 | 31 | export default Searchbar; 32 | -------------------------------------------------------------------------------- /crates/frontend/src/types/SearchApiResult.ts: -------------------------------------------------------------------------------- 1 | export interface Result { 2 | items: Item[]; 3 | has_more: boolean; 4 | quota_max: number; 5 | quota_remaining: number; 6 | } 7 | 8 | export interface Item { 9 | tags: string[]; 10 | owner: Owner; 11 | is_answered: boolean; 12 | view_count: number; 13 | answer_count: number; 14 | score: number; 15 | last_activity_date: number; 16 | creation_date: number; 17 | question_id: number; 18 | content_license?: "CC BY-SA 3.0" | "CC BY-SA 4.0"; 19 | link: string; 20 | title: string; 21 | accepted_answer_id?: number; 22 | last_edit_date?: number; 23 | closed_date?: number; 24 | closed_reason?: string; 25 | } 26 | export interface Owner { 27 | account_id?: number; 28 | reputation?: number; 29 | user_id?: number; 30 | user_type: "registered" | "does_not_exist"; 31 | profile_image?: string; 32 | display_name: string; 33 | link?: string; 34 | accept_rate?: number; 35 | } 36 | -------------------------------------------------------------------------------- /crates/frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "1.0.0", 4 | "type": "module", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@emotion/react": "^11.10.0", 13 | "@emotion/styled": "^11.10.0", 14 | "@mui/icons-material": "^5.8.4", 15 | "@mui/material": "^5.10.0", 16 | "@tauri-apps/api": "^1.0.2", 17 | "lodash": "^4.17.21", 18 | "react": "^18.2.0", 19 | "react-dom": "^18.2.0", 20 | "react-router-dom": "6", 21 | "tauri-plugin-store-api": "https://github.com/tauri-apps/tauri-plugin-store#dev", 22 | "zustand": "^4.0.0" 23 | }, 24 | "devDependencies": { 25 | "@tauri-apps/cli": "^1.0.5", 26 | "@types/lodash": "^4.14.182", 27 | "@types/react": "^18.0.15", 28 | "@types/react-dom": "^18.0.6", 29 | "@vitejs/plugin-react": "^2.0.0", 30 | "typescript": "^4.6.4", 31 | "vite": "^3.0.0" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2022 Codeaye 2 | 3 | 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: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | 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. -------------------------------------------------------------------------------- /crates/frontend/src/components/Toggle.tsx: -------------------------------------------------------------------------------- 1 | import { Typography, ToggleButtonGroup, ToggleButton } from "@mui/material"; 2 | import { MouseEvent, ReactNode } from "react"; 3 | 4 | interface Props { 5 | title: string; 6 | value: string; 7 | onChange: (_event: MouseEvent, newMode: string | null) => void; 8 | val1: string; 9 | val2: string; 10 | icon1: ReactNode; 11 | icon2: ReactNode; 12 | t1: string; 13 | t2: string; 14 | } 15 | const Toggle = (props: Props) => { 16 | return ( 17 | <> 18 | 19 | {props.title} 20 | 21 | 27 | 28 | {props.icon1} 29 | {props.t1} 30 | 31 | 32 | {props.icon2} 33 | {props.t2} 34 | 35 | 36 | 37 | ); 38 | }; 39 | 40 | export default Toggle; 41 | -------------------------------------------------------------------------------- /crates/frontend/src/functions/getSaved.ts: -------------------------------------------------------------------------------- 1 | import { Store } from "tauri-plugin-store-api"; 2 | import SavedData from "../types/SavedData"; 3 | 4 | export default async function (store: Store) { 5 | const keys = await getKeys( 6 | ["darkMode", "denseMode", "noTagsMode"], 7 | ["true", "false", "false"], 8 | store 9 | ); 10 | return keys as unknown as SavedData; 11 | } 12 | 13 | async function getKeys(keys: string[], defaults: string[], store: Store) { 14 | let data: { [key: string]: boolean } = {}; 15 | let i = 0; 16 | for (const key of keys) { 17 | let val = await store.get(key); 18 | if (val == null) { 19 | val = defaults[i]; 20 | await store.set(key, defaults[i]); 21 | } 22 | data[key] = stringToBool(val as string) as boolean; 23 | i++; 24 | } 25 | store.save(); 26 | return data; 27 | } 28 | 29 | function stringToBool(str: string | boolean): boolean { 30 | if (typeof str === "string") { 31 | switch (str) { 32 | case "true": 33 | return true; 34 | case "false": 35 | return false; 36 | default: 37 | return true; 38 | } 39 | } 40 | return str; 41 | } 42 | -------------------------------------------------------------------------------- /crates/frontend/src/components/Max.tsx: -------------------------------------------------------------------------------- 1 | import { Box, LinearProgress, List, Paper } from "@mui/material"; 2 | import { useStore } from "../store"; 3 | import { Item } from "../types/SearchApiResult"; 4 | import Card from "./Card"; 5 | 6 | const sitems = (store: any) => store.items; 7 | const sloading = (store: any) => store.loading; 8 | const sdenseMode = (store: any) => store.denseMode; 9 | 10 | const Max = () => { 11 | const items = useStore(sitems); 12 | const loading = useStore(sloading); 13 | const denseMode = useStore(sdenseMode); 14 | 15 | return ( 16 | 17 | 27 | 28 | {loading && } 29 | 30 | {items.map((item: Item) => ( 31 | 32 | ))} 33 | 34 | 35 | ); 36 | }; 37 | 38 | export default Max; 39 | -------------------------------------------------------------------------------- /crates/frontend/vite.config.ts.timestamp-1660048399222.mjs: -------------------------------------------------------------------------------- 1 | // vite.config.ts 2 | import { defineConfig } from "vite"; 3 | import react from "@vitejs/plugin-react"; 4 | var vite_config_default = defineConfig({ 5 | plugins: [react()] 6 | }); 7 | export { 8 | vite_config_default as default 9 | }; 10 | //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvbmF2L0RvY3VtZW50cy9Db2RlL2F1eGlsaXVtL2NyYXRlcy9mcm9udGVuZFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL25hdi9Eb2N1bWVudHMvQ29kZS9hdXhpbGl1bS9jcmF0ZXMvZnJvbnRlbmQvdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL25hdi9Eb2N1bWVudHMvQ29kZS9hdXhpbGl1bS9jcmF0ZXMvZnJvbnRlbmQvdml0ZS5jb25maWcudHNcIjtpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHJlYWN0IGZyb20gJ0B2aXRlanMvcGx1Z2luLXJlYWN0J1xuXG4vLyBodHRwczovL3ZpdGVqcy5kZXYvY29uZmlnL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcGx1Z2luczogW3JlYWN0KCldXG59KVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUF3VSxTQUFTLG9CQUFvQjtBQUNyVyxPQUFPLFdBQVc7QUFHbEIsSUFBTyxzQkFBUSxhQUFhO0FBQUEsRUFDMUIsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNuQixDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo= 11 | -------------------------------------------------------------------------------- /crates/frontend/vite.config.ts.timestamp-1660248351471.mjs: -------------------------------------------------------------------------------- 1 | // vite.config.ts 2 | import { defineConfig } from "vite"; 3 | import react from "@vitejs/plugin-react"; 4 | var vite_config_default = defineConfig({ 5 | plugins: [react()] 6 | }); 7 | export { 8 | vite_config_default as default 9 | }; 10 | //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvVXNlcnMvbmF2L0RvY3VtZW50cy9Db2RlL2F1eGlsaXVtL2NyYXRlcy9mcm9udGVuZFwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiL1VzZXJzL25hdi9Eb2N1bWVudHMvQ29kZS9hdXhpbGl1bS9jcmF0ZXMvZnJvbnRlbmQvdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL1VzZXJzL25hdi9Eb2N1bWVudHMvQ29kZS9hdXhpbGl1bS9jcmF0ZXMvZnJvbnRlbmQvdml0ZS5jb25maWcudHNcIjtpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlJ1xuaW1wb3J0IHJlYWN0IGZyb20gJ0B2aXRlanMvcGx1Z2luLXJlYWN0J1xuXG4vLyBodHRwczovL3ZpdGVqcy5kZXYvY29uZmlnL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgcGx1Z2luczogW3JlYWN0KCldXG59KVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUF3VSxTQUFTLG9CQUFvQjtBQUNyVyxPQUFPLFdBQVc7QUFHbEIsSUFBTyxzQkFBUSxhQUFhO0FBQUEsRUFDMUIsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNuQixDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo= 11 | -------------------------------------------------------------------------------- /crates/frontend/src/App.tsx: -------------------------------------------------------------------------------- 1 | import EventHandler from "./components/EventHandler"; 2 | import { useStore } from "./store"; 3 | import "./index.css"; 4 | 5 | import CssBaseline from "@mui/material/CssBaseline"; 6 | import { ThemeProvider, createTheme, Theme } from "@mui/material/styles"; 7 | import { BrowserRouter, Route, Routes } from "react-router-dom"; 8 | import Root from "./pages/Root"; 9 | import Settings from "./pages/Settings"; 10 | import { useEffect, useState } from "react"; 11 | 12 | const sdarkMode = (store: any) => store.darkMode; 13 | const App = () => { 14 | const darkMode = useStore(sdarkMode); 15 | const [theme, setTheme] = useState(createTheme()); 16 | useEffect( 17 | () => 18 | setTheme( 19 | createTheme({ 20 | palette: { 21 | mode: darkMode ? "dark" : "light", 22 | }, 23 | }) 24 | ), 25 | [darkMode] 26 | ); 27 | 28 | return ( 29 | 30 | 31 | 32 | 33 | 34 | } /> 35 | } /> 36 | 37 | 38 | 39 | ); 40 | }; 41 | 42 | export default App; 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Auxilium 3 | 4 | Auxilium is an app built to look and feel like the spotlight app for mac, 5 | but is made for developers, so you can find solutions on stack overflow faster! 6 | ## Features 7 | 8 | - Light/dark mode toggle 9 | - Dense/comfy settings 10 | - Cross platform 11 | 12 | 13 | ## Installation 14 | 15 | You can install the app by heading to [the latest release](https://github.com/codeaye/auxilium/releases/latest) 16 | and downloading an appropriate version for your operating system. 17 | 18 | ## Keybindings 19 | - Show Auxilium - Alt + Space 20 | - Preferences - Alt + P 21 | - Quit App - Alt + Q 22 | 23 | *Not customisable yet 24 | 25 | To hide a the search or preferences window, just click of it or focus on another app. 26 | ## Screenshots 27 | 28 | ![App Screenshot](assets/screenshot.png) 29 | 30 | 31 | ## Build Locally 32 | 33 | To do this, first clone the project 34 | 35 | ```bash 36 | git clone https://github.com/codeaye/auxilium 37 | ``` 38 | 39 | Go to the project directory 40 | 41 | ```bash 42 | cd auxilium 43 | ``` 44 | 45 | Install dependencies 46 | 47 | ```bash 48 | cargo install cargo-commander tauri-cli 49 | ``` 50 | 51 | Run the setup script 52 | 53 | ```bash 54 | cargo cmd setup 55 | ``` 56 | 57 |
58 | To run in dev mode 59 | 60 | ### Developement mode 61 | ```bash 62 | cargo cmd dev 63 | ``` 64 |
65 | 66 |
67 | To run in production mode 68 | 69 | ### Production mode 70 | ```bash 71 | cargo cmd build 72 | ``` 73 |
74 | 75 | ## Acknowledgements 76 | 77 | - [Tauri](https://tauri.app/) 78 | - [React](https://reactjs.org/) 79 | - [MUI](https://mui.com/) 80 | 81 | ## License 82 | [MIT © codeaye](https://github.com/codeaye/auxilium/blob/main/LICENSE) 83 | -------------------------------------------------------------------------------- /crates/frontend/src/components/EventHandler.tsx: -------------------------------------------------------------------------------- 1 | import { invoke } from "@tauri-apps/api/tauri"; 2 | import { useEffect } from "react"; 3 | import { useStore } from "../store"; 4 | import getItems from "../functions/getItems"; 5 | import { listen } from "@tauri-apps/api/event"; 6 | 7 | const ssearchTerm = (store: any) => store.searchQuery; 8 | const sitems = (store: any) => store.items; 9 | const sfullForm = (store: any) => store.fullForm; 10 | 11 | const freload = (store: any) => store.reload; 12 | const fsetItems = (store: any) => store.setItems; 13 | const fsetLoading = (store: any) => store.setLoading; 14 | const fsetFullForm = (store: any) => store.setFullForm; 15 | 16 | const EventHandler = () => { 17 | const searchTerm = useStore(ssearchTerm); 18 | const items = useStore(sitems); 19 | const fullForm = useStore(sfullForm); 20 | 21 | const reload = useStore(freload); 22 | const setItems = useStore(fsetItems); 23 | const setLoading = useStore(fsetLoading); 24 | const setFullForm = useStore(fsetFullForm); 25 | 26 | useEffect(() => { 27 | const unlisten = listen("reload_store", (_event) => reload()); 28 | 29 | return () => { 30 | unlisten.then((f) => f()); 31 | }; 32 | }, []); 33 | 34 | useEffect(() => { 35 | (async () => { 36 | setLoading(true); 37 | setItems(await getItems(searchTerm)); 38 | setLoading(false); 39 | })(); 40 | }, [searchTerm]); 41 | 42 | useEffect(() => { 43 | (async () => { 44 | if (items.length === 0) { 45 | if (fullForm == true) { 46 | await invoke("set_mini"); 47 | setFullForm(false); 48 | } 49 | } else { 50 | if (fullForm == false) { 51 | await invoke("set_max"); 52 | setFullForm(true); 53 | } 54 | } 55 | })(); 56 | }, [items]); 57 | 58 | return <>; 59 | }; 60 | 61 | export default EventHandler; 62 | -------------------------------------------------------------------------------- /crates/frontend/src/store.ts: -------------------------------------------------------------------------------- 1 | import { emit } from "@tauri-apps/api/event"; 2 | import { Store } from "tauri-plugin-store-api"; 3 | import create from "zustand"; 4 | import getSaved from "./functions/getSaved"; 5 | import { Item } from "./types/SearchApiResult"; 6 | 7 | interface State { 8 | searchQuery: string; 9 | setSearchQuery: (query: string) => void; 10 | items: Item[]; 11 | setItems: (items: Item[]) => void; 12 | loading: boolean; 13 | setLoading: (loading: boolean) => void; 14 | fullForm: boolean; 15 | setFullForm: (fullForm: boolean) => void; 16 | darkMode: boolean; 17 | setDarkMode: (darkMode: boolean) => void; 18 | denseMode: boolean; 19 | setDenseMode: (darkMode: boolean) => void; 20 | noTagsMode: boolean; 21 | setTagsMode: (noTagsMode: boolean) => void; 22 | saveStore: () => void; 23 | reload: () => void; 24 | } 25 | 26 | const store = new Store(".settings.dat"); 27 | const values = await getSaved(store); 28 | 29 | export const useStore = create()((set) => ({ 30 | searchQuery: "", 31 | setSearchQuery: (searchQuery: string) => set({ searchQuery }), 32 | items: [], 33 | setItems: (items: Item[]) => set({ items }), 34 | loading: false, 35 | setLoading: (loading: boolean) => set({ loading }), 36 | fullForm: false, 37 | setFullForm: (fullForm: boolean) => set({ fullForm }), 38 | 39 | darkMode: values.darkMode, 40 | setDarkMode: (darkMode: boolean) => { 41 | set({ darkMode }); 42 | store.set("darkMode", darkMode); 43 | }, 44 | denseMode: values.denseMode, 45 | setDenseMode: (denseMode: boolean) => { 46 | set({ denseMode }); 47 | store.set("denseMode", denseMode); 48 | }, 49 | noTagsMode: values.noTagsMode, 50 | setTagsMode: (noTagsMode: boolean) => { 51 | set({ noTagsMode }); 52 | store.set("noTagsMode", noTagsMode); 53 | }, 54 | saveStore: () => { 55 | store.save(); 56 | emit("reload_store"); 57 | }, 58 | reload: async () => { 59 | const { darkMode, denseMode, noTagsMode } = await getSaved(store); 60 | set({ darkMode, denseMode, noTagsMode }); 61 | }, 62 | })); 63 | -------------------------------------------------------------------------------- /crates/backend/src/window_custom.rs: -------------------------------------------------------------------------------- 1 | #[cfg(target_os = "macos")] 2 | use cocoa::appkit::{NSWindow, NSWindowButton, NSWindowStyleMask, NSWindowTitleVisibility}; 3 | 4 | #[cfg(target_os = "macos")] 5 | use objc::runtime::YES; 6 | use tauri::{Runtime, Window}; 7 | 8 | pub trait WindowExt { 9 | #[cfg(target_os = "macos")] 10 | fn set_transparent_titlebar(&self, title_transparent: bool, remove_toolbar: bool); 11 | } 12 | 13 | impl WindowExt for Window { 14 | #[cfg(target_os = "macos")] 15 | fn set_transparent_titlebar(&self, title_transparent: bool, remove_tool_bar: bool) { 16 | unsafe { 17 | let id = self.ns_window().unwrap() as cocoa::base::id; 18 | NSWindow::setTitlebarAppearsTransparent_(id, cocoa::base::YES); 19 | let mut style_mask = id.styleMask(); 20 | style_mask.set( 21 | NSWindowStyleMask::NSFullSizeContentViewWindowMask, 22 | title_transparent, 23 | ); 24 | id.setStyleMask_(style_mask); 25 | if remove_tool_bar { 26 | let close_button = id.standardWindowButton_(NSWindowButton::NSWindowCloseButton); 27 | let _: () = msg_send![close_button, setHidden: YES]; 28 | let min_button = 29 | id.standardWindowButton_(NSWindowButton::NSWindowMiniaturizeButton); 30 | let _: () = msg_send![min_button, setHidden: YES]; 31 | let zoom_button = id.standardWindowButton_(NSWindowButton::NSWindowZoomButton); 32 | let _: () = msg_send![zoom_button, setHidden: YES]; 33 | } 34 | id.setTitleVisibility_(if title_transparent { 35 | NSWindowTitleVisibility::NSWindowTitleHidden 36 | } else { 37 | NSWindowTitleVisibility::NSWindowTitleVisible 38 | }); 39 | id.setTitlebarAppearsTransparent_(if title_transparent { 40 | cocoa::base::YES 41 | } else { 42 | cocoa::base::NO 43 | }); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /crates/backend/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "devPath": "http://localhost:5173", 4 | "beforeDevCommand": "cd frontend && yarn dev", 5 | "distDir": "../frontend/dist", 6 | "beforeBuildCommand": "cd frontend && yarn build" 7 | }, 8 | "package": { 9 | "productName": "Auxilium", 10 | "version": "1.0.0" 11 | }, 12 | "tauri": { 13 | "allowlist": { 14 | "all": false, 15 | "shell": { 16 | "all": false, 17 | "open": true 18 | } 19 | }, 20 | "systemTray": { 21 | "iconPath": "icons/32x32.png", 22 | "iconAsTemplate": true 23 | }, 24 | "bundle": { 25 | "active": true, 26 | "category": "DeveloperTool", 27 | "copyright": "@codeaye", 28 | "deb": { 29 | "depends": [] 30 | }, 31 | "externalBin": [], 32 | "icon": [ 33 | "icons/32x32.png", 34 | "icons/128x128.png", 35 | "icons/128x128@2x.png", 36 | "icons/icon.icns", 37 | "icons/icon.ico" 38 | ], 39 | "identifier": "com.codeaye.dev", 40 | "shortDescription": "Spotlight for Developers", 41 | "longDescription": "Auxilium is a developer tool that helps you find the right solutions for your errors.", 42 | "resources": [], 43 | "targets": "all", 44 | "macOS": { 45 | "entitlements": null, 46 | "exceptionDomain": "", 47 | "frameworks": [], 48 | "providerShortName": null, 49 | "signingIdentity": null 50 | }, 51 | "windows": { 52 | "certificateThumbprint": null, 53 | "digestAlgorithm": "sha256", 54 | "timestampUrl": "" 55 | } 56 | }, 57 | "security": { 58 | "csp": null 59 | }, 60 | "windows": [ 61 | { 62 | "title": "Auxilium", 63 | "width": 630, 64 | "height": 73, 65 | "resizable": false, 66 | "fullscreen": false, 67 | "alwaysOnTop": true, 68 | "visible": false, 69 | "decorations": false 70 | } 71 | ], 72 | "updater": { 73 | "active": false 74 | } 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: "Build And Release" 2 | on: 3 | workflow_dispatch: 4 | push: 5 | tags: 6 | - "v*" 7 | 8 | jobs: 9 | publish-tauri: 10 | strategy: 11 | fail-fast: false 12 | matrix: 13 | platform: [macos-latest, ubuntu-latest, windows-latest] 14 | 15 | runs-on: ${{ matrix.platform }} 16 | steps: 17 | - uses: actions/checkout@v2 18 | with: 19 | lfs: true 20 | submodules: recursive 21 | 22 | - name: Setup node 23 | uses: actions/setup-node@v1 24 | with: 25 | node-version: 16 26 | 27 | - name: Install rust stable 28 | uses: actions-rs/toolchain@v1 29 | with: 30 | toolchain: stable 31 | 32 | - name: Install dependencies (ubuntu only) 33 | if: matrix.platform == 'ubuntu-latest' 34 | run: | 35 | sudo apt-get update 36 | sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libappindicator3-dev librsvg2-dev patchelf 37 | 38 | - name: Install tauri cli 39 | uses: actions-rs/install@v0.1 40 | with: 41 | crate: tauri-cli 42 | version: latest 43 | use-tool-cache: true 44 | 45 | - name: Install app dependencies 46 | run: cd crates/frontend && yarn && cd .. && cd .. 47 | 48 | - name: Build the app 49 | run: cargo tauri build 50 | 51 | - name: Publish ubuntu files 52 | uses: softprops/action-gh-release@v1 53 | if: matrix.platform == 'ubuntu-latest' 54 | with: 55 | files: | 56 | target/release/bundle/appimage/*.Appimage 57 | target/release/bundle/deb/*.deb 58 | LICENSE 59 | 60 | - name: Publish mac files 61 | uses: softprops/action-gh-release@v1 62 | if: matrix.platform == 'macos-latest' 63 | with: 64 | files: | 65 | target/release/bundle/dmg/*.dmg 66 | target/release/bundle/macos/* 67 | 68 | - name: Publish windows files 69 | uses: softprops/action-gh-release@v1 70 | if: matrix.platform == 'windows-latest' 71 | with: 72 | files: | 73 | target/release/bundle/msi/* 74 | -------------------------------------------------------------------------------- /crates/frontend/src/components/Card.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | ListItem, 3 | ListItemAvatar, 4 | Avatar, 5 | ListItemText, 6 | Divider, 7 | Link, 8 | Stack, 9 | Chip, 10 | IconButton, 11 | } from "@mui/material"; 12 | import DoneRoundedIcon from "@mui/icons-material/DoneRounded"; 13 | import { Fragment } from "react"; 14 | import { open } from "@tauri-apps/api/shell"; 15 | import customCap from "../functions/customCap"; 16 | import stringToColour from "../functions/stringToColour"; 17 | import { Item } from "../types/SearchApiResult"; 18 | import { useStore } from "../store"; 19 | 20 | const ANSWER_REF = "https://stackoverflow.com/a/"; 21 | const TAG_REF = "https://stackoverflow.com/questions/tagged/"; 22 | const USER_REF = "https://stackoverflow.com/users/"; 23 | 24 | const stags = (store: any) => !store.noTagsMode; 25 | 26 | const Card = ({ item }: { item: Item }) => { 27 | const noTagsMode = useStore(stags); 28 | 29 | return ( 30 | 31 | open(ANSWER_REF + item.accepted_answer_id)} 38 | > 39 | 40 | 41 | ) : null 42 | } 43 | > 44 | 45 | open(USER_REF + item.owner.user_id)} 48 | > 49 | 54 | 55 | 56 | open(item.link)} 60 | color="inherit" 61 | underline="hover" 62 | > 63 | {customCap(item.title)} 64 | 65 | } 66 | secondary={ 67 | noTagsMode ? ( 68 | 74 | {item.tags.map((tag) => ( 75 | open(TAG_REF + tag)} 80 | clickable 81 | /> 82 | ))} 83 | 84 | ) : null 85 | } 86 | /> 87 | 88 | 89 | 90 | ); 91 | }; 92 | 93 | export default Card; 94 | -------------------------------------------------------------------------------- /crates/frontend/src/pages/Settings.tsx: -------------------------------------------------------------------------------- 1 | import { Box, Button, Paper, Stack } from "@mui/material"; 2 | import Brightness4RoundedIcon from "@mui/icons-material/Brightness4Rounded"; 3 | import Brightness5RoundedIcon from "@mui/icons-material/Brightness5Rounded"; 4 | import ViewCompactAltRoundedIcon from "@mui/icons-material/ViewCompactAltRounded"; 5 | import ViewComfyAltRoundedIcon from "@mui/icons-material/ViewComfyAltRounded"; 6 | import TurnedInRoundedIcon from "@mui/icons-material/TurnedInRounded"; 7 | import TurnedInNotRoundedIcon from "@mui/icons-material/TurnedInNotRounded"; 8 | import Toggle from "../components/Toggle"; 9 | import { useStore } from "../store"; 10 | import { MouseEvent } from "react"; 11 | 12 | const dSelector = (store: any) => (store.darkMode ? "dark" : "light"); 13 | const dFSelector = (store: any) => store.setDarkMode; 14 | const deSelector = (store: any) => (store.denseMode ? "dense" : "comfy"); 15 | const deFSelector = (store: any) => store.setDenseMode; 16 | const tSelector = (store: any) => (store.noTagsMode ? "notags" : "tags"); 17 | const tFSelector = (store: any) => store.setTagsMode; 18 | const sFSelector = (store: any) => store.saveStore; 19 | 20 | const Settings = () => { 21 | const mode = useStore(dSelector); 22 | const setMode = useStore(dFSelector); 23 | const handleModeChange = ( 24 | _event: MouseEvent, 25 | newMode: string | null 26 | ) => newMode !== null && setMode(newMode === "dark" ? true : false); 27 | 28 | const dense = useStore(deSelector); 29 | const setDenseMode = useStore(deFSelector); 30 | const handleDenseChange = ( 31 | _event: MouseEvent, 32 | newMode: string | null 33 | ) => newMode !== null && setDenseMode(newMode === "dense" ? true : false); 34 | const tags = useStore(tSelector); 35 | const setTags = useStore(tFSelector); 36 | const handleTagChange = ( 37 | _event: MouseEvent, 38 | newMode: string | null 39 | ) => newMode !== null && setTags(newMode === "notags" ? true : false); 40 | const saveStore = useStore(sFSelector); 41 | 42 | return ( 43 | 50 | 51 | 52 | } 61 | icon2={} 62 | /> 63 | } 72 | icon2={} 73 | /> 74 | } 83 | icon2={} 84 | /> 85 | 88 | 89 | 90 | 91 | ); 92 | }; 93 | 94 | export default Settings; 95 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### macOS ### 2 | # General 3 | .DS_Store 4 | .AppleDouble 5 | .LSOverride 6 | 7 | # Icon must end with two \r 8 | Icon 9 | 10 | 11 | # Thumbnails 12 | ._* 13 | 14 | # Files that might appear in the root of a volume 15 | .DocumentRevisions-V100 16 | .fseventsd 17 | .Spotlight-V100 18 | .TemporaryItems 19 | .Trashes 20 | .VolumeIcon.icns 21 | .com.apple.timemachine.donotpresent 22 | 23 | # Directories potentially created on remote AFP share 24 | .AppleDB 25 | .AppleDesktop 26 | Network Trash Folder 27 | Temporary Items 28 | .apdisk 29 | 30 | ### macOS Patch ### 31 | # iCloud generated files 32 | *.icloud 33 | 34 | ### Node ### 35 | # Logs 36 | logs 37 | *.log 38 | npm-debug.log* 39 | yarn-debug.log* 40 | yarn-error.log* 41 | lerna-debug.log* 42 | .pnpm-debug.log* 43 | 44 | # Diagnostic reports (https://nodejs.org/api/report.html) 45 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 46 | 47 | # Runtime data 48 | pids 49 | *.pid 50 | *.seed 51 | *.pid.lock 52 | 53 | # Directory for instrumented libs generated by jscoverage/JSCover 54 | lib-cov 55 | 56 | # Coverage directory used by tools like istanbul 57 | coverage 58 | *.lcov 59 | 60 | # nyc test coverage 61 | .nyc_output 62 | 63 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 64 | .grunt 65 | 66 | # Bower dependency directory (https://bower.io/) 67 | bower_components 68 | 69 | # node-waf configuration 70 | .lock-wscript 71 | 72 | # Compiled binary addons (https://nodejs.org/api/addons.html) 73 | build/Release 74 | 75 | # Dependency directories 76 | node_modules/ 77 | jspm_packages/ 78 | 79 | # Snowpack dependency directory (https://snowpack.dev/) 80 | web_modules/ 81 | 82 | # TypeScript cache 83 | *.tsbuildinfo 84 | 85 | # Optional npm cache directory 86 | .npm 87 | 88 | # Optional eslint cache 89 | .eslintcache 90 | 91 | # Optional stylelint cache 92 | .stylelintcache 93 | 94 | # Microbundle cache 95 | .rpt2_cache/ 96 | .rts2_cache_cjs/ 97 | .rts2_cache_es/ 98 | .rts2_cache_umd/ 99 | 100 | # Optional REPL history 101 | .node_repl_history 102 | 103 | # Output of 'npm pack' 104 | *.tgz 105 | 106 | # Yarn Integrity file 107 | .yarn-integrity 108 | 109 | # dotenv environment variable files 110 | .env 111 | .env.development.local 112 | .env.test.local 113 | .env.production.local 114 | .env.local 115 | 116 | # parcel-bundler cache (https://parceljs.org/) 117 | .cache 118 | .parcel-cache 119 | 120 | # Next.js build output 121 | .next 122 | out 123 | 124 | # Nuxt.js build / generate output 125 | .nuxt 126 | dist 127 | 128 | # Gatsby files 129 | .cache/ 130 | # Comment in the public line in if your project uses Gatsby and not Next.js 131 | # https://nextjs.org/blog/next-9-1#public-directory-support 132 | # public 133 | 134 | # vuepress build output 135 | .vuepress/dist 136 | 137 | # vuepress v2.x temp and cache directory 138 | .temp 139 | 140 | # Docusaurus cache and generated files 141 | .docusaurus 142 | 143 | # Serverless directories 144 | .serverless/ 145 | 146 | # FuseBox cache 147 | .fusebox/ 148 | 149 | # DynamoDB Local files 150 | .dynamodb/ 151 | 152 | # TernJS port file 153 | .tern-port 154 | 155 | # Stores VSCode versions used for testing VSCode extensions 156 | .vscode-test 157 | 158 | # yarn v2 159 | .yarn/cache 160 | .yarn/unplugged 161 | .yarn/build-state.yml 162 | .yarn/install-state.gz 163 | .pnp.* 164 | 165 | ### Node Patch ### 166 | # Serverless Webpack directories 167 | .webpack/ 168 | 169 | # Optional stylelint cache 170 | 171 | # SvelteKit build / generate output 172 | .svelte-kit 173 | 174 | ### react ### 175 | .DS_* 176 | **/*.backup.* 177 | **/*.back.* 178 | 179 | node_modules 180 | 181 | *.sublime* 182 | 183 | psd 184 | thumb 185 | sketch 186 | 187 | ### Rust ### 188 | # Generated by Cargo 189 | # will have compiled files and executables 190 | debug/ 191 | target/ 192 | 193 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 194 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 195 | Cargo.lock 196 | 197 | # These are backup files generated by rustfmt 198 | **/*.rs.bk 199 | 200 | # MSVC Windows builds of rustc generate these, which store debugging information 201 | *.pdb 202 | 203 | ### VisualStudioCode ### 204 | .vscode/* 205 | !.vscode/settings.json 206 | !.vscode/tasks.json 207 | !.vscode/launch.json 208 | !.vscode/extensions.json 209 | !.vscode/*.code-snippets 210 | 211 | # Local History for Visual Studio Code 212 | .history/ 213 | 214 | # Built Visual Studio Code Extensions 215 | *.vsix 216 | 217 | ### VisualStudioCode Patch ### 218 | # Ignore all local history of files 219 | .history 220 | .ionide 221 | 222 | # Support for Project snippet scope 223 | .vscode/*.code-snippets 224 | 225 | # Ignore code-workspaces 226 | *.code-workspace 227 | 228 | ### yarn ### 229 | # https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored 230 | 231 | .yarn/* 232 | !.yarn/releases 233 | !.yarn/patches 234 | !.yarn/plugins 235 | !.yarn/sdks 236 | !.yarn/versions 237 | 238 | # if you are NOT using Zero-installs, then: 239 | # comment the following lines 240 | !.yarn/cache 241 | 242 | # and uncomment the following lines 243 | # .pnp.* 244 | 245 | # End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,macos,node,react,rust,yarn 246 | 247 | # Custom rules (everything added below won't be overriden by 'Generate .gitignore File' if you use 'Update' option) 248 | 249 | -------------------------------------------------------------------------------- /crates/backend/src/main.rs: -------------------------------------------------------------------------------- 1 | #![cfg_attr( 2 | all(not(debug_assertions), target_os = "windows"), 3 | windows_subsystem = "windows" 4 | )] 5 | 6 | #[cfg(target_os = "macos")] 7 | #[macro_use] 8 | extern crate objc; 9 | 10 | mod window_custom; 11 | use std::{thread, time::Duration}; 12 | 13 | use tauri::{ 14 | generate_handler, AppHandle, CustomMenuItem, GlobalShortcutManager, LogicalSize, Manager, 15 | RunEvent, Size, SystemTray, SystemTrayEvent, SystemTrayMenu, SystemTrayMenuItem, Window, 16 | }; 17 | use tauri_plugin_store::PluginBuilder; 18 | use window_custom::WindowExt as _; 19 | 20 | const TOGGLE_SHORTCUT: &str = "Alt+Space"; 21 | const QUIT_SHORTCUT: &str = "Alt+Q"; 22 | const PREFERENCES_SHORTCUT: &str = "Alt+P"; 23 | 24 | fn open_settings(handle: AppHandle) { 25 | thread::spawn(move || { 26 | tauri::WindowBuilder::new( 27 | &handle, 28 | "settings", 29 | tauri::WindowUrl::App("app_settings".parse().unwrap()), 30 | ) 31 | .title("Settings") 32 | .resizable(false) 33 | .inner_size(415., 440.) 34 | .visible(true) 35 | .build() 36 | .expect("Could not launch settings window"); 37 | }); 38 | } 39 | 40 | fn user_open_request(handle: AppHandle) { 41 | let window = handle.get_window("settings"); 42 | match window { 43 | Some(window) => { 44 | if !window.is_visible().unwrap() { 45 | window.show().expect("Could not show settings window!"); 46 | window 47 | .set_focus() 48 | .expect("Could not focus settings window!"); 49 | } 50 | } 51 | None => open_settings(handle), 52 | } 53 | } 54 | 55 | #[tauri::command] 56 | fn set_mini(window: Window) { 57 | window.set_size(Size::new(LogicalSize { width: 630, height: 73 })).unwrap(); 58 | } 59 | 60 | #[tauri::command] 61 | fn set_max(window: Window) { 62 | window.set_size(Size::new(LogicalSize { width: 630, height: 430 })).unwrap(); 63 | } 64 | 65 | fn main() { 66 | // System tray configuration 67 | let tray = SystemTray::new().with_menu( 68 | SystemTrayMenu::new() 69 | .add_item( 70 | CustomMenuItem::new("show_auxilium", "Show Auxilium").accelerator(TOGGLE_SHORTCUT), 71 | ) 72 | .add_item( 73 | CustomMenuItem::new("preference", "Preferences").accelerator(PREFERENCES_SHORTCUT), 74 | ) 75 | .add_native_item(SystemTrayMenuItem::Separator) 76 | .add_item(CustomMenuItem::new("quit".to_string(), "Quit").accelerator(QUIT_SHORTCUT)), 77 | ); 78 | 79 | let app = tauri::Builder::default() 80 | .plugin(PluginBuilder::default().build()) 81 | .setup(|app| { 82 | let window = app.get_window("main").unwrap(); 83 | // Use the window shadows plugin 84 | // window_shadows::set_shadow(&window, true).expect("Unsupported platform!"); 85 | // Use transparent titlebar for macos 86 | #[cfg(target_os = "macos")] 87 | window.set_transparent_titlebar(true, true); 88 | // Move the window to the center of the screen 89 | window.center().expect("Cannot move window!"); 90 | 91 | // Open dev tools 92 | #[cfg(debug_assertions)] 93 | window.open_devtools(); 94 | Ok(()) 95 | }) 96 | // Add the system tray 97 | .system_tray(tray) 98 | // Handle system tray events 99 | .on_system_tray_event(|app, event| match event { 100 | SystemTrayEvent::MenuItemClick { id, .. } => match id.as_str() { 101 | "quit" => std::process::exit(0), 102 | "show_auxilium" => { 103 | let window = app.get_window("main").unwrap(); 104 | window.show().unwrap(); 105 | window.set_focus().unwrap(); 106 | } 107 | "preference" => user_open_request(app.app_handle()), 108 | _ => {} 109 | }, 110 | _ => {} 111 | }) 112 | .on_window_event(|event| { 113 | if let tauri::WindowEvent::Focused(f) = event.event() { 114 | if let false = f { 115 | event.window().hide().unwrap() 116 | } 117 | } 118 | }) 119 | .invoke_handler(generate_handler![set_mini, set_max]) 120 | .build(tauri::generate_context!()) 121 | .expect("An error occured while running the app!"); 122 | 123 | app.run(|app_handle, e| match e { 124 | RunEvent::Ready => { 125 | let app_handle = app_handle.clone(); 126 | // Get the global shortcut manager 127 | let mut gsm = app_handle.global_shortcut_manager(); 128 | 129 | // Register the shortcut to show the app 130 | let handler = app_handle.clone(); 131 | gsm.register(TOGGLE_SHORTCUT, move || { 132 | let app_handle = handler.clone(); 133 | let window = app_handle.get_window("main").unwrap(); 134 | if !window.is_visible().unwrap() { 135 | window.show().unwrap(); 136 | window.set_focus().unwrap(); 137 | } 138 | }) 139 | .unwrap(); 140 | 141 | // Register the shortcut to quit the app 142 | gsm.register(QUIT_SHORTCUT, || std::process::exit(0)) 143 | .unwrap(); 144 | 145 | // Register the shortcut to open the settings 146 | gsm.register(PREFERENCES_SHORTCUT, move || { 147 | user_open_request(app_handle.clone()) 148 | }) 149 | .unwrap(); 150 | } 151 | RunEvent::ExitRequested { api, .. } => api.prevent_exit(), 152 | _ => {} 153 | }) 154 | } 155 | -------------------------------------------------------------------------------- /crates/frontend/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.1.0": 6 | version "2.2.0" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" 8 | integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.1.0" 11 | "@jridgewell/trace-mapping" "^0.3.9" 12 | 13 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": 14 | version "7.18.6" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" 16 | integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== 17 | dependencies: 18 | "@babel/highlight" "^7.18.6" 19 | 20 | "@babel/compat-data@^7.18.8": 21 | version "7.18.8" 22 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" 23 | integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== 24 | 25 | "@babel/core@^7.18.10": 26 | version "7.18.10" 27 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" 28 | integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== 29 | dependencies: 30 | "@ampproject/remapping" "^2.1.0" 31 | "@babel/code-frame" "^7.18.6" 32 | "@babel/generator" "^7.18.10" 33 | "@babel/helper-compilation-targets" "^7.18.9" 34 | "@babel/helper-module-transforms" "^7.18.9" 35 | "@babel/helpers" "^7.18.9" 36 | "@babel/parser" "^7.18.10" 37 | "@babel/template" "^7.18.10" 38 | "@babel/traverse" "^7.18.10" 39 | "@babel/types" "^7.18.10" 40 | convert-source-map "^1.7.0" 41 | debug "^4.1.0" 42 | gensync "^1.0.0-beta.2" 43 | json5 "^2.2.1" 44 | semver "^6.3.0" 45 | 46 | "@babel/generator@^7.18.10": 47 | version "7.18.12" 48 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" 49 | integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== 50 | dependencies: 51 | "@babel/types" "^7.18.10" 52 | "@jridgewell/gen-mapping" "^0.3.2" 53 | jsesc "^2.5.1" 54 | 55 | "@babel/helper-annotate-as-pure@^7.18.6": 56 | version "7.18.6" 57 | resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" 58 | integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== 59 | dependencies: 60 | "@babel/types" "^7.18.6" 61 | 62 | "@babel/helper-compilation-targets@^7.18.9": 63 | version "7.18.9" 64 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" 65 | integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== 66 | dependencies: 67 | "@babel/compat-data" "^7.18.8" 68 | "@babel/helper-validator-option" "^7.18.6" 69 | browserslist "^4.20.2" 70 | semver "^6.3.0" 71 | 72 | "@babel/helper-environment-visitor@^7.18.9": 73 | version "7.18.9" 74 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" 75 | integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== 76 | 77 | "@babel/helper-function-name@^7.18.9": 78 | version "7.18.9" 79 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" 80 | integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== 81 | dependencies: 82 | "@babel/template" "^7.18.6" 83 | "@babel/types" "^7.18.9" 84 | 85 | "@babel/helper-hoist-variables@^7.18.6": 86 | version "7.18.6" 87 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" 88 | integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== 89 | dependencies: 90 | "@babel/types" "^7.18.6" 91 | 92 | "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6": 93 | version "7.18.6" 94 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" 95 | integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== 96 | dependencies: 97 | "@babel/types" "^7.18.6" 98 | 99 | "@babel/helper-module-transforms@^7.18.9": 100 | version "7.18.9" 101 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" 102 | integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== 103 | dependencies: 104 | "@babel/helper-environment-visitor" "^7.18.9" 105 | "@babel/helper-module-imports" "^7.18.6" 106 | "@babel/helper-simple-access" "^7.18.6" 107 | "@babel/helper-split-export-declaration" "^7.18.6" 108 | "@babel/helper-validator-identifier" "^7.18.6" 109 | "@babel/template" "^7.18.6" 110 | "@babel/traverse" "^7.18.9" 111 | "@babel/types" "^7.18.9" 112 | 113 | "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9": 114 | version "7.18.9" 115 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" 116 | integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== 117 | 118 | "@babel/helper-simple-access@^7.18.6": 119 | version "7.18.6" 120 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" 121 | integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== 122 | dependencies: 123 | "@babel/types" "^7.18.6" 124 | 125 | "@babel/helper-split-export-declaration@^7.18.6": 126 | version "7.18.6" 127 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" 128 | integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== 129 | dependencies: 130 | "@babel/types" "^7.18.6" 131 | 132 | "@babel/helper-string-parser@^7.18.10": 133 | version "7.18.10" 134 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" 135 | integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== 136 | 137 | "@babel/helper-validator-identifier@^7.18.6": 138 | version "7.18.6" 139 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" 140 | integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== 141 | 142 | "@babel/helper-validator-option@^7.18.6": 143 | version "7.18.6" 144 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" 145 | integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== 146 | 147 | "@babel/helpers@^7.18.9": 148 | version "7.18.9" 149 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" 150 | integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== 151 | dependencies: 152 | "@babel/template" "^7.18.6" 153 | "@babel/traverse" "^7.18.9" 154 | "@babel/types" "^7.18.9" 155 | 156 | "@babel/highlight@^7.18.6": 157 | version "7.18.6" 158 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" 159 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== 160 | dependencies: 161 | "@babel/helper-validator-identifier" "^7.18.6" 162 | chalk "^2.0.0" 163 | js-tokens "^4.0.0" 164 | 165 | "@babel/parser@^7.18.10", "@babel/parser@^7.18.11": 166 | version "7.18.11" 167 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" 168 | integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== 169 | 170 | "@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6": 171 | version "7.18.6" 172 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" 173 | integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== 174 | dependencies: 175 | "@babel/helper-plugin-utils" "^7.18.6" 176 | 177 | "@babel/plugin-transform-react-jsx-development@^7.18.6": 178 | version "7.18.6" 179 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" 180 | integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== 181 | dependencies: 182 | "@babel/plugin-transform-react-jsx" "^7.18.6" 183 | 184 | "@babel/plugin-transform-react-jsx-self@^7.18.6": 185 | version "7.18.6" 186 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz#3849401bab7ae8ffa1e3e5687c94a753fc75bda7" 187 | integrity sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig== 188 | dependencies: 189 | "@babel/helper-plugin-utils" "^7.18.6" 190 | 191 | "@babel/plugin-transform-react-jsx-source@^7.18.6": 192 | version "7.18.6" 193 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.18.6.tgz#06e9ae8a14d2bc19ce6e3c447d842032a50598fc" 194 | integrity sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw== 195 | dependencies: 196 | "@babel/helper-plugin-utils" "^7.18.6" 197 | 198 | "@babel/plugin-transform-react-jsx@^7.18.10", "@babel/plugin-transform-react-jsx@^7.18.6": 199 | version "7.18.10" 200 | resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.10.tgz#ea47b2c4197102c196cbd10db9b3bb20daa820f1" 201 | integrity sha512-gCy7Iikrpu3IZjYZolFE4M1Sm+nrh1/6za2Ewj77Z+XirT4TsbJcvOFOyF+fRPwU6AKKK136CZxx6L8AbSFG6A== 202 | dependencies: 203 | "@babel/helper-annotate-as-pure" "^7.18.6" 204 | "@babel/helper-module-imports" "^7.18.6" 205 | "@babel/helper-plugin-utils" "^7.18.9" 206 | "@babel/plugin-syntax-jsx" "^7.18.6" 207 | "@babel/types" "^7.18.10" 208 | 209 | "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.7": 210 | version "7.18.9" 211 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" 212 | integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== 213 | dependencies: 214 | regenerator-runtime "^0.13.4" 215 | 216 | "@babel/template@^7.18.10", "@babel/template@^7.18.6": 217 | version "7.18.10" 218 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" 219 | integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== 220 | dependencies: 221 | "@babel/code-frame" "^7.18.6" 222 | "@babel/parser" "^7.18.10" 223 | "@babel/types" "^7.18.10" 224 | 225 | "@babel/traverse@^7.18.10", "@babel/traverse@^7.18.9": 226 | version "7.18.11" 227 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" 228 | integrity sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ== 229 | dependencies: 230 | "@babel/code-frame" "^7.18.6" 231 | "@babel/generator" "^7.18.10" 232 | "@babel/helper-environment-visitor" "^7.18.9" 233 | "@babel/helper-function-name" "^7.18.9" 234 | "@babel/helper-hoist-variables" "^7.18.6" 235 | "@babel/helper-split-export-declaration" "^7.18.6" 236 | "@babel/parser" "^7.18.11" 237 | "@babel/types" "^7.18.10" 238 | debug "^4.1.0" 239 | globals "^11.1.0" 240 | 241 | "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9": 242 | version "7.18.10" 243 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" 244 | integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== 245 | dependencies: 246 | "@babel/helper-string-parser" "^7.18.10" 247 | "@babel/helper-validator-identifier" "^7.18.6" 248 | to-fast-properties "^2.0.0" 249 | 250 | "@emotion/babel-plugin@^11.10.0": 251 | version "11.10.0" 252 | resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.10.0.tgz#ae545b8faa6b42d3a50ec86b70b758296f3c4467" 253 | integrity sha512-xVnpDAAbtxL1dsuSelU5A7BnY/lftws0wUexNJZTPsvX/1tM4GZJbclgODhvW4E+NH7E5VFcH0bBn30NvniPJA== 254 | dependencies: 255 | "@babel/helper-module-imports" "^7.16.7" 256 | "@babel/plugin-syntax-jsx" "^7.17.12" 257 | "@babel/runtime" "^7.18.3" 258 | "@emotion/hash" "^0.9.0" 259 | "@emotion/memoize" "^0.8.0" 260 | "@emotion/serialize" "^1.1.0" 261 | babel-plugin-macros "^3.1.0" 262 | convert-source-map "^1.5.0" 263 | escape-string-regexp "^4.0.0" 264 | find-root "^1.1.0" 265 | source-map "^0.5.7" 266 | stylis "4.0.13" 267 | 268 | "@emotion/cache@^11.10.0", "@emotion/cache@^11.9.3": 269 | version "11.10.1" 270 | resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.10.1.tgz#75a157c2a6bb9220450f73ebef1df2e1467dc65d" 271 | integrity sha512-uZTj3Yz5D69GE25iFZcIQtibnVCFsc/6+XIozyL3ycgWvEdif2uEw9wlUt6umjLr4Keg9K6xRPHmD8LGi+6p1A== 272 | dependencies: 273 | "@emotion/memoize" "^0.8.0" 274 | "@emotion/sheet" "^1.2.0" 275 | "@emotion/utils" "^1.2.0" 276 | "@emotion/weak-memoize" "^0.3.0" 277 | stylis "4.0.13" 278 | 279 | "@emotion/hash@^0.9.0": 280 | version "0.9.0" 281 | resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7" 282 | integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ== 283 | 284 | "@emotion/is-prop-valid@^1.1.3", "@emotion/is-prop-valid@^1.2.0": 285 | version "1.2.0" 286 | resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83" 287 | integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg== 288 | dependencies: 289 | "@emotion/memoize" "^0.8.0" 290 | 291 | "@emotion/memoize@^0.8.0": 292 | version "0.8.0" 293 | resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f" 294 | integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA== 295 | 296 | "@emotion/react@^11.10.0": 297 | version "11.10.0" 298 | resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.10.0.tgz#53c577f063f26493f68a05188fb87528d912ff2e" 299 | integrity sha512-K6z9zlHxxBXwN8TcpwBKcEsBsOw4JWCCmR+BeeOWgqp8GIU1yA2Odd41bwdAAr0ssbQrbJbVnndvv7oiv1bZeQ== 300 | dependencies: 301 | "@babel/runtime" "^7.18.3" 302 | "@emotion/babel-plugin" "^11.10.0" 303 | "@emotion/cache" "^11.10.0" 304 | "@emotion/serialize" "^1.1.0" 305 | "@emotion/utils" "^1.2.0" 306 | "@emotion/weak-memoize" "^0.3.0" 307 | hoist-non-react-statics "^3.3.1" 308 | 309 | "@emotion/serialize@^1.1.0": 310 | version "1.1.0" 311 | resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.0.tgz#b1f97b1011b09346a40e9796c37a3397b4ea8ea8" 312 | integrity sha512-F1ZZZW51T/fx+wKbVlwsfchr5q97iW8brAnXmsskz4d0hVB4O3M/SiA3SaeH06x02lSNzkkQv+n3AX3kCXKSFA== 313 | dependencies: 314 | "@emotion/hash" "^0.9.0" 315 | "@emotion/memoize" "^0.8.0" 316 | "@emotion/unitless" "^0.8.0" 317 | "@emotion/utils" "^1.2.0" 318 | csstype "^3.0.2" 319 | 320 | "@emotion/sheet@^1.2.0": 321 | version "1.2.0" 322 | resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.0.tgz#771b1987855839e214fc1741bde43089397f7be5" 323 | integrity sha512-OiTkRgpxescko+M51tZsMq7Puu/KP55wMT8BgpcXVG2hqXc0Vo0mfymJ/Uj24Hp0i083ji/o0aLddh08UEjq8w== 324 | 325 | "@emotion/styled@^11.10.0": 326 | version "11.10.0" 327 | resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.10.0.tgz#c19484dab4206ae46727c07efb4316423dd21312" 328 | integrity sha512-V9oaEH6V4KePeQpgUE83i8ht+4Ri3E8Djp/ZPJ4DQlqWhSKITvgzlR3/YQE2hdfP4Jw3qVRkANJz01LLqK9/TA== 329 | dependencies: 330 | "@babel/runtime" "^7.18.3" 331 | "@emotion/babel-plugin" "^11.10.0" 332 | "@emotion/is-prop-valid" "^1.2.0" 333 | "@emotion/serialize" "^1.1.0" 334 | "@emotion/utils" "^1.2.0" 335 | 336 | "@emotion/unitless@^0.8.0": 337 | version "0.8.0" 338 | resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db" 339 | integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw== 340 | 341 | "@emotion/utils@^1.2.0": 342 | version "1.2.0" 343 | resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561" 344 | integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw== 345 | 346 | "@emotion/weak-memoize@^0.3.0": 347 | version "0.3.0" 348 | resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz#ea89004119dc42db2e1dba0f97d553f7372f6fcb" 349 | integrity sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg== 350 | 351 | "@esbuild/linux-loong64@0.14.54": 352 | version "0.14.54" 353 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" 354 | integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== 355 | 356 | "@jridgewell/gen-mapping@^0.1.0": 357 | version "0.1.1" 358 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" 359 | integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== 360 | dependencies: 361 | "@jridgewell/set-array" "^1.0.0" 362 | "@jridgewell/sourcemap-codec" "^1.4.10" 363 | 364 | "@jridgewell/gen-mapping@^0.3.2": 365 | version "0.3.2" 366 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" 367 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== 368 | dependencies: 369 | "@jridgewell/set-array" "^1.0.1" 370 | "@jridgewell/sourcemap-codec" "^1.4.10" 371 | "@jridgewell/trace-mapping" "^0.3.9" 372 | 373 | "@jridgewell/resolve-uri@^3.0.3": 374 | version "3.1.0" 375 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 376 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 377 | 378 | "@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": 379 | version "1.1.2" 380 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 381 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 382 | 383 | "@jridgewell/sourcemap-codec@^1.4.10": 384 | version "1.4.14" 385 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 386 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 387 | 388 | "@jridgewell/trace-mapping@^0.3.9": 389 | version "0.3.15" 390 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774" 391 | integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== 392 | dependencies: 393 | "@jridgewell/resolve-uri" "^3.0.3" 394 | "@jridgewell/sourcemap-codec" "^1.4.10" 395 | 396 | "@mui/base@5.0.0-alpha.92": 397 | version "5.0.0-alpha.92" 398 | resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-alpha.92.tgz#5c2ca31801fe21a8fec9bfda2cf5f44b1e3c7284" 399 | integrity sha512-ZgnSLrTXL4iUdLQhjp01dAOTQPQlnwrqjZRwDT3E6LZXEYn6cMv1MY6LZkWcF/zxrUnyasnsyMAgZ5d8AXS7bA== 400 | dependencies: 401 | "@babel/runtime" "^7.17.2" 402 | "@emotion/is-prop-valid" "^1.1.3" 403 | "@mui/types" "^7.1.5" 404 | "@mui/utils" "^5.9.3" 405 | "@popperjs/core" "^2.11.5" 406 | clsx "^1.2.1" 407 | prop-types "^15.8.1" 408 | react-is "^18.2.0" 409 | 410 | "@mui/icons-material@^5.8.4": 411 | version "5.8.4" 412 | resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.8.4.tgz#3f2907c9f8f5ce4d754cb8fb4b68b5a1abf4d095" 413 | integrity sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA== 414 | dependencies: 415 | "@babel/runtime" "^7.17.2" 416 | 417 | "@mui/material@^5.10.0": 418 | version "5.10.0" 419 | resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.10.0.tgz#35f6484b7dec40a38874fa948a44a073f4d3a4c7" 420 | integrity sha512-MSEzkE2vhpM37m8Gh3+TcZCWL70p+MxzNvS8FHugBB6YZpafhBFmFKX7/pYJ2kVD87PpUhNR4szWub7/ohE02Q== 421 | dependencies: 422 | "@babel/runtime" "^7.17.2" 423 | "@mui/base" "5.0.0-alpha.92" 424 | "@mui/system" "^5.10.0" 425 | "@mui/types" "^7.1.5" 426 | "@mui/utils" "^5.9.3" 427 | "@types/react-transition-group" "^4.4.5" 428 | clsx "^1.2.1" 429 | csstype "^3.1.0" 430 | prop-types "^15.8.1" 431 | react-is "^18.2.0" 432 | react-transition-group "^4.4.5" 433 | 434 | "@mui/private-theming@^5.9.3": 435 | version "5.9.3" 436 | resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.9.3.tgz#8ea06dbe0522b0cf4ba5ee19b1a4d7f74539ae1c" 437 | integrity sha512-Ys3WO39WqoGciGX9k5AIi/k2zJhlydv4FzlEEwtw9OqdMaV0ydK/TdZekKzjP9sTI/JcdAP3H5DWtUaPLQJjWg== 438 | dependencies: 439 | "@babel/runtime" "^7.17.2" 440 | "@mui/utils" "^5.9.3" 441 | prop-types "^15.8.1" 442 | 443 | "@mui/styled-engine@^5.10.0": 444 | version "5.10.0" 445 | resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.10.0.tgz#5c904c1f021a8ee1b3e3b8a3d05c9f4ea68c43a0" 446 | integrity sha512-V0MmOx7KBDomDYg2/dRItVsvrpHpd51uZZiNqeuXiZruUJ1vPwtxztpvtSjX/xKvIxN7C0mxf8jmuwVUn6uaEA== 447 | dependencies: 448 | "@babel/runtime" "^7.17.2" 449 | "@emotion/cache" "^11.9.3" 450 | csstype "^3.1.0" 451 | prop-types "^15.8.1" 452 | 453 | "@mui/system@^5.10.0": 454 | version "5.10.0" 455 | resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.10.0.tgz#48daf4aa8e61424c232378acb27a735abfb1fcc1" 456 | integrity sha512-HNu3LdA+37cWqgJBEhOF4F5LX4WVmvg6SoHRfajRO0neKXLdooibMP3W1bhSd27QcPxyMUmvY9/Dlp9znDeCRw== 457 | dependencies: 458 | "@babel/runtime" "^7.17.2" 459 | "@mui/private-theming" "^5.9.3" 460 | "@mui/styled-engine" "^5.10.0" 461 | "@mui/types" "^7.1.5" 462 | "@mui/utils" "^5.9.3" 463 | clsx "^1.2.1" 464 | csstype "^3.1.0" 465 | prop-types "^15.8.1" 466 | 467 | "@mui/types@^7.1.5": 468 | version "7.1.5" 469 | resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.1.5.tgz#5e5cc49d719bc86522983359bc1f90eddcff0624" 470 | integrity sha512-HnRXrxgHJYJcT8ZDdDCQIlqk0s0skOKD7eWs9mJgBUu70hyW4iA6Kiv3yspJR474RFH8hysKR65VVSzUSzkuwA== 471 | 472 | "@mui/utils@^5.9.3": 473 | version "5.9.3" 474 | resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.9.3.tgz#a11e0824f00b7ea40257b390060ce167fe861d02" 475 | integrity sha512-l0N5bcrenE9hnwZ/jPecpIRqsDFHkPXoFUcmkgysaJwVZzJ3yQkGXB47eqmXX5yyGrSc6HksbbqXEaUya+siew== 476 | dependencies: 477 | "@babel/runtime" "^7.17.2" 478 | "@types/prop-types" "^15.7.5" 479 | "@types/react-is" "^16.7.1 || ^17.0.0" 480 | prop-types "^15.8.1" 481 | react-is "^18.2.0" 482 | 483 | "@popperjs/core@^2.11.5": 484 | version "2.11.6" 485 | resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.6.tgz#cee20bd55e68a1720bdab363ecf0c821ded4cd45" 486 | integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== 487 | 488 | "@tauri-apps/api@1.0.1": 489 | version "1.0.1" 490 | resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.0.1.tgz#f516cf3b83139312141123c08f1d75260274da50" 491 | integrity sha512-TJwKkXxtF52kN9Auu5TWD2AE4ssqTrsfdpIrixYwRb3gQ/FuYwvZjrMc9weYpgsW2cMhVNkvKgneNXF/4n04lw== 492 | dependencies: 493 | type-fest "2.13.1" 494 | 495 | "@tauri-apps/api@^1.0.2": 496 | version "1.0.2" 497 | resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.0.2.tgz#5228720e35d50fd08df87067dc29e7306c1f7a10" 498 | integrity sha512-yuNW0oeJ1/ZA7wNF1KgxhHrSu5viPVzY/UgUczzN5ptLM8dH15Juy5rEGkoHfeXGju90Y/l22hi3BtIrp/za+w== 499 | 500 | "@tauri-apps/cli-darwin-arm64@1.0.5": 501 | version "1.0.5" 502 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.0.5.tgz#6fd17a8d9e0e7982b5c9887639407fdec783a744" 503 | integrity sha512-oxpFb9ZeMiC3xPUJ9NsXWCnnwFSVkPbJUvDKpc9IaoDIUpsMTV72W4P0Nh0uQRbyhx4modPpstt7+ONypNVYNg== 504 | 505 | "@tauri-apps/cli-darwin-x64@1.0.5": 506 | version "1.0.5" 507 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.0.5.tgz#6aaaadd68739c4c4f86546f3d17b2fb60a5a0c04" 508 | integrity sha512-hRNYC6L9edz2dEqK33tssPylF2ti6x6udidBlGWc5GSoeEb/05qKMEA1MESQYKBG+4q+wjJvACA2vvz6AfgJ3Q== 509 | 510 | "@tauri-apps/cli-linux-arm-gnueabihf@1.0.5": 511 | version "1.0.5" 512 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.0.5.tgz#d2d01c8b85ee3771656386bfda3852af8ed811da" 513 | integrity sha512-hc/Jp3TtFpxB8XVkLEwWy7MNcUBlS8rNCafQBUt4KSElXB+/oGo50jPO+wd5GSMSOR59UCzH08v11P0b+sAa/w== 514 | 515 | "@tauri-apps/cli-linux-arm64-gnu@1.0.5": 516 | version "1.0.5" 517 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.0.5.tgz#7ca848120c2e90b57188aaa9daee11cf29e2e2f4" 518 | integrity sha512-btFlkD2PG+yzJBZzWeJmyCy8ZV+iys2Jl66Fs4g9lSi3KrBDnyfQ26RpGZb2pRfkkcVP8/x1WSfByO+Rj+PTBA== 519 | 520 | "@tauri-apps/cli-linux-arm64-musl@1.0.5": 521 | version "1.0.5" 522 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.0.5.tgz#5ba65790849e0737f560f3ccd12f7a2a88c25b23" 523 | integrity sha512-p5JFdWab2AWhfgAZW/mgOLu+YiIJXKV0NdATGmdiBgQCMmz1k/FM8iOFApCgGbo3/zkR58cJ7Z7hyWmQ07M6Pw== 524 | 525 | "@tauri-apps/cli-linux-x64-gnu@1.0.5": 526 | version "1.0.5" 527 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.0.5.tgz#d06430c608316cb5a29ec805d4c5d078a293c3ae" 528 | integrity sha512-fOXR635AXxwSO7MCfBhMLnGpcg1H83XGw9ocuyg4jjvtE8QoYPwC4ksfb5lLhDVMui9iIKY93NAK3EkQiSGGmQ== 529 | 530 | "@tauri-apps/cli-linux-x64-musl@1.0.5": 531 | version "1.0.5" 532 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.0.5.tgz#813c90531f4001453e73b3ad2d4c75929412a249" 533 | integrity sha512-8be4zJVkuMs427JqONhFx5Ia5zWsQ5tbZXd80C3dHNL+5/3VIOK6nGQ0iijyZSLXiE9JKEH2jp1EHB+1TVJRcw== 534 | 535 | "@tauri-apps/cli-win32-ia32-msvc@1.0.5": 536 | version "1.0.5" 537 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.0.5.tgz#a3eb6f56c3f4ba35f6311e1fb31bd30e6892b316" 538 | integrity sha512-WpnIfzS1e4InGhvd1IDSKC3w6kbI5c6oJgMmtkMTBlhjhiZXhZmQF4XA784A5Y13pzsbXnbNJKOp8DuPVkoTRQ== 539 | 540 | "@tauri-apps/cli-win32-x64-msvc@1.0.5": 541 | version "1.0.5" 542 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.0.5.tgz#f1e0860166e8f86b550e35aaf22ef95d6da5a7c8" 543 | integrity sha512-8iEhVD3X4LZfrlxEPOV+mAj4QrJrEqKTICiJnwmgjvhYQOOsNHzg5kca7pcBbqcgorQOBydLpfGJtxWRusVPaw== 544 | 545 | "@tauri-apps/cli@^1.0.5": 546 | version "1.0.5" 547 | resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.0.5.tgz#a15a61e8467be29277b72707c4189c58c33d94bf" 548 | integrity sha512-vbY+MwK+xN65x0R/o16UQPxBtJl8pmzVzC0TZKokZfmeOkomoqOEOinSwznAMeyR1ZMJW+fXVgJCPvGsRQ0LGg== 549 | optionalDependencies: 550 | "@tauri-apps/cli-darwin-arm64" "1.0.5" 551 | "@tauri-apps/cli-darwin-x64" "1.0.5" 552 | "@tauri-apps/cli-linux-arm-gnueabihf" "1.0.5" 553 | "@tauri-apps/cli-linux-arm64-gnu" "1.0.5" 554 | "@tauri-apps/cli-linux-arm64-musl" "1.0.5" 555 | "@tauri-apps/cli-linux-x64-gnu" "1.0.5" 556 | "@tauri-apps/cli-linux-x64-musl" "1.0.5" 557 | "@tauri-apps/cli-win32-ia32-msvc" "1.0.5" 558 | "@tauri-apps/cli-win32-x64-msvc" "1.0.5" 559 | 560 | "@types/lodash@^4.14.182": 561 | version "4.14.182" 562 | resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" 563 | integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== 564 | 565 | "@types/parse-json@^4.0.0": 566 | version "4.0.0" 567 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 568 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 569 | 570 | "@types/prop-types@*", "@types/prop-types@^15.7.5": 571 | version "15.7.5" 572 | resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" 573 | integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== 574 | 575 | "@types/react-dom@^18.0.6": 576 | version "18.0.6" 577 | resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.6.tgz#36652900024842b74607a17786b6662dd1e103a1" 578 | integrity sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA== 579 | dependencies: 580 | "@types/react" "*" 581 | 582 | "@types/react-is@^16.7.1 || ^17.0.0": 583 | version "17.0.3" 584 | resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" 585 | integrity sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw== 586 | dependencies: 587 | "@types/react" "*" 588 | 589 | "@types/react-transition-group@^4.4.5": 590 | version "4.4.5" 591 | resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" 592 | integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== 593 | dependencies: 594 | "@types/react" "*" 595 | 596 | "@types/react@*", "@types/react@^18.0.15": 597 | version "18.0.17" 598 | resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.17.tgz#4583d9c322d67efe4b39a935d223edcc7050ccf4" 599 | integrity sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ== 600 | dependencies: 601 | "@types/prop-types" "*" 602 | "@types/scheduler" "*" 603 | csstype "^3.0.2" 604 | 605 | "@types/scheduler@*": 606 | version "0.16.2" 607 | resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" 608 | integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== 609 | 610 | "@vitejs/plugin-react@^2.0.0": 611 | version "2.0.1" 612 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-2.0.1.tgz#3197c01d8e4a4eb9fed829c7888c467a43aadd4e" 613 | integrity sha512-uINzNHmjrbunlFtyVkST6lY1ewSfz/XwLufG0PIqvLGnpk2nOIOa/1CACTDNcKi1/RwaCzJLmsXwm1NsUVV/NA== 614 | dependencies: 615 | "@babel/core" "^7.18.10" 616 | "@babel/plugin-transform-react-jsx" "^7.18.10" 617 | "@babel/plugin-transform-react-jsx-development" "^7.18.6" 618 | "@babel/plugin-transform-react-jsx-self" "^7.18.6" 619 | "@babel/plugin-transform-react-jsx-source" "^7.18.6" 620 | magic-string "^0.26.2" 621 | react-refresh "^0.14.0" 622 | 623 | ansi-styles@^3.2.1: 624 | version "3.2.1" 625 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 626 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 627 | dependencies: 628 | color-convert "^1.9.0" 629 | 630 | babel-plugin-macros@^3.1.0: 631 | version "3.1.0" 632 | resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" 633 | integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== 634 | dependencies: 635 | "@babel/runtime" "^7.12.5" 636 | cosmiconfig "^7.0.0" 637 | resolve "^1.19.0" 638 | 639 | browserslist@^4.20.2: 640 | version "4.21.3" 641 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" 642 | integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== 643 | dependencies: 644 | caniuse-lite "^1.0.30001370" 645 | electron-to-chromium "^1.4.202" 646 | node-releases "^2.0.6" 647 | update-browserslist-db "^1.0.5" 648 | 649 | callsites@^3.0.0: 650 | version "3.1.0" 651 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 652 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 653 | 654 | caniuse-lite@^1.0.30001370: 655 | version "1.0.30001376" 656 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001376.tgz#af2450833e5a06873fbb030a9556ca9461a2736d" 657 | integrity sha512-I27WhtOQ3X3v3it9gNs/oTpoE5KpwmqKR5oKPA8M0G7uMXh9Ty81Q904HpKUrM30ei7zfcL5jE7AXefgbOfMig== 658 | 659 | chalk@^2.0.0: 660 | version "2.4.2" 661 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 662 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 663 | dependencies: 664 | ansi-styles "^3.2.1" 665 | escape-string-regexp "^1.0.5" 666 | supports-color "^5.3.0" 667 | 668 | clsx@^1.2.1: 669 | version "1.2.1" 670 | resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" 671 | integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== 672 | 673 | color-convert@^1.9.0: 674 | version "1.9.3" 675 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 676 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 677 | dependencies: 678 | color-name "1.1.3" 679 | 680 | color-name@1.1.3: 681 | version "1.1.3" 682 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 683 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 684 | 685 | convert-source-map@^1.5.0, convert-source-map@^1.7.0: 686 | version "1.8.0" 687 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 688 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 689 | dependencies: 690 | safe-buffer "~5.1.1" 691 | 692 | cosmiconfig@^7.0.0: 693 | version "7.0.1" 694 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" 695 | integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== 696 | dependencies: 697 | "@types/parse-json" "^4.0.0" 698 | import-fresh "^3.2.1" 699 | parse-json "^5.0.0" 700 | path-type "^4.0.0" 701 | yaml "^1.10.0" 702 | 703 | csstype@^3.0.2, csstype@^3.1.0: 704 | version "3.1.0" 705 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" 706 | integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== 707 | 708 | debug@^4.1.0: 709 | version "4.3.4" 710 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 711 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 712 | dependencies: 713 | ms "2.1.2" 714 | 715 | dom-helpers@^5.0.1: 716 | version "5.2.1" 717 | resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" 718 | integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== 719 | dependencies: 720 | "@babel/runtime" "^7.8.7" 721 | csstype "^3.0.2" 722 | 723 | electron-to-chromium@^1.4.202: 724 | version "1.4.219" 725 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.219.tgz#a7a672304b6aa4f376918d3f63a47f2c3906009a" 726 | integrity sha512-zoQJsXOUw0ZA0YxbjkmzBumAJRtr6je5JySuL/bAoFs0DuLiLJ+5FzRF7/ZayihxR2QcewlRZVm5QZdUhwjOgA== 727 | 728 | error-ex@^1.3.1: 729 | version "1.3.2" 730 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 731 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 732 | dependencies: 733 | is-arrayish "^0.2.1" 734 | 735 | esbuild-android-64@0.14.54: 736 | version "0.14.54" 737 | resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" 738 | integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== 739 | 740 | esbuild-android-arm64@0.14.54: 741 | version "0.14.54" 742 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" 743 | integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== 744 | 745 | esbuild-darwin-64@0.14.54: 746 | version "0.14.54" 747 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" 748 | integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== 749 | 750 | esbuild-darwin-arm64@0.14.54: 751 | version "0.14.54" 752 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz#3f7cdb78888ee05e488d250a2bdaab1fa671bf73" 753 | integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== 754 | 755 | esbuild-freebsd-64@0.14.54: 756 | version "0.14.54" 757 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" 758 | integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== 759 | 760 | esbuild-freebsd-arm64@0.14.54: 761 | version "0.14.54" 762 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" 763 | integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== 764 | 765 | esbuild-linux-32@0.14.54: 766 | version "0.14.54" 767 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" 768 | integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== 769 | 770 | esbuild-linux-64@0.14.54: 771 | version "0.14.54" 772 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" 773 | integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== 774 | 775 | esbuild-linux-arm64@0.14.54: 776 | version "0.14.54" 777 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" 778 | integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== 779 | 780 | esbuild-linux-arm@0.14.54: 781 | version "0.14.54" 782 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" 783 | integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== 784 | 785 | esbuild-linux-mips64le@0.14.54: 786 | version "0.14.54" 787 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" 788 | integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== 789 | 790 | esbuild-linux-ppc64le@0.14.54: 791 | version "0.14.54" 792 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" 793 | integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== 794 | 795 | esbuild-linux-riscv64@0.14.54: 796 | version "0.14.54" 797 | resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" 798 | integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== 799 | 800 | esbuild-linux-s390x@0.14.54: 801 | version "0.14.54" 802 | resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" 803 | integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== 804 | 805 | esbuild-netbsd-64@0.14.54: 806 | version "0.14.54" 807 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" 808 | integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== 809 | 810 | esbuild-openbsd-64@0.14.54: 811 | version "0.14.54" 812 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" 813 | integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== 814 | 815 | esbuild-sunos-64@0.14.54: 816 | version "0.14.54" 817 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" 818 | integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== 819 | 820 | esbuild-windows-32@0.14.54: 821 | version "0.14.54" 822 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" 823 | integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== 824 | 825 | esbuild-windows-64@0.14.54: 826 | version "0.14.54" 827 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" 828 | integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== 829 | 830 | esbuild-windows-arm64@0.14.54: 831 | version "0.14.54" 832 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" 833 | integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== 834 | 835 | esbuild@^0.14.47: 836 | version "0.14.54" 837 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2" 838 | integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== 839 | optionalDependencies: 840 | "@esbuild/linux-loong64" "0.14.54" 841 | esbuild-android-64 "0.14.54" 842 | esbuild-android-arm64 "0.14.54" 843 | esbuild-darwin-64 "0.14.54" 844 | esbuild-darwin-arm64 "0.14.54" 845 | esbuild-freebsd-64 "0.14.54" 846 | esbuild-freebsd-arm64 "0.14.54" 847 | esbuild-linux-32 "0.14.54" 848 | esbuild-linux-64 "0.14.54" 849 | esbuild-linux-arm "0.14.54" 850 | esbuild-linux-arm64 "0.14.54" 851 | esbuild-linux-mips64le "0.14.54" 852 | esbuild-linux-ppc64le "0.14.54" 853 | esbuild-linux-riscv64 "0.14.54" 854 | esbuild-linux-s390x "0.14.54" 855 | esbuild-netbsd-64 "0.14.54" 856 | esbuild-openbsd-64 "0.14.54" 857 | esbuild-sunos-64 "0.14.54" 858 | esbuild-windows-32 "0.14.54" 859 | esbuild-windows-64 "0.14.54" 860 | esbuild-windows-arm64 "0.14.54" 861 | 862 | escalade@^3.1.1: 863 | version "3.1.1" 864 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 865 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 866 | 867 | escape-string-regexp@^1.0.5: 868 | version "1.0.5" 869 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 870 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 871 | 872 | escape-string-regexp@^4.0.0: 873 | version "4.0.0" 874 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 875 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 876 | 877 | find-root@^1.1.0: 878 | version "1.1.0" 879 | resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" 880 | integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== 881 | 882 | fsevents@~2.3.2: 883 | version "2.3.2" 884 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 885 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 886 | 887 | function-bind@^1.1.1: 888 | version "1.1.1" 889 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 890 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 891 | 892 | gensync@^1.0.0-beta.2: 893 | version "1.0.0-beta.2" 894 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 895 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 896 | 897 | globals@^11.1.0: 898 | version "11.12.0" 899 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 900 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 901 | 902 | has-flag@^3.0.0: 903 | version "3.0.0" 904 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 905 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 906 | 907 | has@^1.0.3: 908 | version "1.0.3" 909 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 910 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 911 | dependencies: 912 | function-bind "^1.1.1" 913 | 914 | history@^5.2.0: 915 | version "5.3.0" 916 | resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" 917 | integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== 918 | dependencies: 919 | "@babel/runtime" "^7.7.6" 920 | 921 | hoist-non-react-statics@^3.3.1: 922 | version "3.3.2" 923 | resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" 924 | integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== 925 | dependencies: 926 | react-is "^16.7.0" 927 | 928 | import-fresh@^3.2.1: 929 | version "3.3.0" 930 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 931 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 932 | dependencies: 933 | parent-module "^1.0.0" 934 | resolve-from "^4.0.0" 935 | 936 | is-arrayish@^0.2.1: 937 | version "0.2.1" 938 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 939 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 940 | 941 | is-core-module@^2.9.0: 942 | version "2.10.0" 943 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" 944 | integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== 945 | dependencies: 946 | has "^1.0.3" 947 | 948 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 949 | version "4.0.0" 950 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 951 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 952 | 953 | jsesc@^2.5.1: 954 | version "2.5.2" 955 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 956 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 957 | 958 | json-parse-even-better-errors@^2.3.0: 959 | version "2.3.1" 960 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 961 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 962 | 963 | json5@^2.2.1: 964 | version "2.2.1" 965 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" 966 | integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== 967 | 968 | lines-and-columns@^1.1.6: 969 | version "1.2.4" 970 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 971 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 972 | 973 | lodash@^4.17.21: 974 | version "4.17.21" 975 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 976 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 977 | 978 | loose-envify@^1.1.0, loose-envify@^1.4.0: 979 | version "1.4.0" 980 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 981 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 982 | dependencies: 983 | js-tokens "^3.0.0 || ^4.0.0" 984 | 985 | magic-string@^0.26.2: 986 | version "0.26.2" 987 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" 988 | integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== 989 | dependencies: 990 | sourcemap-codec "^1.4.8" 991 | 992 | ms@2.1.2: 993 | version "2.1.2" 994 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 995 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 996 | 997 | nanoid@^3.3.4: 998 | version "3.3.4" 999 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" 1000 | integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== 1001 | 1002 | node-releases@^2.0.6: 1003 | version "2.0.6" 1004 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" 1005 | integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== 1006 | 1007 | object-assign@^4.1.1: 1008 | version "4.1.1" 1009 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1010 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1011 | 1012 | parent-module@^1.0.0: 1013 | version "1.0.1" 1014 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1015 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1016 | dependencies: 1017 | callsites "^3.0.0" 1018 | 1019 | parse-json@^5.0.0: 1020 | version "5.2.0" 1021 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 1022 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1023 | dependencies: 1024 | "@babel/code-frame" "^7.0.0" 1025 | error-ex "^1.3.1" 1026 | json-parse-even-better-errors "^2.3.0" 1027 | lines-and-columns "^1.1.6" 1028 | 1029 | path-parse@^1.0.7: 1030 | version "1.0.7" 1031 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1032 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1033 | 1034 | path-type@^4.0.0: 1035 | version "4.0.0" 1036 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1037 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1038 | 1039 | picocolors@^1.0.0: 1040 | version "1.0.0" 1041 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 1042 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1043 | 1044 | postcss@^8.4.16: 1045 | version "8.4.16" 1046 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" 1047 | integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== 1048 | dependencies: 1049 | nanoid "^3.3.4" 1050 | picocolors "^1.0.0" 1051 | source-map-js "^1.0.2" 1052 | 1053 | prop-types@^15.6.2, prop-types@^15.8.1: 1054 | version "15.8.1" 1055 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" 1056 | integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== 1057 | dependencies: 1058 | loose-envify "^1.4.0" 1059 | object-assign "^4.1.1" 1060 | react-is "^16.13.1" 1061 | 1062 | react-dom@^18.2.0: 1063 | version "18.2.0" 1064 | resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" 1065 | integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== 1066 | dependencies: 1067 | loose-envify "^1.1.0" 1068 | scheduler "^0.23.0" 1069 | 1070 | react-is@^16.13.1, react-is@^16.7.0: 1071 | version "16.13.1" 1072 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1073 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1074 | 1075 | react-is@^18.2.0: 1076 | version "18.2.0" 1077 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" 1078 | integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== 1079 | 1080 | react-refresh@^0.14.0: 1081 | version "0.14.0" 1082 | resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" 1083 | integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== 1084 | 1085 | react-router-dom@6: 1086 | version "6.3.0" 1087 | resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d" 1088 | integrity sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw== 1089 | dependencies: 1090 | history "^5.2.0" 1091 | react-router "6.3.0" 1092 | 1093 | react-router@6.3.0: 1094 | version "6.3.0" 1095 | resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557" 1096 | integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ== 1097 | dependencies: 1098 | history "^5.2.0" 1099 | 1100 | react-transition-group@^4.4.5: 1101 | version "4.4.5" 1102 | resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" 1103 | integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== 1104 | dependencies: 1105 | "@babel/runtime" "^7.5.5" 1106 | dom-helpers "^5.0.1" 1107 | loose-envify "^1.4.0" 1108 | prop-types "^15.6.2" 1109 | 1110 | react@^18.2.0: 1111 | version "18.2.0" 1112 | resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" 1113 | integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== 1114 | dependencies: 1115 | loose-envify "^1.1.0" 1116 | 1117 | regenerator-runtime@^0.13.4: 1118 | version "0.13.9" 1119 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" 1120 | integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== 1121 | 1122 | resolve-from@^4.0.0: 1123 | version "4.0.0" 1124 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1125 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1126 | 1127 | resolve@^1.19.0, resolve@^1.22.1: 1128 | version "1.22.1" 1129 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 1130 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 1131 | dependencies: 1132 | is-core-module "^2.9.0" 1133 | path-parse "^1.0.7" 1134 | supports-preserve-symlinks-flag "^1.0.0" 1135 | 1136 | "rollup@>=2.75.6 <2.77.0 || ~2.77.0": 1137 | version "2.77.3" 1138 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.77.3.tgz#8f00418d3a2740036e15deb653bed1a90ee0cc12" 1139 | integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g== 1140 | optionalDependencies: 1141 | fsevents "~2.3.2" 1142 | 1143 | safe-buffer@~5.1.1: 1144 | version "5.1.2" 1145 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1146 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1147 | 1148 | scheduler@^0.23.0: 1149 | version "0.23.0" 1150 | resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" 1151 | integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== 1152 | dependencies: 1153 | loose-envify "^1.1.0" 1154 | 1155 | semver@^6.3.0: 1156 | version "6.3.0" 1157 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1158 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1159 | 1160 | source-map-js@^1.0.2: 1161 | version "1.0.2" 1162 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" 1163 | integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== 1164 | 1165 | source-map@^0.5.7: 1166 | version "0.5.7" 1167 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 1168 | integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== 1169 | 1170 | sourcemap-codec@^1.4.8: 1171 | version "1.4.8" 1172 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 1173 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 1174 | 1175 | stylis@4.0.13: 1176 | version "4.0.13" 1177 | resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" 1178 | integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== 1179 | 1180 | supports-color@^5.3.0: 1181 | version "5.5.0" 1182 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1183 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1184 | dependencies: 1185 | has-flag "^3.0.0" 1186 | 1187 | supports-preserve-symlinks-flag@^1.0.0: 1188 | version "1.0.0" 1189 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1190 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1191 | 1192 | "tauri-plugin-store-api@https://github.com/tauri-apps/tauri-plugin-store#dev": 1193 | version "0.1.0" 1194 | resolved "https://github.com/tauri-apps/tauri-plugin-store#ce109ff53b43f036ea39cdc3f7c44d582f910270" 1195 | dependencies: 1196 | "@tauri-apps/api" "1.0.1" 1197 | tslib "2.4.0" 1198 | 1199 | to-fast-properties@^2.0.0: 1200 | version "2.0.0" 1201 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 1202 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 1203 | 1204 | tslib@2.4.0: 1205 | version "2.4.0" 1206 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" 1207 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== 1208 | 1209 | type-fest@2.13.1: 1210 | version "2.13.1" 1211 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.13.1.tgz#621c84220df0e01a8469002594fc005714f0cfba" 1212 | integrity sha512-hXYyrPFwETT2swFLHeoKtJrvSF/ftG/sA15/8nGaLuaDGfVAaq8DYFpu4yOyV4tzp082WqnTEoMsm3flKMI2FQ== 1213 | 1214 | typescript@^4.6.4: 1215 | version "4.7.4" 1216 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" 1217 | integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== 1218 | 1219 | update-browserslist-db@^1.0.5: 1220 | version "1.0.5" 1221 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" 1222 | integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== 1223 | dependencies: 1224 | escalade "^3.1.1" 1225 | picocolors "^1.0.0" 1226 | 1227 | use-sync-external-store@1.2.0: 1228 | version "1.2.0" 1229 | resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" 1230 | integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== 1231 | 1232 | vite@^3.0.0: 1233 | version "3.0.7" 1234 | resolved "https://registry.yarnpkg.com/vite/-/vite-3.0.7.tgz#f1e379857e9c5d652126f8b20d371e1365eb700f" 1235 | integrity sha512-dILhvKba1mbP1wCezVQx/qhEK7/+jVn9ciadEcyKMMhZpsuAi/eWZfJRMkmYlkSFG7Qq9NvJbgFq4XOBxugJsA== 1236 | dependencies: 1237 | esbuild "^0.14.47" 1238 | postcss "^8.4.16" 1239 | resolve "^1.22.1" 1240 | rollup ">=2.75.6 <2.77.0 || ~2.77.0" 1241 | optionalDependencies: 1242 | fsevents "~2.3.2" 1243 | 1244 | yaml@^1.10.0: 1245 | version "1.10.2" 1246 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 1247 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1248 | 1249 | zustand@^4.0.0: 1250 | version "4.0.0" 1251 | resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.0.0.tgz#739cba69209ffe67b31e7d6741c25b51496114a7" 1252 | integrity sha512-OrsfQTnRXF1LZ9/vR/IqN9ws5EXUhb149xmPjErZnUrkgxS/gAHGy2dPNIVkVvoxrVe1sIydn4JjF0dYHmGeeQ== 1253 | dependencies: 1254 | use-sync-external-store "1.2.0" 1255 | --------------------------------------------------------------------------------