DirtyTrackingExtension<T> extension

Private extension for dirty tracking and spatial index management.

This extension groups all the dirty tracking logic for efficient spatial index updates. The pattern defers spatial index updates during drag operations and batches them when the drag ends.

Key concepts:

  • Dirty tracking: Nodes/annotations/connections are marked "dirty" during drag
  • Deferred updates: Spatial index updates are deferred to pending sets
  • Batch flush: All pending updates are flushed when drag ends
  • Connection index: O(1) lookup of connections by node ID
on

Methods

internalMarkAnnotationDirty(String annotationId) → void

Available on NodeFlowController<T>, provided by the DirtyTrackingExtension extension

Marks an annotation as needing spatial index update.
internalMarkNodeDirty(String nodeId) → void

Available on NodeFlowController<T>, provided by the DirtyTrackingExtension extension

Marks a node as needing spatial index update. If no drag is in progress (or debug mode is on), updates immediately. Otherwise, defers until drag ends.
internalMarkNodesDirty(Iterable<String> nodeIds) → void

Available on NodeFlowController<T>, provided by the DirtyTrackingExtension extension

Marks multiple nodes as needing spatial index update.