Canvas: Add new nodes at random positions

Change-Id: I17ba195065bf8c2f7d1eea2091793766f0e0ac65
diff --git a/apps/canvas/front/src/components/resources.tsx b/apps/canvas/front/src/components/resources.tsx
index fbb1be7..ddb68ac 100644
--- a/apps/canvas/front/src/components/resources.tsx
+++ b/apps/canvas/front/src/components/resources.tsx
@@ -3,40 +3,38 @@
 import { useCallback, useState } from "react";
 import { Accordion, AccordionTrigger } from "./ui/accordion";
 import { AccordionContent, AccordionItem } from "@radix-ui/react-accordion";
-import { AppNode, AppState, NodeType, useCategories, useStateStore } from "@/lib/state";
+import { AppState, NodeType, useCategories, useStateStore } from "@/lib/state";
 import { CategoryItem } from "@/lib/categories";
 import { Icon } from "./icon";
 
 function addResource(i: CategoryItem<NodeType>, store: AppState) {
-	const node = {
-		id: uuidv4(),
-		position: {
-			x: 0,
-			y: 0,
-		},
-		type: i.type,
-		connectable: true,
-		data: i.init,
-		selected: true,
-	};
-	const nodes = store.nodes.map((n) => ({
+	const deselected = store.nodes.map((n) => ({
 		...n,
 		selected: false,
 	}));
-	nodes.push(node as AppNode);
-	store.setNodes(nodes);
+	store.setNodes(deselected);
+	store.addNode({
+		id: uuidv4(),
+		type: i.type,
+		data: i.init,
+		selected: true,
+		connectable: true,
+	} as any); // eslint-disable-line @typescript-eslint/no-explicit-any
 }
 
 export function Resources() {
 	const store = useStateStore();
 	const categories = useCategories();
+
 	const onResourceAdd = useCallback(
 		(item: CategoryItem<NodeType>) => {
 			return () => addResource(item, store);
 		},
 		[store],
 	);
+
 	const [open, setOpen] = useState<string[]>(categories.map((c) => c.title));
+
 	return (
 		<>
 			<Accordion type="multiple" value={open} onValueChange={(v) => setOpen(v)}>