@pixerate/editor-react 0.50.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,10 @@
1
1
  import * as React$1 from 'react';
2
- import React__default from 'react';
2
+ import React__default, { RefObject } from 'react';
3
3
  import { AgentPresence } from '@pixerate/editor/agent';
4
4
  import * as _pixerate_editor_canvas from '@pixerate/editor/canvas';
5
- import { CanvasNode, CanvasEdge, IncrementalLayoutOptions, XYPosition, GraphDifferences, Rect, CanvasLayoutOptions, Side, PlaceBesideOptions, getCenteredNodePosition, CanvasDockingCallbacks, DockStrategy, ExplodeNodeOptions, CollapseNodeOptions, ExplosionSnapshot, ArrangeHistoryTarget, SnapGuidesOptions, NodeRectOptions, AutoLayoutOptions, GuideLine, CanvasArrangeAction, ArrangeShortcutBinding, CanvasScenesOptions, CanvasViewport, CanvasScenesStore, CanvasScene, FitViewportOptions, FreehandTool, FreehandStrokeStyle, FreehandStroke, FreehandDrawOptions, ShapeDescription, AutoLayoutMeasure, CanvasTokenOptions, AnimationHistoryTarget, Clock, AnimationLoopMode, AnimatableProperty, CanvasComponentSyncOptions, CanvasComponentsController, DiagramScene, DiagramLayoutOptions, DiagramSceneTheme, MermaidFlowNode, MermaidFlowEdge, DiagramLayout, DiagramSvgOptions } from '@pixerate/editor/canvas';
5
+ import { CanvasNode, CanvasEdge, IncrementalLayoutOptions, XYPosition, GraphDifferences, Rect, CanvasLayoutOptions, Side, PlaceBesideOptions, getCenteredNodePosition, CanvasDockingCallbacks, DockStrategy, ExplodeNodeOptions, CollapseNodeOptions, ExplosionSnapshot, ArrangeHistoryTarget, SnapGuidesOptions, NodeRectOptions, AutoLayoutOptions, GuideLine, CanvasArrangeAction, ArrangeShortcutBinding, CanvasScenesOptions, CanvasViewport, CanvasScenesStore, CanvasScene, FitViewportOptions, CanvasCaptureToolProviderOptions, FreehandTool, FreehandStrokeStyle, FreehandStroke, FreehandDrawOptions, ShapeDescription, AutoLayoutMeasure, CanvasTokenOptions, AnimationHistoryTarget, Clock, AnimationLoopMode, AnimatableProperty, CanvasComponentSyncOptions, CanvasComponentsController, DiagramScene, DiagramLayoutOptions, DiagramSceneTheme, MermaidFlowNode, MermaidFlowEdge, DiagramLayout, DiagramSvgOptions } from '@pixerate/editor/canvas';
6
6
  export { ANIMATABLE_PROPERTIES, ANIMATION_DATA_KEY, ANIMATION_EASING_LABELS, ANIMATION_EASING_PRESETS, ANIMATION_TIME_EPSILON, AUTO_LAYOUT_DATA_KEY, AddCanvasVariantOptions, AlignEdge, AnimatableProperty, AnimateNodeOptions, AnimationDocument, AnimationEasing, AnimationEasingPreset, AnimationEditError, AnimationEditErrorCode, AnimationFrame, AnimationHistoryTarget, AnimationKeyframe, AnimationKeyframeClipboard, AnimationLoopMode, AnimationMotionPath, AnimationOverrides, AnimationPlayer, AnimationPlayerOptions, AnimationPlayerState, AnimationTrack, AnimationValue, AnimationValueType, ArrangeShortcutBinding, AutoLayout, AutoLayoutAlignContent, AutoLayoutAlignCross, AutoLayoutAlignMain, AutoLayoutCellAlign, AutoLayoutChild, AutoLayoutConstraints, AutoLayoutGrid, AutoLayoutGridArea, AutoLayoutGridCell, AutoLayoutGridGeometry, AutoLayoutGridTrack, AutoLayoutHorizontalConstraint, AutoLayoutInsertTarget, AutoLayoutMeasure, AutoLayoutMode, AutoLayoutOptions, AutoLayoutPadding, AutoLayoutSize, AutoLayoutSizing, AutoLayoutSizingPair, AutoLayoutVerticalConstraint, BezierCommand, BezierPath, BezierPathInput, CANVAS_COMPONENT_DRAG_TYPE, CANVAS_GRADIENT_PRESETS, CANVAS_TOKEN_PROPERTIES, CHILD_LAYOUT_DATA_KEY, CONNECTION_LINE_TYPES, CSS_ANIMATION_PROPERTIES, CUBIC_BEZIER_PRESETS, CanvasAnimationController, CanvasAnimationControllerOptions, CanvasAnimationState, CanvasArrangeAction, CanvasAutoLayoutController, CanvasAutoLayoutControllerOptions, CanvasClipboardPayload, CanvasComponentInfo, CanvasComponentPropertyDef, CanvasComponentPropertyField, CanvasComponentResult, CanvasComponentSetInfo, CanvasComponentSyncOptions, CanvasComponentsController, CanvasComponentsControllerOptions, CanvasConnectionLineType, CanvasDockingCallbacks, CanvasDrawControllerOptions, CanvasEdge, CanvasGradientDef, CanvasHeightOptions, CanvasInstanceInfo, CanvasLayoutOptions, CanvasLinearGradient, CanvasNode, CanvasNodeUpdate, CanvasRadialGradient, CanvasScene, CanvasScenesState, CanvasScenesStore, CanvasTokenBindingInfo, CanvasTokenOptions, CanvasTokenProperty, CanvasViewport, Clock, CollapseNodeOptions, CombineShapeNodesOptions, CombineShapeNodesRefusal, CombineShapeNodesResult, ConnectorSnap, ConnectorSnapTarget, CssAnimationExport, CssExportOptions, CubicBezierEasing, CubicSegment, DEFAULT_ARRANGE_SHORTCUTS, DirectionalDisplacementOptions, DisplacementDirection, DistributeAxis, DistributeMode, DividePathsResult, DockStrategy, EllipseShape, ExplodeNodeOptions, ExplosionSnapshot, FanOutTrajectoryOptions, FitCubicsOptions, FitPathDataOptions, FlattenOptions, FreehandStroke, FreehandStrokeStyle, FreehandTool, GradientStop, GraphDifferences, GuideIndex, GuideLine, IncrementalLayoutOptions, KeyframeDragState, KeyframePatch, KeyframeRef, KeyframeSnap, MAX_KEYFRAME_REFS, ManualClock, MeasureGuide, MeasureSelectionOptions, MeasureSelectionResult, MultiPolygon, NodeAnimation, NodeTransition, OffsetPathOptions, OffsetShapeNodesOptions, OklabColor, OutlineShapeStrokesOptions, OutlineStrokeOptions, PathBooleanResult, PathCommand, PathOperand, PathOperandInput, PathOpsOptions, PathShape, PlaceBesideOptions, Point, PolygonBooleanOperation, PolygonBooleanOptions, PolygonFillRule, PolygonInput, PolygonOperand, PolygonPiece, PolygonRing, PolygonToPathOptions, PolygonWithHoles, Position, RESIZE_HANDLES, Rect, RectShape, ReflowDisplacementOptions, RegularPolygonShape, ResizeHandle, SHAPE_DATA_KEY, SHAPE_KINDS, SHAPE_NODE_TYPE, SHAPE_OPERATIONS, SetCanvasVariantPropertiesOptions, ShapeDescription, ShapeKind, ShapeNodePolygonOptions, ShapeOperation, ShapePaint, ShapePathEditOperation, ShapePathEditRefusal, ShapePathEditResult, ShapeRenderData, ShapeSize, Side, SizeDimension, SnapGuidesOptions, SnapNodeResizeOptions, SnapNodeResizeResult, SnapResizeOptions, SnapResizeResult, SnapResult, SpringEasing, StarShape, StrokeCap, StrokeJoin, StrokeToShapeNodeOptions, SvgGradientDef, SvgGradientStop, TOKEN_BINDINGS_DATA_KEY, TOKEN_MODES_DATA_KEY, TimelineKeyframe, TimelineRow, TrajectoryFunction, TrajectoryPoint, WebAnimationSpec, XYPosition, ZOrderOperation, addCanvasVariant, addKeyframesAtTime, alignNodes, angleToSvgLinearCoords, animateNode, applyAnimation, applyAnimationOverrides, applyConstraints, applyNodeUpdates, applyShapeCombination, applyShapeReplacement, bezierPathArea, bezierPathBounds, bezierPathLength, bezierPathPointAtLength, bezierPathSignedArea, bezierPathToSvg, bindCanvasComponentProperty, bindCanvasToken, blendLayout, boundsOf, calculateDagreReflowDisplacement, calculateDirectionalDisplacement, canCombineShapeNodes, canOffsetShapeNodes, canOutlineShapeNodeStrokes, canvasHeight, centerNodes, centre, clampAnimationValue, clampLayoutSize, combineCanvasComponentsAsVariants, combineShapeNodes, computeNodesBoundingBox, computeSnapGuides, connectedOnly, copyKeyframes, countPathSegments, createAnimationPlayer, createBezierTrajectory, createCanvasAnimationController, createCanvasAutoLayoutController, createCanvasComponent, createCanvasComponentsController, createCanvasDrawController, createCanvasInstance, createCanvasScenesStore, createDefaultStrokeStyle, createFanOutTrajectory, createGuideIndex, createNodeGuideIndex, cubicBezierAt, cubicPointAt, cubicsToPathData, dashContours, defaultEasing, deleteKeyframes, detachCanvasInstance, detachTokenBindings, distanceToBezierPath, distributeNodes, dividePaths, dividePolygons, easingFromInfluence, easingLabel, easingToCss, ensureLayout, estimateCanvasHeight, estimateNodeSize, evaluateAnimation, evaluateEasing, evaluateTrack, excludePaths, exportCssAnimation, findConnectorSnap, findStrokesAtPoint, fitCubicRun, fitCubics, fitFreehandPath, fitPathData, fitViewportToNodes, fitViewportToRect, flattenSvgPath, flowSide, formatAnimationTime, formatOklab, getAbsolutePosition, getAnimatableProperty, getAnimatedProperties, getAnimatedValue, getAnimationDuration, getAnimationTrack, getAutoLayout, getAutoLayoutGrid, getAutoLayoutInsertTarget, getBindableTokenProperties, getCanvasComponentDragId, getCanvasTokenProperty, getCenteredNodePosition, getChildLayout, getComponentSourceId, getCssPropertyAnimations, getEffectiveTokenModes, getFlowChildren, getInstanceData, getInstanceStatus, getKeyframeTimes, getLayoutParent, getLayoutSizing, getLayoutedNodes, getNextVariantValues, getNodeAnimation, getNodeOverrides, getNodeRect, getNodeShape, getNodeSize, getNodeTokenBindings, getNodeTokenModes, getResizingNodeRect, getShapeRenderData, getShapeSvg, getTimelineRows, getTimelineTicks, getTokenPropertyScope, getTokensForProperty, gradientToSvgDef, handlePoint, hasVisibleStroke, inferResizeHandle, inspectCanvasInstance, inspectNodeTokens, interpolateAnimationValue, intersectPaths, intersectPolygons, invertNodeUpdates, isAnimationEasing, isAnimationKeyframe, isAutoLayoutFrame, isCanvasComponent, isCanvasComponentSet, isCanvasGradient, isCanvasInstance, isCssExportExact, isEventFromTextInput, isKeyframeSelected, isLocked, isMeasureModifierHeld, isNodeAnimated, isShapeDescription, isShapeNode, isStraightCubic, isValidCanvasNode, isValidUrl, layoutAll, layoutBounds, layoutFrame, layoutUp, layoutUpMany, linearPositionTrajectory, linearTrajectory, listCanvasComponents, lockNodes, makeSizingCoherent, matchArrangeShortcut, matchSize, measureBetween, measureLabel, measureSelection, measureToLine, mergeNodeUpdates, mixColorsOklab, moveKeyframes, moveLayoutChild, multiPolygonArea, multiPolygonBounds, nearestHandlePositions, normalizeBezierPath, normalizeKeyframes, offsetPath, offsetShapeNodes, oklabToRgb, oppositePosition, outlineShapeNodeStrokes, outlineStroke, overlaps, parseCanvasClipboardData, parseCanvasScenes, parseCssEasing, parseCssGradient, parseKeyframeClipboard, parseOklab, parseSvgPath, pasteKeyframes, pathBoolean, placeBeside, playWebAnimations, pointInBezierPath, pointInMultiPolygon, pointInRings, polygonArea, polygonBoolean, polygonToSvgPath, positionToSide, pruneCanvasTokenModes, pushCanvasInstanceOverrides, readAnimatableValue, readNodeStyleProperty, readStyleSize, realClock, recordAnimationChanges, relayoutUpdates, remapPastedNodes, removeCanvasVariant, removeTrack, renameCanvasVariantProperty, renameCanvasVariantValue, reorderNodes, repositionNodesTo, resetCanvasInstanceOverrides, resizeHandleAxes, resolveCanvasGradient, resolveCanvasTokens, resolveEasing, resolvePadding, restoreCanvasMainComponent, revertShapeCombination, rgbToOklab, ringSignedArea, runMultiNodeTransition, sampleAnimationFrames, scaleKeyframes, serializeCanvasNodes, setCanvasComponentProperty, setCanvasInstanceProperties, setCanvasTokenMode, setCanvasVariantProperties, setKeyframe, setKeyframeEasing, setMotionPath, setTrackEnabled, shapeNodeToBezierPath, shapeNodeToPolygon, shapeToBezierPath, shapeToPolygon, sideToPosition, simplifyRing, snapKeyframeDelta, snapNodeDrag, snapNodeResize, snapResize, snapTimeToFrame, snapToGrid, springAt, streamlinePoints, strokeOutlineRings, strokePointsToPathData, strokeToShapeNode, subtractPaths, subtractPolygons, swapCanvasInstance, syncAllCanvasInstances, syncCanvasComponents, syncCanvasInstance, timeToX, toBezierPath, toWebAnimations, toggleLockNodes, transformBezierPath, unionPolygons, unitePaths, unlockNodes, updateKeyframe, withNodeAnimation, withStyleSize, wouldCreateComponentCycle, wrapAnimationTime, writeNodeStyleProperty, xToTime, xorPolygons } from '@pixerate/editor/canvas';
7
+ import { AgentToolProvider } from '@pixerate/editor/tools';
7
8
  import { TokenState, TokenStore, TokenModeContext } from '@pixerate/editor/tokens';
8
9
  import { DiagramControllerOptions, DiagramController, DiagramState, MermaidDocument, EditOp, DiagramActionResult, DiagramPlacement, PresenceClock, PresenceStore, DiagramDirector, PresenceState } from '@pixerate/editor/diagram';
9
10
 
@@ -284,6 +285,24 @@ declare function useCanvasScenes(options?: UseCanvasScenesOptions): {
284
285
  };
285
286
  type CanvasScenes = ReturnType<typeof useCanvasScenes>;
286
287
 
288
+ interface UseCanvasCaptureOptions<TNode extends CanvasNode = CanvasNode> extends Omit<CanvasCaptureToolProviderOptions<TNode>, 'element'> {
289
+ /** The flow's root element (`.react-flow`): a ref, the element, or a getter. */
290
+ element: RefObject<HTMLElement | null> | HTMLElement | null | undefined | (() => HTMLElement | null | undefined);
291
+ }
292
+ /**
293
+ * The `capture_view` agent tool for a React Flow canvas: screenshots of the viewport, all
294
+ * content, the selection, nodes by id or a rect in canvas units. Register the result with
295
+ * `useAgentToolProvider`. The provider stays the same object across renders (it reads the
296
+ * latest options on each call) and changes only with `id` / `namespace`.
297
+ *
298
+ * ```tsx
299
+ * const flow = useReactFlow();
300
+ * const capture = useCanvasCapture({ element: paneRef, getViewport: flow.getViewport, getNodes: flow.getNodes, namespace: 'canvas' });
301
+ * useAgentToolProvider(registry, capture);
302
+ * ```
303
+ */
304
+ declare function useCanvasCapture<TNode extends CanvasNode = CanvasNode>(options: UseCanvasCaptureOptions<TNode>): AgentToolProvider;
305
+
287
306
  interface CanvasGuidesLayerProps {
288
307
  /** Guide segments in flow coordinates (e.g. `arrange.guides`). */
289
308
  guides: GuideLine[];
@@ -955,4 +974,4 @@ interface DiagramPresenceLayerProps {
955
974
  /** Agent cursors and their notes over a canvas, from a `PresenceStore` (see `DiagramDirector`). */
956
975
  declare function DiagramPresenceLayer({ presence, viewport, className }: DiagramPresenceLayerProps): React__default.JSX.Element | null;
957
976
 
958
- export { AgentPresenceLayer, type AgentPresenceLayerProps, AnimationTimeline, type AnimationTimelineProps, type CanvasAnimation, type CanvasArrange, type CanvasAutoLayout, type CanvasComponents, CanvasComponentsPanel, type CanvasComponentsPanelActions, type CanvasComponentsPanelProps, type CanvasDraw, type CanvasDrawActions, CanvasDrawLayer, type CanvasDrawLayerProps, type CanvasDrawState, type CanvasGraphTarget, CanvasGuidesLayer, type CanvasGuidesLayerProps, CanvasInstanceInspector, type CanvasInstanceInspectorActions, type CanvasInstanceInspectorProps, type CanvasMeasure, type CanvasScenes, type CanvasTokens, DiagramPresenceLayer, type DiagramPresenceLayerProps, MermaidDiagramGroup, MermaidDiagramNode, type MermaidDiagramNodeData, type MermaidDiagramNodeProps, MermaidFamilyScene, type MermaidFamilySceneProps, MermaidThumbnail, type MermaidThumbnailProps, ShapeNode, type ShapeNodeProps, TokenBindingPicker, type TokenBindingPickerProps, TokenModeSwitcher, type TokenModeSwitcherProps, type UseCanvasAnimationOptions, type UseCanvasArrangeOptions, type UseCanvasArrangeShortcutsOptions, type UseCanvasAutoLayoutOptions, type UseCanvasClipboardOptions, type UseCanvasComponentsOptions, type UseCanvasDockingOptions, type UseCanvasDrawOptions, type UseCanvasGraphOptions, type UseCanvasLayoutOptions, type UseCanvasMeasureOptions, type UseCanvasScenesOptions, type UseCanvasShortcutsOptions, type UseCanvasTokensOptions, type UseDiagramDirectorOptions, type UseMermaidDiagramOptions, type UseMermaidDiagramResult, type UseMermaidStreamOptions, type UseMermaidStreamResult, type UseStreamingCanvasOptions, mermaidNodeStyle, useCanvasAnimation, useCanvasArrange, useCanvasArrangeShortcuts, useCanvasAutoLayout, useCanvasClipboard, useCanvasComponents, useCanvasDocking, useCanvasDraw, useCanvasExplosion, useCanvasGraph, useCanvasLayout, useCanvasMeasure, useCanvasScenes, useCanvasShortcuts, useCanvasTokens, useDiagramDirector, useDiagramState, useMermaidDiagram, useMermaidStream, usePresenceState, useStreamingCanvas };
977
+ export { AgentPresenceLayer, type AgentPresenceLayerProps, AnimationTimeline, type AnimationTimelineProps, type CanvasAnimation, type CanvasArrange, type CanvasAutoLayout, type CanvasComponents, CanvasComponentsPanel, type CanvasComponentsPanelActions, type CanvasComponentsPanelProps, type CanvasDraw, type CanvasDrawActions, CanvasDrawLayer, type CanvasDrawLayerProps, type CanvasDrawState, type CanvasGraphTarget, CanvasGuidesLayer, type CanvasGuidesLayerProps, CanvasInstanceInspector, type CanvasInstanceInspectorActions, type CanvasInstanceInspectorProps, type CanvasMeasure, type CanvasScenes, type CanvasTokens, DiagramPresenceLayer, type DiagramPresenceLayerProps, MermaidDiagramGroup, MermaidDiagramNode, type MermaidDiagramNodeData, type MermaidDiagramNodeProps, MermaidFamilyScene, type MermaidFamilySceneProps, MermaidThumbnail, type MermaidThumbnailProps, ShapeNode, type ShapeNodeProps, TokenBindingPicker, type TokenBindingPickerProps, TokenModeSwitcher, type TokenModeSwitcherProps, type UseCanvasAnimationOptions, type UseCanvasArrangeOptions, type UseCanvasArrangeShortcutsOptions, type UseCanvasAutoLayoutOptions, type UseCanvasCaptureOptions, type UseCanvasClipboardOptions, type UseCanvasComponentsOptions, type UseCanvasDockingOptions, type UseCanvasDrawOptions, type UseCanvasGraphOptions, type UseCanvasLayoutOptions, type UseCanvasMeasureOptions, type UseCanvasScenesOptions, type UseCanvasShortcutsOptions, type UseCanvasTokensOptions, type UseDiagramDirectorOptions, type UseMermaidDiagramOptions, type UseMermaidDiagramResult, type UseMermaidStreamOptions, type UseMermaidStreamResult, type UseStreamingCanvasOptions, mermaidNodeStyle, useCanvasAnimation, useCanvasArrange, useCanvasArrangeShortcuts, useCanvasAutoLayout, useCanvasCapture, useCanvasClipboard, useCanvasComponents, useCanvasDocking, useCanvasDraw, useCanvasExplosion, useCanvasGraph, useCanvasLayout, useCanvasMeasure, useCanvasScenes, useCanvasShortcuts, useCanvasTokens, useDiagramDirector, useDiagramState, useMermaidDiagram, useMermaidStream, usePresenceState, useStreamingCanvas };
@@ -1,9 +1,10 @@
1
1
  import * as React$1 from 'react';
2
- import React__default from 'react';
2
+ import React__default, { RefObject } from 'react';
3
3
  import { AgentPresence } from '@pixerate/editor/agent';
4
4
  import * as _pixerate_editor_canvas from '@pixerate/editor/canvas';
5
- import { CanvasNode, CanvasEdge, IncrementalLayoutOptions, XYPosition, GraphDifferences, Rect, CanvasLayoutOptions, Side, PlaceBesideOptions, getCenteredNodePosition, CanvasDockingCallbacks, DockStrategy, ExplodeNodeOptions, CollapseNodeOptions, ExplosionSnapshot, ArrangeHistoryTarget, SnapGuidesOptions, NodeRectOptions, AutoLayoutOptions, GuideLine, CanvasArrangeAction, ArrangeShortcutBinding, CanvasScenesOptions, CanvasViewport, CanvasScenesStore, CanvasScene, FitViewportOptions, FreehandTool, FreehandStrokeStyle, FreehandStroke, FreehandDrawOptions, ShapeDescription, AutoLayoutMeasure, CanvasTokenOptions, AnimationHistoryTarget, Clock, AnimationLoopMode, AnimatableProperty, CanvasComponentSyncOptions, CanvasComponentsController, DiagramScene, DiagramLayoutOptions, DiagramSceneTheme, MermaidFlowNode, MermaidFlowEdge, DiagramLayout, DiagramSvgOptions } from '@pixerate/editor/canvas';
5
+ import { CanvasNode, CanvasEdge, IncrementalLayoutOptions, XYPosition, GraphDifferences, Rect, CanvasLayoutOptions, Side, PlaceBesideOptions, getCenteredNodePosition, CanvasDockingCallbacks, DockStrategy, ExplodeNodeOptions, CollapseNodeOptions, ExplosionSnapshot, ArrangeHistoryTarget, SnapGuidesOptions, NodeRectOptions, AutoLayoutOptions, GuideLine, CanvasArrangeAction, ArrangeShortcutBinding, CanvasScenesOptions, CanvasViewport, CanvasScenesStore, CanvasScene, FitViewportOptions, CanvasCaptureToolProviderOptions, FreehandTool, FreehandStrokeStyle, FreehandStroke, FreehandDrawOptions, ShapeDescription, AutoLayoutMeasure, CanvasTokenOptions, AnimationHistoryTarget, Clock, AnimationLoopMode, AnimatableProperty, CanvasComponentSyncOptions, CanvasComponentsController, DiagramScene, DiagramLayoutOptions, DiagramSceneTheme, MermaidFlowNode, MermaidFlowEdge, DiagramLayout, DiagramSvgOptions } from '@pixerate/editor/canvas';
6
6
  export { ANIMATABLE_PROPERTIES, ANIMATION_DATA_KEY, ANIMATION_EASING_LABELS, ANIMATION_EASING_PRESETS, ANIMATION_TIME_EPSILON, AUTO_LAYOUT_DATA_KEY, AddCanvasVariantOptions, AlignEdge, AnimatableProperty, AnimateNodeOptions, AnimationDocument, AnimationEasing, AnimationEasingPreset, AnimationEditError, AnimationEditErrorCode, AnimationFrame, AnimationHistoryTarget, AnimationKeyframe, AnimationKeyframeClipboard, AnimationLoopMode, AnimationMotionPath, AnimationOverrides, AnimationPlayer, AnimationPlayerOptions, AnimationPlayerState, AnimationTrack, AnimationValue, AnimationValueType, ArrangeShortcutBinding, AutoLayout, AutoLayoutAlignContent, AutoLayoutAlignCross, AutoLayoutAlignMain, AutoLayoutCellAlign, AutoLayoutChild, AutoLayoutConstraints, AutoLayoutGrid, AutoLayoutGridArea, AutoLayoutGridCell, AutoLayoutGridGeometry, AutoLayoutGridTrack, AutoLayoutHorizontalConstraint, AutoLayoutInsertTarget, AutoLayoutMeasure, AutoLayoutMode, AutoLayoutOptions, AutoLayoutPadding, AutoLayoutSize, AutoLayoutSizing, AutoLayoutSizingPair, AutoLayoutVerticalConstraint, BezierCommand, BezierPath, BezierPathInput, CANVAS_COMPONENT_DRAG_TYPE, CANVAS_GRADIENT_PRESETS, CANVAS_TOKEN_PROPERTIES, CHILD_LAYOUT_DATA_KEY, CONNECTION_LINE_TYPES, CSS_ANIMATION_PROPERTIES, CUBIC_BEZIER_PRESETS, CanvasAnimationController, CanvasAnimationControllerOptions, CanvasAnimationState, CanvasArrangeAction, CanvasAutoLayoutController, CanvasAutoLayoutControllerOptions, CanvasClipboardPayload, CanvasComponentInfo, CanvasComponentPropertyDef, CanvasComponentPropertyField, CanvasComponentResult, CanvasComponentSetInfo, CanvasComponentSyncOptions, CanvasComponentsController, CanvasComponentsControllerOptions, CanvasConnectionLineType, CanvasDockingCallbacks, CanvasDrawControllerOptions, CanvasEdge, CanvasGradientDef, CanvasHeightOptions, CanvasInstanceInfo, CanvasLayoutOptions, CanvasLinearGradient, CanvasNode, CanvasNodeUpdate, CanvasRadialGradient, CanvasScene, CanvasScenesState, CanvasScenesStore, CanvasTokenBindingInfo, CanvasTokenOptions, CanvasTokenProperty, CanvasViewport, Clock, CollapseNodeOptions, CombineShapeNodesOptions, CombineShapeNodesRefusal, CombineShapeNodesResult, ConnectorSnap, ConnectorSnapTarget, CssAnimationExport, CssExportOptions, CubicBezierEasing, CubicSegment, DEFAULT_ARRANGE_SHORTCUTS, DirectionalDisplacementOptions, DisplacementDirection, DistributeAxis, DistributeMode, DividePathsResult, DockStrategy, EllipseShape, ExplodeNodeOptions, ExplosionSnapshot, FanOutTrajectoryOptions, FitCubicsOptions, FitPathDataOptions, FlattenOptions, FreehandStroke, FreehandStrokeStyle, FreehandTool, GradientStop, GraphDifferences, GuideIndex, GuideLine, IncrementalLayoutOptions, KeyframeDragState, KeyframePatch, KeyframeRef, KeyframeSnap, MAX_KEYFRAME_REFS, ManualClock, MeasureGuide, MeasureSelectionOptions, MeasureSelectionResult, MultiPolygon, NodeAnimation, NodeTransition, OffsetPathOptions, OffsetShapeNodesOptions, OklabColor, OutlineShapeStrokesOptions, OutlineStrokeOptions, PathBooleanResult, PathCommand, PathOperand, PathOperandInput, PathOpsOptions, PathShape, PlaceBesideOptions, Point, PolygonBooleanOperation, PolygonBooleanOptions, PolygonFillRule, PolygonInput, PolygonOperand, PolygonPiece, PolygonRing, PolygonToPathOptions, PolygonWithHoles, Position, RESIZE_HANDLES, Rect, RectShape, ReflowDisplacementOptions, RegularPolygonShape, ResizeHandle, SHAPE_DATA_KEY, SHAPE_KINDS, SHAPE_NODE_TYPE, SHAPE_OPERATIONS, SetCanvasVariantPropertiesOptions, ShapeDescription, ShapeKind, ShapeNodePolygonOptions, ShapeOperation, ShapePaint, ShapePathEditOperation, ShapePathEditRefusal, ShapePathEditResult, ShapeRenderData, ShapeSize, Side, SizeDimension, SnapGuidesOptions, SnapNodeResizeOptions, SnapNodeResizeResult, SnapResizeOptions, SnapResizeResult, SnapResult, SpringEasing, StarShape, StrokeCap, StrokeJoin, StrokeToShapeNodeOptions, SvgGradientDef, SvgGradientStop, TOKEN_BINDINGS_DATA_KEY, TOKEN_MODES_DATA_KEY, TimelineKeyframe, TimelineRow, TrajectoryFunction, TrajectoryPoint, WebAnimationSpec, XYPosition, ZOrderOperation, addCanvasVariant, addKeyframesAtTime, alignNodes, angleToSvgLinearCoords, animateNode, applyAnimation, applyAnimationOverrides, applyConstraints, applyNodeUpdates, applyShapeCombination, applyShapeReplacement, bezierPathArea, bezierPathBounds, bezierPathLength, bezierPathPointAtLength, bezierPathSignedArea, bezierPathToSvg, bindCanvasComponentProperty, bindCanvasToken, blendLayout, boundsOf, calculateDagreReflowDisplacement, calculateDirectionalDisplacement, canCombineShapeNodes, canOffsetShapeNodes, canOutlineShapeNodeStrokes, canvasHeight, centerNodes, centre, clampAnimationValue, clampLayoutSize, combineCanvasComponentsAsVariants, combineShapeNodes, computeNodesBoundingBox, computeSnapGuides, connectedOnly, copyKeyframes, countPathSegments, createAnimationPlayer, createBezierTrajectory, createCanvasAnimationController, createCanvasAutoLayoutController, createCanvasComponent, createCanvasComponentsController, createCanvasDrawController, createCanvasInstance, createCanvasScenesStore, createDefaultStrokeStyle, createFanOutTrajectory, createGuideIndex, createNodeGuideIndex, cubicBezierAt, cubicPointAt, cubicsToPathData, dashContours, defaultEasing, deleteKeyframes, detachCanvasInstance, detachTokenBindings, distanceToBezierPath, distributeNodes, dividePaths, dividePolygons, easingFromInfluence, easingLabel, easingToCss, ensureLayout, estimateCanvasHeight, estimateNodeSize, evaluateAnimation, evaluateEasing, evaluateTrack, excludePaths, exportCssAnimation, findConnectorSnap, findStrokesAtPoint, fitCubicRun, fitCubics, fitFreehandPath, fitPathData, fitViewportToNodes, fitViewportToRect, flattenSvgPath, flowSide, formatAnimationTime, formatOklab, getAbsolutePosition, getAnimatableProperty, getAnimatedProperties, getAnimatedValue, getAnimationDuration, getAnimationTrack, getAutoLayout, getAutoLayoutGrid, getAutoLayoutInsertTarget, getBindableTokenProperties, getCanvasComponentDragId, getCanvasTokenProperty, getCenteredNodePosition, getChildLayout, getComponentSourceId, getCssPropertyAnimations, getEffectiveTokenModes, getFlowChildren, getInstanceData, getInstanceStatus, getKeyframeTimes, getLayoutParent, getLayoutSizing, getLayoutedNodes, getNextVariantValues, getNodeAnimation, getNodeOverrides, getNodeRect, getNodeShape, getNodeSize, getNodeTokenBindings, getNodeTokenModes, getResizingNodeRect, getShapeRenderData, getShapeSvg, getTimelineRows, getTimelineTicks, getTokenPropertyScope, getTokensForProperty, gradientToSvgDef, handlePoint, hasVisibleStroke, inferResizeHandle, inspectCanvasInstance, inspectNodeTokens, interpolateAnimationValue, intersectPaths, intersectPolygons, invertNodeUpdates, isAnimationEasing, isAnimationKeyframe, isAutoLayoutFrame, isCanvasComponent, isCanvasComponentSet, isCanvasGradient, isCanvasInstance, isCssExportExact, isEventFromTextInput, isKeyframeSelected, isLocked, isMeasureModifierHeld, isNodeAnimated, isShapeDescription, isShapeNode, isStraightCubic, isValidCanvasNode, isValidUrl, layoutAll, layoutBounds, layoutFrame, layoutUp, layoutUpMany, linearPositionTrajectory, linearTrajectory, listCanvasComponents, lockNodes, makeSizingCoherent, matchArrangeShortcut, matchSize, measureBetween, measureLabel, measureSelection, measureToLine, mergeNodeUpdates, mixColorsOklab, moveKeyframes, moveLayoutChild, multiPolygonArea, multiPolygonBounds, nearestHandlePositions, normalizeBezierPath, normalizeKeyframes, offsetPath, offsetShapeNodes, oklabToRgb, oppositePosition, outlineShapeNodeStrokes, outlineStroke, overlaps, parseCanvasClipboardData, parseCanvasScenes, parseCssEasing, parseCssGradient, parseKeyframeClipboard, parseOklab, parseSvgPath, pasteKeyframes, pathBoolean, placeBeside, playWebAnimations, pointInBezierPath, pointInMultiPolygon, pointInRings, polygonArea, polygonBoolean, polygonToSvgPath, positionToSide, pruneCanvasTokenModes, pushCanvasInstanceOverrides, readAnimatableValue, readNodeStyleProperty, readStyleSize, realClock, recordAnimationChanges, relayoutUpdates, remapPastedNodes, removeCanvasVariant, removeTrack, renameCanvasVariantProperty, renameCanvasVariantValue, reorderNodes, repositionNodesTo, resetCanvasInstanceOverrides, resizeHandleAxes, resolveCanvasGradient, resolveCanvasTokens, resolveEasing, resolvePadding, restoreCanvasMainComponent, revertShapeCombination, rgbToOklab, ringSignedArea, runMultiNodeTransition, sampleAnimationFrames, scaleKeyframes, serializeCanvasNodes, setCanvasComponentProperty, setCanvasInstanceProperties, setCanvasTokenMode, setCanvasVariantProperties, setKeyframe, setKeyframeEasing, setMotionPath, setTrackEnabled, shapeNodeToBezierPath, shapeNodeToPolygon, shapeToBezierPath, shapeToPolygon, sideToPosition, simplifyRing, snapKeyframeDelta, snapNodeDrag, snapNodeResize, snapResize, snapTimeToFrame, snapToGrid, springAt, streamlinePoints, strokeOutlineRings, strokePointsToPathData, strokeToShapeNode, subtractPaths, subtractPolygons, swapCanvasInstance, syncAllCanvasInstances, syncCanvasComponents, syncCanvasInstance, timeToX, toBezierPath, toWebAnimations, toggleLockNodes, transformBezierPath, unionPolygons, unitePaths, unlockNodes, updateKeyframe, withNodeAnimation, withStyleSize, wouldCreateComponentCycle, wrapAnimationTime, writeNodeStyleProperty, xToTime, xorPolygons } from '@pixerate/editor/canvas';
7
+ import { AgentToolProvider } from '@pixerate/editor/tools';
7
8
  import { TokenState, TokenStore, TokenModeContext } from '@pixerate/editor/tokens';
8
9
  import { DiagramControllerOptions, DiagramController, DiagramState, MermaidDocument, EditOp, DiagramActionResult, DiagramPlacement, PresenceClock, PresenceStore, DiagramDirector, PresenceState } from '@pixerate/editor/diagram';
9
10
 
@@ -284,6 +285,24 @@ declare function useCanvasScenes(options?: UseCanvasScenesOptions): {
284
285
  };
285
286
  type CanvasScenes = ReturnType<typeof useCanvasScenes>;
286
287
 
288
+ interface UseCanvasCaptureOptions<TNode extends CanvasNode = CanvasNode> extends Omit<CanvasCaptureToolProviderOptions<TNode>, 'element'> {
289
+ /** The flow's root element (`.react-flow`): a ref, the element, or a getter. */
290
+ element: RefObject<HTMLElement | null> | HTMLElement | null | undefined | (() => HTMLElement | null | undefined);
291
+ }
292
+ /**
293
+ * The `capture_view` agent tool for a React Flow canvas: screenshots of the viewport, all
294
+ * content, the selection, nodes by id or a rect in canvas units. Register the result with
295
+ * `useAgentToolProvider`. The provider stays the same object across renders (it reads the
296
+ * latest options on each call) and changes only with `id` / `namespace`.
297
+ *
298
+ * ```tsx
299
+ * const flow = useReactFlow();
300
+ * const capture = useCanvasCapture({ element: paneRef, getViewport: flow.getViewport, getNodes: flow.getNodes, namespace: 'canvas' });
301
+ * useAgentToolProvider(registry, capture);
302
+ * ```
303
+ */
304
+ declare function useCanvasCapture<TNode extends CanvasNode = CanvasNode>(options: UseCanvasCaptureOptions<TNode>): AgentToolProvider;
305
+
287
306
  interface CanvasGuidesLayerProps {
288
307
  /** Guide segments in flow coordinates (e.g. `arrange.guides`). */
289
308
  guides: GuideLine[];
@@ -955,4 +974,4 @@ interface DiagramPresenceLayerProps {
955
974
  /** Agent cursors and their notes over a canvas, from a `PresenceStore` (see `DiagramDirector`). */
956
975
  declare function DiagramPresenceLayer({ presence, viewport, className }: DiagramPresenceLayerProps): React__default.JSX.Element | null;
957
976
 
958
- export { AgentPresenceLayer, type AgentPresenceLayerProps, AnimationTimeline, type AnimationTimelineProps, type CanvasAnimation, type CanvasArrange, type CanvasAutoLayout, type CanvasComponents, CanvasComponentsPanel, type CanvasComponentsPanelActions, type CanvasComponentsPanelProps, type CanvasDraw, type CanvasDrawActions, CanvasDrawLayer, type CanvasDrawLayerProps, type CanvasDrawState, type CanvasGraphTarget, CanvasGuidesLayer, type CanvasGuidesLayerProps, CanvasInstanceInspector, type CanvasInstanceInspectorActions, type CanvasInstanceInspectorProps, type CanvasMeasure, type CanvasScenes, type CanvasTokens, DiagramPresenceLayer, type DiagramPresenceLayerProps, MermaidDiagramGroup, MermaidDiagramNode, type MermaidDiagramNodeData, type MermaidDiagramNodeProps, MermaidFamilyScene, type MermaidFamilySceneProps, MermaidThumbnail, type MermaidThumbnailProps, ShapeNode, type ShapeNodeProps, TokenBindingPicker, type TokenBindingPickerProps, TokenModeSwitcher, type TokenModeSwitcherProps, type UseCanvasAnimationOptions, type UseCanvasArrangeOptions, type UseCanvasArrangeShortcutsOptions, type UseCanvasAutoLayoutOptions, type UseCanvasClipboardOptions, type UseCanvasComponentsOptions, type UseCanvasDockingOptions, type UseCanvasDrawOptions, type UseCanvasGraphOptions, type UseCanvasLayoutOptions, type UseCanvasMeasureOptions, type UseCanvasScenesOptions, type UseCanvasShortcutsOptions, type UseCanvasTokensOptions, type UseDiagramDirectorOptions, type UseMermaidDiagramOptions, type UseMermaidDiagramResult, type UseMermaidStreamOptions, type UseMermaidStreamResult, type UseStreamingCanvasOptions, mermaidNodeStyle, useCanvasAnimation, useCanvasArrange, useCanvasArrangeShortcuts, useCanvasAutoLayout, useCanvasClipboard, useCanvasComponents, useCanvasDocking, useCanvasDraw, useCanvasExplosion, useCanvasGraph, useCanvasLayout, useCanvasMeasure, useCanvasScenes, useCanvasShortcuts, useCanvasTokens, useDiagramDirector, useDiagramState, useMermaidDiagram, useMermaidStream, usePresenceState, useStreamingCanvas };
977
+ export { AgentPresenceLayer, type AgentPresenceLayerProps, AnimationTimeline, type AnimationTimelineProps, type CanvasAnimation, type CanvasArrange, type CanvasAutoLayout, type CanvasComponents, CanvasComponentsPanel, type CanvasComponentsPanelActions, type CanvasComponentsPanelProps, type CanvasDraw, type CanvasDrawActions, CanvasDrawLayer, type CanvasDrawLayerProps, type CanvasDrawState, type CanvasGraphTarget, CanvasGuidesLayer, type CanvasGuidesLayerProps, CanvasInstanceInspector, type CanvasInstanceInspectorActions, type CanvasInstanceInspectorProps, type CanvasMeasure, type CanvasScenes, type CanvasTokens, DiagramPresenceLayer, type DiagramPresenceLayerProps, MermaidDiagramGroup, MermaidDiagramNode, type MermaidDiagramNodeData, type MermaidDiagramNodeProps, MermaidFamilyScene, type MermaidFamilySceneProps, MermaidThumbnail, type MermaidThumbnailProps, ShapeNode, type ShapeNodeProps, TokenBindingPicker, type TokenBindingPickerProps, TokenModeSwitcher, type TokenModeSwitcherProps, type UseCanvasAnimationOptions, type UseCanvasArrangeOptions, type UseCanvasArrangeShortcutsOptions, type UseCanvasAutoLayoutOptions, type UseCanvasCaptureOptions, type UseCanvasClipboardOptions, type UseCanvasComponentsOptions, type UseCanvasDockingOptions, type UseCanvasDrawOptions, type UseCanvasGraphOptions, type UseCanvasLayoutOptions, type UseCanvasMeasureOptions, type UseCanvasScenesOptions, type UseCanvasShortcutsOptions, type UseCanvasTokensOptions, type UseDiagramDirectorOptions, type UseMermaidDiagramOptions, type UseMermaidDiagramResult, type UseMermaidStreamOptions, type UseMermaidStreamResult, type UseStreamingCanvasOptions, mermaidNodeStyle, useCanvasAnimation, useCanvasArrange, useCanvasArrangeShortcuts, useCanvasAutoLayout, useCanvasCapture, useCanvasClipboard, useCanvasComponents, useCanvasDocking, useCanvasDraw, useCanvasExplosion, useCanvasGraph, useCanvasLayout, useCanvasMeasure, useCanvasScenes, useCanvasShortcuts, useCanvasTokens, useDiagramDirector, useDiagramState, useMermaidDiagram, useMermaidStream, usePresenceState, useStreamingCanvas };
@@ -893,6 +893,34 @@ function useCanvasScenes(options = {}) {
893
893
  };
894
894
  }
895
895
 
896
+ // src/canvas/useCanvasCapture.ts
897
+ import { useMemo as useMemo3, useRef as useRef7 } from "react";
898
+ import {
899
+ canvasNodeCaptureRect,
900
+ createCanvasCaptureToolProvider
901
+ } from "@pixerate/editor/canvas";
902
+ import { rasterizeElement } from "@pixerate/editor/tools";
903
+ function useCanvasCapture(options) {
904
+ const optionsRef = useRef7(options);
905
+ optionsRef.current = options;
906
+ return useMemo3(() => {
907
+ const latest = () => optionsRef.current;
908
+ return createCanvasCaptureToolProvider({
909
+ ...options,
910
+ element: () => {
911
+ const el = latest().element;
912
+ if (typeof el === "function") return el();
913
+ if (el && "current" in el) return el.current;
914
+ return el;
915
+ },
916
+ getViewport: () => latest().getViewport(),
917
+ getNodes: () => latest().getNodes(),
918
+ getNodeRect: (node, nodes) => (latest().getNodeRect ?? canvasNodeCaptureRect)(node, nodes),
919
+ rasterize: (element, raster) => (latest().rasterize ?? rasterizeElement)(element, raster)
920
+ });
921
+ }, [options.id, options.namespace]);
922
+ }
923
+
896
924
  // src/canvas/CanvasGuidesLayer.tsx
897
925
  import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
898
926
  var DEFAULT_VIEWPORT = { x: 0, y: 0, zoom: 1 };
@@ -977,18 +1005,18 @@ function CanvasGuidesLayer({
977
1005
  }
978
1006
 
979
1007
  // src/canvas/useCanvasDraw.ts
980
- import { useEffect as useEffect4, useMemo as useMemo3, useRef as useRef7, useState as useState3 } from "react";
1008
+ import { useEffect as useEffect4, useMemo as useMemo4, useRef as useRef8, useState as useState3 } from "react";
981
1009
  import {
982
1010
  createCanvasDrawController
983
1011
  } from "@pixerate/editor/canvas";
984
1012
  function useCanvasDraw(options) {
985
- const nodesRef = useRef7(options.nodes);
1013
+ const nodesRef = useRef8(options.nodes);
986
1014
  nodesRef.current = options.nodes;
987
- const optionsRef = useRef7(options);
1015
+ const optionsRef = useRef8(options);
988
1016
  optionsRef.current = options;
989
1017
  const [tool, setToolState] = useState3(options.initialTool ?? "select");
990
1018
  const [activeStroke, setActiveStroke] = useState3(null);
991
- const controller = useMemo3(
1019
+ const controller = useMemo4(
992
1020
  () => createCanvasDrawController({
993
1021
  getNodes: () => nodesRef.current,
994
1022
  setNodes: (next) => {
@@ -1016,7 +1044,7 @@ function useCanvasDraw(options) {
1016
1044
  controller.setTool(options.initialTool);
1017
1045
  }
1018
1046
  }, [options.initialTool, controller]);
1019
- return useMemo3(
1047
+ return useMemo4(
1020
1048
  () => ({
1021
1049
  tool,
1022
1050
  style,
@@ -1035,7 +1063,7 @@ function useCanvasDraw(options) {
1035
1063
  }
1036
1064
 
1037
1065
  // src/canvas/CanvasDrawLayer.tsx
1038
- import { useCallback as useCallback7, useEffect as useEffect5, useRef as useRef8, useState as useState4 } from "react";
1066
+ import { useCallback as useCallback7, useEffect as useEffect5, useRef as useRef9, useState as useState4 } from "react";
1039
1067
  import {
1040
1068
  strokePointsToPathData,
1041
1069
  resolveCanvasGradient,
@@ -1051,7 +1079,7 @@ function CanvasDrawLayer({
1051
1079
  cursor,
1052
1080
  eraserRadius = 12
1053
1081
  }) {
1054
- const svgRef = useRef8(null);
1082
+ const svgRef = useRef9(null);
1055
1083
  const [spaceHeld, setSpaceHeld] = useState4(false);
1056
1084
  const [eraserPos, setEraserPos] = useState4(null);
1057
1085
  useEffect5(() => {
@@ -1189,7 +1217,7 @@ function CanvasDrawLayer({
1189
1217
  }
1190
1218
 
1191
1219
  // src/canvas/useCanvasMeasure.ts
1192
- import { useCallback as useCallback8, useEffect as useEffect6, useMemo as useMemo4, useRef as useRef9, useState as useState5 } from "react";
1220
+ import { useCallback as useCallback8, useEffect as useEffect6, useMemo as useMemo5, useRef as useRef10, useState as useState5 } from "react";
1193
1221
  import {
1194
1222
  isMeasureModifierHeld,
1195
1223
  measureSelection
@@ -1199,7 +1227,7 @@ function useCanvasMeasure(options) {
1199
1227
  const { nodes, enabled = true, requireModifier = true, targetElement, rectOptions } = options;
1200
1228
  const [hoveredId, setHoveredId] = useState5(null);
1201
1229
  const [modifier, setModifier] = useState5(false);
1202
- const optionsRef = useRef9(options);
1230
+ const optionsRef = useRef10(options);
1203
1231
  optionsRef.current = options;
1204
1232
  useEffect6(() => {
1205
1233
  if (!enabled) return;
@@ -1218,7 +1246,7 @@ function useCanvasMeasure(options) {
1218
1246
  };
1219
1247
  }, [enabled, targetElement]);
1220
1248
  const active = enabled && (!requireModifier || modifier);
1221
- const result = useMemo4(() => {
1249
+ const result = useMemo5(() => {
1222
1250
  if (!active) return EMPTY;
1223
1251
  const ids = optionsRef.current.getSelectedIds?.() ?? nodes.filter((n) => n.selected).map((n) => n.id);
1224
1252
  return measureSelection(nodes, ids, hoveredId, rectOptions);
@@ -1486,17 +1514,17 @@ import {
1486
1514
  } from "@pixerate/editor/canvas";
1487
1515
 
1488
1516
  // src/canvas/useCanvasAutoLayout.ts
1489
- import { useLayoutEffect, useMemo as useMemo5, useRef as useRef10, useState as useState6 } from "react";
1517
+ import { useLayoutEffect, useMemo as useMemo6, useRef as useRef11, useState as useState6 } from "react";
1490
1518
  import {
1491
1519
  createCanvasAutoLayoutController
1492
1520
  } from "@pixerate/editor/canvas";
1493
1521
  function useCanvasAutoLayout(options) {
1494
1522
  const [guides, setGuides] = useState6([]);
1495
- const nodesRef = useRef10(options.nodes);
1523
+ const nodesRef = useRef11(options.nodes);
1496
1524
  nodesRef.current = options.nodes;
1497
- const optionsRef = useRef10(options);
1525
+ const optionsRef = useRef11(options);
1498
1526
  optionsRef.current = options;
1499
- const controller = useMemo5(
1527
+ const controller = useMemo6(
1500
1528
  () => createCanvasAutoLayoutController({
1501
1529
  getNodes: () => nodesRef.current,
1502
1530
  setNodes: (next) => {
@@ -1525,7 +1553,7 @@ function useCanvasAutoLayout(options) {
1525
1553
  useLayoutEffect(() => {
1526
1554
  if (controller.hasPending) controller.flush();
1527
1555
  }, [options.nodes, controller]);
1528
- return useMemo5(
1556
+ return useMemo6(
1529
1557
  () => ({
1530
1558
  ...controller,
1531
1559
  /** Drop marker of the active reorder drag (flow coordinates). */
@@ -1539,7 +1567,7 @@ function useCanvasAutoLayout(options) {
1539
1567
  }
1540
1568
 
1541
1569
  // src/canvas/useCanvasTokens.ts
1542
- import { useCallback as useCallback9, useEffect as useEffect7, useRef as useRef11, useSyncExternalStore as useSyncExternalStore2 } from "react";
1570
+ import { useCallback as useCallback9, useEffect as useEffect7, useRef as useRef12, useSyncExternalStore as useSyncExternalStore2 } from "react";
1543
1571
  import {
1544
1572
  bindCanvasToken,
1545
1573
  detachTokenBindings,
@@ -1550,7 +1578,7 @@ import {
1550
1578
  function useCanvasTokens(options) {
1551
1579
  const { store, nodes, setNodes, modes, properties } = options;
1552
1580
  const state = useSyncExternalStore2(store.subscribe, store.getState, store.getState);
1553
- const latest = useRef11({ nodes, setNodes, modes, properties });
1581
+ const latest = useRef12({ nodes, setNodes, modes, properties });
1554
1582
  latest.current = { nodes, setNodes, modes, properties };
1555
1583
  const opts = () => ({ modes: latest.current.modes, properties: latest.current.properties });
1556
1584
  useEffect7(
@@ -1733,16 +1761,16 @@ import {
1733
1761
  } from "@pixerate/editor/canvas";
1734
1762
 
1735
1763
  // src/canvas/useCanvasAnimation.ts
1736
- import { useEffect as useEffect8, useMemo as useMemo6, useRef as useRef12, useSyncExternalStore as useSyncExternalStore3 } from "react";
1764
+ import { useEffect as useEffect8, useMemo as useMemo7, useRef as useRef13, useSyncExternalStore as useSyncExternalStore3 } from "react";
1737
1765
  import {
1738
1766
  createCanvasAnimationController
1739
1767
  } from "@pixerate/editor/canvas";
1740
1768
  function useCanvasAnimation(options) {
1741
- const nodesRef = useRef12(options.nodes);
1769
+ const nodesRef = useRef13(options.nodes);
1742
1770
  nodesRef.current = options.nodes;
1743
- const optionsRef = useRef12(options);
1771
+ const optionsRef = useRef13(options);
1744
1772
  optionsRef.current = options;
1745
- const controller = useMemo6(
1773
+ const controller = useMemo7(
1746
1774
  () => createCanvasAnimationController({
1747
1775
  getNodes: () => nodesRef.current,
1748
1776
  setNodes: (next) => {
@@ -1787,8 +1815,8 @@ function useCanvasAnimation(options) {
1787
1815
  useEffect8(() => {
1788
1816
  controller.refresh();
1789
1817
  }, [controller, options.nodes]);
1790
- const displayNodes = useMemo6(() => controller.display(options.nodes), [controller, options.nodes, state.time]);
1791
- return useMemo6(
1818
+ const displayNodes = useMemo7(() => controller.display(options.nodes), [controller, options.nodes, state.time]);
1819
+ return useMemo7(
1792
1820
  () => ({
1793
1821
  ...controller,
1794
1822
  state,
@@ -1809,7 +1837,7 @@ function useCanvasAnimation(options) {
1809
1837
  }
1810
1838
 
1811
1839
  // src/canvas/AnimationTimeline.tsx
1812
- import { useEffect as useEffect9, useRef as useRef13 } from "react";
1840
+ import { useEffect as useEffect9, useRef as useRef14 } from "react";
1813
1841
  import {
1814
1842
  ANIMATION_EASING_LABELS,
1815
1843
  ANIMATION_EASING_PRESETS,
@@ -1832,7 +1860,7 @@ function AnimationTimeline({ animation, nodeIds, width = 360, snapThreshold = 8,
1832
1860
  for (const row of rows) for (const k of row.keyframes) if (k.selected && k.ref.property === first.property && k.ref.nodeId === first.nodeId) return easingValue(k.easing);
1833
1861
  return "";
1834
1862
  })();
1835
- const dragRef = useRef13(null);
1863
+ const dragRef = useRef14(null);
1836
1864
  useEffect9(() => {
1837
1865
  const onKey = (event) => {
1838
1866
  if (event.key === "Escape" && dragRef.current) {
@@ -2071,16 +2099,16 @@ import {
2071
2099
  } from "@pixerate/editor/canvas";
2072
2100
 
2073
2101
  // src/canvas/useCanvasComponents.ts
2074
- import { useLayoutEffect as useLayoutEffect2, useMemo as useMemo7, useRef as useRef14 } from "react";
2102
+ import { useLayoutEffect as useLayoutEffect2, useMemo as useMemo8, useRef as useRef15 } from "react";
2075
2103
  import {
2076
2104
  createCanvasComponentsController
2077
2105
  } from "@pixerate/editor/canvas";
2078
2106
  function useCanvasComponents(options) {
2079
- const nodesRef = useRef14(options.nodes);
2107
+ const nodesRef = useRef15(options.nodes);
2080
2108
  nodesRef.current = options.nodes;
2081
- const optionsRef = useRef14(options);
2109
+ const optionsRef = useRef15(options);
2082
2110
  optionsRef.current = options;
2083
- const controller = useMemo7(
2111
+ const controller = useMemo8(
2084
2112
  () => createCanvasComponentsController({
2085
2113
  getNodes: () => nodesRef.current,
2086
2114
  setNodes: (next) => {
@@ -2663,7 +2691,7 @@ function MermaidFamilyScene({
2663
2691
  }
2664
2692
 
2665
2693
  // src/canvas/useMermaidDiagram.ts
2666
- import { useEffect as useEffect10, useMemo as useMemo8, useRef as useRef15, useState as useState8, useSyncExternalStore as useSyncExternalStore4 } from "react";
2694
+ import { useEffect as useEffect10, useMemo as useMemo9, useRef as useRef16, useState as useState8, useSyncExternalStore as useSyncExternalStore4 } from "react";
2667
2695
  import {
2668
2696
  DiagramController
2669
2697
  } from "@pixerate/editor/diagram";
@@ -2681,7 +2709,7 @@ function useDiagramState(controller) {
2681
2709
  return useSyncExternalStore4(controller.subscribe, controller.getState, controller.getState);
2682
2710
  }
2683
2711
  function useMermaidDiagram(controllerOrOptions = {}, view = {}) {
2684
- const own = useRef15(null);
2712
+ const own = useRef16(null);
2685
2713
  let controller;
2686
2714
  if (controllerOrOptions instanceof DiagramController) controller = controllerOrOptions;
2687
2715
  else {
@@ -2691,19 +2719,19 @@ function useMermaidDiagram(controllerOrOptions = {}, view = {}) {
2691
2719
  const layoutOptions = (controllerOrOptions instanceof DiagramController ? void 0 : controllerOrOptions.layoutOptions) ?? view.layoutOptions;
2692
2720
  const sceneTheme = (controllerOrOptions instanceof DiagramController ? void 0 : controllerOrOptions.sceneTheme) ?? view.sceneTheme;
2693
2721
  const state = useDiagramState(controller);
2694
- const canvas = useMemo8(
2722
+ const canvas = useMemo9(
2695
2723
  () => mermaidToCanvas(state.document, { ...layoutOptions, editable: state.editable }),
2696
2724
  // eslint-disable-next-line react-hooks/exhaustive-deps
2697
2725
  [state.document, state.editable]
2698
2726
  );
2699
- const scene = useMemo8(
2727
+ const scene = useMemo9(
2700
2728
  () => state.document.tier === "editable" ? familySceneFromLayout(state.document.family, state.document.graph, canvas.layout, { theme: { ...CSS_VARIABLE_DIAGRAM_SCENE_THEME, ...sceneTheme }, selection: state.selection }) : null,
2701
2729
  // eslint-disable-next-line react-hooks/exhaustive-deps
2702
2730
  [state.document, canvas.layout, state.selection]
2703
2731
  );
2704
- const layoutRef = useRef15(canvas.layout);
2732
+ const layoutRef = useRef16(canvas.layout);
2705
2733
  layoutRef.current = canvas.layout;
2706
- const actions = useMemo8(
2734
+ const actions = useMemo9(
2707
2735
  () => ({
2708
2736
  apply: (ops, label) => controller.apply(ops, label),
2709
2737
  load: (source, options) => controller.load(source, options),
@@ -2740,11 +2768,11 @@ function useMermaidDiagram(controllerOrOptions = {}, view = {}) {
2740
2768
  }
2741
2769
  function useMermaidStream(source, options = {}) {
2742
2770
  const { complete = false, duration = 300, ...layoutOptions } = options;
2743
- const stream = useRef15(null);
2771
+ const stream = useRef16(null);
2744
2772
  if (!stream.current) stream.current = new DiagramStream(layoutOptions);
2745
- const result = useMemo8(() => stream.current.update(source, complete), [source, complete]);
2773
+ const result = useMemo9(() => stream.current.update(source, complete), [source, complete]);
2746
2774
  const [shown, setShown] = useState8({ layout: result.layout, settled: true });
2747
- const shownRef = useRef15(shown.layout);
2775
+ const shownRef = useRef16(shown.layout);
2748
2776
  shownRef.current = shown.layout;
2749
2777
  useEffect10(() => {
2750
2778
  const target = result.layout;
@@ -2763,7 +2791,7 @@ function useMermaidStream(source, options = {}) {
2763
2791
  return () => cancelAnimationFrame(frame);
2764
2792
  }, [result.layout, duration]);
2765
2793
  const doc = result.document.tier === "editable" ? result.document : null;
2766
- const canvas = useMemo8(() => {
2794
+ const canvas = useMemo9(() => {
2767
2795
  if (!doc || !shown.layout) return { nodes: [], edges: [] };
2768
2796
  const placed = new Set(Object.keys(shown.layout.positions));
2769
2797
  const graph = {
@@ -2839,14 +2867,14 @@ function MermaidDiagramGroup({ data, selected, className = "", children }) {
2839
2867
  }
2840
2868
 
2841
2869
  // src/canvas/MermaidThumbnail.tsx
2842
- import { useMemo as useMemo9 } from "react";
2870
+ import { useMemo as useMemo10 } from "react";
2843
2871
  import { parseMermaid } from "@pixerate/editor/diagram";
2844
2872
  import { mermaidThumbnailSvg } from "@pixerate/editor/canvas";
2845
2873
  import { Fragment as Fragment2, jsx as jsx10 } from "react/jsx-runtime";
2846
2874
  function MermaidThumbnail({ source, className = "", fallback = null, ...options }) {
2847
- const doc = useMemo9(() => typeof source === "string" ? parseMermaid(source) : source, [source]);
2875
+ const doc = useMemo10(() => typeof source === "string" ? parseMermaid(source) : source, [source]);
2848
2876
  const key = JSON.stringify(options);
2849
- const drawn = useMemo9(
2877
+ const drawn = useMemo10(
2850
2878
  () => doc.tier === "editable" && doc.graph.nodes.length ? mermaidThumbnailSvg(doc, options) : null,
2851
2879
  // eslint-disable-next-line react-hooks/exhaustive-deps
2852
2880
  [doc, key]
@@ -2856,12 +2884,12 @@ function MermaidThumbnail({ source, className = "", fallback = null, ...options
2856
2884
  }
2857
2885
 
2858
2886
  // src/canvas/useDiagramDirector.ts
2859
- import { useRef as useRef16, useSyncExternalStore as useSyncExternalStore5 } from "react";
2887
+ import { useRef as useRef17, useSyncExternalStore as useSyncExternalStore5 } from "react";
2860
2888
  import { DiagramDirector, PresenceStore } from "@pixerate/editor/diagram";
2861
2889
  function useDiagramDirector(controller, options) {
2862
- const placement = useRef16(options.placement);
2890
+ const placement = useRef17(options.placement);
2863
2891
  placement.current = options.placement;
2864
- const ref = useRef16(null);
2892
+ const ref = useRef17(null);
2865
2893
  if (!ref.current) {
2866
2894
  const presence = new PresenceStore();
2867
2895
  ref.current = {
@@ -3203,6 +3231,7 @@ export {
3203
3231
  useCanvasArrange,
3204
3232
  useCanvasArrangeShortcuts,
3205
3233
  useCanvasAutoLayout,
3234
+ useCanvasCapture,
3206
3235
  useCanvasClipboard,
3207
3236
  useCanvasComponents,
3208
3237
  useCanvasDocking,