11# @dschz/solid-flow
22
3+ ## 0.1.1
4+
5+ ### Patch Changes
6+
7+ - Fix repository link
8+
39## 0.1.0
410
511### Major Changes
915### ✨ Core Features
1016
1117#### ** Main Components**
18+
1219- ** ` SolidFlow ` ** : Main flow component with comprehensive props and event handling
1320- ** ` SolidFlowProvider ` ** : Context provider for multi-flow scenarios and advanced state management
1421
1522#### ** Built-in Node Types**
23+
1624- ** ` InputNode ` ** : Nodes with source handles only (workflow starting points)
17- - ** ` OutputNode ` ** : Nodes with target handles only (workflow ending points)
25+ - ** ` OutputNode ` ** : Nodes with target handles only (workflow ending points)
1826- ** ` DefaultNode ` ** : Standard nodes with both source and target handles
1927- ** ` GroupNode ` ** : Container nodes for organizing and grouping other nodes
2028
2129#### ** Built-in Edge Types**
30+
2231- ** ` BezierEdge ` ** : Smooth curved connections (default styling)
2332- ** ` StraightEdge ` ** : Direct straight-line connections
2433- ** ` StepEdge ` ** : Right-angle step-style connections
2534- ** ` SmoothStepEdge ` ** : Rounded step connections with smooth corners
2635
2736#### ** Plugin Components**
37+
2838- ** ` Background ` ** : Customizable canvas backgrounds with multiple pattern variants:
2939 - Dots pattern with configurable size and spacing
3040 - Lines pattern for grid-style backgrounds
5565### 🎣 ** Reactive State Management**
5666
5767#### ** Store-Based Architecture**
68+
5869- ** ` createNodeStore() ` ** : Type-safe reactive store for nodes with full TypeScript support
5970- ** ` createEdgeStore() ` ** : Type-safe reactive store for edges with custom type integration
6071- ** ` createSolidFlow() ` ** : Core flow state management with SolidJS reactivity
6172
6273#### ** Essential Hooks**
74+
6375- ** ` useSolidFlow() ` ** : Main flow instance hook with comprehensive API:
6476 - ` addNodes() ` , ` updateNode() ` , ` deleteElements() ` for programmatic control
65- - ` screenToFlowPosition() ` , ` flowToScreenPosition() ` for coordinate transformations
77+ - ` screenToFlowPosition() ` , ` flowToScreenPosition() ` for coordinate transformations
6678 - ` fitView() ` , ` zoomIn() ` , ` zoomOut() ` for viewport management
6779- ** ` useConnection() ` ** : Real-time connection state during drag operations
6880- ** ` useNodesData() ` ** : Reactive access to specific node data with automatic updates
7284### 🎨 ** Customization & Extensibility**
7385
7486#### ** Custom Components**
87+
7588- Full TypeScript support for custom node and edge components
7689- ` NodeProps<TData, TType> ` and ` EdgeProps<TData, TType> ` for type-safe component creation
7790- Multiple handle support with custom positioning and styling
7891- Custom drag handles with selector-based configuration
7992
8093#### ** Type Safety**
94+
8195- Generic type parameters for nodes and edges throughout the API
8296- ` satisfies NodeTypes ` and ` satisfies EdgeTypes ` patterns for type inference
8397- Automatic data validation based on node/edge types
8498- IntelliSense support for custom component properties
8599
86100#### ** Styling & Theming**
101+
87102- CSS custom properties support for theme customization
88103- Light/dark/system color modes with SSR support
89104- Comprehensive CSS class system for styling overrides
92107### 🎯 ** Interaction & Navigation**
93108
94109#### ** Viewport Controls**
110+
95111- Smooth pan and zoom with mouse, touch, and keyboard support
96112- Configurable zoom limits and pan boundaries
97113- Snap-to-grid functionality with customizable grid sizes
98114- Fit view with padding and specific node targeting
99115
100116#### ** Selection System**
117+
101118- Single and multi-node/edge selection
102119- Selection box (drag-to-select multiple items)
103120- Keyboard shortcuts (Ctrl/Cmd+click, Shift+click)
104121- Programmatic selection control with event callbacks
105122
106123#### ** Drag & Drop**
124+
107125- Built-in node dragging with multi-selection support
108126- External drag-and-drop for adding new elements
109127- Custom drag handles for specialized interactions
113131### ♿ ** Accessibility Features**
114132
115133#### ** Keyboard Navigation**
134+
116135- Full tab navigation between focusable elements
117136- Arrow key navigation for selected nodes
118137- Enter/Space key activation for selection
119138- Delete key for removing selected elements
120139- Customizable keyboard shortcuts and key bindings
121140
122141#### ** Screen Reader Support**
142+
123143- ARIA labels and descriptions for all interactive elements
124144- ` A11yDescriptions ` component for enhanced screen reader context
125145- Semantic HTML structure throughout components
129149### ⚡ ** Performance & Optimization**
130150
131151#### ** Rendering Performance**
152+
132153- Fine-grained reactivity using SolidJS's reactive primitives
133154- Only re-renders components when their specific data changes
134155- Efficient viewport calculations and coordinate transformations
135156- Memory-optimized node and edge storage
136157
137158#### ** Large Dataset Handling**
159+
138160- Stress-tested with hundreds of nodes and edges
139161- Optimized selection algorithms for large graphs
140162- Efficient intersection detection and bounds calculations
143165### 🔧 ** Developer Experience**
144166
145167#### ** Comprehensive Examples**
168+
146169- ** 25+ Interactive Examples** in the included playground:
147170 - Basic usage and getting started
148171 - Custom nodes and edges with multiple handles
155178 - Node toolbar and resizer implementations
156179
157180#### ** TypeScript Integration**
181+
158182- Full TypeScript support with strict type checking
159183- Generic type parameters throughout the API
160184- IntelliSense support for all components and hooks
161185- Type-safe custom component creation
162186- Automatic type inference for node and edge data
163187
164188#### ** Development Tools**
189+
165190- Comprehensive error handling with development warnings
166191- Performance monitoring and debugging utilities
167192- Hot reload support during development
170195### 🔗 ** Connection System**
171196
172197#### ** Connection Handling**
198+
173199- Drag-to-connect interface with visual feedback
174200- Click-to-connect alternative interaction mode
175201- Connection validation with ` isValidConnection ` callback
176202- Custom connection line components with full styling control
177203- Auto-panning during connection creation
178204
179205#### ** Handle System**
206+
180207- Multiple handles per node (source and target)
181208- Custom handle positioning with ` Position ` enum
182209- Handle-specific connection rules and validation
186213### 📊 ** Utility Functions**
187214
188215#### ** Coordinate Transformations**
216+
189217- ` screenToFlowPosition() ` : Convert screen coordinates to flow coordinates
190218- ` flowToScreenPosition() ` : Convert flow coordinates to screen coordinates
191219- Automatic viewport transformation handling
192220
193221#### ** Graph Utilities**
222+
194223- ` getNodesBounds() ` : Calculate bounding box for node collections
195224- ` getIntersectingNodes() ` : Find nodes that intersect with a given node
196225- ` getConnectedEdges() ` : Get all edges connected to specific nodes
197226- ` getIncomers() ` and ` getOutgoers() ` : Get connected nodes in specific directions
198227
199228#### ** Edge Utilities**
229+
200230- ` addEdge() ` : Add new edges to existing collections
201231- ` getBezierPath() ` , ` getStraightPath() ` , ` getSmoothStepPath() ` : Path calculation utilities
202232- ` getEdgeCenter() ` : Calculate center points for edge labeling
203233
204234### 🏗️ ** Architecture & Patterns**
205235
206236#### ** Store-First Design**
237+
207238- Built around SolidJS's reactive store system rather than signals
208239- Immutable updates using ` produce() ` from solid-js/store
209240- Automatic subscription to store changes throughout the component tree
210241
211242#### ** Event System**
243+
212244- Comprehensive event handling for all user interactions:
213245 - Node events: click, drag, hover, focus, context menu
214- - Edge events: click, hover, focus, context menu
246+ - Edge events: click, hover, focus, context menu
215247 - Pane events: click, context menu, viewport changes
216248 - Selection events: selection start, change, and end
217249 - Connection events: connection start, connect, and end
218250
219251#### ** Plugin Architecture**
252+
220253- Modular plugin components that integrate seamlessly
221254- Consistent API patterns across all plugin components
222255- Easy integration of custom plugins following established patterns
223256
224257### 🔄 ** Compatibility & Integration**
225258
226259#### ** SolidJS Integration**
260+
227261- Built specifically for SolidJS 1.8.0+
228262- Leverages SolidJS's fine-grained reactivity system
229263- Compatible with SolidJS ecosystem tools and patterns
230264- SSR support for server-side rendering scenarios
231265
232266#### ** External Dependencies**
267+
233268- ` @xyflow/system ` : Core flow logic and utilities (v0.0.68)
234269- ` @solid-primitives/* ` : SolidJS primitive utilities for enhanced functionality
235270- ` clsx ` : Utility for conditional CSS class names
238273### 📦 ** Package & Distribution**
239274
240275#### ** Multiple Export Formats**
276+
241277- ESM modules with tree-shaking support
242278- TypeScript declaration files included
243279- Separate styles export for CSS customization
244280- Optimized bundle sizes for production use
245281
246282#### ** Development Setup**
283+
247284- Comprehensive development playground with live examples
248285- Vite-based development server with HMR
249286- TypeScript strict mode for development
@@ -268,4 +305,4 @@ This is the first release, so no migration is needed. However, developers famili
268305
269306---
270307
271- ** Full Changelog** : https://github.com/dsnchz/solid-flow/releases/tag/v0.1.0
308+ ** Full Changelog** : https://github.com/dsnchz/solid-flow/releases/tag/v0.1.0
0 commit comments