Foblex Flow
Introduction
Overview
Nodes
Custom Nodes
Drag Handle
Node Selection
Resize Handle
Rotate Handle
Grouping
Drag to Group
Connectors
Node as Connector
Connector Inside Node
Connector Outlet
Limiting Connections
Connection Rules
Connectable Side
Connections - Editing
Drag to Connect
Click to Connect
New
Drag to Reassign
Create Node on Connection Drop
Remove Connection on Drop
Assign Node to Connection on Drop
Auto Snap
Connections - Appearance
Connection Types (Straight, Segment, Bezier, Adaptive Curve)
Custom Connection Type
Connection Behaviours
Connection Markers
Connection Content
Connection Gradients
Connections - Routing
Connection Waypoints
Connection Connectable Side
Viewport
Minimap
Zoom
Background
Auto Pan
New
Canvas Layer Ordering
New
Editor Helpers
Selection Area
Magnetic Lines
Magnetic Rects
Grid System
Add Node from Palette
Accessibility
New
Help in Positioning (Legacy)
Deprecated
Layout Engines
Dagre Layout
Dagre Auto Layout
ELK.js Layout
ELK.js Auto Layout
Reflow
Reflow on Resize
Editor State
Cut/Copy/Paste
Undo/Redo
Undo/Redo V2
Events
Drag Start/End Events
Custom Event Triggers
Control Schemes
New
Performance
Large Scene Performance
Connection Redraw Performance
Reference Apps
AI Low-Code Platform
Schema Designer
Call Center Flow
UML Diagram
Tournament Bracket
Foblex Flow

Control Schemes

Description

A control scheme is the mapping between input gestures and canvas actions — which button pans, what the wheel does, how selection starts. Provide one through provideFFlow(withControlScheme(...)) and it drives dragging, panning, zooming and the selection area together; switch it at runtime through FControlSchemeController.

Pick a preset from the toolbar and try it on the canvas.

Example

[example.html] <<< https://raw.githubusercontent.com/Foblex/f-flow/main/libs/f-examples/advanced/control-schemes/example.html [example.ts] <<< https://raw.githubusercontent.com/Foblex/f-flow/main/libs/f-examples/advanced/control-schemes/example.ts [example.scss] <<< https://raw.githubusercontent.com/Foblex/f-flow/main/libs/f-examples/advanced/control-schemes/example.scss

Presets

  • F_DEFAULT_CONTROL_SCHEME (default) — a drag pans the canvas, the wheel zooms, Shift+drag draws a selection rectangle. Matches the library's behavior without the feature.
  • F_SCROLL_PAN_CONTROL_SCHEME (Miro-like) — the wheel and two-finger trackpad scroll pan, Ctrl/Cmd+wheel or pinch zooms, a drag on the empty canvas selects, a middle-mouse drag pans.
  • F_DRAG_SELECT_CONTROL_SCHEME (draw.io-like) — the wheel zooms, a drag on the empty canvas selects, a middle-mouse drag pans.

Usage

Switch or tweak the scheme at runtime through the controller:

A scheme is a plain IFControlScheme object — every gesture is an FEventTrigger predicate, so you can start from a preset and override individual gestures, or build your own from scratch. See the Control Scheme guide for the full field reference and custom-scheme recipes.

Supported gestures

  • nodeMove, canvasMove, selection, createConnection, reassignConnection, nodeResize, nodeRotate: FEventTrigger predicates deciding when each interaction starts.
  • scrollPan: routes the wheel — true pans on plain scroll and zooms on Ctrl/Cmd+wheel or pinch.
  • zoom: gates wheel zoom.
  • The per-instance inputs (fNodeMoveTrigger, fCanvasMoveTrigger, fWheelTrigger, f-selection-area fTrigger, …) override the active scheme when set.
Edit this page on GitHub