{"hits":[{"kind":"Guide section","title":"Custom nodes","context":"Nodes","tool":"GetBlowGuideSection(heading: \"Custom nodes\")","snippet":"### Custom nodes  `NodeTemplate` replaces the content of every node. Switch on `node.Type` inside it and hand the rest back to the built-in renderer with `BlowDefaultNode`:  ```raz..."},{"kind":"API property","title":"BlowNode.UseCustomDragHandle","context":"BlowNode","tool":"GetBlowApi(typeName: \"BlowNode\")","snippet":"When true, the node body no longer initiates dragging; only a nested <BlowDragHandle> element can start a drag (React Flow's dragHandle)."},{"kind":"Guide section","title":"Drag handles","context":"Nodes","tool":"GetBlowGuideSection(heading: \"Drag handles\")","snippet":"### Drag handles  Set `UseCustomDragHandle = true` on a node and its body stops starting drags; only a `BlowDragHandle` inside its template does. The body can then host content tha..."},{"kind":"Guide section","title":"Nodes","tool":"GetBlowGuideSection(heading: \"Nodes\")","snippet":"...[constraining](#constraining-where-a-node-can-go). | | `UseCustomDragHandle` | `false` | Only a `BlowDragHandle` inside the node starts a drag. | | `AriaLabel` | `null` | Accessib..."},{"kind":"Guide section","title":"The custom properties","context":"Theming","tool":"GetBlowGuideSection(heading: \"The custom properties\")","snippet":"### The custom properties  Every colour in the stylesheet is a CSS custom property on the `.bit-blow` element - not only the canvas and its nodes, but the control bar, the minimap,..."},{"kind":"Guide section","title":"Handles and connections","tool":"GetBlowGuideSection(heading: \"Handles and connections\")","snippet":"...idth=\"2\" /> </ConnectionLineTemplate> ```  Demo: `/examples/custom-connection-line`, `/connection-line`."},{"kind":"Guide section","title":"The node model","context":"Nodes","tool":"GetBlowGuideSection(heading: \"The node model\")","snippet":"...[constraining](#constraining-where-a-node-can-go). | | `UseCustomDragHandle` | `false` | Only a `BlowDragHandle` inside the node starts a drag. | | `AriaLabel` | `null` | Accessib..."},{"kind":"API property","title":"BlowNode.Handles","context":"BlowNode","tool":"GetBlowApi(typeName: \"BlowNode\")","snippet":"...e key (see BlowHandleBounds), expressed as offsets from the node's top-left in flow units."},{"kind":"API method","title":"BlowCanvas.GetNodeConnections","context":"BlowCanvas","tool":"GetBlowApi(typeName: \"BlowCanvas\")","snippet":"Returns the connections attached to a node, optionally filtered to one handle type and/or handle id. Mirrors React Flow's getNodeConnections."},{"kind":"API method","title":"BlowGraphUtils.GetNodeConnections","context":"BlowGraphUtils","tool":"GetBlowApi(typeName: \"BlowGraphUtils\")","snippet":"Returns the connections attached to a node, optionally filtered to one handle type and/or a single handle id. Mirrors React Flow's getNodeConnections."},{"kind":"API property","title":"BlowMeasuredNode.Handles","context":"BlowMeasuredNode","tool":"GetBlowApi(typeName: \"BlowMeasuredNode\")","snippet":"The handles found inside the node."},{"kind":"API method","title":"BlowGraphUtils.GetHandleConnections","context":"BlowGraphUtils","tool":"GetBlowApi(typeName: \"BlowGraphUtils\")","snippet":"Returns the connections attached to one specific handle. Mirrors React Flow's getHandleConnections."}],"hasMore":true}