Thomas G. Lopes commited on
Commit
9d4f7f4
·
1 Parent(s): 9472159

cheap perf improvement

Browse files
Files changed (3) hide show
  1. package.json +1 -1
  2. pnpm-lock.yaml +5 -5
  3. src/routes/canvas/+page.svelte +18 -5
package.json CHANGED
@@ -60,7 +60,7 @@
60
  "prettier": "^3.1.1",
61
  "prettier-plugin-svelte": "^3.4.0",
62
  "prettier-plugin-tailwindcss": "^0.6.11",
63
- "runed": "^0.25.0",
64
  "shiki": "^3.4.0",
65
  "svelte": "^5.38.7",
66
  "svelte-check": "^4.3.1",
 
60
  "prettier": "^3.1.1",
61
  "prettier-plugin-svelte": "^3.4.0",
62
  "prettier-plugin-tailwindcss": "^0.6.11",
63
+ "runed": "^0.31.1",
64
  "shiki": "^3.4.0",
65
  "svelte": "^5.38.7",
66
  "svelte-check": "^4.3.1",
pnpm-lock.yaml CHANGED
@@ -166,8 +166,8 @@ importers:
166
  specifier: ^0.6.11
167
  version: 0.6.11(prettier-plugin-svelte@3.4.0(prettier@3.5.3)(svelte@5.38.7))(prettier@3.5.3)
168
  runed:
169
- specifier: ^0.25.0
170
- version: 0.25.0(svelte@5.38.7)
171
  shiki:
172
  specifier: ^3.4.0
173
  version: 3.4.0
@@ -2897,8 +2897,8 @@ packages:
2897
  peerDependencies:
2898
  svelte: ^5.7.0
2899
 
2900
- runed@0.25.0:
2901
- resolution: {integrity: sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==}
2902
  peerDependencies:
2903
  svelte: ^5.7.0
2904
 
@@ -6061,7 +6061,7 @@ snapshots:
6061
  esm-env: 1.2.2
6062
  svelte: 5.38.7
6063
 
6064
- runed@0.25.0(svelte@5.38.7):
6065
  dependencies:
6066
  esm-env: 1.2.2
6067
  svelte: 5.38.7
 
166
  specifier: ^0.6.11
167
  version: 0.6.11(prettier-plugin-svelte@3.4.0(prettier@3.5.3)(svelte@5.38.7))(prettier@3.5.3)
168
  runed:
169
+ specifier: ^0.31.1
170
+ version: 0.31.1(svelte@5.38.7)
171
  shiki:
172
  specifier: ^3.4.0
173
  version: 3.4.0
 
2897
  peerDependencies:
2898
  svelte: ^5.7.0
2899
 
2900
+ runed@0.31.1:
2901
+ resolution: {integrity: sha512-v3czcTnO+EJjiPvD4dwIqfTdHLZ8oH0zJheKqAHh9QMViY7Qb29UlAMRpX7ZtHh7AFqV60KmfxaJ9QMy+L1igQ==}
2902
  peerDependencies:
2903
  svelte: ^5.7.0
2904
 
 
6061
  esm-env: 1.2.2
6062
  svelte: 5.38.7
6063
 
6064
+ runed@0.31.1(svelte@5.38.7):
6065
  dependencies:
6066
  esm-env: 1.2.2
6067
  svelte: 5.38.7
src/routes/canvas/+page.svelte CHANGED
@@ -1,12 +1,13 @@
1
  <script lang="ts">
 
 
 
2
  import { Background, Controls, MiniMap, SvelteFlow } from "@xyflow/svelte";
3
  import "@xyflow/svelte/dist/style.css";
 
 
4
  import ChatNode from "./chat-node.svelte";
5
  import { edges, nodes } from "./state.js";
6
- import type { Node } from "@xyflow/svelte";
7
- import IconAdd from "~icons/lucide/plus";
8
- import { models } from "$lib/state/models.svelte";
9
- import { projects } from "$lib/state/projects.svelte";
10
 
11
  await models.load();
12
  await projects.init();
@@ -31,6 +32,12 @@
31
  };
32
  nodes.current.push(newNode);
33
  }
 
 
 
 
 
 
34
  </script>
35
 
36
  <div class="h-screen w-screen bg-gray-50">
@@ -55,7 +62,13 @@
55
  </header>
56
 
57
  <SvelteFlow
58
- bind:nodes={nodes.current}
 
 
 
 
 
 
59
  bind:edges={edges.current}
60
  fitView
61
  {nodeTypes}
 
1
  <script lang="ts">
2
+ import { models } from "$lib/state/models.svelte";
3
+ import { projects } from "$lib/state/projects.svelte";
4
+ import type { Node } from "@xyflow/svelte";
5
  import { Background, Controls, MiniMap, SvelteFlow } from "@xyflow/svelte";
6
  import "@xyflow/svelte/dist/style.css";
7
+ import { useDebounce } from "runed";
8
+ import IconAdd from "~icons/lucide/plus";
9
  import ChatNode from "./chat-node.svelte";
10
  import { edges, nodes } from "./state.js";
 
 
 
 
11
 
12
  await models.load();
13
  await projects.init();
 
32
  };
33
  nodes.current.push(newNode);
34
  }
35
+
36
+ let derivedNodes = $derived(nodes.current);
37
+
38
+ const throttledSave = useDebounce((n: Node[]) => {
39
+ nodes.current = n;
40
+ }, 100);
41
  </script>
42
 
43
  <div class="h-screen w-screen bg-gray-50">
 
62
  </header>
63
 
64
  <SvelteFlow
65
+ bind:nodes={
66
+ () => derivedNodes,
67
+ v => {
68
+ derivedNodes = v;
69
+ throttledSave(v);
70
+ }
71
+ }
72
  bind:edges={edges.current}
73
  fitView
74
  {nodeTypes}