♻️ defineModel

This commit is contained in:
目棃
2024-12-31 16:40:18 +08:00
parent 151f854fd3
commit f801363440
27 changed files with 1085 additions and 1151 deletions

View File

@@ -3,7 +3,7 @@
"version": "0.6.7",
"description": "Game Tool for GenshinImpact player",
"private": true,
"packageManager": "pnpm@9.15.0",
"packageManager": "pnpm@9.15.2",
"type": "module",
"scripts": {
"build": "tauri build",
@@ -81,12 +81,12 @@
"artplayer": "^5.2.1",
"clipboard": "^2.0.11",
"color-convert": "^2.0.1",
"echarts": "^5.5.1",
"echarts": "^5.6.0",
"html2canvas": "^1.4.1",
"js-md5": "^0.8.3",
"jsencrypt": "^3.3.2",
"pinia": "^2.3.0",
"pinia-plugin-persistedstate": "^4.1.3",
"pinia-plugin-persistedstate": "^4.2.0",
"sass": "^1.83.0",
"sass-loader": "^16.0.4",
"uuid": "^11.0.3",
@@ -94,7 +94,7 @@
"vue-echarts": "^7.0.3",
"vue-json-viewer": "^3.0.4",
"vue-router": "^4.5.0",
"vuetify": "^3.7.5",
"vuetify": "^3.7.6",
"wcag-color": "^1.1.1",
"xml-js": "^1.6.11"
},
@@ -106,22 +106,22 @@
"@types/js-md5": "^0.7.2",
"@types/node": "^22.10.2",
"@types/uuid": "^10.0.0",
"@typescript-eslint/parser": "^8.18.0",
"@typescript-eslint/parser": "^8.19.0",
"@vitejs/plugin-vue": "^5.2.1",
"concurrently": "^9.1.0",
"concurrently": "^9.1.2",
"eslint": "^9.17.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsonc": "^2.18.2",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-vue": "^9.32.0",
"eslint-plugin-yml": "^1.16.0",
"globals": "^15.13.0",
"globals": "^15.14.0",
"husky": "^9.1.7",
"jsonc-eslint-parser": "^2.4.0",
"lint-staged": "^15.2.11",
"oxlint": "^0.15.2",
"lint-staged": "^15.3.0",
"oxlint": "^0.15.4",
"prettier": "3.4.2",
"stylelint": "^16.11.0",
"stylelint": "^16.12.0",
"stylelint-config-idiomatic-order": "^10.0.0",
"stylelint-config-standard-vue": "^1.0.0",
"stylelint-declaration-block-no-ignored-properties": "^2.8.0",
@@ -130,8 +130,8 @@
"stylelint-prettier": "^5.0.2",
"stylelint-scss": "^6.10.0",
"typescript": "^5.7.2",
"typescript-eslint": "^8.18.0",
"vite": "^6.0.3",
"typescript-eslint": "^8.19.0",
"vite": "^6.0.6",
"vite-plugin-vue-devtools": "^7.6.8",
"vite-plugin-vuetify": "^2.0.4",
"vue-eslint-parser": "^9.4.3",

1499
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

308
src-tauri/Cargo.lock generated
View File

@@ -129,9 +129,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.94"
version = "1.0.95"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7"
checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
[[package]]
name = "arrayvec"
@@ -157,14 +157,14 @@ dependencies = [
"wayland-backend",
"wayland-client",
"wayland-protocols",
"zbus 5.1.1",
"zbus 5.2.0",
]
[[package]]
name = "async-broadcast"
version = "0.7.1"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e"
checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
dependencies = [
"event-listener",
"event-listener-strategy",
@@ -265,7 +265,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -300,7 +300,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -464,7 +464,7 @@ dependencies = [
"proc-macro-crate 3.2.0",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -529,9 +529,9 @@ dependencies = [
[[package]]
name = "bytemuck"
version = "1.20.0"
version = "1.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a"
checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3"
[[package]]
name = "byteorder"
@@ -617,9 +617,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.4"
version = "1.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf"
checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333"
dependencies = [
"shlex",
]
@@ -873,27 +873,27 @@ dependencies = [
[[package]]
name = "crossbeam-channel"
version = "0.5.13"
version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-queue"
version = "0.3.11"
version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.20"
version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
[[package]]
name = "crunchy"
@@ -935,7 +935,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
dependencies = [
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -945,7 +945,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501"
dependencies = [
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -969,7 +969,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -980,7 +980,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [
"darling_core",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -1020,7 +1020,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustc_version",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -1070,7 +1070,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -1102,7 +1102,7 @@ checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -1233,14 +1233,14 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
name = "env_filter"
version = "0.1.2"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab"
checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0"
dependencies = [
"log",
"regex",
@@ -1321,9 +1321,9 @@ dependencies = [
[[package]]
name = "fern"
version = "0.7.0"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69ff9c9d5fb3e6da8ac2f77ab76fe7e8087d512ce095200f8f29ac5b656cf6dc"
checksum = "4316185f709b23713e41e3195f90edef7fb00c3ed4adc79769cf09cc762a3b29"
dependencies = [
"log",
]
@@ -1383,7 +1383,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -1482,7 +1482,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -1738,7 +1738,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -1753,9 +1753,9 @@ dependencies = [
[[package]]
name = "glob"
version = "0.3.1"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
[[package]]
name = "gobject-sys"
@@ -1817,7 +1817,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -1917,11 +1917,11 @@ dependencies = [
[[package]]
name = "home"
version = "0.5.9"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5"
checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf"
dependencies = [
"windows-sys 0.52.0",
"windows-sys 0.59.0",
]
[[package]]
@@ -1980,9 +1980,9 @@ checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946"
[[package]]
name = "hyper"
version = "1.5.1"
version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f"
checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0"
dependencies = [
"bytes",
"futures-channel",
@@ -2000,9 +2000,9 @@ dependencies = [
[[package]]
name = "hyper-rustls"
version = "0.27.3"
version = "0.27.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333"
checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2"
dependencies = [
"futures-util",
"http",
@@ -2183,7 +2183,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -2426,9 +2426,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.168"
version = "0.2.169"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d"
checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a"
[[package]]
name = "libloading"
@@ -2588,9 +2588,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "miniz_oxide"
version = "0.8.0"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1"
checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394"
dependencies = [
"adler2",
"simd-adler32",
@@ -2763,7 +2763,7 @@ dependencies = [
"proc-macro-crate 3.2.0",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -3005,9 +3005,9 @@ dependencies = [
[[package]]
name = "object"
version = "0.36.5"
version = "0.36.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e"
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
dependencies = [
"memchr",
]
@@ -3057,9 +3057,9 @@ dependencies = [
[[package]]
name = "os_info"
version = "3.9.0"
version = "3.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5ca711d8b83edbb00b44d504503cd247c9c0bd8b0fa2694f2a1a3d8165379ce"
checksum = "eb6651f4be5e39563c4fe5cc8326349eb99a25d805a3493f791d5bfd0269e430"
dependencies = [
"log",
"serde",
@@ -3261,7 +3261,7 @@ dependencies = [
"phf_shared 0.11.2",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -3356,9 +3356,9 @@ dependencies = [
[[package]]
name = "png"
version = "0.17.15"
version = "0.17.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b67582bd5b65bdff614270e2ea89a1cf15bef71245cc1e5f7ea126977144211d"
checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
dependencies = [
"bitflags 1.3.2",
"crc32fast",
@@ -3537,7 +3537,7 @@ dependencies = [
"rustc-hash",
"rustls",
"socket2",
"thiserror 2.0.7",
"thiserror 2.0.9",
"tokio",
"tracing",
]
@@ -3556,7 +3556,7 @@ dependencies = [
"rustls",
"rustls-pki-types",
"slab",
"thiserror 2.0.7",
"thiserror 2.0.9",
"tinyvec",
"tracing",
"web-time",
@@ -3564,9 +3564,9 @@ dependencies = [
[[package]]
name = "quinn-udp"
version = "0.5.8"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "52cd4b1eff68bf27940dd39811292c49e007f4d0b4c357358dc9b0197be6b527"
checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904"
dependencies = [
"cfg_aliases",
"libc",
@@ -3578,9 +3578,9 @@ dependencies = [
[[package]]
name = "quote"
version = "1.0.37"
version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
dependencies = [
"proc-macro2",
]
@@ -3738,9 +3738,9 @@ dependencies = [
[[package]]
name = "reqwest"
version = "0.12.9"
version = "0.12.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f"
checksum = "7fe060fe50f524be480214aba758c71f99f90ee8c83c5a36b5e9e1d568eb4eb3"
dependencies = [
"base64 0.22.1",
"bytes",
@@ -3775,6 +3775,7 @@ dependencies = [
"tokio",
"tokio-rustls",
"tokio-util",
"tower",
"tower-service",
"url",
"wasm-bindgen",
@@ -4015,7 +4016,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde_derive_internals",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -4067,9 +4068,9 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.216"
version = "1.0.217"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e"
checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70"
dependencies = [
"serde_derive",
]
@@ -4087,13 +4088,13 @@ dependencies = [
[[package]]
name = "serde_derive"
version = "1.0.216"
version = "1.0.217"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e"
checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -4104,14 +4105,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
name = "serde_json"
version = "1.0.133"
version = "1.0.134"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d"
dependencies = [
"itoa 1.0.14",
"memchr",
@@ -4127,7 +4128,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -4153,9 +4154,9 @@ dependencies = [
[[package]]
name = "serde_with"
version = "3.11.0"
version = "3.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817"
checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa"
dependencies = [
"base64 0.22.1",
"chrono",
@@ -4171,14 +4172,14 @@ dependencies = [
[[package]]
name = "serde_with_macros"
version = "3.11.0"
version = "3.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e"
dependencies = [
"darling",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -4456,7 +4457,7 @@ dependencies = [
"quote",
"sqlx-core",
"sqlx-macros-core",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -4479,7 +4480,7 @@ dependencies = [
"sqlx-mysql",
"sqlx-postgres",
"sqlx-sqlite",
"syn 2.0.90",
"syn 2.0.93",
"tempfile",
"tokio",
"url",
@@ -4676,9 +4677,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.90"
version = "2.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31"
checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058"
dependencies = [
"proc-macro2",
"quote",
@@ -4702,7 +4703,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -4795,7 +4796,7 @@ checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -4849,7 +4850,7 @@ dependencies = [
"tauri-runtime",
"tauri-runtime-wry",
"tauri-utils",
"thiserror 2.0.7",
"thiserror 2.0.9",
"tokio",
"tray-icon",
"url",
@@ -4900,9 +4901,9 @@ dependencies = [
"serde",
"serde_json",
"sha2",
"syn 2.0.90",
"syn 2.0.93",
"tauri-utils",
"thiserror 2.0.7",
"thiserror 2.0.9",
"time",
"url",
"uuid",
@@ -4918,7 +4919,7 @@ dependencies = [
"heck 0.5.0",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
"tauri-codegen",
"tauri-utils",
]
@@ -4943,7 +4944,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-deep-link"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"dunce",
"rust-ini",
@@ -4952,7 +4953,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-utils",
"thiserror 2.0.7",
"thiserror 2.0.9",
"tracing",
"url",
"windows-registry 0.3.0",
@@ -4962,7 +4963,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-dialog"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"log",
"raw-window-handle",
@@ -4972,14 +4973,14 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-plugin-fs",
"thiserror 2.0.7",
"thiserror 2.0.9",
"url",
]
[[package]]
name = "tauri-plugin-fs"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"anyhow",
"dunce",
@@ -4992,7 +4993,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-utils",
"thiserror 2.0.7",
"thiserror 2.0.9",
"toml 0.8.19",
"url",
"uuid",
@@ -5001,7 +5002,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-http"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"data-url",
"http",
@@ -5013,7 +5014,7 @@ dependencies = [
"tauri",
"tauri-plugin",
"tauri-plugin-fs",
"thiserror 2.0.7",
"thiserror 2.0.9",
"tokio",
"url",
"urlpattern",
@@ -5022,7 +5023,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-log"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"android_logger",
"byte-unit",
@@ -5036,14 +5037,14 @@ dependencies = [
"swift-rs",
"tauri",
"tauri-plugin",
"thiserror 2.0.7",
"thiserror 2.0.9",
"time",
]
[[package]]
name = "tauri-plugin-os"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"gethostname",
"log",
@@ -5054,13 +5055,13 @@ dependencies = [
"sys-locale",
"tauri",
"tauri-plugin",
"thiserror 2.0.7",
"thiserror 2.0.9",
]
[[package]]
name = "tauri-plugin-process"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"tauri",
"tauri-plugin",
@@ -5069,7 +5070,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-shell"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"encoding_rs",
"log",
@@ -5082,19 +5083,19 @@ dependencies = [
"shared_child",
"tauri",
"tauri-plugin",
"thiserror 2.0.7",
"thiserror 2.0.9",
"tokio",
]
[[package]]
name = "tauri-plugin-single-instance"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"serde",
"serde_json",
"tauri",
"thiserror 2.0.7",
"thiserror 2.0.9",
"tracing",
"windows-sys 0.59.0",
"zbus 4.4.0",
@@ -5103,7 +5104,7 @@ dependencies = [
[[package]]
name = "tauri-plugin-sql"
version = "2.2.0"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#ee0f65de5c645c244c5f0b638e0e0aab687cb9bf"
source = "git+ssh://git@github.com/tauri-apps/plugins-workspace.git?branch=v2#b21915938ff2b8b8ec00396252f6157338988e62"
dependencies = [
"futures-core",
"indexmap 2.7.0",
@@ -5113,7 +5114,7 @@ dependencies = [
"sqlx",
"tauri",
"tauri-plugin",
"thiserror 2.0.7",
"thiserror 2.0.9",
"time",
"tokio",
]
@@ -5132,7 +5133,7 @@ dependencies = [
"serde",
"serde_json",
"tauri-utils",
"thiserror 2.0.7",
"thiserror 2.0.9",
"url",
"windows",
]
@@ -5192,7 +5193,7 @@ dependencies = [
"serde_json",
"serde_with",
"swift-rs",
"thiserror 2.0.7",
"thiserror 2.0.9",
"toml 0.8.19",
"url",
"urlpattern",
@@ -5251,11 +5252,11 @@ dependencies = [
[[package]]
name = "thiserror"
version = "2.0.7"
version = "2.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767"
checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc"
dependencies = [
"thiserror-impl 2.0.7",
"thiserror-impl 2.0.9",
]
[[package]]
@@ -5266,18 +5267,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
name = "thiserror-impl"
version = "2.0.7"
version = "2.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36"
checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -5334,9 +5335,9 @@ dependencies = [
[[package]]
name = "tinyvec"
version = "1.8.0"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8"
dependencies = [
"tinyvec_macros",
]
@@ -5373,7 +5374,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -5480,6 +5481,27 @@ dependencies = [
"winnow 0.6.20",
]
[[package]]
name = "tower"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
dependencies = [
"futures-core",
"futures-util",
"pin-project-lite",
"sync_wrapper",
"tokio",
"tower-layer",
"tower-service",
]
[[package]]
name = "tower-layer"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
[[package]]
name = "tower-service"
version = "0.3.3"
@@ -5506,7 +5528,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -5617,9 +5639,9 @@ dependencies = [
[[package]]
name = "unicode-bidi"
version = "0.3.17"
version = "0.3.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893"
checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
[[package]]
name = "unicode-ident"
@@ -5820,7 +5842,7 @@ dependencies = [
"log",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
"wasm-bindgen-shared",
]
@@ -5855,7 +5877,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -6034,7 +6056,7 @@ checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -6143,7 +6165,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -6154,7 +6176,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -6573,7 +6595,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
"synstructure",
]
@@ -6617,9 +6639,9 @@ dependencies = [
[[package]]
name = "zbus"
version = "5.1.1"
version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1162094dc63b1629fcc44150bcceeaa80798cd28bcbe7fa987b65a034c258608"
checksum = "fb67eadba43784b6fb14857eba0d8fc518686d3ee537066eb6086dc318e2c8a1"
dependencies = [
"async-broadcast",
"async-recursion",
@@ -6640,7 +6662,7 @@ dependencies = [
"windows-sys 0.59.0",
"winnow 0.6.20",
"xdg-home",
"zbus_macros 5.1.1",
"zbus_macros 5.2.0",
"zbus_names 4.1.0",
"zvariant 5.1.0",
]
@@ -6654,20 +6676,20 @@ dependencies = [
"proc-macro-crate 3.2.0",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
"zvariant_utils 2.1.0",
]
[[package]]
name = "zbus_macros"
version = "5.1.1"
version = "5.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2cd2dcdce3e2727f7d74b7e33b5a89539b3cc31049562137faf7ae4eb86cd16d"
checksum = "2c9d49ebc960ceb660f2abe40a5904da975de6986f2af0d7884b39eec6528c57"
dependencies = [
"proc-macro-crate 3.2.0",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
"zbus_names 4.1.0",
"zvariant 5.1.0",
"zvariant_utils 3.0.2",
@@ -6714,7 +6736,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -6734,7 +6756,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
"synstructure",
]
@@ -6763,7 +6785,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -6804,7 +6826,7 @@ dependencies = [
"proc-macro-crate 3.2.0",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
"zvariant_utils 2.1.0",
]
@@ -6817,7 +6839,7 @@ dependencies = [
"proc-macro-crate 3.2.0",
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
"zvariant_utils 3.0.2",
]
@@ -6829,7 +6851,7 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.90",
"syn 2.0.93",
]
[[package]]
@@ -6842,6 +6864,6 @@ dependencies = [
"quote",
"serde",
"static_assertions",
"syn 2.0.90",
"syn 2.0.93",
"winnow 0.6.20",
]

View File

@@ -15,8 +15,8 @@ tauri-build = { version = "2.0.3", features = [] }
[dependencies]
chrono = "0.4.39"
log = "0.4.22"
serde = { version = "1.0.216", features = ["derive"] }
serde_json = "1.0.133"
serde = { version = "1.0.217", features = ["derive"] }
serde_json = "1.0.134"
tauri = { version = "2.1.1", features = [] }
tauri-utils = "2.1.0"
url = "2.5.4"

View File

@@ -10,17 +10,16 @@
<script lang="ts" setup>
import { ref, watch } from "vue";
type TolProps = { modelValue: boolean; blurVal?: string };
type TolEmits = (e: "update:modelValue", v: boolean) => void;
const emit = defineEmits<TolEmits>();
const props = withDefaults(defineProps<TolProps>(), { modelValue: false, blurVal: "20px" });
type TolProps = { blurVal?: string };
withDefaults(defineProps<TolProps>(), { blurVal: "20px" });
const model = defineModel<boolean>({ default: false });
const showTolo = ref<boolean>(false);
const showToli = ref<boolean>(false);
watch(
() => props.modelValue,
() => model.value,
async () => {
if (props.modelValue) {
if (model.value) {
showTolo.value = true;
showToli.value = true;
return;
@@ -33,7 +32,7 @@ watch(
);
function toClick(): void {
emit("update:modelValue", false);
model.value = false;
}
</script>
<style lang="css" scoped>

View File

@@ -45,26 +45,16 @@
</template>
<script setup lang="ts">
import showSnackbar from "@comp/func/snackbar.js";
import { computed } from "vue";
import TOverlay from "./t-overlay.vue";
import { generateShareImg } from "@/utils/TGShare.js";
import { timestampToDate } from "@/utils/toolFunc.js";
type ToLiveCodeProps = {
data: TGApp.BBS.Navigator.CodeData[];
actId: string | undefined;
modelValue: boolean;
};
type ToLiveCodeEmits = (e: "update:modelValue", v: boolean) => void;
type ToLiveCodeProps = { data: Array<TGApp.BBS.Navigator.CodeData>; actId: string | undefined };
const props = withDefaults(defineProps<ToLiveCodeProps>(), { modelValue: false });
const emits = defineEmits<ToLiveCodeEmits>();
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const props = defineProps<ToLiveCodeProps>();
const visible = defineModel<boolean>({ default: false });
function copy(code: string): void {
navigator.clipboard.writeText(code);

View File

@@ -48,10 +48,10 @@ enum ToNameCardTypeEnum {
}
type ToNameCardTypeMap = { [key in ToNameCardTypeEnum]: string };
type ToNameCardProps = { modelValue: boolean; data?: TGApp.App.NameCard.Item };
type ToNameCardEmits = (e: "update:modelValue", v: boolean) => void;
type ToNameCardProps = { data?: TGApp.App.NameCard.Item };
const props = defineProps<ToNameCardProps>();
const emits = defineEmits<ToNameCardEmits>();
const visible = defineModel<boolean>();
const typeMap: ToNameCardTypeMap = {
0: "其他",
1: "成就",
@@ -61,10 +61,6 @@ const typeMap: ToNameCardTypeMap = {
5: "未知",
};
const loading = ref<boolean>(false);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const getType = computed<string>(() => {
if (!props.data) return typeMap[ToNameCardTypeEnum.unknown];
if (!(props.data.type satisfies ToNameCardTypeEnum)) return typeMap[5];

View File

@@ -55,7 +55,7 @@
<script lang="ts" setup>
import TOverlay from "@comp/app/t-overlay.vue";
import showSnackbar from "@comp/func/snackbar.js";
import { computed, ref } from "vue";
import { ref } from "vue";
import HtaOverviewLine from "./hta-overview-line.vue";
@@ -63,19 +63,11 @@ import type { AbyssDataItem } from "@/pages/WIKI/Abyss.vue";
import { generateShareImg } from "@/utils/TGShare.js";
import { timestampToDate } from "@/utils/toolFunc.js";
type HtaOverlayOverviewProps = {
modelValue: boolean;
data: AbyssDataItem<TGApp.Plugins.Hutao.Abyss.OverviewData>;
};
type HtaOverlayOverviewEmits = (e: "update:modelValue", v: boolean) => void;
type HtaOverlayOverviewProps = { data: AbyssDataItem<TGApp.Plugins.Hutao.Abyss.OverviewData> };
const props = defineProps<HtaOverlayOverviewProps>();
const emits = defineEmits<HtaOverlayOverviewEmits>();
const visible = defineModel<boolean>();
const loadShare = ref<boolean>(false);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
async function share(): Promise<void> {
loadShare.value = true;

View File

@@ -36,32 +36,24 @@
import TOverlay from "@comp/app/t-overlay.vue";
import showSnackbar from "@comp/func/snackbar.js";
import { fetch } from "@tauri-apps/plugin-http";
import { computed, onMounted, ref, shallowRef, watch } from "vue";
import { onMounted, ref, shallowRef, watch } from "vue";
import { xml2json } from "xml-js";
import TGLogger from "@/utils/TGLogger.js";
import { copyToClipboard, getImageBuffer, saveCanvasImg } from "@/utils/TGShare.js";
import { bytesToSize } from "@/utils/toolFunc.js";
type ToArcBirthProps = {
modelValue: boolean;
data?: TGApp.Archive.Birth.DrawItem;
choice: boolean;
};
type ToArcBirthEmits = (e: "update:modelValue", v: boolean) => void;
type ToArcBirthProps = { data?: TGApp.Archive.Birth.DrawItem; choice: boolean };
type XmlKeyMap = { id: string; rel: string; group?: string; icon: string };
type XmlTextList = { chara: string; img: string; text: string };
type XmlTextParse = { name: string; icon?: string; text: string };
const props = defineProps<ToArcBirthProps>();
const emits = defineEmits<ToArcBirthEmits>();
const visible = defineModel<boolean>();
const showText = ref<boolean>(false);
const buffer = shallowRef<Uint8Array | null>(null);
const textParse = shallowRef<Array<XmlTextParse>>([]);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
onMounted(() => clearData());
watch(() => props.data, clearData);
watch(() => props.choice, clearData);

View File

@@ -26,26 +26,23 @@ import TOverlay from "@comp/app/t-overlay.vue";
import showDialog from "@comp/func/dialog.js";
import showSnackbar from "@comp/func/snackbar.js";
import TSUserCollection from "@Sqlite/modules/userCollect.js";
import { computed, ref, shallowRef, watch } from "vue";
import { ref, shallowRef, watch } from "vue";
type ToPostCollectProps = { modelValue: boolean; post: Array<string> };
type ToPostCollectEmits = {
(e: "update:modelValue", v: boolean): void;
(e: "submit"): void;
};
type ToPostCollectProps = { post: Array<string> };
type ToPostCollectEmits = (e: "submit") => void;
const props = defineProps<ToPostCollectProps>();
const emits = defineEmits<ToPostCollectEmits>();
const visible = defineModel<boolean>();
const select = ref<string>();
const submit = ref<boolean>(false);
const collectList = shallowRef<Array<TGApp.Sqlite.UserCollection.UFCollection>>([]);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
watch(
() => props.modelValue,
async (val) => (val ? await freshData() : null),
() => visible.value,
async () => {
if (visible.value) await freshData();
},
);
async function onSubmit(): Promise<void> {

View File

@@ -36,20 +36,12 @@ import { useRouter } from "vue-router";
import TibCalendarMaterial from "./ph-calendar-material.vue";
type ToCalendarProps = {
modelValue: boolean;
dataType: "weapon" | "character";
dataVal: TGApp.App.Calendar.Item;
};
type ToCalendarEmits = (e: "update:modelValue", v: boolean) => void;
type ToCalendarProps = { dataType: "weapon" | "character"; dataVal: TGApp.App.Calendar.Item };
const router = useRouter();
const props = defineProps<ToCalendarProps>();
const emits = defineEmits<ToCalendarEmits>();
const router = useRouter();
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const visible = defineModel<boolean>();
const boxData = computed<TItemBoxData>(() => ({
bg: `/icon/bg/${props.dataVal.star}-Star.webp`,
icon: `/WIKI/${props.dataType}/${props.dataVal.id}.webp`,

View File

@@ -21,24 +21,19 @@
import TOverlay from "@comp/app/t-overlay.vue";
import showSnackbar from "@comp/func/snackbar.js";
import { storeToRefs } from "pinia";
import { computed } from "vue";
import { useRouter } from "vue-router";
import { type NewsType, useAppStore } from "@/store/modules/app.js";
import type { ToChannelItem } from "@/web/constant/bbs.js";
import TGConstant from "@/web/constant/TGConstant.js";
type ToChannelProps = { gid?: string; curType?: string; modelValue: boolean };
type ToChannelEmits = (e: "update:modelValue", v: boolean) => void;
type ToChannelProps = { gid?: string; curType?: string };
const router = useRouter();
const props = withDefaults(defineProps<ToChannelProps>(), { modelValue: false });
const emits = defineEmits<ToChannelEmits>();
const { recentNewsType } = storeToRefs(useAppStore());
const channelList = TGConstant.BBS.CHANNELS;
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const props = defineProps<ToChannelProps>();
const visible = defineModel<boolean>({ default: false });
async function toChannel(item: ToChannelItem): Promise<void> {
if (props.gid === item.gid) {
@@ -107,24 +102,4 @@ async function toChannel(item: ToChannelItem): Promise<void> {
font-size: 16px;
}
}
.toc-close {
display: flex;
width: 100%;
height: 60px;
align-items: center;
justify-content: center;
}
.toc-close-btn {
display: flex;
width: 30px;
height: 30px;
align-items: center;
justify-content: center;
border-radius: 50%;
background: var(--box-bg-1);
color: var(--app-page-content);
cursor: pointer;
}
</style>

View File

@@ -29,7 +29,7 @@
import TOverlay from "@comp/app/t-overlay.vue";
import showSnackbar from "@comp/func/snackbar.js";
import { getVersion } from "@tauri-apps/api/app";
import { computed, onMounted, ref } from "vue";
import { onMounted, ref } from "vue";
import TwoConvert from "./two-convert.vue";
import TwoSource from "./two-source.vue";
@@ -37,15 +37,11 @@ import TwoSource from "./two-source.vue";
import { generateShareImg } from "@/utils/TGShare.js";
import { parseHtmlText } from "@/utils/toolFunc.js";
type TwoMaterialProps = { modelValue: boolean; data: TGApp.App.Material.WikiItem };
type TwoMaterialEmits = (e: "update:modelValue", v: boolean) => void;
type TwoMaterialProps = { data: TGApp.App.Material.WikiItem };
const props = defineProps<TwoMaterialProps>();
const emits = defineEmits<TwoMaterialEmits>();
const visible = defineModel<boolean>();
const version = ref<string>();
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
onMounted(async () => (version.value = await getVersion()));

View File

@@ -66,7 +66,8 @@
</template>
<script setup lang="ts">
import TOverlay from "@comp/app/t-overlay.vue";
import { computed, ref, watch } from "vue";
import showSnackbar from "@comp/func/snackbar.js";
import { ref, toRaw, watch } from "vue";
export type SelectedCValue = {
star: Array<number>;
@@ -74,14 +75,8 @@ export type SelectedCValue = {
elements: Array<string>;
area: Array<string>;
};
type TwoSelectCProps = { modelValue: boolean; reset: boolean };
type TwoSelectCEmits = {
(e: "update:modelValue", v: boolean): void;
(e: "update:reset", v: boolean): void;
(e: "select-c", v: SelectedCValue): void;
};
type TwoSelectCEmits = (e: "select-c", v: SelectedCValue) => void;
const props = defineProps<TwoSelectCProps>();
const emits = defineEmits<TwoSelectCEmits>();
const selectStarList = [4, 5];
const selectWeaponList = ["单手剑", "双手剑", "弓", "法器", "长柄武器"];
@@ -93,24 +88,29 @@ const selectedStar = ref<Array<number>>(selectStarList);
const selectedWeapon = ref<Array<string>>(selectWeaponList);
const selectedElements = ref<Array<string>>(selectElementList);
const selectedArea = ref<Array<string>>(selectAreaList);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const reset = computed<boolean>({
get: () => props.reset,
set: (v: boolean) => emits("update:reset", v),
});
const visible = defineModel<boolean>();
const resetModel = defineModel<boolean>("reset");
watch(
() => props.reset,
(value) => {
if (value) {
() => resetModel.value,
() => {
if (resetModel.value) {
if (
toRaw(selectedStar.value) === selectStarList &&
toRaw(selectedWeapon.value) === selectWeaponList &&
toRaw(selectedElements.value) === selectElementList &&
toRaw(selectedArea.value) === selectAreaList
) {
showSnackbar.warn("无需重置");
resetModel.value = false;
return;
}
selectedStar.value = selectStarList;
selectedWeapon.value = selectWeaponList;
selectedElements.value = selectElementList;
selectedArea.value = selectAreaList;
reset.value = false;
resetModel.value = false;
showSnackbar.success("已重置");
}
},
);

View File

@@ -36,17 +36,12 @@
</template>
<script setup lang="ts">
import TOverlay from "@comp/app/t-overlay.vue";
import { computed, ref, watch } from "vue";
import showSnackbar from "@comp/func/snackbar.js";
import { ref, toRaw, watch } from "vue";
export type SelectedWValue = { star: Array<number>; weapon: Array<string> };
type TwoSelectWProps = { modelValue: boolean; reset: boolean };
type TwoSelectWEmits = {
(e: "update:modelValue", value: boolean): void;
(e: "update:reset", value: boolean): void;
(e: "select-w", value: SelectedWValue): void;
};
export type SelectedWValue = { star: Array<number>; weapon: Array<string>; isReset: boolean };
type TwoSelectWEmits = (e: "select-w", value: SelectedWValue) => void;
const props = defineProps<TwoSelectWProps>();
const emits = defineEmits<TwoSelectWEmits>();
const selectStarList = [4, 5];
@@ -54,29 +49,31 @@ const selectWeaponList = ["单手剑", "双手剑", "弓", "法器", "长柄武
const selectedStar = ref<Array<number>>(selectStarList);
const selectedWeapon = ref<Array<string>>(selectWeaponList);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const reset = computed<boolean>({
get: () => props.reset,
set: (v) => emits("update:reset", v),
});
const visible = defineModel<boolean>();
const resetModel = defineModel<boolean>("reset");
watch(
() => props.reset,
(value) => {
if (value) {
() => resetModel.value,
() => {
if (resetModel.value) {
if (
toRaw(selectedStar.value) === selectStarList &&
toRaw(selectedWeapon.value) === selectWeaponList
) {
showSnackbar.warn("无需重置");
resetModel.value = false;
return;
}
selectedStar.value = selectStarList;
selectedWeapon.value = selectWeaponList;
reset.value = false;
confirmSelect();
resetModel.value = false;
emits("select-w", { star: selectedStar.value, weapon: selectedWeapon.value, isReset: true });
}
},
);
function confirmSelect(): void {
emits("select-w", { star: selectedStar.value, weapon: selectedWeapon.value });
emits("select-w", { star: selectedStar.value, weapon: selectedWeapon.value, isReset: false });
visible.value = false;
}
</script>

View File

@@ -54,25 +54,19 @@
<script lang="ts" setup>
import TOverlay from "@comp/app/t-overlay.vue";
import VpOverlaySearch from "@comp/viewPost/vp-overlay-search.vue";
import { computed, ref } from "vue";
import { ref } from "vue";
import { AppAchievementSeriesData } from "@/data/index.js";
import TGLogger from "@/utils/TGLogger.js";
type ToAchiInfoProps = { modelValue: boolean; data: TGApp.Sqlite.Achievement.RenderAchi };
type ToAchiInfoEmits = {
(e: "update:modelValue", v: boolean): void;
(e: "select-series", v: number): void;
};
type ToAchiInfoProps = { data: TGApp.Sqlite.Achievement.RenderAchi };
type ToAchiInfoEmits = (e: "select-series", v: number) => void;
const props = defineProps<ToAchiInfoProps>();
const emits = defineEmits<ToAchiInfoEmits>();
const visible = defineModel<boolean>();
const showSearch = ref<boolean>(false);
const search = ref<string>();
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
async function searchDirect(word: string): Promise<void> {
await TGLogger.Info(`[ToAchiInfo][${props.data.id}][Search] 查询 ${word}`);

View File

@@ -38,14 +38,11 @@ import { AppAchievementSeriesData } from "@/data/index.js";
import { timestampToDate } from "@/utils/toolFunc.js";
type TuaAchiProps = { modelValue: TGApp.Sqlite.Achievement.RenderAchi };
type TuaAchiEmits = {
(e: "update:modelValue", data: TGApp.Sqlite.Achievement.RenderAchi): void;
(e: "update:update", data: boolean): void;
(e: "select-achi", data: TGApp.Sqlite.Achievement.RenderAchi): void;
};
type TuaAchiEmits = (e: "select-achi", data: TGApp.Sqlite.Achievement.RenderAchi) => void;
const props = defineProps<TuaAchiProps>();
const emits = defineEmits<TuaAchiEmits>();
const model = defineModel<TGApp.Sqlite.Achievement.RenderAchi>();
const data = ref<TGApp.Sqlite.Achievement.RenderAchi>(toRaw(props.modelValue));
watch(
@@ -69,7 +66,7 @@ async function setAchiStat(stat: boolean): Promise<void> {
if (!stat) {
data.value.isCompleted = false;
await TSUserAchi.updateAchi(data.value);
emits("update:modelValue", data.value);
model.value = data.value;
await event.emit("updateAchi", data.value.series);
showSnackbar.success(`已将成就 ${data.value.name}(${data.value.id}) 状态设为未完成`);
return;
@@ -80,7 +77,7 @@ async function setAchiStat(stat: boolean): Promise<void> {
return;
}
if (progress === undefined) progress = data.value.progress.toString();
if (isNaN(Number(progress)) || progress === "0") {
if (isNaN(Number(progress))) {
showSnackbar.warn("请输入有效数字!");
return;
}
@@ -90,7 +87,7 @@ async function setAchiStat(stat: boolean): Promise<void> {
await TSUserAchi.updateAchi(data.value);
await event.emit("updateAchi", data.value.series);
showSnackbar.success(`已将成就 ${data.value.name}(${data.value.id}) 状态设为已完成`);
emits("update:modelValue", data.value);
model.value = data.value;
}
</script>
<style lang="css" scoped>

View File

@@ -55,32 +55,22 @@ import { computed, ref, watch } from "vue";
import TuaDetailCard from "./tua-detail-card.vue";
type TuaDetailOverlayProps = {
modelValue: boolean;
avatar: TGApp.Sqlite.Character.UserRole;
mode: "classic" | "card" | "dev";
avatars: Array<TGApp.Sqlite.Character.UserRole>;
};
type TuaDetailOverlayEmits = {
(e: "update:modelValue", v: boolean): void;
(e: "update:mode", val: "classic" | "card" | "dev"): void;
(e: "toNext", val: boolean): void;
(e: "toAvatar", val: TGApp.Sqlite.Character.UserRole): void;
};
const props = defineProps<TuaDetailOverlayProps>();
const emits = defineEmits<TuaDetailOverlayEmits>();
const visible = defineModel<boolean>();
const modeTab = defineModel<"classic" | "card" | "dev">("mode");
const avatarTab = ref<number>();
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const modeTab = computed<"classic" | "card" | "dev">({
get: () => props.mode,
set: (v) => emits("update:mode", v),
});
const avatarsWidth = computed<string>(() => {
switch (props.mode) {
switch (modeTab.value) {
case "classic":
return "500px";
case "card":

View File

@@ -27,18 +27,10 @@ import { AppCharacterData } from "@/data/index.js";
import { generateShareImg } from "@/utils/TGShare.js";
import { timestampToDate } from "@/utils/toolFunc.js";
type TucOverlayProps = {
modelValue: boolean;
data: TGApp.Plugins.Hutao.Combat.Data | undefined;
};
type TucOverlayEmits = (e: "update:modelValue", v: boolean) => void;
type TucOverlayProps = { data: TGApp.Plugins.Hutao.Combat.Data | undefined };
const props = defineProps<TucOverlayProps>();
const emits = defineEmits<TucOverlayEmits>();
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const visible = defineModel<boolean>();
const raw = computed<Array<TGApp.Plugins.Hutao.Base.Rate>>(() => {
if (!props.data) return [];
const res = props.data.BackupAvatarRates;

View File

@@ -60,33 +60,26 @@ import TGLogger from "@/utils/TGLogger.js";
import { timestampToDate } from "@/utils/toolFunc.js";
import { getUigf4Header, getUigf4Item, readUigf4Data, verifyUigfData } from "@/utils/UIGF.js";
type UgoUidProps =
| { modelValue: boolean; mode: "export" }
| { modelValue: boolean; mode: "import" };
type UgoUidEmits = (e: "update:modelValue", v: boolean) => void;
type UgoUidProps = { mode: "import" | "export" };
type UgoUidItem = { uid: string; length: number; time: string };
const props = defineProps<UgoUidProps>();
const emits = defineEmits<UgoUidEmits>();
const visible = defineModel<boolean>();
const fp = ref<string>("未选择");
const dataRaw = shallowRef<TGApp.Plugins.UIGF.Schema4>();
const data = shallowRef<Array<UgoUidItem>>([]);
const selectedData = shallowRef<Array<UgoUidItem>>([]);
const title = computed<string>(() => (props.mode === "import" ? "导入" : "导出"));
const fp = ref<string>("未选择");
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
onMounted(async () => {
if (props.mode === "export") fp.value = await getDefaultSavePath();
});
watch(
() => props.modelValue,
async (v) => (v ? await refreshData() : undefined),
{ immediate: true },
() => visible.value,
async () => {
if (visible.value) await refreshData();
},
);
async function getDefaultSavePath(): Promise<string> {

View File

@@ -37,25 +37,24 @@ import TOverlay from "@comp/app/t-overlay.vue";
import showDialog from "@comp/func/dialog.js";
import showSnackbar from "@comp/func/snackbar.js";
import TSUserCollection from "@Sqlite/modules/userCollect.js";
import { computed, ref, shallowRef, watch } from "vue";
import { ref, shallowRef, watch } from "vue";
type ToPostCollectProps = { modelValue: boolean; post?: TGApp.Plugins.Mys.Post.FullData };
type ToPostCollectEmits = { (e: "update:modelValue", v: boolean): void; (e: "submit"): void };
type ToPostCollectProps = { post?: TGApp.Plugins.Mys.Post.FullData };
type ToPostCollectEmits = (e: "submit") => void;
const props = defineProps<ToPostCollectProps>();
const emits = defineEmits<ToPostCollectEmits>();
const visible = defineModel<boolean>();
const submit = ref<boolean>(false);
const collectList = shallowRef<Array<TGApp.Sqlite.UserCollection.UFCollection>>([]);
const postCollect = shallowRef<Array<TGApp.Sqlite.UserCollection.UFMap>>([]);
const selectList = shallowRef<Array<string>>([]);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
watch(
() => props.modelValue,
async (v) => (v ? await freshData() : null),
() => visible.value,
async () => {
if (visible.value) await freshData();
},
);
async function freshData(): Promise<void> {

View File

@@ -49,13 +49,12 @@
import TOverlay from "@comp/app/t-overlay.vue";
import showSnackbar from "@comp/func/snackbar.js";
import Mys from "@Mys/index.js";
import { computed, nextTick, onMounted, shallowRef, useTemplateRef, watch } from "vue";
import { nextTick, onMounted, shallowRef, useTemplateRef, watch } from "vue";
import { useRouter } from "vue-router";
import { timestampToDate } from "@/utils/toolFunc.js";
type TpoCollectionProps = { collection: TGApp.Plugins.Mys.Post.Collection; modelValue: boolean };
type TpoCollectionEmits = (e: "update:modelValue", v: boolean) => void;
type TpoCollectionProps = { collection: TGApp.Plugins.Mys.Post.Collection };
type TpoCollectionItem = {
postId: string;
title: string;
@@ -64,15 +63,14 @@ type TpoCollectionItem = {
comments: number;
likes: number;
};
const router = useRouter();
const props = defineProps<TpoCollectionProps>();
const emits = defineEmits<TpoCollectionEmits>();
const postListEl = useTemplateRef<HTMLDivElement>("postListRef");
const visible = defineModel<boolean>();
const posts = shallowRef<Array<TpoCollectionItem>>([]);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const postListEl = useTemplateRef<HTMLDivElement>("postListRef");
watch(
() => [visible.value, posts.value],
async () => {

View File

@@ -32,17 +32,13 @@ import type { TpImage } from "./tp-image.vue";
import { copyToClipboard, getImageBuffer, saveCanvasImg } from "@/utils/TGShare.js";
import { bytesToSize } from "@/utils/toolFunc.js";
type TpoImageProps = { image: TpImage; modelValue: boolean };
type TpoImageEmits = (e: "update:modelValue", v: boolean) => void;
type TpoImageProps = { image: TpImage };
const props = defineProps<TpoImageProps>();
const emits = defineEmits<TpoImageEmits>();
const visible = defineModel<boolean>();
const bgMode = ref<number>(0); // 0: transparent, 1: black, 2: white
const isOriSize = ref<boolean>(false);
const buffer = shallowRef<Uint8Array | null>(null);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
const format = computed<string>(() => {
if (props.image.attributes?.ext) return props.image.attributes.ext;
const imageFormat = props.image.insert.image.split(".").pop();

View File

@@ -45,20 +45,17 @@
import TOverlay from "@comp/app/t-overlay.vue";
import showSnackbar from "@comp/func/snackbar.js";
import Mys from "@Mys/index.js";
import { computed, onUnmounted, ref, shallowRef, watch } from "vue";
import { onUnmounted, ref, shallowRef, watch } from "vue";
type TpoLotteryProps = { lottery: string | undefined };
type TpoLotteryProps = { modelValue: boolean; lottery: string | undefined };
type TpoLotteryEmits = (e: "update:modelValue", v: boolean) => void;
const props = defineProps<TpoLotteryProps>();
const emits = defineEmits<TpoLotteryEmits>();
const visible = defineModel<boolean>();
const timeStatus = ref<string>("未知");
const upWay = ref<string>("未知");
const card = shallowRef<TGApp.Plugins.Mys.Lottery.RenderCard>();
const jsonData = shallowRef<TGApp.Plugins.Mys.Lottery.FullData>();
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
// eslint-disable-next-line no-undef
let timer: NodeJS.Timeout | undefined = undefined;

View File

@@ -21,39 +21,34 @@ import TOverlay from "@comp/app/t-overlay.vue";
import TPostCard from "@comp/app/t-postcard.vue";
import showSnackbar from "@comp/func/snackbar.js";
import Mys from "@Mys/index.js";
import { computed, onMounted, ref, shallowRef, watch } from "vue";
import { onMounted, ref, shallowRef, watch } from "vue";
import { getGameName } from "@/utils/toolFunc.js";
type ToPostSearchProps = { modelValue: boolean; gid: string; keyword?: string };
type ToPostSearchEmits = (e: "update:modelValue", v: boolean) => void;
type ToPostSearchProps = { gid: string; keyword?: string };
const props = defineProps<ToPostSearchProps>();
const emits = defineEmits<ToPostSearchEmits>();
const visible = defineModel<boolean>();
const search = ref<string>();
const lastId = ref<string>("");
const game = ref<string>("2");
const isLast = ref<boolean>(false);
const load = ref<boolean>(false);
const results = shallowRef<Array<TGApp.Plugins.Mys.Post.FullData>>([]);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
onMounted(async () => {
game.value = props.gid;
if (props.keyword && props.keyword !== "") search.value = props.keyword;
if (props.modelValue) await searchPosts();
if (visible.value) await searchPosts();
});
watch(
() => props.modelValue,
() => visible.value,
async () => {
if (props.modelValue && results.value.length === 0) {
if (visible.value && results.value.length === 0) {
await searchPosts();
return;
}
visible.value = props.modelValue;
},
);
@@ -69,7 +64,7 @@ watch(
results.value = [];
lastId.value = "";
isLast.value = false;
if (props.modelValue) await searchPosts();
if (visible.value) await searchPosts();
}
},
);

View File

@@ -17,23 +17,15 @@ import TOverlay from "@comp/app/t-overlay.vue";
import showSnackbar from "@comp/func/snackbar.js";
import { open } from "@tauri-apps/plugin-dialog";
import { readTextFile } from "@tauri-apps/plugin-fs";
import { computed, ref, shallowRef } from "vue";
import { ref, shallowRef } from "vue";
import TprReply from "./vp-reply-item.vue";
import TGLogger from "@/utils/TGLogger.js";
type TprDebugProps = { modelValue: boolean };
type TprDebugEmits = (e: "update:modelValue", v: boolean) => void;
const props = defineProps<TprDebugProps>();
const emits = defineEmits<TprDebugEmits>();
const visible = defineModel<boolean>();
const filePath = ref<string>("");
const replyData = shallowRef<TGApp.Plugins.Mys.Reply.ReplyFull | null>(null);
const visible = computed<boolean>({
get: () => props.modelValue,
set: (v) => emits("update:modelValue", v),
});
async function selectFile(): Promise<void> {
const file = await open({

View File

@@ -67,7 +67,7 @@ function switchW(item: TGApp.App.Weapon.WikiBriefInfo): void {
}
function handleSelectW(val: SelectedWValue) {
showSelect.value = true;
if (!val.isReset) showSelect.value = true;
const filterW = AppWeaponData.filter((item) => {
if (!val.star.includes(item.star)) return false;
return val.weapon.includes(item.weapon);