Bump tauri to v2 (#3018)
* Bump tauri to v2 * Switch to virtual typed list for content page * Fix unexpected hang on windows * Fix ads window scaling issues on some devices * Use DPR from browser * Fix link opens, bump version, fix lint
This commit is contained in:
parent
7f445e9b8c
commit
f2e653b732
931
Cargo.lock
generated
931
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -19,6 +19,3 @@ strip = true # Remove debug symbols
|
|||||||
|
|
||||||
[profile.dev.package.sqlx-macros]
|
[profile.dev.package.sqlx-macros]
|
||||||
opt-level = 3
|
opt-level = 3
|
||||||
|
|
||||||
[patch.crates-io]
|
|
||||||
wry = { git = "https://github.com/modrinth/wry", rev = "27fb16b" }
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@modrinth/app-frontend",
|
"name": "@modrinth/app-frontend",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.8.9",
|
"version": "0.9.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@ -16,12 +16,12 @@
|
|||||||
"@modrinth/ui": "workspace:*",
|
"@modrinth/ui": "workspace:*",
|
||||||
"@modrinth/utils": "workspace:*",
|
"@modrinth/utils": "workspace:*",
|
||||||
"@sentry/vue": "^8.27.0",
|
"@sentry/vue": "^8.27.0",
|
||||||
"@tauri-apps/api": "^2.0.0-rc.3",
|
"@tauri-apps/api": "^2.1.1",
|
||||||
"@tauri-apps/plugin-dialog": "^2.0.0-rc.0",
|
"@tauri-apps/plugin-dialog": "^2.2.0",
|
||||||
"@tauri-apps/plugin-os": "^2.0.0-rc.0",
|
"@tauri-apps/plugin-os": "^2.2.0",
|
||||||
"@tauri-apps/plugin-shell": "^2.0.0-rc.0",
|
"@tauri-apps/plugin-opener": "^2.2.1",
|
||||||
"@tauri-apps/plugin-updater": "^2.0.0-rc.0",
|
"@tauri-apps/plugin-updater": "^2.3.0",
|
||||||
"@tauri-apps/plugin-window-state": "^2.0.0-rc.0",
|
"@tauri-apps/plugin-window-state": "^2.2.0",
|
||||||
"@vintl/vintl": "^4.4.1",
|
"@vintl/vintl": "^4.4.1",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
"floating-vue": "^5.2.2",
|
"floating-vue": "^5.2.2",
|
||||||
@ -35,8 +35,8 @@
|
|||||||
"vue-virtual-scroller": "v2.0.0-beta.8"
|
"vue-virtual-scroller": "v2.0.0-beta.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@formatjs/cli": "^6.2.12",
|
|
||||||
"@eslint/compat": "^1.1.1",
|
"@eslint/compat": "^1.1.1",
|
||||||
|
"@formatjs/cli": "^6.2.12",
|
||||||
"@nuxt/eslint-config": "^0.5.6",
|
"@nuxt/eslint-config": "^0.5.6",
|
||||||
"@vitejs/plugin-vue": "^5.0.4",
|
"@vitejs/plugin-vue": "^5.0.4",
|
||||||
"autoprefixer": "^10.4.19",
|
"autoprefixer": "^10.4.19",
|
||||||
|
|||||||
@ -56,7 +56,7 @@ import dayjs from 'dayjs'
|
|||||||
import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
|
import PromotionWrapper from '@/components/ui/PromotionWrapper.vue'
|
||||||
import { hide_ads_window, show_ads_window } from '@/helpers/ads.js'
|
import { hide_ads_window, show_ads_window } from '@/helpers/ads.js'
|
||||||
import FriendsList from '@/components/ui/friends/FriendsList.vue'
|
import FriendsList from '@/components/ui/friends/FriendsList.vue'
|
||||||
import { open as openURL } from '@tauri-apps/plugin-shell'
|
import { openUrl } from '@tauri-apps/plugin-opener'
|
||||||
|
|
||||||
const themeStore = useTheming()
|
const themeStore = useTheming()
|
||||||
|
|
||||||
@ -191,6 +191,7 @@ async function setupApp() {
|
|||||||
|
|
||||||
get_opening_command().then(handleCommand)
|
get_opening_command().then(handleCommand)
|
||||||
checkUpdates()
|
checkUpdates()
|
||||||
|
fetchCredentials()
|
||||||
}
|
}
|
||||||
|
|
||||||
const stateFailed = ref(false)
|
const stateFailed = ref(false)
|
||||||
@ -283,8 +284,6 @@ onMounted(() => {
|
|||||||
install.setIncompatibilityWarningModal(incompatibilityWarningModal)
|
install.setIncompatibilityWarningModal(incompatibilityWarningModal)
|
||||||
install.setInstallConfirmModal(installConfirmModal)
|
install.setInstallConfirmModal(installConfirmModal)
|
||||||
install.setModInstallModal(modInstallModal)
|
install.setModInstallModal(modInstallModal)
|
||||||
|
|
||||||
fetchCredentials()
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const accounts = ref(null)
|
const accounts = ref(null)
|
||||||
@ -330,10 +329,9 @@ function handleClick(e) {
|
|||||||
!target.classList.contains('router-link-active') &&
|
!target.classList.contains('router-link-active') &&
|
||||||
!target.href.startsWith('http://localhost') &&
|
!target.href.startsWith('http://localhost') &&
|
||||||
!target.href.startsWith('https://tauri.localhost') &&
|
!target.href.startsWith('https://tauri.localhost') &&
|
||||||
!target.href.startsWith('http://tauri.localhost') &&
|
!target.href.startsWith('http://tauri.localhost')
|
||||||
target.target !== '_blank'
|
|
||||||
) {
|
) {
|
||||||
openURL(target.href)
|
openUrl(target.href)
|
||||||
}
|
}
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
break
|
break
|
||||||
@ -359,13 +357,13 @@ function handleAuxClick(e) {
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<SplashScreen v-if="!stateFailed" ref="splashScreen" data-tauri-drag-region />
|
<SplashScreen v-if="!stateFailed" ref="splashScreen" data-tauri-drag-region />
|
||||||
|
<div v-if="stateInitialized" class="app-grid-layout relative">
|
||||||
<Suspense>
|
<Suspense>
|
||||||
<AppSettingsModal ref="settingsModal" />
|
<AppSettingsModal ref="settingsModal" />
|
||||||
</Suspense>
|
</Suspense>
|
||||||
<Suspense>
|
<Suspense>
|
||||||
<InstanceCreationModal ref="installationModal" />
|
<InstanceCreationModal ref="installationModal" />
|
||||||
</Suspense>
|
</Suspense>
|
||||||
<div v-if="stateInitialized" class="app-grid-layout relative">
|
|
||||||
<div
|
<div
|
||||||
class="app-grid-navbar bg-bg-raised flex flex-col p-[1rem] pt-0 gap-[0.5rem] z-10 w-[--left-bar-width]"
|
class="app-grid-navbar bg-bg-raised flex flex-col p-[1rem] pt-0 gap-[0.5rem] z-10 w-[--left-bar-width]"
|
||||||
>
|
>
|
||||||
|
|||||||
@ -4,20 +4,29 @@ import { ChevronRightIcon } from '@modrinth/assets'
|
|||||||
import { init_ads_window, open_ads_link, record_ads_click } from '@/helpers/ads.js'
|
import { init_ads_window, open_ads_link, record_ads_click } from '@/helpers/ads.js'
|
||||||
|
|
||||||
const adsWrapper = ref(null)
|
const adsWrapper = ref(null)
|
||||||
|
|
||||||
|
let devicePixelRatioWatcher = null
|
||||||
|
|
||||||
|
function initDevicePixelRatioWatcher() {
|
||||||
|
if (devicePixelRatioWatcher) {
|
||||||
|
devicePixelRatioWatcher.removeEventListener('change', updateAdPosition)
|
||||||
|
}
|
||||||
|
|
||||||
|
devicePixelRatioWatcher = window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`)
|
||||||
|
devicePixelRatioWatcher.addEventListener('change', updateAdPosition)
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
updateAdPosition()
|
updateAdPosition()
|
||||||
|
|
||||||
window.addEventListener('resize', updateAdPosition)
|
window.addEventListener('resize', updateAdPosition)
|
||||||
|
initDevicePixelRatioWatcher()
|
||||||
})
|
})
|
||||||
|
|
||||||
function updateAdPosition() {
|
function updateAdPosition() {
|
||||||
if (adsWrapper.value) {
|
if (adsWrapper.value) {
|
||||||
const rect = adsWrapper.value.getBoundingClientRect()
|
init_ads_window(true)
|
||||||
|
initDevicePixelRatioWatcher()
|
||||||
const x = rect.left + window.scrollX
|
|
||||||
const y = rect.top + window.scrollY
|
|
||||||
|
|
||||||
init_ads_window(x, y, 300, 250, true)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
import { invoke } from '@tauri-apps/api/core'
|
import { invoke } from '@tauri-apps/api/core'
|
||||||
|
|
||||||
export async function init_ads_window(x, y, width, height, overrideShown = false) {
|
export async function init_ads_window(overrideShown = false) {
|
||||||
return await invoke('plugin:ads|init_ads_window', { x, y, width, height, overrideShown })
|
return await invoke('plugin:ads|init_ads_window', { overrideShown, dpr: window.devicePixelRatio })
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function show_ads_window() {
|
export async function show_ads_window() {
|
||||||
return await invoke('plugin:ads|show_ads_window')
|
return await invoke('plugin:ads|show_ads_window', { dpr: window.devicePixelRatio })
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function hide_ads_window(reset) {
|
export async function hide_ads_window(reset) {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "theseus_gui"
|
name = "theseus_gui"
|
||||||
version = "0.8.9"
|
version = "0.9.0"
|
||||||
description = "The Modrinth App is a desktop application for managing your Minecraft mods"
|
description = "The Modrinth App is a desktop application for managing your Minecraft mods"
|
||||||
license = "GPL-3.0-only"
|
license = "GPL-3.0-only"
|
||||||
repository = "https://github.com/modrinth/code/apps/app/"
|
repository = "https://github.com/modrinth/code/apps/app/"
|
||||||
@ -8,7 +8,7 @@ edition = "2021"
|
|||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
tauri-build = { version = "2.0.0-rc", features = ["codegen"] }
|
tauri-build = { version = "2.0.3", features = ["codegen"] }
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
theseus = { path = "../../packages/app-lib", features = ["tauri"] }
|
theseus = { path = "../../packages/app-lib", features = ["tauri"] }
|
||||||
@ -16,14 +16,14 @@ theseus = { path = "../../packages/app-lib", features = ["tauri"] }
|
|||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
|
||||||
tauri = { version = "2.0.0-rc", features = ["devtools", "macos-private-api", "protocol-asset", "unstable"] }
|
tauri = { version = "2.1.1", features = ["devtools", "macos-private-api", "protocol-asset", "unstable"] }
|
||||||
tauri-plugin-window-state = "2.0.0-rc"
|
tauri-plugin-window-state = "2.2.0"
|
||||||
tauri-plugin-deep-link = "2.0.0-rc"
|
tauri-plugin-deep-link = "2.2.0"
|
||||||
tauri-plugin-os = "2.0.0-rc"
|
tauri-plugin-os = "2.2.0"
|
||||||
tauri-plugin-shell = "2.0.0-rc"
|
tauri-plugin-opener = "2.2.1"
|
||||||
tauri-plugin-dialog = "2.0.0-rc"
|
tauri-plugin-dialog = "2.2.0"
|
||||||
tauri-plugin-updater = { version = "2.0.0-rc" }
|
tauri-plugin-updater = { version = "2.3.0" }
|
||||||
tauri-plugin-single-instance = { version = "2.0.0-rc" }
|
tauri-plugin-single-instance = { version = "2.2.0" }
|
||||||
|
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { version = "1", features = ["full"] }
|
||||||
thiserror = "1.0"
|
thiserror = "1.0"
|
||||||
@ -59,7 +59,7 @@ objc = "0.2.7"
|
|||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
|
|
||||||
[target.'cfg(target_os = "linux")'.dependencies]
|
[target.'cfg(target_os = "linux")'.dependencies]
|
||||||
tauri-plugin-updater = { version = "2.0.0-rc", optional = true, features = ["native-tls-vendored", "zip"], default-features = false }
|
tauri-plugin-updater = { version = "2.3.0", optional = true, features = ["native-tls-vendored", "zip"], default-features = false }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
# by default Tauri runs in production mode
|
# by default Tauri runs in production mode
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
"permissions": [
|
"permissions": [
|
||||||
"dialog:allow-open",
|
"dialog:allow-open",
|
||||||
"dialog:allow-confirm",
|
"dialog:allow-confirm",
|
||||||
"shell:allow-open",
|
"opener:default",
|
||||||
"os:allow-platform",
|
"os:allow-platform",
|
||||||
"os:allow-version",
|
"os:allow-version",
|
||||||
"os:allow-os-type",
|
"os:allow-os-type",
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
"fix": "cargo fmt && cargo clippy --fix"
|
"fix": "cargo fmt && cargo clippy --fix"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tauri-apps/cli": "2.0.0-rc.16"
|
"@tauri-apps/cli": "2.1.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@modrinth/app-frontend": "workspace:*",
|
"@modrinth/app-frontend": "workspace:*",
|
||||||
|
|||||||
@ -1,15 +1,13 @@
|
|||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::time::{Duration, Instant};
|
use std::time::{Duration, Instant};
|
||||||
use tauri::plugin::TauriPlugin;
|
use tauri::plugin::TauriPlugin;
|
||||||
use tauri::{LogicalPosition, LogicalSize, Manager, Runtime};
|
use tauri::{Manager, PhysicalPosition, PhysicalSize, Runtime};
|
||||||
use tauri_plugin_shell::ShellExt;
|
use tauri_plugin_opener::OpenerExt;
|
||||||
use theseus::settings;
|
use theseus::settings;
|
||||||
use tokio::sync::RwLock;
|
use tokio::sync::RwLock;
|
||||||
|
|
||||||
pub struct AdsState {
|
pub struct AdsState {
|
||||||
pub shown: bool,
|
pub shown: bool,
|
||||||
pub size: Option<LogicalSize<f32>>,
|
|
||||||
pub position: Option<LogicalPosition<f32>>,
|
|
||||||
pub last_click: Option<Instant>,
|
pub last_click: Option<Instant>,
|
||||||
pub malicious_origins: HashSet<String>,
|
pub malicious_origins: HashSet<String>,
|
||||||
}
|
}
|
||||||
@ -21,8 +19,6 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
|
|||||||
.setup(|app, _api| {
|
.setup(|app, _api| {
|
||||||
app.manage(RwLock::new(AdsState {
|
app.manage(RwLock::new(AdsState {
|
||||||
shown: true,
|
shown: true,
|
||||||
size: None,
|
|
||||||
position: None,
|
|
||||||
last_click: None,
|
last_click: None,
|
||||||
malicious_origins: HashSet::new(),
|
malicious_origins: HashSet::new(),
|
||||||
}));
|
}));
|
||||||
@ -54,14 +50,30 @@ pub fn init<R: Runtime>() -> TauriPlugin<R> {
|
|||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_webview_position<R: Runtime>(
|
||||||
|
app: &tauri::AppHandle<R>,
|
||||||
|
dpr: f32,
|
||||||
|
) -> crate::api::Result<(PhysicalPosition<f32>, PhysicalSize<f32>)> {
|
||||||
|
let main_window = app.get_window("main").unwrap();
|
||||||
|
|
||||||
|
let width = 300.0 * dpr;
|
||||||
|
let height = 250.0 * dpr;
|
||||||
|
|
||||||
|
let main_window_size = main_window.inner_size()?;
|
||||||
|
let x = (main_window_size.width as f32) - width;
|
||||||
|
let y = (main_window_size.height as f32) - height;
|
||||||
|
|
||||||
|
Ok((
|
||||||
|
PhysicalPosition::new(x, y),
|
||||||
|
PhysicalSize::new(width, height),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
#[cfg(not(target_os = "linux"))]
|
#[cfg(not(target_os = "linux"))]
|
||||||
pub async fn init_ads_window<R: Runtime>(
|
pub async fn init_ads_window<R: Runtime>(
|
||||||
app: tauri::AppHandle<R>,
|
app: tauri::AppHandle<R>,
|
||||||
x: f32,
|
dpr: f32,
|
||||||
y: f32,
|
|
||||||
width: f32,
|
|
||||||
height: f32,
|
|
||||||
override_shown: bool,
|
override_shown: bool,
|
||||||
) -> crate::api::Result<()> {
|
) -> crate::api::Result<()> {
|
||||||
use tauri::WebviewUrl;
|
use tauri::WebviewUrl;
|
||||||
@ -69,17 +81,19 @@ pub async fn init_ads_window<R: Runtime>(
|
|||||||
|
|
||||||
let state = app.state::<RwLock<AdsState>>();
|
let state = app.state::<RwLock<AdsState>>();
|
||||||
let mut state = state.write().await;
|
let mut state = state.write().await;
|
||||||
state.size = Some(LogicalSize::new(width, height));
|
|
||||||
state.position = Some(LogicalPosition::new(x, y));
|
|
||||||
|
|
||||||
if override_shown {
|
if override_shown {
|
||||||
state.shown = true;
|
state.shown = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Ok((position, size)) = get_webview_position(&app, dpr) {
|
||||||
if let Some(webview) = app.webviews().get("ads-window") {
|
if let Some(webview) = app.webviews().get("ads-window") {
|
||||||
if state.shown {
|
if state.shown {
|
||||||
let _ = webview.set_position(LogicalPosition::new(x, y));
|
let _ = webview.set_position(position);
|
||||||
let _ = webview.set_size(LogicalSize::new(width, height));
|
let _ = webview.set_size(size);
|
||||||
|
} else {
|
||||||
|
let _ =
|
||||||
|
webview.set_position(PhysicalPosition::new(-1000, -1000));
|
||||||
}
|
}
|
||||||
} else if let Some(window) = app.get_window("main") {
|
} else if let Some(window) = app.get_window("main") {
|
||||||
let _ = window.add_child(
|
let _ = window.add_child(
|
||||||
@ -94,13 +108,14 @@ pub async fn init_ads_window<R: Runtime>(
|
|||||||
.zoom_hotkeys_enabled(false)
|
.zoom_hotkeys_enabled(false)
|
||||||
.transparent(true),
|
.transparent(true),
|
||||||
if state.shown {
|
if state.shown {
|
||||||
LogicalPosition::new(x, y)
|
position
|
||||||
} else {
|
} else {
|
||||||
LogicalPosition::new(-1000.0, -1000.0)
|
PhysicalPosition::new(-1000.0, -1000.0)
|
||||||
},
|
},
|
||||||
LogicalSize::new(width, height),
|
size,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@ -113,17 +128,15 @@ pub async fn init_ads_window() {}
|
|||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn show_ads_window<R: Runtime>(
|
pub async fn show_ads_window<R: Runtime>(
|
||||||
app: tauri::AppHandle<R>,
|
app: tauri::AppHandle<R>,
|
||||||
|
dpr: f32,
|
||||||
) -> crate::api::Result<()> {
|
) -> crate::api::Result<()> {
|
||||||
if let Some(webview) = app.webviews().get("ads-window") {
|
if let Some(webview) = app.webviews().get("ads-window") {
|
||||||
let state = app.state::<RwLock<AdsState>>();
|
let state = app.state::<RwLock<AdsState>>();
|
||||||
let mut state = state.write().await;
|
let state = state.read().await;
|
||||||
|
|
||||||
state.shown = true;
|
if state.shown {
|
||||||
if let Some(size) = state.size {
|
let (position, size) = get_webview_position(&app, dpr)?;
|
||||||
let _ = webview.set_size(size);
|
let _ = webview.set_size(size);
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(position) = state.position {
|
|
||||||
let _ = webview.set_position(position);
|
let _ = webview.set_position(position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,16 +150,14 @@ pub async fn hide_ads_window<R: Runtime>(
|
|||||||
reset: Option<bool>,
|
reset: Option<bool>,
|
||||||
) -> crate::api::Result<()> {
|
) -> crate::api::Result<()> {
|
||||||
if let Some(webview) = app.webviews().get("ads-window") {
|
if let Some(webview) = app.webviews().get("ads-window") {
|
||||||
|
if reset.unwrap_or(false) {
|
||||||
let state = app.state::<RwLock<AdsState>>();
|
let state = app.state::<RwLock<AdsState>>();
|
||||||
let mut state = state.write().await;
|
let mut state = state.write().await;
|
||||||
state.shown = false;
|
|
||||||
|
|
||||||
if reset.unwrap_or(false) {
|
state.shown = false;
|
||||||
state.size = None;
|
|
||||||
state.position = None;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let _ = webview.set_position(LogicalPosition::new(-1000, -1000));
|
let _ = webview.set_position(PhysicalPosition::new(-1000, -1000));
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -178,7 +189,7 @@ pub async fn open_link<R: Runtime>(
|
|||||||
{
|
{
|
||||||
if let Some(last_click) = state.last_click {
|
if let Some(last_click) = state.last_click {
|
||||||
if last_click.elapsed() < Duration::from_millis(100) {
|
if last_click.elapsed() < Duration::from_millis(100) {
|
||||||
let _ = app.shell().open(&path, None);
|
let _ = app.opener().open_url(&path, None::<String>);
|
||||||
state.last_click = None;
|
state.last_click = None;
|
||||||
|
|
||||||
return Ok(());
|
return Ok(());
|
||||||
|
|||||||
@ -185,7 +185,7 @@ fn main() {
|
|||||||
.plugin(tauri_plugin_os::init())
|
.plugin(tauri_plugin_os::init())
|
||||||
.plugin(tauri_plugin_dialog::init())
|
.plugin(tauri_plugin_dialog::init())
|
||||||
.plugin(tauri_plugin_deep_link::init())
|
.plugin(tauri_plugin_deep_link::init())
|
||||||
.plugin(tauri_plugin_shell::init())
|
.plugin(tauri_plugin_opener::init())
|
||||||
.plugin(
|
.plugin(
|
||||||
tauri_plugin_window_state::Builder::default()
|
tauri_plugin_window_state::Builder::default()
|
||||||
.with_filename("app-window-state.json")
|
.with_filename("app-window-state.json")
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "theseus"
|
name = "theseus"
|
||||||
version = "0.8.9"
|
version = "0.9.0"
|
||||||
authors = ["Jai A <jaiagr+gpg@pm.me>"]
|
authors = ["Jai A <jaiagr+gpg@pm.me>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
|||||||
@ -105,7 +105,10 @@ impl State {
|
|||||||
/// Get the current launcher state, waiting for initialization
|
/// Get the current launcher state, waiting for initialization
|
||||||
pub async fn get() -> crate::Result<Arc<Self>> {
|
pub async fn get() -> crate::Result<Arc<Self>> {
|
||||||
if !LAUNCHER_STATE.initialized() {
|
if !LAUNCHER_STATE.initialized() {
|
||||||
while !LAUNCHER_STATE.initialized() {}
|
tracing::error!("Attempted to get state before it is initialized - this should never happen!");
|
||||||
|
while !LAUNCHER_STATE.initialized() {
|
||||||
|
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(Arc::clone(
|
Ok(Arc::clone(
|
||||||
|
|||||||
@ -37,7 +37,7 @@
|
|||||||
"qrcode.vue": "^3.4.1",
|
"qrcode.vue": "^3.4.1",
|
||||||
"vue-multiselect": "3.0.0",
|
"vue-multiselect": "3.0.0",
|
||||||
"vue-select": "4.0.0-beta.6",
|
"vue-select": "4.0.0-beta.6",
|
||||||
"vue-virtual-scroller": "v2.0.0-beta.8",
|
"vue-typed-virtual-list": "^1.0.10",
|
||||||
"vue3-apexcharts": "^1.4.4",
|
"vue3-apexcharts": "^1.4.4",
|
||||||
"xss": "^1.0.14"
|
"xss": "^1.0.14"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import Checkbox from '../base/Checkbox.vue'
|
|||||||
import ContentListItem from './ContentListItem.vue'
|
import ContentListItem from './ContentListItem.vue'
|
||||||
import type { ContentItem } from './ContentListItem.vue'
|
import type { ContentItem } from './ContentListItem.vue'
|
||||||
import { DropdownIcon } from '@modrinth/assets'
|
import { DropdownIcon } from '@modrinth/assets'
|
||||||
import { RecycleScroller } from 'vue-virtual-scroller'
|
import { createVirtualScroller } from 'vue-typed-virtual-list'
|
||||||
|
|
||||||
const props = withDefaults(
|
const props = withDefaults(
|
||||||
defineProps<{
|
defineProps<{
|
||||||
@ -17,6 +17,8 @@ const props = withDefaults(
|
|||||||
{},
|
{},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const VirtualScroller = createVirtualScroller()
|
||||||
|
|
||||||
const selectionStates: Ref<Record<string, boolean>> = ref({})
|
const selectionStates: Ref<Record<string, boolean>> = ref({})
|
||||||
const selected: Ref<string[]> = computed(() =>
|
const selected: Ref<string[]> = computed(() =>
|
||||||
Object.keys(selectionStates.value).filter(
|
Object.keys(selectionStates.value).filter(
|
||||||
@ -76,18 +78,12 @@ function setSelected(value: boolean) {
|
|||||||
</slot>
|
</slot>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg-bg-raised rounded-xl">
|
<div class="bg-bg-raised rounded-xl">
|
||||||
<RecycleScroller
|
<VirtualScroller :items="items" :default-size="64" style="height: 100%">
|
||||||
v-slot="{ item, index }"
|
<template #item="{ ref }">
|
||||||
:items="items"
|
|
||||||
:item-size="64"
|
|
||||||
disable-transform
|
|
||||||
key-field="filename"
|
|
||||||
style="height: 100%"
|
|
||||||
>
|
|
||||||
<ContentListItem
|
<ContentListItem
|
||||||
v-model="selectionStates[item.filename]"
|
v-model="selectionStates[ref.filename]"
|
||||||
:item="item"
|
:item="ref"
|
||||||
:last="props.items.length - 1 === index"
|
:last="false"
|
||||||
class="mb-2"
|
class="mb-2"
|
||||||
@update:model-value="updateSelection"
|
@update:model-value="updateSelection"
|
||||||
>
|
>
|
||||||
@ -95,7 +91,8 @@ function setSelected(value: boolean) {
|
|||||||
<slot name="actions" :item="item" />
|
<slot name="actions" :item="item" />
|
||||||
</template>
|
</template>
|
||||||
</ContentListItem>
|
</ContentListItem>
|
||||||
</RecycleScroller>
|
</template>
|
||||||
|
</VirtualScroller>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
198
pnpm-lock.yaml
generated
198
pnpm-lock.yaml
generated
@ -36,8 +36,8 @@ importers:
|
|||||||
version: link:../../packages/daedalus
|
version: link:../../packages/daedalus
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@tauri-apps/cli':
|
'@tauri-apps/cli':
|
||||||
specifier: 2.0.0-rc.16
|
specifier: 2.1.0
|
||||||
version: 2.0.0-rc.16
|
version: 2.1.0
|
||||||
|
|
||||||
apps/app-frontend:
|
apps/app-frontend:
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -54,23 +54,23 @@ importers:
|
|||||||
specifier: ^8.27.0
|
specifier: ^8.27.0
|
||||||
version: 8.27.0(vue@3.5.13(typescript@5.5.4))
|
version: 8.27.0(vue@3.5.13(typescript@5.5.4))
|
||||||
'@tauri-apps/api':
|
'@tauri-apps/api':
|
||||||
specifier: ^2.0.0-rc.3
|
specifier: ^2.1.1
|
||||||
version: 2.0.0-rc.3
|
version: 2.1.1
|
||||||
'@tauri-apps/plugin-dialog':
|
'@tauri-apps/plugin-dialog':
|
||||||
specifier: ^2.0.0-rc.0
|
specifier: ^2.2.0
|
||||||
version: 2.0.0-rc.0
|
version: 2.2.0
|
||||||
|
'@tauri-apps/plugin-opener':
|
||||||
|
specifier: ^2.2.1
|
||||||
|
version: 2.2.1
|
||||||
'@tauri-apps/plugin-os':
|
'@tauri-apps/plugin-os':
|
||||||
specifier: ^2.0.0-rc.0
|
specifier: ^2.2.0
|
||||||
version: 2.0.0-rc.0
|
version: 2.2.0
|
||||||
'@tauri-apps/plugin-shell':
|
|
||||||
specifier: ^2.0.0-rc.0
|
|
||||||
version: 2.0.0-rc.0
|
|
||||||
'@tauri-apps/plugin-updater':
|
'@tauri-apps/plugin-updater':
|
||||||
specifier: ^2.0.0-rc.0
|
specifier: ^2.3.0
|
||||||
version: 2.0.0-rc.1
|
version: 2.3.0
|
||||||
'@tauri-apps/plugin-window-state':
|
'@tauri-apps/plugin-window-state':
|
||||||
specifier: ^2.0.0-rc.0
|
specifier: ^2.2.0
|
||||||
version: 2.0.0-rc.0
|
version: 2.2.0
|
||||||
'@vintl/vintl':
|
'@vintl/vintl':
|
||||||
specifier: ^4.4.1
|
specifier: ^4.4.1
|
||||||
version: 4.4.1(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4))
|
version: 4.4.1(typescript@5.5.4)(vue@3.5.13(typescript@5.5.4))
|
||||||
@ -432,9 +432,9 @@ importers:
|
|||||||
vue-select:
|
vue-select:
|
||||||
specifier: 4.0.0-beta.6
|
specifier: 4.0.0-beta.6
|
||||||
version: 4.0.0-beta.6(vue@3.5.13(typescript@5.5.4))
|
version: 4.0.0-beta.6(vue@3.5.13(typescript@5.5.4))
|
||||||
vue-virtual-scroller:
|
vue-typed-virtual-list:
|
||||||
specifier: v2.0.0-beta.8
|
specifier: ^1.0.10
|
||||||
version: 2.0.0-beta.8(vue@3.5.13(typescript@5.5.4))
|
version: 1.0.10(vue@3.5.13(typescript@5.5.4))
|
||||||
vue3-apexcharts:
|
vue3-apexcharts:
|
||||||
specifier: ^1.4.4
|
specifier: ^1.4.4
|
||||||
version: 1.5.3(apexcharts@3.49.2)(vue@3.5.13(typescript@5.5.4))
|
version: 1.5.3(apexcharts@3.49.2)(vue@3.5.13(typescript@5.5.4))
|
||||||
@ -2294,91 +2294,88 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: '>=8.40.0'
|
eslint: '>=8.40.0'
|
||||||
|
|
||||||
'@tauri-apps/api@2.0.0-rc.3':
|
'@tauri-apps/api@2.1.1':
|
||||||
resolution: {integrity: sha512-k1erUfnoOFJwL5VNFZz0BQZ2agNstG7CNOjwpdWMl1vOaVuSn4DhJtXB0Deh9lZaaDlfrykKOyZs9c3XXpMi5Q==}
|
resolution: {integrity: sha512-fzUfFFKo4lknXGJq8qrCidkUcKcH2UHhfaaCNt4GzgzGaW2iS26uFOg4tS3H4P8D6ZEeUxtiD5z0nwFF0UN30A==}
|
||||||
|
|
||||||
'@tauri-apps/api@2.0.0-rc.4':
|
'@tauri-apps/cli-darwin-arm64@2.1.0':
|
||||||
resolution: {integrity: sha512-UNiIhhKG08j4ooss2oEEVexffmWkgkYlC2M3GcX3VPtNsqFgVNL8Mcw/4Y7rO9M9S+ffAMnLOF5ypzyuyb8tyg==}
|
resolution: {integrity: sha512-ESc6J6CE8hl1yKH2vJ+ALF+thq4Be+DM1mvmTyUCQObvezNCNhzfS6abIUd3ou4x5RGH51ouiANeT3wekU6dCw==}
|
||||||
|
|
||||||
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.16':
|
|
||||||
resolution: {integrity: sha512-lISZU4gG0c9PbY7h/j/gW7nJLxZEygNBrYEET6zN8R99Znf5rSO+CfjenaMcJUUj6yTAd8gzdakRpLqNSAWegA==}
|
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@tauri-apps/cli-darwin-x64@2.0.0-rc.16':
|
'@tauri-apps/cli-darwin-x64@2.1.0':
|
||||||
resolution: {integrity: sha512-D9uxPCxpyYcTSQulJGFX3POAKPOJd8WcWHFH8x6YVM1cIx6EWRXIE1sZnPUOjFr7qCg+bSdYdr8/BFHcZGcApQ==}
|
resolution: {integrity: sha512-TasHS442DFs8cSH2eUQzuDBXUST4ECjCd0yyP+zZzvAruiB0Bg+c8A+I/EnqCvBQ2G2yvWLYG8q/LI7c87A5UA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-arm-gnueabihf@2.1.0':
|
||||||
resolution: {integrity: sha512-WsVdKm4D1I1XV8I9yRnmOINZRwwWfh6xcLV3m19+B9g6TohK8RkRxWfxvs3TLQlWOLQ6lo8BzS9rzXB+KtjDpg==}
|
resolution: {integrity: sha512-aP7ZBGNL4ny07Cbb6kKpUOSrmhcIK2KhjviTzYlh+pPhAptxnC78xQGD3zKQkTi2WliJLPmBYbOHWWQa57lQ9w==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-arm64-gnu@2.1.0':
|
||||||
resolution: {integrity: sha512-2jpZDagNs6rrqposHJihHBayttgOl5aB2+bYiVEC6ye+haiFtmYmpdaPOaVIw+YVQs6lepf5PVrisCoU9DmYsg==}
|
resolution: {integrity: sha512-ZTdgD5gLeMCzndMT2f358EkoYkZ5T+Qy6zPzU+l5vv5M7dHVN9ZmblNAYYXmoOuw7y+BY4X/rZvHV9pcGrcanQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-arm64-musl@2.1.0':
|
||||||
resolution: {integrity: sha512-SNEDcB+sWOls/B0a+UpUHVa/oegvlXXKYWsTxuXtgWIr5VbWG7rXLZ3fZpLLP3SpRVGTGTnABcyqshFbWSqqKQ==}
|
resolution: {integrity: sha512-NzwqjUCilhnhJzusz3d/0i0F1GFrwCQbkwR6yAHUxItESbsGYkZRJk0yMEWkg3PzFnyK4cWTlQJMEU52TjhEzA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-x64-gnu@2.1.0':
|
||||||
resolution: {integrity: sha512-Zsq29MM1ooeH1+chQBa7ffDFnzAZebBBFdsvs4e05tS1H8gn4oKE+PSMn9p/okzVXykEk9ri2/n7BG1XFeifMA==}
|
resolution: {integrity: sha512-TyiIpMEtZxNOQmuFyfJwaaYbg3movSthpBJLIdPlKxSAB2BW0VWLY3/ZfIxm/G2YGHyREkjJvimzYE0i37PnMA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-x64-musl@2.1.0':
|
||||||
resolution: {integrity: sha512-g+pwSuis2YMxhJJ/pJYwp/Nps5CWvlv/5MV5UfDvClkCkeAyzIqVX+HbBLPcs5S0CePUQNeP0j4d4jBWUqZZQg==}
|
resolution: {integrity: sha512-/dQd0TlaxBdJACrR72DhynWftzHDaX32eBtS5WBrNJ+nnNb+znM3gON6nJ9tSE9jgDa6n1v2BkI/oIDtypfUXw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.16':
|
'@tauri-apps/cli-win32-arm64-msvc@2.1.0':
|
||||||
resolution: {integrity: sha512-PpPqdMTwJSDAK4KnNjvh77ShSkY+7pih1f6e50EtXar8bjC17e3XcEqFhDNne5mxEVTLYhibs6p1JLPad0ZjRA==}
|
resolution: {integrity: sha512-NdQJO7SmdYqOcE+JPU7bwg7+odfZMWO6g8xF9SXYCMdUzvM2Gv/AQfikNXz5yS7ralRhNFuW32i5dcHlxh4pDg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.16':
|
'@tauri-apps/cli-win32-ia32-msvc@2.1.0':
|
||||||
resolution: {integrity: sha512-io2yIcEcG7YLP+9n13NbilB93SjcB7jIl8GbURC4XZT4/4t9D1PWHpJr5hySVsGRLCz5e8NzwC5RlnenNzmpPQ==}
|
resolution: {integrity: sha512-f5h8gKT/cB8s1ticFRUpNmHqkmaLutT62oFDB7N//2YTXnxst7EpMIn1w+QimxTvTk2gcx6EcW6bEk/y2hZGzg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.16':
|
'@tauri-apps/cli-win32-x64-msvc@2.1.0':
|
||||||
resolution: {integrity: sha512-Rfkmxe3k+cBVA/kVYt8O25QrQqWKJlH9AiH7Q3C6xBzzG9PCSRMBszCp+JhBF8jhVlwNmOBv6UG+lm85kspwGg==}
|
resolution: {integrity: sha512-P/+LrdSSb5Xbho1LRP4haBjFHdyPdjWvGgeopL96OVtrFpYnfC+RctB45z2V2XxqFk3HweDDxk266btjttfjGw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@tauri-apps/cli@2.0.0-rc.16':
|
'@tauri-apps/cli@2.1.0':
|
||||||
resolution: {integrity: sha512-wdjZg/M3dcxiqgWG6VRnABpX0dYxRww93t0d1MYoZxFDrnyoUz5kYwFQ0v4J9u0qenEgskjoypvon7V/Nj9qrg==}
|
resolution: {integrity: sha512-K2VhcKqBhAeS5pNOVdnR/xQRU6jwpgmkSL2ejHXcl0m+kaTggT0WRDQnFtPq6NljA7aE03cvwsbCAoFG7vtkJw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
'@tauri-apps/plugin-dialog@2.0.0-rc.0':
|
'@tauri-apps/plugin-dialog@2.2.0':
|
||||||
resolution: {integrity: sha512-DPOXYe8SQ6Radk/67EOdaomlxL7oF99JO/ZUaPp1IBEs3Wro7lhlz63CfdKIBfKIZTLJLzP1R7/EiPL/GTA3Bg==}
|
resolution: {integrity: sha512-6bLkYK68zyK31418AK5fNccCdVuRnNpbxquCl8IqgFByOgWFivbiIlvb79wpSXi0O+8k8RCSsIpOquebusRVSg==}
|
||||||
|
|
||||||
'@tauri-apps/plugin-os@2.0.0-rc.0':
|
'@tauri-apps/plugin-opener@2.2.1':
|
||||||
resolution: {integrity: sha512-OWAl8mooKnGykSD4iog8WRqcnOSx0gGmTJBlEExHdFeIuOHg0Ezvd+WiVLhT9LBg7go3ibNWRWpe/ZG7YEp4Vw==}
|
resolution: {integrity: sha512-zloo4xzBqeh363xNA+xYt+7+/cu/lPYuG5PRtxjWAaSyfMqFo6IINdizkDBYylUewLiplXb5+S65GLVkeXTHPg==}
|
||||||
|
|
||||||
'@tauri-apps/plugin-shell@2.0.0-rc.0':
|
'@tauri-apps/plugin-os@2.2.0':
|
||||||
resolution: {integrity: sha512-bhUcQcrqZoK8H1DFXapr5r1Z75oh6Kd5Tltz97XpZFLREEqp+KhN2Fvyh8r/fKAyenYsTYUIsDsyGdjdueuF9g==}
|
resolution: {integrity: sha512-HszbCdbisMlu5QhCNAN8YIWyz2v33abAWha6+uvV2CKX8P5VSct/y+kEe22JeyqrxCnWlQ3DRx7s49Byg7/0EA==}
|
||||||
|
|
||||||
'@tauri-apps/plugin-updater@2.0.0-rc.1':
|
'@tauri-apps/plugin-updater@2.3.0':
|
||||||
resolution: {integrity: sha512-SwQhDad/jnGIUe4eFfVBZ+0wRZthPSLwrFAl/K0Fyuu7dD/uGHS/jbATxZzwFDGfcpWOGLOsS8+LqSmY5zufHw==}
|
resolution: {integrity: sha512-qdzyZEUN69FZQ/nRx51fBub10tT6wffJl3DLVo9q922Gvw8Wk++rZhoD9eethPlZYbog/7RGgT8JkrfLh5BKAg==}
|
||||||
|
|
||||||
'@tauri-apps/plugin-window-state@2.0.0-rc.0':
|
'@tauri-apps/plugin-window-state@2.2.0':
|
||||||
resolution: {integrity: sha512-lR8reD+D1yIHT+53v56WltLS0+Y2zIkKqTuwrvz1yNbY5Hk4Z6foFV2Byo4kJAAvi5vbeGtvxYAjSiczZK5euw==}
|
resolution: {integrity: sha512-PFZ/vkZ6UPaRyuggEn8jWc/xwpiEw3Id8i6bin54zUR3vHY0MOK+ovvpvp6SEHKryCJbZMigYJz0OUT2eZ4YmQ==}
|
||||||
|
|
||||||
'@trysound/sax@0.2.0':
|
'@trysound/sax@0.2.0':
|
||||||
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
|
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
|
||||||
@ -10544,72 +10541,70 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
'@tauri-apps/api@2.0.0-rc.3': {}
|
'@tauri-apps/api@2.1.1': {}
|
||||||
|
|
||||||
'@tauri-apps/api@2.0.0-rc.4': {}
|
'@tauri-apps/cli-darwin-arm64@2.1.0':
|
||||||
|
|
||||||
'@tauri-apps/cli-darwin-arm64@2.0.0-rc.16':
|
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli-darwin-x64@2.0.0-rc.16':
|
'@tauri-apps/cli-darwin-x64@2.1.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-arm-gnueabihf@2.1.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-arm64-gnu@2.1.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-arm64-musl@2.1.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-x64-gnu@2.1.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-x64-musl@2.0.0-rc.16':
|
'@tauri-apps/cli-linux-x64-musl@2.1.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.16':
|
'@tauri-apps/cli-win32-arm64-msvc@2.1.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.16':
|
'@tauri-apps/cli-win32-ia32-msvc@2.1.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.16':
|
'@tauri-apps/cli-win32-x64-msvc@2.1.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@tauri-apps/cli@2.0.0-rc.16':
|
'@tauri-apps/cli@2.1.0':
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@tauri-apps/cli-darwin-arm64': 2.0.0-rc.16
|
'@tauri-apps/cli-darwin-arm64': 2.1.0
|
||||||
'@tauri-apps/cli-darwin-x64': 2.0.0-rc.16
|
'@tauri-apps/cli-darwin-x64': 2.1.0
|
||||||
'@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.16
|
'@tauri-apps/cli-linux-arm-gnueabihf': 2.1.0
|
||||||
'@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.16
|
'@tauri-apps/cli-linux-arm64-gnu': 2.1.0
|
||||||
'@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.16
|
'@tauri-apps/cli-linux-arm64-musl': 2.1.0
|
||||||
'@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.16
|
'@tauri-apps/cli-linux-x64-gnu': 2.1.0
|
||||||
'@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.16
|
'@tauri-apps/cli-linux-x64-musl': 2.1.0
|
||||||
'@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.16
|
'@tauri-apps/cli-win32-arm64-msvc': 2.1.0
|
||||||
'@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.16
|
'@tauri-apps/cli-win32-ia32-msvc': 2.1.0
|
||||||
'@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.16
|
'@tauri-apps/cli-win32-x64-msvc': 2.1.0
|
||||||
|
|
||||||
'@tauri-apps/plugin-dialog@2.0.0-rc.0':
|
'@tauri-apps/plugin-dialog@2.2.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tauri-apps/api': 2.0.0-rc.3
|
'@tauri-apps/api': 2.1.1
|
||||||
|
|
||||||
'@tauri-apps/plugin-os@2.0.0-rc.0':
|
'@tauri-apps/plugin-opener@2.2.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tauri-apps/api': 2.0.0-rc.3
|
'@tauri-apps/api': 2.1.1
|
||||||
|
|
||||||
'@tauri-apps/plugin-shell@2.0.0-rc.0':
|
'@tauri-apps/plugin-os@2.2.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tauri-apps/api': 2.0.0-rc.3
|
'@tauri-apps/api': 2.1.1
|
||||||
|
|
||||||
'@tauri-apps/plugin-updater@2.0.0-rc.1':
|
'@tauri-apps/plugin-updater@2.3.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tauri-apps/api': 2.0.0-rc.4
|
'@tauri-apps/api': 2.1.1
|
||||||
|
|
||||||
'@tauri-apps/plugin-window-state@2.0.0-rc.0':
|
'@tauri-apps/plugin-window-state@2.2.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@tauri-apps/api': 2.0.0-rc.3
|
'@tauri-apps/api': 2.1.1
|
||||||
|
|
||||||
'@trysound/sax@0.2.0': {}
|
'@trysound/sax@0.2.0': {}
|
||||||
|
|
||||||
@ -11558,6 +11553,16 @@ snapshots:
|
|||||||
- '@vue/composition-api'
|
- '@vue/composition-api'
|
||||||
- vue
|
- vue
|
||||||
|
|
||||||
|
'@vueuse/core@9.13.0(vue@3.5.13(typescript@5.5.4))':
|
||||||
|
dependencies:
|
||||||
|
'@types/web-bluetooth': 0.0.16
|
||||||
|
'@vueuse/metadata': 9.13.0
|
||||||
|
'@vueuse/shared': 9.13.0(vue@3.5.13(typescript@5.5.4))
|
||||||
|
vue-demi: 0.14.8(vue@3.5.13(typescript@5.5.4))
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@vue/composition-api'
|
||||||
|
- vue
|
||||||
|
|
||||||
'@vueuse/metadata@11.1.0': {}
|
'@vueuse/metadata@11.1.0': {}
|
||||||
|
|
||||||
'@vueuse/metadata@9.13.0': {}
|
'@vueuse/metadata@9.13.0': {}
|
||||||
@ -11576,6 +11581,13 @@ snapshots:
|
|||||||
- '@vue/composition-api'
|
- '@vue/composition-api'
|
||||||
- vue
|
- vue
|
||||||
|
|
||||||
|
'@vueuse/shared@9.13.0(vue@3.5.13(typescript@5.5.4))':
|
||||||
|
dependencies:
|
||||||
|
vue-demi: 0.14.8(vue@3.5.13(typescript@5.5.4))
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@vue/composition-api'
|
||||||
|
- vue
|
||||||
|
|
||||||
'@webassemblyjs/ast@1.12.1':
|
'@webassemblyjs/ast@1.12.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@webassemblyjs/helper-numbers': 1.11.6
|
'@webassemblyjs/helper-numbers': 1.11.6
|
||||||
@ -17795,6 +17807,14 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@vue/composition-api'
|
- '@vue/composition-api'
|
||||||
|
|
||||||
|
vue-typed-virtual-list@1.0.10(vue@3.5.13(typescript@5.5.4)):
|
||||||
|
dependencies:
|
||||||
|
'@vueuse/core': 9.13.0(vue@3.5.13(typescript@5.5.4))
|
||||||
|
debounce: 1.2.1
|
||||||
|
vue: 3.5.13(typescript@5.5.4)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@vue/composition-api'
|
||||||
|
|
||||||
vue-virtual-scroller@2.0.0-beta.8(vue@3.5.13(typescript@5.5.4)):
|
vue-virtual-scroller@2.0.0-beta.8(vue@3.5.13(typescript@5.5.4)):
|
||||||
dependencies:
|
dependencies:
|
||||||
mitt: 2.1.0
|
mitt: 2.1.0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user