From 03848ae8937993ae63d6c56bf536add1ff015ec6 Mon Sep 17 00:00:00 2001 From: Julien Calixte Date: Sat, 20 Jun 2026 09:37:42 +0200 Subject: [PATCH] feat(editor): add node, edge, palette, and loop-overlay components --- src/components/LoopOverlay.vue | 89 ++++++++++++++++++++++++++ src/components/Palette.vue | 48 ++++++++++++++ src/components/edges/InfoLinkEdge.vue | 71 ++++++++++++++++++++ src/components/nodes/CloudNode.vue | 29 +++++++++ src/components/nodes/ConverterNode.vue | 32 +++++++++ src/components/nodes/FlowNode.vue | 44 +++++++++++++ src/components/nodes/NodeLabel.vue | 62 ++++++++++++++++++ src/components/nodes/StockNode.vue | 30 +++++++++ src/components/palette-dnd.ts | 7 ++ 9 files changed, 412 insertions(+) create mode 100644 src/components/LoopOverlay.vue create mode 100644 src/components/Palette.vue create mode 100644 src/components/edges/InfoLinkEdge.vue create mode 100644 src/components/nodes/CloudNode.vue create mode 100644 src/components/nodes/ConverterNode.vue create mode 100644 src/components/nodes/FlowNode.vue create mode 100644 src/components/nodes/NodeLabel.vue create mode 100644 src/components/nodes/StockNode.vue create mode 100644 src/components/palette-dnd.ts diff --git a/src/components/LoopOverlay.vue b/src/components/LoopOverlay.vue new file mode 100644 index 0000000..dcb6807 --- /dev/null +++ b/src/components/LoopOverlay.vue @@ -0,0 +1,89 @@ + + + diff --git a/src/components/Palette.vue b/src/components/Palette.vue new file mode 100644 index 0000000..3f4791b --- /dev/null +++ b/src/components/Palette.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/edges/InfoLinkEdge.vue b/src/components/edges/InfoLinkEdge.vue new file mode 100644 index 0000000..b5b12e4 --- /dev/null +++ b/src/components/edges/InfoLinkEdge.vue @@ -0,0 +1,71 @@ + + + diff --git a/src/components/nodes/CloudNode.vue b/src/components/nodes/CloudNode.vue new file mode 100644 index 0000000..acb24f5 --- /dev/null +++ b/src/components/nodes/CloudNode.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/nodes/ConverterNode.vue b/src/components/nodes/ConverterNode.vue new file mode 100644 index 0000000..5b4aa14 --- /dev/null +++ b/src/components/nodes/ConverterNode.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/nodes/FlowNode.vue b/src/components/nodes/FlowNode.vue new file mode 100644 index 0000000..e36ec43 --- /dev/null +++ b/src/components/nodes/FlowNode.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/nodes/NodeLabel.vue b/src/components/nodes/NodeLabel.vue new file mode 100644 index 0000000..c014b00 --- /dev/null +++ b/src/components/nodes/NodeLabel.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/nodes/StockNode.vue b/src/components/nodes/StockNode.vue new file mode 100644 index 0000000..24576f1 --- /dev/null +++ b/src/components/nodes/StockNode.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/palette-dnd.ts b/src/components/palette-dnd.ts new file mode 100644 index 0000000..c90a540 --- /dev/null +++ b/src/components/palette-dnd.ts @@ -0,0 +1,7 @@ +/** Shared contract between the Palette (drag source) and Editor (drop target). */ + +/** Node kinds the palette can place. Flows are drawn by connecting (F2). */ +export type PlaceableKind = "stock" | "converter" + +/** Custom MIME type carrying the kind across an HTML5 drag-and-drop. */ +export const NODE_DND_MIME = "application/x-meadows-node"