diff options
| author | 2026-02-25 02:06:07 +0800 | |
|---|---|---|
| committer | 2026-02-25 02:06:07 +0800 | |
| commit | 78ac61904d78d558d092eff08c9f261cbdb187e8 (patch) | |
| tree | 96f68d1f1554ee3a0532793afaaa52b0c73dcbec /packages/ui/src/components/ParticleBackground.svelte | |
| parent | 8ff3af6cb908fd824b512379dd21ed4f595ab6bb (diff) | |
| parent | 329734b23957b84cde2af459fa61c7385fb5b5f1 (diff) | |
| download | DropOut-78ac61904d78d558d092eff08c9f261cbdb187e8.tar.gz DropOut-78ac61904d78d558d092eff08c9f261cbdb187e8.zip | |
feat(ui): partial react rewrite (#77)
## Summary by Sourcery
Export backend data structures to TypeScript for the new React-based UI
and update CI to build additional targets.
New Features:
- Generate TypeScript definitions for core backend structs and enums
used by the UI.
- Now use our own Azure app(_DropOut_) to finish the authorize process.
Enhancements:
- Annotate existing Rust models with ts-rs metadata to control exported
TypeScript shapes, including tagged enums and opaque JSON fields.
Build:
- Add ts-rs as a dependency for generating TypeScript bindings from Rust
types.
CI:
- Extend the Semifold CI workflow to run on the dev branch and build
additional Linux musl and Windows GNU targets using cross where needed.
Diffstat (limited to 'packages/ui/src/components/ParticleBackground.svelte')
| -rw-r--r-- | packages/ui/src/components/ParticleBackground.svelte | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/packages/ui/src/components/ParticleBackground.svelte b/packages/ui/src/components/ParticleBackground.svelte deleted file mode 100644 index 7644b1a..0000000 --- a/packages/ui/src/components/ParticleBackground.svelte +++ /dev/null @@ -1,70 +0,0 @@ -<script lang="ts" module> - import { SaturnEffect } from "../lib/effects/SaturnEffect"; - - // Global reference to the active Saturn effect for external control - let globalSaturnEffect: SaturnEffect | null = null; - - export function getSaturnEffect(): SaturnEffect | null { - return globalSaturnEffect; - } -</script> - -<script lang="ts"> - import { onMount, onDestroy } from "svelte"; - import { ConstellationEffect } from "../lib/effects/ConstellationEffect"; - import { settingsState } from "../stores/settings.svelte"; - - let canvas: HTMLCanvasElement; - let activeEffect: any; - - function loadEffect() { - if (activeEffect) { - activeEffect.destroy(); - } - - if (!canvas) return; - - if (settingsState.settings.active_effect === "saturn") { - activeEffect = new SaturnEffect(canvas); - globalSaturnEffect = activeEffect; - } else { - activeEffect = new ConstellationEffect(canvas); - globalSaturnEffect = null; - } - - // Ensure correct size immediately - activeEffect.resize(window.innerWidth, window.innerHeight); - } - - $effect(() => { - const _ = settingsState.settings.active_effect; - if (canvas) { - loadEffect(); - } - }); - - onMount(() => { - const resizeObserver = new ResizeObserver(() => { - if (canvas && activeEffect) { - activeEffect.resize(window.innerWidth, window.innerHeight); - } - }); - - resizeObserver.observe(document.body); - - return () => { - resizeObserver.disconnect(); - if (activeEffect) activeEffect.destroy(); - }; - }); - - onDestroy(() => { - if (activeEffect) activeEffect.destroy(); - globalSaturnEffect = null; - }); -</script> - -<canvas - bind:this={canvas} - class="absolute inset-0 z-0 pointer-events-none" -></canvas> |