From a4f51efeaddb02e7f59963b1be0e01c5312b30fa Mon Sep 17 00:00:00 2001 From: Max Richter Date: Thu, 7 May 2026 17:01:44 +0200 Subject: [PATCH] feat: add spinning icon --- app/src/routes/+page.svelte | 45 +++++++++++++++++++++++++----- packages/ui/src/lib/Spinner.svelte | 27 ++++++++++++++++++ 2 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 packages/ui/src/lib/Spinner.svelte diff --git a/app/src/routes/+page.svelte b/app/src/routes/+page.svelte index 70c8238..a6db613 100644 --- a/app/src/routes/+page.svelte +++ b/app/src/routes/+page.svelte @@ -29,6 +29,7 @@ import { tutorialConfig } from '$lib/tutorial/tutorial-config'; import { Planty } from '@nodarium/planty'; import type { Graph, NodeInstance } from '@nodarium/types'; + import { Spinner } from '@nodarium/ui'; import { createPerformanceStore } from '@nodarium/utils'; import type { Group } from 'three'; @@ -69,6 +70,7 @@ let activeNode = $state(undefined); let scene = $state(null!); + let isExecuting = $state(false); let sidebarOpen = $state(false); let graphInterface = $state>(null!); @@ -101,10 +103,16 @@ } }); + let timeout: ReturnType; + async function update( g: Graph, s: Record = $state.snapshot(graphSettings) ) { + if (timeout) clearTimeout(timeout); + timeout = setTimeout(() => { + isExecuting = true; + }, 100); performanceStore.startRun(); try { let a = performance.now(); @@ -129,6 +137,8 @@ } catch (error) { console.log('errors', error); } finally { + clearTimeout(timeout); + isExecuting = false; performanceStore.stopRun(); } } @@ -248,13 +258,20 @@
- +
+ + {#if isExecuting} +
+ +
+ {/if} +
{#if pm.graph} @@ -399,6 +416,20 @@ grid-template-rows: 0px 1fr; } + .viewer-cell { + position: relative; + height: 100%; + } + + .viewer-spinner { + position: absolute; + bottom: 12px; + right: 12px; + color: var(--color-text, #cecece); + opacity: 0.6; + pointer-events: none; + } + .wrapper :global(canvas) { transition: opacity 0.3s ease; opacity: 1; diff --git a/packages/ui/src/lib/Spinner.svelte b/packages/ui/src/lib/Spinner.svelte new file mode 100644 index 0000000..a4c664d --- /dev/null +++ b/packages/ui/src/lib/Spinner.svelte @@ -0,0 +1,27 @@ + + + + +