✨ Added
- Zoom support in Shortcut Manager - configurable keyboard shortcuts (
keyboardZoomIn,keyboardZoomOut) and wheel-based zoom with modifier keys (zoom) via newWheelOnlyShortcutDefinition(#571) - Start and end lifecycle events for node interactions:
nodeDragStarted/nodeDragEnded,nodeResizeStarted/nodeResizeEnded,nodeRotateStarted/nodeRotateEnded(#572) selectionGestureEndedevent - fires on pointerup after a selection gesture completes (object click, box selection, or select-all), providing the currently selected nodes and edges. Use this for actions that should run after selection is done, such as showing toolbars or updating panels (#582)- Absolute edge label positioning -
positionOnEdgenow accepts pixel-based strings ('30px','-20px') in addition to relative numbers (0–1). Negative pixel values measure from the target end (#580) - Default edge now supports
positionOnEdgedata property to control label positioning (defaults to0.5) (#581) nodeIdsproperty onDraggingActionStatecontaining IDs of all nodes participating in the drag operation (#572)movementStartedproperty onDraggingActionStatethat indicates whether pointer movement exceeded the drag threshold before entering the dragging state (#569)initializeModelAdapterfunction for initializing customModelAdapterimplementations. Use this when providing a custom adapter (e.g., backed by localStorage, NgRx, or an external store). The function prepares the adapter for use with ng-diagram.initializeModelcontinues to create the defaultSignalModelAdapterfromPartial<Model>data. (#586)
🧩 Changed
- Custom Model example now uses
initializeModelAdapterand improvedLocalStorageModelAdapterwithPartial<Model>andModelChangestypes (#586)
🐛 Fixed
- Added explicit
ModelAdapterreturn type toinitializeModel()to prevent TypeScript errors when building withdeclaration: true(#573) (thanks @MeMeMax for reporting this 💪) - Edge labels vanishing permanently after model reinitialization (#585)
- Edge labels not being measured when loading a model with pre-existing edge points (e.g., from localStorage) (#586)
selectionChangedevent now fires after paste action, ensuring selection state stays in sync (#584)- Fixed compatibility issue with Angular 18 in default edge and minimap components (#587)