@pixerate/editor-react 0.51.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.
- package/dist/canvas/index.cjs +490 -463
- package/dist/canvas/index.cjs.map +1 -1
- package/dist/canvas/index.d.cts +22 -3
- package/dist/canvas/index.d.ts +22 -3
- package/dist/canvas/index.js +74 -45
- package/dist/canvas/index.js.map +1 -1
- package/package.json +3 -3
package/dist/canvas/index.d.cts
CHANGED
|
@@ -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 };
|
package/dist/canvas/index.d.ts
CHANGED
|
@@ -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 };
|
package/dist/canvas/index.js
CHANGED
|
@@ -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
|
|
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 =
|
|
1013
|
+
const nodesRef = useRef8(options.nodes);
|
|
986
1014
|
nodesRef.current = options.nodes;
|
|
987
|
-
const optionsRef =
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
1523
|
+
const nodesRef = useRef11(options.nodes);
|
|
1496
1524
|
nodesRef.current = options.nodes;
|
|
1497
|
-
const optionsRef =
|
|
1525
|
+
const optionsRef = useRef11(options);
|
|
1498
1526
|
optionsRef.current = options;
|
|
1499
|
-
const controller =
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
1769
|
+
const nodesRef = useRef13(options.nodes);
|
|
1742
1770
|
nodesRef.current = options.nodes;
|
|
1743
|
-
const optionsRef =
|
|
1771
|
+
const optionsRef = useRef13(options);
|
|
1744
1772
|
optionsRef.current = options;
|
|
1745
|
-
const controller =
|
|
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 =
|
|
1791
|
-
return
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
2107
|
+
const nodesRef = useRef15(options.nodes);
|
|
2080
2108
|
nodesRef.current = options.nodes;
|
|
2081
|
-
const optionsRef =
|
|
2109
|
+
const optionsRef = useRef15(options);
|
|
2082
2110
|
optionsRef.current = options;
|
|
2083
|
-
const controller =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
2732
|
+
const layoutRef = useRef16(canvas.layout);
|
|
2705
2733
|
layoutRef.current = canvas.layout;
|
|
2706
|
-
const actions =
|
|
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 =
|
|
2771
|
+
const stream = useRef16(null);
|
|
2744
2772
|
if (!stream.current) stream.current = new DiagramStream(layoutOptions);
|
|
2745
|
-
const result =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
2875
|
+
const doc = useMemo10(() => typeof source === "string" ? parseMermaid(source) : source, [source]);
|
|
2848
2876
|
const key = JSON.stringify(options);
|
|
2849
|
-
const drawn =
|
|
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
|
|
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 =
|
|
2890
|
+
const placement = useRef17(options.placement);
|
|
2863
2891
|
placement.current = options.placement;
|
|
2864
|
-
const ref =
|
|
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,
|