@xyflow/react 12.0.0-next.2 → 12.0.0-next.4
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/base.css +6 -1
- package/dist/esm/additional-components/Background/Background.d.ts +5 -5
- package/dist/esm/additional-components/Background/Background.d.ts.map +1 -1
- package/dist/esm/additional-components/Background/index.d.ts +2 -2
- package/dist/esm/additional-components/Background/index.d.ts.map +1 -1
- package/dist/esm/additional-components/Controls/ControlButton.d.ts +1 -3
- package/dist/esm/additional-components/Controls/ControlButton.d.ts.map +1 -1
- package/dist/esm/additional-components/Controls/Controls.d.ts +7 -3
- package/dist/esm/additional-components/Controls/Controls.d.ts.map +1 -1
- package/dist/esm/additional-components/Controls/Icons/FitView.d.ts +1 -2
- package/dist/esm/additional-components/Controls/Icons/FitView.d.ts.map +1 -1
- package/dist/esm/additional-components/Controls/Icons/Lock.d.ts +1 -2
- package/dist/esm/additional-components/Controls/Icons/Lock.d.ts.map +1 -1
- package/dist/esm/additional-components/Controls/Icons/Minus.d.ts +1 -2
- package/dist/esm/additional-components/Controls/Icons/Minus.d.ts.map +1 -1
- package/dist/esm/additional-components/Controls/Icons/Plus.d.ts +1 -2
- package/dist/esm/additional-components/Controls/Icons/Plus.d.ts.map +1 -1
- package/dist/esm/additional-components/Controls/Icons/Unlock.d.ts +1 -2
- package/dist/esm/additional-components/Controls/Icons/Unlock.d.ts.map +1 -1
- package/dist/esm/additional-components/Controls/index.d.ts +3 -3
- package/dist/esm/additional-components/Controls/index.d.ts.map +1 -1
- package/dist/esm/additional-components/Controls/types.d.ts +2 -1
- package/dist/esm/additional-components/Controls/types.d.ts.map +1 -1
- package/dist/esm/additional-components/MiniMap/MiniMap.d.ts +4 -4
- package/dist/esm/additional-components/MiniMap/MiniMap.d.ts.map +1 -1
- package/dist/esm/additional-components/MiniMap/MiniMapNode.d.ts +3 -3
- package/dist/esm/additional-components/MiniMap/MiniMapNode.d.ts.map +1 -1
- package/dist/esm/additional-components/MiniMap/index.d.ts +1 -1
- package/dist/esm/additional-components/MiniMap/index.d.ts.map +1 -1
- package/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts +2 -3
- package/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts.map +1 -1
- package/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts +1 -2
- package/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map +1 -1
- package/dist/esm/additional-components/NodeToolbar/index.d.ts +2 -2
- package/dist/esm/additional-components/NodeToolbar/index.d.ts.map +1 -1
- package/dist/esm/components/A11yDescriptions/index.d.ts +1 -2
- package/dist/esm/components/A11yDescriptions/index.d.ts.map +1 -1
- package/dist/esm/components/Attribution/index.d.ts +2 -2
- package/dist/esm/components/Attribution/index.d.ts.map +1 -1
- package/dist/esm/components/ConnectionLine/index.d.ts +2 -2
- package/dist/esm/components/ConnectionLine/index.d.ts.map +1 -1
- package/dist/esm/components/EdgeLabelRenderer/index.d.ts +1 -2
- package/dist/esm/components/EdgeLabelRenderer/index.d.ts.map +1 -1
- package/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts +2 -2
- package/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map +1 -1
- package/dist/esm/components/EdgeWrapper/index.d.ts +1 -6
- package/dist/esm/components/EdgeWrapper/index.d.ts.map +1 -1
- package/dist/esm/components/Edges/BaseEdge.d.ts +1 -5
- package/dist/esm/components/Edges/BaseEdge.d.ts.map +1 -1
- package/dist/esm/components/Edges/EdgeAnchor.d.ts +2 -2
- package/dist/esm/components/Edges/EdgeAnchor.d.ts.map +1 -1
- package/dist/esm/components/Edges/EdgeText.d.ts +7 -3
- package/dist/esm/components/Edges/EdgeText.d.ts.map +1 -1
- package/dist/esm/components/Handle/index.d.ts +1 -2
- package/dist/esm/components/Handle/index.d.ts.map +1 -1
- package/dist/esm/components/NodeWrapper/index.d.ts +1 -6
- package/dist/esm/components/NodeWrapper/index.d.ts.map +1 -1
- package/dist/esm/components/Nodes/DefaultNode.d.ts +1 -6
- package/dist/esm/components/Nodes/DefaultNode.d.ts.map +1 -1
- package/dist/esm/components/Nodes/GroupNode.d.ts +1 -5
- package/dist/esm/components/Nodes/GroupNode.d.ts.map +1 -1
- package/dist/esm/components/Nodes/InputNode.d.ts +1 -6
- package/dist/esm/components/Nodes/InputNode.d.ts.map +1 -1
- package/dist/esm/components/Nodes/OutputNode.d.ts +1 -6
- package/dist/esm/components/Nodes/OutputNode.d.ts.map +1 -1
- package/dist/esm/components/Nodes/utils.d.ts.map +1 -1
- package/dist/esm/components/NodesSelection/index.d.ts +1 -3
- package/dist/esm/components/NodesSelection/index.d.ts.map +1 -1
- package/dist/esm/components/Panel/index.d.ts +2 -3
- package/dist/esm/components/Panel/index.d.ts.map +1 -1
- package/dist/esm/components/ReactFlowProvider/index.d.ts +1 -5
- package/dist/esm/components/ReactFlowProvider/index.d.ts.map +1 -1
- package/dist/esm/components/SelectionListener/index.d.ts +2 -2
- package/dist/esm/components/SelectionListener/index.d.ts.map +1 -1
- package/dist/esm/components/StoreUpdater/index.d.ts +2 -2
- package/dist/esm/components/StoreUpdater/index.d.ts.map +1 -1
- package/dist/esm/components/UserSelection/index.d.ts +1 -2
- package/dist/esm/components/UserSelection/index.d.ts.map +1 -1
- package/dist/esm/components/ViewportPortal/index.d.ts +1 -2
- package/dist/esm/components/ViewportPortal/index.d.ts.map +1 -1
- package/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts +1 -1
- package/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts.map +1 -1
- package/dist/esm/container/EdgeRenderer/index.d.ts +6 -5
- package/dist/esm/container/EdgeRenderer/index.d.ts.map +1 -1
- package/dist/esm/container/FlowRenderer/index.d.ts +1 -2
- package/dist/esm/container/FlowRenderer/index.d.ts.map +1 -1
- package/dist/esm/container/GraphView/index.d.ts +6 -5
- package/dist/esm/container/GraphView/index.d.ts.map +1 -1
- package/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts +0 -1
- package/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map +1 -1
- package/dist/esm/container/NodeRenderer/index.d.ts +1 -2
- package/dist/esm/container/NodeRenderer/index.d.ts.map +1 -1
- package/dist/esm/container/NodeRenderer/useResizeObserver.d.ts +1 -1
- package/dist/esm/container/NodeRenderer/useResizeObserver.d.ts.map +1 -1
- package/dist/esm/container/Pane/index.d.ts +2 -2
- package/dist/esm/container/Pane/index.d.ts.map +1 -1
- package/dist/esm/container/ReactFlow/Wrapper.d.ts +1 -5
- package/dist/esm/container/ReactFlow/Wrapper.d.ts.map +1 -1
- package/dist/esm/container/ReactFlow/index.d.ts.map +1 -1
- package/dist/esm/container/Viewport/index.d.ts +1 -1
- package/dist/esm/container/Viewport/index.d.ts.map +1 -1
- package/dist/esm/container/ZoomPane/index.d.ts +2 -2
- package/dist/esm/container/ZoomPane/index.d.ts.map +1 -1
- package/dist/esm/hooks/useColorModeClass.d.ts +1 -1
- package/dist/esm/hooks/useColorModeClass.d.ts.map +1 -1
- package/dist/esm/hooks/useDrag.d.ts +2 -2
- package/dist/esm/hooks/useDrag.d.ts.map +1 -1
- package/dist/esm/hooks/useEdges.d.ts +1 -2
- package/dist/esm/hooks/useEdges.d.ts.map +1 -1
- package/dist/esm/hooks/useGlobalKeyHandler.d.ts +2 -3
- package/dist/esm/hooks/useGlobalKeyHandler.d.ts.map +1 -1
- package/dist/esm/hooks/useKeyPress.d.ts +1 -2
- package/dist/esm/hooks/useKeyPress.d.ts.map +1 -1
- package/dist/esm/hooks/useNodes.d.ts +1 -2
- package/dist/esm/hooks/useNodes.d.ts.map +1 -1
- package/dist/esm/hooks/useNodesInitialized.d.ts +1 -2
- package/dist/esm/hooks/useNodesInitialized.d.ts.map +1 -1
- package/dist/esm/hooks/useOnInitHandler.d.ts +1 -2
- package/dist/esm/hooks/useOnInitHandler.d.ts.map +1 -1
- package/dist/esm/hooks/useOnSelectionChange.d.ts +1 -2
- package/dist/esm/hooks/useOnSelectionChange.d.ts.map +1 -1
- package/dist/esm/hooks/useOnViewportChange.d.ts +1 -2
- package/dist/esm/hooks/useOnViewportChange.d.ts.map +1 -1
- package/dist/esm/hooks/useReactFlow.d.ts +1 -1
- package/dist/esm/hooks/useReactFlow.d.ts.map +1 -1
- package/dist/esm/hooks/useResizeHandler.d.ts +1 -2
- package/dist/esm/hooks/useResizeHandler.d.ts.map +1 -1
- package/dist/esm/hooks/useUpdateNodeInternals.d.ts +1 -2
- package/dist/esm/hooks/useUpdateNodeInternals.d.ts.map +1 -1
- package/dist/esm/hooks/useUpdateNodePositions.d.ts +1 -2
- package/dist/esm/hooks/useUpdateNodePositions.d.ts.map +1 -1
- package/dist/esm/hooks/useViewport.d.ts +1 -2
- package/dist/esm/hooks/useViewport.d.ts.map +1 -1
- package/dist/esm/hooks/useViewportSync.d.ts +1 -1
- package/dist/esm/hooks/useViewportSync.d.ts.map +1 -1
- package/dist/esm/hooks/useVisibleEdgeIds.d.ts +1 -2
- package/dist/esm/hooks/useVisibleEdgeIds.d.ts.map +1 -1
- package/dist/esm/hooks/useVisibleNodeIds.d.ts +1 -2
- package/dist/esm/hooks/useVisibleNodeIds.d.ts.map +1 -1
- package/dist/esm/index.d.ts +17 -17
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +163 -165
- package/dist/esm/index.mjs +163 -165
- package/dist/esm/utils/changes.d.ts.map +1 -1
- package/dist/style.css +6 -6
- package/dist/umd/additional-components/Background/Background.d.ts +5 -5
- package/dist/umd/additional-components/Background/Background.d.ts.map +1 -1
- package/dist/umd/additional-components/Background/index.d.ts +2 -2
- package/dist/umd/additional-components/Background/index.d.ts.map +1 -1
- package/dist/umd/additional-components/Controls/ControlButton.d.ts +1 -3
- package/dist/umd/additional-components/Controls/ControlButton.d.ts.map +1 -1
- package/dist/umd/additional-components/Controls/Controls.d.ts +7 -3
- package/dist/umd/additional-components/Controls/Controls.d.ts.map +1 -1
- package/dist/umd/additional-components/Controls/Icons/FitView.d.ts +1 -2
- package/dist/umd/additional-components/Controls/Icons/FitView.d.ts.map +1 -1
- package/dist/umd/additional-components/Controls/Icons/Lock.d.ts +1 -2
- package/dist/umd/additional-components/Controls/Icons/Lock.d.ts.map +1 -1
- package/dist/umd/additional-components/Controls/Icons/Minus.d.ts +1 -2
- package/dist/umd/additional-components/Controls/Icons/Minus.d.ts.map +1 -1
- package/dist/umd/additional-components/Controls/Icons/Plus.d.ts +1 -2
- package/dist/umd/additional-components/Controls/Icons/Plus.d.ts.map +1 -1
- package/dist/umd/additional-components/Controls/Icons/Unlock.d.ts +1 -2
- package/dist/umd/additional-components/Controls/Icons/Unlock.d.ts.map +1 -1
- package/dist/umd/additional-components/Controls/index.d.ts +3 -3
- package/dist/umd/additional-components/Controls/index.d.ts.map +1 -1
- package/dist/umd/additional-components/Controls/types.d.ts +2 -1
- package/dist/umd/additional-components/Controls/types.d.ts.map +1 -1
- package/dist/umd/additional-components/MiniMap/MiniMap.d.ts +4 -4
- package/dist/umd/additional-components/MiniMap/MiniMap.d.ts.map +1 -1
- package/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts +3 -3
- package/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts.map +1 -1
- package/dist/umd/additional-components/MiniMap/index.d.ts +1 -1
- package/dist/umd/additional-components/MiniMap/index.d.ts.map +1 -1
- package/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts +2 -3
- package/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts.map +1 -1
- package/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts +1 -2
- package/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map +1 -1
- package/dist/umd/additional-components/NodeToolbar/index.d.ts +2 -2
- package/dist/umd/additional-components/NodeToolbar/index.d.ts.map +1 -1
- package/dist/umd/components/A11yDescriptions/index.d.ts +1 -2
- package/dist/umd/components/A11yDescriptions/index.d.ts.map +1 -1
- package/dist/umd/components/Attribution/index.d.ts +2 -2
- package/dist/umd/components/Attribution/index.d.ts.map +1 -1
- package/dist/umd/components/ConnectionLine/index.d.ts +2 -2
- package/dist/umd/components/ConnectionLine/index.d.ts.map +1 -1
- package/dist/umd/components/EdgeLabelRenderer/index.d.ts +1 -2
- package/dist/umd/components/EdgeLabelRenderer/index.d.ts.map +1 -1
- package/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts +2 -2
- package/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map +1 -1
- package/dist/umd/components/EdgeWrapper/index.d.ts +1 -6
- package/dist/umd/components/EdgeWrapper/index.d.ts.map +1 -1
- package/dist/umd/components/Edges/BaseEdge.d.ts +1 -5
- package/dist/umd/components/Edges/BaseEdge.d.ts.map +1 -1
- package/dist/umd/components/Edges/EdgeAnchor.d.ts +2 -2
- package/dist/umd/components/Edges/EdgeAnchor.d.ts.map +1 -1
- package/dist/umd/components/Edges/EdgeText.d.ts +7 -3
- package/dist/umd/components/Edges/EdgeText.d.ts.map +1 -1
- package/dist/umd/components/Handle/index.d.ts +1 -2
- package/dist/umd/components/Handle/index.d.ts.map +1 -1
- package/dist/umd/components/NodeWrapper/index.d.ts +1 -6
- package/dist/umd/components/NodeWrapper/index.d.ts.map +1 -1
- package/dist/umd/components/Nodes/DefaultNode.d.ts +1 -6
- package/dist/umd/components/Nodes/DefaultNode.d.ts.map +1 -1
- package/dist/umd/components/Nodes/GroupNode.d.ts +1 -5
- package/dist/umd/components/Nodes/GroupNode.d.ts.map +1 -1
- package/dist/umd/components/Nodes/InputNode.d.ts +1 -6
- package/dist/umd/components/Nodes/InputNode.d.ts.map +1 -1
- package/dist/umd/components/Nodes/OutputNode.d.ts +1 -6
- package/dist/umd/components/Nodes/OutputNode.d.ts.map +1 -1
- package/dist/umd/components/Nodes/utils.d.ts.map +1 -1
- package/dist/umd/components/NodesSelection/index.d.ts +1 -3
- package/dist/umd/components/NodesSelection/index.d.ts.map +1 -1
- package/dist/umd/components/Panel/index.d.ts +2 -3
- package/dist/umd/components/Panel/index.d.ts.map +1 -1
- package/dist/umd/components/ReactFlowProvider/index.d.ts +1 -5
- package/dist/umd/components/ReactFlowProvider/index.d.ts.map +1 -1
- package/dist/umd/components/SelectionListener/index.d.ts +2 -2
- package/dist/umd/components/SelectionListener/index.d.ts.map +1 -1
- package/dist/umd/components/StoreUpdater/index.d.ts +2 -2
- package/dist/umd/components/StoreUpdater/index.d.ts.map +1 -1
- package/dist/umd/components/UserSelection/index.d.ts +1 -2
- package/dist/umd/components/UserSelection/index.d.ts.map +1 -1
- package/dist/umd/components/ViewportPortal/index.d.ts +1 -2
- package/dist/umd/components/ViewportPortal/index.d.ts.map +1 -1
- package/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts +1 -1
- package/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts.map +1 -1
- package/dist/umd/container/EdgeRenderer/index.d.ts +6 -5
- package/dist/umd/container/EdgeRenderer/index.d.ts.map +1 -1
- package/dist/umd/container/FlowRenderer/index.d.ts +1 -2
- package/dist/umd/container/FlowRenderer/index.d.ts.map +1 -1
- package/dist/umd/container/GraphView/index.d.ts +6 -5
- package/dist/umd/container/GraphView/index.d.ts.map +1 -1
- package/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts +0 -1
- package/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map +1 -1
- package/dist/umd/container/NodeRenderer/index.d.ts +1 -2
- package/dist/umd/container/NodeRenderer/index.d.ts.map +1 -1
- package/dist/umd/container/NodeRenderer/useResizeObserver.d.ts +1 -1
- package/dist/umd/container/NodeRenderer/useResizeObserver.d.ts.map +1 -1
- package/dist/umd/container/Pane/index.d.ts +2 -2
- package/dist/umd/container/Pane/index.d.ts.map +1 -1
- package/dist/umd/container/ReactFlow/Wrapper.d.ts +1 -5
- package/dist/umd/container/ReactFlow/Wrapper.d.ts.map +1 -1
- package/dist/umd/container/ReactFlow/index.d.ts.map +1 -1
- package/dist/umd/container/Viewport/index.d.ts +1 -1
- package/dist/umd/container/Viewport/index.d.ts.map +1 -1
- package/dist/umd/container/ZoomPane/index.d.ts +2 -2
- package/dist/umd/container/ZoomPane/index.d.ts.map +1 -1
- package/dist/umd/hooks/useColorModeClass.d.ts +1 -1
- package/dist/umd/hooks/useColorModeClass.d.ts.map +1 -1
- package/dist/umd/hooks/useDrag.d.ts +2 -2
- package/dist/umd/hooks/useDrag.d.ts.map +1 -1
- package/dist/umd/hooks/useEdges.d.ts +1 -2
- package/dist/umd/hooks/useEdges.d.ts.map +1 -1
- package/dist/umd/hooks/useGlobalKeyHandler.d.ts +2 -3
- package/dist/umd/hooks/useGlobalKeyHandler.d.ts.map +1 -1
- package/dist/umd/hooks/useKeyPress.d.ts +1 -2
- package/dist/umd/hooks/useKeyPress.d.ts.map +1 -1
- package/dist/umd/hooks/useNodes.d.ts +1 -2
- package/dist/umd/hooks/useNodes.d.ts.map +1 -1
- package/dist/umd/hooks/useNodesInitialized.d.ts +1 -2
- package/dist/umd/hooks/useNodesInitialized.d.ts.map +1 -1
- package/dist/umd/hooks/useOnInitHandler.d.ts +1 -2
- package/dist/umd/hooks/useOnInitHandler.d.ts.map +1 -1
- package/dist/umd/hooks/useOnSelectionChange.d.ts +1 -2
- package/dist/umd/hooks/useOnSelectionChange.d.ts.map +1 -1
- package/dist/umd/hooks/useOnViewportChange.d.ts +1 -2
- package/dist/umd/hooks/useOnViewportChange.d.ts.map +1 -1
- package/dist/umd/hooks/useReactFlow.d.ts +1 -1
- package/dist/umd/hooks/useReactFlow.d.ts.map +1 -1
- package/dist/umd/hooks/useResizeHandler.d.ts +1 -2
- package/dist/umd/hooks/useResizeHandler.d.ts.map +1 -1
- package/dist/umd/hooks/useUpdateNodeInternals.d.ts +1 -2
- package/dist/umd/hooks/useUpdateNodeInternals.d.ts.map +1 -1
- package/dist/umd/hooks/useUpdateNodePositions.d.ts +1 -2
- package/dist/umd/hooks/useUpdateNodePositions.d.ts.map +1 -1
- package/dist/umd/hooks/useViewport.d.ts +1 -2
- package/dist/umd/hooks/useViewport.d.ts.map +1 -1
- package/dist/umd/hooks/useViewportSync.d.ts +1 -1
- package/dist/umd/hooks/useViewportSync.d.ts.map +1 -1
- package/dist/umd/hooks/useVisibleEdgeIds.d.ts +1 -2
- package/dist/umd/hooks/useVisibleEdgeIds.d.ts.map +1 -1
- package/dist/umd/hooks/useVisibleNodeIds.d.ts +1 -2
- package/dist/umd/hooks/useVisibleNodeIds.d.ts.map +1 -1
- package/dist/umd/index.d.ts +17 -17
- package/dist/umd/index.d.ts.map +1 -1
- package/dist/umd/index.js +2 -2
- package/dist/umd/utils/changes.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client"
|
|
2
|
-
import {
|
|
3
|
-
import { createContext, useContext, useMemo,
|
|
2
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { createContext, useContext, useMemo, useEffect, useRef, useState, useCallback, forwardRef, memo } from 'react';
|
|
4
4
|
import cc from 'classcat';
|
|
5
5
|
import { errorMessages, infiniteExtent, isInputDOMNode, fitView, getViewportForBounds, pointToRendererPoint, rendererPointToPoint, isNodeBase, isEdgeBase, getOutgoersBase, getIncomersBase, addEdgeBase, updateEdgeBase, getConnectedEdgesBase, getElementsToRemove, isRectObject, nodeToRect, getOverlappingArea, getDimensions, XYPanZoom, PanOnScrollMode, SelectionMode, getEventPosition, getNodesInside, XYDrag, snapPosition, calcNextPosition, Position, isMouseEvent, XYHandle, getHostForElement, getNodesBounds, clampPosition, internalsSymbol, getPositionWithOrigin, elementSelectionKeys, isEdgeVisible, MarkerType, createMarkerIds, isNumeric, getBezierEdgeCenter, getSmoothStepPath, getStraightPath, getBezierPath, getEdgePosition, getElevatedEdgeZIndex, getMarkerId, ConnectionMode, ConnectionLineType, updateConnectionLookup, adoptUserProvidedNodes, updateNodeDimensions, updateAbsolutePositions, panBy, isMacOs, areConnectionMapsEqual, handleConnectionChange, getNodePositionWithOrigin, XYMinimap, getBoundsOfRects, getPointerPosition, clamp, getNodeToolbarTransform } from '@xyflow/system';
|
|
6
6
|
export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, SelectionMode, getBezierEdgeCenter, getBezierPath, getEdgeCenter, getNodesBounds, getSmoothStepPath, getStraightPath, getViewportForBounds, internalsSymbol } from '@xyflow/system';
|
|
@@ -42,9 +42,33 @@ const useStoreApi = () => {
|
|
|
42
42
|
}), [store]);
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
const style = { display: 'none' };
|
|
46
|
+
const ariaLiveStyle = {
|
|
47
|
+
position: 'absolute',
|
|
48
|
+
width: 1,
|
|
49
|
+
height: 1,
|
|
50
|
+
margin: -1,
|
|
51
|
+
border: 0,
|
|
52
|
+
padding: 0,
|
|
53
|
+
overflow: 'hidden',
|
|
54
|
+
clip: 'rect(0px, 0px, 0px, 0px)',
|
|
55
|
+
clipPath: 'inset(100%)',
|
|
56
|
+
};
|
|
57
|
+
const ARIA_NODE_DESC_KEY = 'react-flow__node-desc';
|
|
58
|
+
const ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc';
|
|
59
|
+
const ARIA_LIVE_MESSAGE = 'react-flow__aria-live';
|
|
60
|
+
const selector$q = (s) => s.ariaLiveMessage;
|
|
61
|
+
function AriaLiveMessage({ rfId }) {
|
|
62
|
+
const ariaLiveMessage = useStore(selector$q);
|
|
63
|
+
return (jsx("div", { id: `${ARIA_LIVE_MESSAGE}-${rfId}`, "aria-live": "assertive", "aria-atomic": "true", style: ariaLiveStyle, children: ariaLiveMessage }));
|
|
64
|
+
}
|
|
65
|
+
function A11yDescriptions({ rfId, disableKeyboardA11y }) {
|
|
66
|
+
return (jsxs(Fragment, { children: [jsxs("div", { id: `${ARIA_NODE_DESC_KEY}-${rfId}`, style: style, children: ["Press enter or space to select a node.", !disableKeyboardA11y && 'You can then use the arrow keys to move the node around.', " Press delete to remove it and escape to cancel.", ' '] }), jsx("div", { id: `${ARIA_EDGE_DESC_KEY}-${rfId}`, style: style, children: "Press enter or space to select an edge. You can then press delete to remove it or escape to cancel." }), !disableKeyboardA11y && jsx(AriaLiveMessage, { rfId: rfId })] }));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const selector$p = (s) => (s.userSelectionActive ? 'none' : 'all');
|
|
70
|
+
function Panel({ position = 'top-left', children, className, style, ...rest }) {
|
|
71
|
+
const pointerEvents = useStore(selector$p);
|
|
48
72
|
const positionClasses = `${position}`.split('-');
|
|
49
73
|
return (jsx("div", { className: cc(['react-flow__panel', className, ...positionClasses]), style: { ...style, pointerEvents }, ...rest, children: children }));
|
|
50
74
|
}
|
|
@@ -56,7 +80,7 @@ function Attribution({ proOptions, position = 'bottom-right' }) {
|
|
|
56
80
|
return (jsx(Panel, { position: position, className: "react-flow__attribution", "data-message": "Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev", children: jsx("a", { href: "https://reactflow.dev", target: "_blank", rel: "noopener noreferrer", "aria-label": "React Flow attribution", children: "React Flow" }) }));
|
|
57
81
|
}
|
|
58
82
|
|
|
59
|
-
const selector$
|
|
83
|
+
const selector$o = (s) => ({
|
|
60
84
|
selectedNodes: s.nodes.filter((n) => n.selected),
|
|
61
85
|
selectedEdges: s.edges.filter((e) => e.selected),
|
|
62
86
|
});
|
|
@@ -65,22 +89,21 @@ function areEqual(a, b) {
|
|
|
65
89
|
return (shallow(a.selectedNodes.map(selectId), b.selectedNodes.map(selectId)) &&
|
|
66
90
|
shallow(a.selectedEdges.map(selectId), b.selectedEdges.map(selectId)));
|
|
67
91
|
}
|
|
68
|
-
|
|
92
|
+
function SelectionListenerInner({ onSelectionChange }) {
|
|
69
93
|
const store = useStoreApi();
|
|
70
|
-
const { selectedNodes, selectedEdges } = useStore(selector$
|
|
94
|
+
const { selectedNodes, selectedEdges } = useStore(selector$o, areEqual);
|
|
71
95
|
useEffect(() => {
|
|
72
96
|
const params = { nodes: selectedNodes, edges: selectedEdges };
|
|
73
97
|
onSelectionChange?.(params);
|
|
74
98
|
store.getState().onSelectionChangeHandlers.forEach((fn) => fn(params));
|
|
75
99
|
}, [selectedNodes, selectedEdges, onSelectionChange]);
|
|
76
100
|
return null;
|
|
77
|
-
}
|
|
78
|
-
SelectionListener.displayName = 'SelectionListener';
|
|
101
|
+
}
|
|
79
102
|
const changeSelector = (s) => !!s.onSelectionChangeHandlers;
|
|
80
|
-
function
|
|
103
|
+
function SelectionListener({ onSelectionChange }) {
|
|
81
104
|
const storeHasSelectionChangeHandlers = useStore(changeSelector);
|
|
82
105
|
if (onSelectionChange || storeHasSelectionChangeHandlers) {
|
|
83
|
-
return jsx(
|
|
106
|
+
return jsx(SelectionListenerInner, { onSelectionChange: onSelectionChange });
|
|
84
107
|
}
|
|
85
108
|
return null;
|
|
86
109
|
}
|
|
@@ -147,7 +170,7 @@ const reactFlowFieldsToTrack = [
|
|
|
147
170
|
];
|
|
148
171
|
// rfId doesn't exist in ReactFlowProps, but it's one of the fields we want to update
|
|
149
172
|
const fieldsToTrack = [...reactFlowFieldsToTrack, 'rfId'];
|
|
150
|
-
const selector$
|
|
173
|
+
const selector$n = (s) => ({
|
|
151
174
|
setNodes: s.setNodes,
|
|
152
175
|
setEdges: s.setEdges,
|
|
153
176
|
setDefaultNodesAndEdges: s.setDefaultNodesAndEdges,
|
|
@@ -157,8 +180,8 @@ const selector$o = (s) => ({
|
|
|
157
180
|
setNodeExtent: s.setNodeExtent,
|
|
158
181
|
reset: s.reset,
|
|
159
182
|
});
|
|
160
|
-
|
|
161
|
-
const { setNodes, setEdges, setDefaultNodesAndEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, } = useStore(selector$
|
|
183
|
+
function StoreUpdater(props) {
|
|
184
|
+
const { setNodes, setEdges, setDefaultNodesAndEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, } = useStore(selector$n, shallow);
|
|
162
185
|
const store = useStoreApi();
|
|
163
186
|
useEffect(() => {
|
|
164
187
|
const edgesWithDefaults = props.defaultEdges?.map((e) => ({ ...e, ...props.defaultEdgeOptions }));
|
|
@@ -214,30 +237,36 @@ const StoreUpdater = (props) => {
|
|
|
214
237
|
// Only re-run the effect if one of the fields we track changes
|
|
215
238
|
fieldsToTrack.map((fieldName) => props[fieldName]));
|
|
216
239
|
return null;
|
|
217
|
-
}
|
|
240
|
+
}
|
|
218
241
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
margin: -1,
|
|
225
|
-
border: 0,
|
|
226
|
-
padding: 0,
|
|
227
|
-
overflow: 'hidden',
|
|
228
|
-
clip: 'rect(0px, 0px, 0px, 0px)',
|
|
229
|
-
clipPath: 'inset(100%)',
|
|
230
|
-
};
|
|
231
|
-
const ARIA_NODE_DESC_KEY = 'react-flow__node-desc';
|
|
232
|
-
const ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc';
|
|
233
|
-
const ARIA_LIVE_MESSAGE = 'react-flow__aria-live';
|
|
234
|
-
const selector$n = (s) => s.ariaLiveMessage;
|
|
235
|
-
function AriaLiveMessage({ rfId }) {
|
|
236
|
-
const ariaLiveMessage = useStore(selector$n);
|
|
237
|
-
return (jsx("div", { id: `${ARIA_LIVE_MESSAGE}-${rfId}`, "aria-live": "assertive", "aria-atomic": "true", style: ariaLiveStyle, children: ariaLiveMessage }));
|
|
242
|
+
function getMediaQuery() {
|
|
243
|
+
if (typeof window === 'undefined' || !window.matchMedia) {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
return window.matchMedia('(prefers-color-scheme: dark)');
|
|
238
247
|
}
|
|
239
|
-
|
|
240
|
-
|
|
248
|
+
/**
|
|
249
|
+
* Hook for receiving the current color mode class 'dark' or 'light'.
|
|
250
|
+
*
|
|
251
|
+
* @internal
|
|
252
|
+
* @param colorMode - The color mode to use ('dark', 'light' or 'system')
|
|
253
|
+
*/
|
|
254
|
+
function useColorModeClass(colorMode) {
|
|
255
|
+
const [colorModeClass, setColorModeClass] = useState(colorMode === 'system' ? null : colorMode);
|
|
256
|
+
useEffect(() => {
|
|
257
|
+
if (colorMode !== 'system') {
|
|
258
|
+
setColorModeClass(colorMode);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const mediaQuery = getMediaQuery();
|
|
262
|
+
const updateColorModeClass = () => setColorModeClass(mediaQuery?.matches ? 'dark' : 'light');
|
|
263
|
+
updateColorModeClass();
|
|
264
|
+
mediaQuery?.addEventListener('change', updateColorModeClass);
|
|
265
|
+
return () => {
|
|
266
|
+
mediaQuery?.removeEventListener('change', updateColorModeClass);
|
|
267
|
+
};
|
|
268
|
+
}, [colorMode]);
|
|
269
|
+
return colorModeClass !== null ? colorModeClass : getMediaQuery()?.matches ? 'dark' : 'light';
|
|
241
270
|
}
|
|
242
271
|
|
|
243
272
|
const defaultDoc = typeof document !== 'undefined' ? document : null;
|
|
@@ -249,12 +278,12 @@ const defaultDoc = typeof document !== 'undefined' ? document : null;
|
|
|
249
278
|
* @param param.options - Options
|
|
250
279
|
* @returns boolean
|
|
251
280
|
*/
|
|
252
|
-
|
|
281
|
+
function useKeyPress(
|
|
253
282
|
// the keycode can be a string 'a' or an array of strings ['a', 'a+d']
|
|
254
283
|
// a string means a single key 'a' or a combination when '+' is used 'a+d'
|
|
255
284
|
// an array means different possibilites. Explainer: ['a', 'd+s'] here the
|
|
256
285
|
// user can use the single key 'a' or the combination 'd' + 's'
|
|
257
|
-
keyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true })
|
|
286
|
+
keyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true }) {
|
|
258
287
|
const [keyPressed, setKeyPressed] = useState(false);
|
|
259
288
|
// we need to remember if a modifier key is pressed in order to track it
|
|
260
289
|
const modifierPressed = useRef(false);
|
|
@@ -323,7 +352,7 @@ keyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true
|
|
|
323
352
|
}
|
|
324
353
|
}, [keyCode, setKeyPressed]);
|
|
325
354
|
return keyPressed;
|
|
326
|
-
}
|
|
355
|
+
}
|
|
327
356
|
// utils
|
|
328
357
|
function isMatchingKey(keyCodes, pressedKeys, isUp) {
|
|
329
358
|
return (keyCodes
|
|
@@ -470,20 +499,25 @@ function applyChanges(changes, elements) {
|
|
|
470
499
|
if (changes.some((c) => c.type === 'reset')) {
|
|
471
500
|
return changes.filter((c) => c.type === 'reset').map((c) => c.item);
|
|
472
501
|
}
|
|
473
|
-
let remainingChanges =
|
|
502
|
+
let remainingChanges = [];
|
|
474
503
|
const updatedElements = [];
|
|
504
|
+
for (const change of changes) {
|
|
505
|
+
if (change.type === 'add') {
|
|
506
|
+
updatedElements.push(change.item);
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
remainingChanges.push(change);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
475
512
|
for (const item of elements) {
|
|
476
513
|
const nextChanges = [];
|
|
477
514
|
const _remainingChanges = [];
|
|
478
|
-
for (const
|
|
479
|
-
if (
|
|
480
|
-
|
|
481
|
-
}
|
|
482
|
-
else if (c.id === item.id) {
|
|
483
|
-
nextChanges.push(c);
|
|
515
|
+
for (const change of remainingChanges) {
|
|
516
|
+
if (change.id === item.id) {
|
|
517
|
+
nextChanges.push(change);
|
|
484
518
|
}
|
|
485
519
|
else {
|
|
486
|
-
_remainingChanges.push(
|
|
520
|
+
_remainingChanges.push(change);
|
|
487
521
|
}
|
|
488
522
|
}
|
|
489
523
|
remainingChanges = _remainingChanges;
|
|
@@ -886,7 +920,7 @@ const deleteKeyOptions = { actInsideInputWithModifier: false };
|
|
|
886
920
|
*
|
|
887
921
|
* @internal
|
|
888
922
|
*/
|
|
889
|
-
|
|
923
|
+
function useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode, }) {
|
|
890
924
|
const store = useStoreApi();
|
|
891
925
|
const { deleteElements } = useReactFlow();
|
|
892
926
|
const deleteKeyPressed = useKeyPress(deleteKeyCode, deleteKeyOptions);
|
|
@@ -901,7 +935,7 @@ var useGlobalKeyHandler = ({ deleteKeyCode, multiSelectionKeyCode, }) => {
|
|
|
901
935
|
useEffect(() => {
|
|
902
936
|
store.setState({ multiSelectionActive: multiSelectionKeyPressed });
|
|
903
937
|
}, [multiSelectionKeyPressed]);
|
|
904
|
-
}
|
|
938
|
+
}
|
|
905
939
|
|
|
906
940
|
/**
|
|
907
941
|
* Hook for handling resize events.
|
|
@@ -948,7 +982,7 @@ const selector$l = (s) => ({
|
|
|
948
982
|
userSelectionActive: s.userSelectionActive,
|
|
949
983
|
lib: s.lib,
|
|
950
984
|
});
|
|
951
|
-
|
|
985
|
+
function ZoomPane({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = true, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, }) {
|
|
952
986
|
const store = useStoreApi();
|
|
953
987
|
const zoomPane = useRef(null);
|
|
954
988
|
const { userSelectionActive, lib } = useStore(selector$l, shallow);
|
|
@@ -1031,7 +1065,7 @@ const ZoomPane = ({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true,
|
|
|
1031
1065
|
lib,
|
|
1032
1066
|
]);
|
|
1033
1067
|
return (jsx("div", { className: "react-flow__renderer", ref: zoomPane, style: containerStyle, children: children }));
|
|
1034
|
-
}
|
|
1068
|
+
}
|
|
1035
1069
|
|
|
1036
1070
|
const selector$k = (s) => ({
|
|
1037
1071
|
userSelectionActive: s.userSelectionActive,
|
|
@@ -1063,7 +1097,7 @@ const selector$j = (s) => ({
|
|
|
1063
1097
|
elementsSelectable: s.elementsSelectable,
|
|
1064
1098
|
dragging: s.paneDragging,
|
|
1065
1099
|
});
|
|
1066
|
-
|
|
1100
|
+
function Pane({ isSelecting, selectionMode = SelectionMode.Full, panOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }) {
|
|
1067
1101
|
const container = useRef(null);
|
|
1068
1102
|
const store = useStoreApi();
|
|
1069
1103
|
const prevSelectedNodesCount = useRef(0);
|
|
@@ -1180,8 +1214,7 @@ const Pane = memo(({ isSelecting, selectionMode = SelectionMode.Full, panOnDrag,
|
|
|
1180
1214
|
};
|
|
1181
1215
|
const hasActiveSelection = elementsSelectable && (isSelecting || userSelectionActive);
|
|
1182
1216
|
return (jsxs("div", { className: cc(['react-flow__pane', { dragging, selection: isSelecting }]), onClick: hasActiveSelection ? undefined : wrapHandler(onClick, container), onContextMenu: wrapHandler(onContextMenu, container), onWheel: wrapHandler(onWheel, container), onMouseEnter: hasActiveSelection ? undefined : onPaneMouseEnter, onMouseDown: hasActiveSelection ? onMouseDown : undefined, onMouseMove: hasActiveSelection ? onMouseMove : onPaneMouseMove, onMouseUp: hasActiveSelection ? onMouseUp : undefined, onMouseLeave: hasActiveSelection ? onMouseLeave : onPaneMouseLeave, ref: container, style: containerStyle, children: [children, jsx(UserSelection, {})] }));
|
|
1183
|
-
}
|
|
1184
|
-
Pane.displayName = 'Pane';
|
|
1217
|
+
}
|
|
1185
1218
|
|
|
1186
1219
|
// this handler is called by
|
|
1187
1220
|
// 1. the click handler when node is not draggable or selectNodesOnDrag = false
|
|
@@ -1209,7 +1242,7 @@ function handleNodeClick({ id, store, unselect = false, nodeRef, }) {
|
|
|
1209
1242
|
*
|
|
1210
1243
|
* @internal
|
|
1211
1244
|
*/
|
|
1212
|
-
function useDrag({ nodeRef, disabled = false, noDragClassName, handleSelector, nodeId, isSelectable }) {
|
|
1245
|
+
function useDrag({ nodeRef, disabled = false, noDragClassName, handleSelector, nodeId, isSelectable, }) {
|
|
1213
1246
|
const store = useStoreApi();
|
|
1214
1247
|
const [dragging, setDragging] = useState(false);
|
|
1215
1248
|
const xyDrag = useRef();
|
|
@@ -1317,7 +1350,7 @@ const connectingSelector = (nodeId, handleId, type) => (state) => {
|
|
|
1317
1350
|
clickConnecting: clickHandle?.nodeId === nodeId && clickHandle?.handleId === handleId && clickHandle?.type === type,
|
|
1318
1351
|
};
|
|
1319
1352
|
};
|
|
1320
|
-
const
|
|
1353
|
+
const HandleComponent = forwardRef(({ type = 'source', position = Position.Top, isValidConnection, isConnectable = true, isConnectableStart = true, isConnectableEnd = true, id, onConnect, children, className, onMouseDown, onTouchStart, ...rest }, ref) => {
|
|
1321
1354
|
const handleId = id || null;
|
|
1322
1355
|
const isTarget = type === 'target';
|
|
1323
1356
|
const store = useStoreApi();
|
|
@@ -1425,25 +1458,24 @@ const Handle = forwardRef(({ type = 'source', position = Position.Top, isValidCo
|
|
|
1425
1458
|
},
|
|
1426
1459
|
]), onMouseDown: onPointerDown, onTouchStart: onPointerDown, onClick: connectOnClick ? onClick : undefined, ref: ref, ...rest, children: children }));
|
|
1427
1460
|
});
|
|
1428
|
-
|
|
1429
|
-
|
|
1461
|
+
HandleComponent.displayName = 'Handle';
|
|
1462
|
+
const Handle = memo(HandleComponent);
|
|
1430
1463
|
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1464
|
+
function InputNode({ data, isConnectable, sourcePosition = Position.Bottom }) {
|
|
1465
|
+
return (jsxs(Fragment, { children: [data?.label, jsx(Handle, { type: "source", position: sourcePosition, isConnectable: isConnectable })] }));
|
|
1466
|
+
}
|
|
1434
1467
|
|
|
1435
|
-
|
|
1436
|
-
return (jsxs(Fragment, { children: [jsx(Handle
|
|
1437
|
-
}
|
|
1438
|
-
DefaultNode.displayName = 'DefaultNode';
|
|
1439
|
-
var DefaultNode$1 = memo(DefaultNode);
|
|
1468
|
+
function DefaultNode({ data, isConnectable, targetPosition = Position.Top, sourcePosition = Position.Bottom, }) {
|
|
1469
|
+
return (jsxs(Fragment, { children: [jsx(Handle, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label, jsx(Handle, { type: "source", position: sourcePosition, isConnectable: isConnectable })] }));
|
|
1470
|
+
}
|
|
1440
1471
|
|
|
1441
|
-
|
|
1442
|
-
|
|
1472
|
+
function GroupNode() {
|
|
1473
|
+
return null;
|
|
1474
|
+
}
|
|
1443
1475
|
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1476
|
+
function OutputNode({ data, isConnectable, targetPosition = Position.Top }) {
|
|
1477
|
+
return (jsxs(Fragment, { children: [jsx(Handle, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label] }));
|
|
1478
|
+
}
|
|
1447
1479
|
|
|
1448
1480
|
const arrowKeyDiffs = {
|
|
1449
1481
|
ArrowUp: { x: 0, y: -1 },
|
|
@@ -1452,9 +1484,9 @@ const arrowKeyDiffs = {
|
|
|
1452
1484
|
ArrowRight: { x: 1, y: 0 },
|
|
1453
1485
|
};
|
|
1454
1486
|
const builtinNodeTypes = {
|
|
1455
|
-
input: InputNode
|
|
1456
|
-
default: DefaultNode
|
|
1457
|
-
output: OutputNode
|
|
1487
|
+
input: InputNode,
|
|
1488
|
+
default: DefaultNode,
|
|
1489
|
+
output: OutputNode,
|
|
1458
1490
|
group: GroupNode,
|
|
1459
1491
|
};
|
|
1460
1492
|
|
|
@@ -1508,10 +1540,9 @@ function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboar
|
|
|
1508
1540
|
height,
|
|
1509
1541
|
} }) }));
|
|
1510
1542
|
}
|
|
1511
|
-
var NodesSelection$1 = memo(NodesSelection);
|
|
1512
1543
|
|
|
1513
1544
|
const selector$g = (s) => s.nodesSelectionActive;
|
|
1514
|
-
const
|
|
1545
|
+
const FlowRendererComponent = ({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport, }) => {
|
|
1515
1546
|
const nodesSelectionActive = useStore(selector$g);
|
|
1516
1547
|
const selectionKeyPressed = useKeyPress(selectionKeyCode);
|
|
1517
1548
|
const panActivationKeyPressed = useKeyPress(panActivationKeyCode);
|
|
@@ -1519,10 +1550,10 @@ const FlowRenderer = ({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove
|
|
|
1519
1550
|
const panOnScroll = panActivationKeyPressed || _panOnScroll;
|
|
1520
1551
|
const isSelecting = selectionKeyPressed || (selectionOnDrag && panOnDrag !== true);
|
|
1521
1552
|
useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode });
|
|
1522
|
-
return (jsx(ZoomPane, { onPaneContextMenu: onPaneContextMenu, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, zoomOnDoubleClick: zoomOnDoubleClick, panOnDrag: !selectionKeyPressed && panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, zoomActivationKeyCode: zoomActivationKeyCode, preventScrolling: preventScrolling, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, onViewportChange: onViewportChange, isControlledViewport: isControlledViewport, children: jsxs(Pane, { onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, panOnDrag: panOnDrag, isSelecting: !!isSelecting, selectionMode: selectionMode, children: [children, nodesSelectionActive && (jsx(NodesSelection
|
|
1553
|
+
return (jsx(ZoomPane, { onPaneContextMenu: onPaneContextMenu, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, zoomOnDoubleClick: zoomOnDoubleClick, panOnDrag: !selectionKeyPressed && panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, zoomActivationKeyCode: zoomActivationKeyCode, preventScrolling: preventScrolling, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, onViewportChange: onViewportChange, isControlledViewport: isControlledViewport, children: jsxs(Pane, { onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, panOnDrag: panOnDrag, isSelecting: !!isSelecting, selectionMode: selectionMode, children: [children, nodesSelectionActive && (jsx(NodesSelection, { onSelectionContextMenu: onSelectionContextMenu, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y }))] }) }));
|
|
1523
1554
|
};
|
|
1524
|
-
|
|
1525
|
-
|
|
1555
|
+
FlowRendererComponent.displayName = 'FlowRenderer';
|
|
1556
|
+
const FlowRenderer = memo(FlowRendererComponent);
|
|
1526
1557
|
|
|
1527
1558
|
const selector$f = (onlyRenderVisible) => (s) => {
|
|
1528
1559
|
return onlyRenderVisible
|
|
@@ -1572,7 +1603,7 @@ function useResizeObserver() {
|
|
|
1572
1603
|
return resizeObserver;
|
|
1573
1604
|
}
|
|
1574
1605
|
|
|
1575
|
-
|
|
1606
|
+
function NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, nodesDraggable, elementsSelectable, nodesConnectable, nodesFocusable, resizeObserver, noDragClassName, noPanClassName, disableKeyboardA11y, rfId, nodeTypes, nodeExtent, nodeOrigin, onError, }) {
|
|
1576
1607
|
const { node, positionAbsoluteX, positionAbsoluteY, zIndex, isParent } = useStore((s) => {
|
|
1577
1608
|
const node = s.nodeLookup.get(id);
|
|
1578
1609
|
const positionAbsolute = nodeExtent
|
|
@@ -1726,9 +1757,7 @@ const NodeWrapper = ({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onC
|
|
|
1726
1757
|
height,
|
|
1727
1758
|
...node.style,
|
|
1728
1759
|
}, "data-id": id, "data-testid": `rf__node-${id}`, onMouseEnter: onMouseEnterHandler, onMouseMove: onMouseMoveHandler, onMouseLeave: onMouseLeaveHandler, onContextMenu: onContextMenuHandler, onClick: onSelectNodeHandler, onDoubleClick: onDoubleClickHandler, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: isFocusable ? 'button' : undefined, "aria-describedby": disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`, "aria-label": node.ariaLabel, children: jsx(Provider, { value: id, children: jsx(NodeComponent, { id: id, data: node.data, type: nodeType, width: computedWidth, height: computedHeight, positionAbsoluteX: positionAbsoluteX, positionAbsoluteY: positionAbsoluteY, selected: node.selected, isConnectable: isConnectable, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition, dragging: dragging, dragHandle: node.dragHandle, zIndex: zIndex }) }) }));
|
|
1729
|
-
}
|
|
1730
|
-
NodeWrapper.displayName = 'NodeWrapper';
|
|
1731
|
-
var NodeWrapper$1 = memo(NodeWrapper);
|
|
1760
|
+
}
|
|
1732
1761
|
|
|
1733
1762
|
const selector$d = (s) => ({
|
|
1734
1763
|
nodesDraggable: s.nodesDraggable,
|
|
@@ -1737,7 +1766,7 @@ const selector$d = (s) => ({
|
|
|
1737
1766
|
elementsSelectable: s.elementsSelectable,
|
|
1738
1767
|
onError: s.onError,
|
|
1739
1768
|
});
|
|
1740
|
-
const
|
|
1769
|
+
const NodeRendererComponent = (props) => {
|
|
1741
1770
|
const { nodesDraggable, nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$d, shallow);
|
|
1742
1771
|
const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements);
|
|
1743
1772
|
const resizeObserver = useResizeObserver();
|
|
@@ -1766,11 +1795,11 @@ const NodeRenderer = (props) => {
|
|
|
1766
1795
|
// moved into `NodeComponentWrapper`. This ensures they are
|
|
1767
1796
|
// memorized – so if `NodeRenderer` *has* to rerender, it only
|
|
1768
1797
|
// needs to regenerate the list of nodes, nothing else.
|
|
1769
|
-
jsx(NodeWrapper
|
|
1798
|
+
jsx(NodeWrapper, { id: nodeId, nodeTypes: props.nodeTypes, nodeExtent: props.nodeExtent, nodeOrigin: props.nodeOrigin, onClick: props.onNodeClick, onMouseEnter: props.onNodeMouseEnter, onMouseMove: props.onNodeMouseMove, onMouseLeave: props.onNodeMouseLeave, onContextMenu: props.onNodeContextMenu, onDoubleClick: props.onNodeDoubleClick, noDragClassName: props.noDragClassName, noPanClassName: props.noPanClassName, rfId: props.rfId, disableKeyboardA11y: props.disableKeyboardA11y, resizeObserver: resizeObserver, nodesDraggable: nodesDraggable, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, elementsSelectable: elementsSelectable, onError: onError }, nodeId));
|
|
1770
1799
|
}) }));
|
|
1771
1800
|
};
|
|
1772
|
-
|
|
1773
|
-
|
|
1801
|
+
NodeRendererComponent.displayName = 'NodeRenderer';
|
|
1802
|
+
const NodeRenderer = memo(NodeRendererComponent);
|
|
1774
1803
|
|
|
1775
1804
|
/**
|
|
1776
1805
|
* Hook for getting the visible edge ids from the store.
|
|
@@ -1864,7 +1893,7 @@ const MarkerDefinitions = ({ defaultColor, rfId }) => {
|
|
|
1864
1893
|
MarkerDefinitions.displayName = 'MarkerDefinitions';
|
|
1865
1894
|
var MarkerDefinitions$1 = memo(MarkerDefinitions);
|
|
1866
1895
|
|
|
1867
|
-
|
|
1896
|
+
function EdgeTextComponent({ x, y, label, labelStyle = {}, labelShowBg = true, labelBgStyle = {}, labelBgPadding = [2, 4], labelBgBorderRadius = 2, children, className, ...rest }) {
|
|
1868
1897
|
const [edgeTextBbox, setEdgeTextBbox] = useState({ x: 1, y: 0, width: 0, height: 0 });
|
|
1869
1898
|
const edgeTextClasses = cc(['react-flow__edge-textwrapper', className]);
|
|
1870
1899
|
const onEdgeTextRefChange = useCallback((edgeRef) => {
|
|
@@ -1882,13 +1911,13 @@ const EdgeText = ({ x, y, label, labelStyle = {}, labelShowBg = true, labelBgSty
|
|
|
1882
1911
|
return null;
|
|
1883
1912
|
}
|
|
1884
1913
|
return (jsxs("g", { transform: `translate(${x - edgeTextBbox.width / 2} ${y - edgeTextBbox.height / 2})`, className: edgeTextClasses, visibility: edgeTextBbox.width ? 'visible' : 'hidden', ...rest, children: [labelShowBg && (jsx("rect", { width: edgeTextBbox.width + 2 * labelBgPadding[0], x: -labelBgPadding[0], y: -labelBgPadding[1], height: edgeTextBbox.height + 2 * labelBgPadding[1], className: "react-flow__edge-textbg", style: labelBgStyle, rx: labelBgBorderRadius, ry: labelBgBorderRadius })), jsx("text", { className: "react-flow__edge-text", y: edgeTextBbox.height / 2, dy: "0.3em", ref: onEdgeTextRefChange, style: labelStyle, children: label }), children] }));
|
|
1885
|
-
}
|
|
1886
|
-
|
|
1914
|
+
}
|
|
1915
|
+
EdgeTextComponent.displayName = 'EdgeText';
|
|
1916
|
+
const EdgeText = memo(EdgeTextComponent);
|
|
1887
1917
|
|
|
1888
|
-
|
|
1889
|
-
return (jsxs(Fragment, { children: [jsx("path", { id: id, style: style, d: path, fill: "none", className: cc(['react-flow__edge-path', className]), markerEnd: markerEnd, markerStart: markerStart }), interactionWidth && (jsx("path", { d: path, fill: "none", strokeOpacity: 0, strokeWidth: interactionWidth, className: "react-flow__edge-interaction" })), label && isNumeric(labelX) && isNumeric(labelY) ? (jsx(EdgeText
|
|
1890
|
-
}
|
|
1891
|
-
BaseEdge.displayName = 'BaseEdge';
|
|
1918
|
+
function BaseEdge({ id, path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, className, interactionWidth = 20, }) {
|
|
1919
|
+
return (jsxs(Fragment, { children: [jsx("path", { id: id, style: style, d: path, fill: "none", className: cc(['react-flow__edge-path', className]), markerEnd: markerEnd, markerStart: markerStart }), interactionWidth && (jsx("path", { d: path, fill: "none", strokeOpacity: 0, strokeWidth: interactionWidth, className: "react-flow__edge-interaction" })), label && isNumeric(labelX) && isNumeric(labelY) ? (jsx(EdgeText, { x: labelX, y: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius })) : null] }));
|
|
1920
|
+
}
|
|
1892
1921
|
|
|
1893
1922
|
function getControl({ pos, x1, y1, x2, y2 }) {
|
|
1894
1923
|
if (pos === Position.Left || pos === Position.Right) {
|
|
@@ -2048,7 +2077,9 @@ const shiftY = (y, shift, position) => {
|
|
|
2048
2077
|
return y;
|
|
2049
2078
|
};
|
|
2050
2079
|
const EdgeUpdaterClassName = 'react-flow__edgeupdater';
|
|
2051
|
-
|
|
2080
|
+
function EdgeAnchor({ position, centerX, centerY, radius = 10, onMouseDown, onMouseEnter, onMouseOut, type, }) {
|
|
2081
|
+
return (jsx("circle", { onMouseDown: onMouseDown, onMouseEnter: onMouseEnter, onMouseOut: onMouseOut, className: cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`]), cx: shiftX(centerX, radius, position), cy: shiftY(centerY, radius, position), r: radius, stroke: "transparent", fill: "transparent" }));
|
|
2082
|
+
}
|
|
2052
2083
|
|
|
2053
2084
|
function EdgeUpdateAnchors({ isUpdatable, edgeUpdaterRadius, edge, targetHandleId, sourceHandleId, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onEdgeUpdate, onEdgeUpdateStart, onEdgeUpdateEnd, setUpdating, setUpdateHover, }) {
|
|
2054
2085
|
const store = useStoreApi();
|
|
@@ -2219,8 +2250,6 @@ function EdgeWrapper({ id, edgesFocusable, edgesUpdatable, elementsSelectable, o
|
|
|
2219
2250
|
},
|
|
2220
2251
|
]), onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: isFocusable ? 'button' : 'img', "data-id": id, "data-testid": `rf__edge-${id}`, "aria-label": edge.ariaLabel === null ? undefined : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`, "aria-describedby": isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined, ref: edgeRef, children: [!updating && (jsx(EdgeComponent, { id: id, source: edge.source, target: edge.target, selected: edge.selected, animated: edge.animated, label: edge.label, labelStyle: edge.labelStyle, labelShowBg: edge.labelShowBg, labelBgStyle: edge.labelBgStyle, labelBgPadding: edge.labelBgPadding, labelBgBorderRadius: edge.labelBgBorderRadius, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, data: edge.data, style: edge.style, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle, markerStart: markerStartUrl, markerEnd: markerEndUrl, pathOptions: 'pathOptions' in edge ? edge.pathOptions : undefined, interactionWidth: edge.interactionWidth })), isUpdatable && (jsx(EdgeUpdateAnchors, { edge: edge, isUpdatable: isUpdatable, edgeUpdaterRadius: edgeUpdaterRadius, onEdgeUpdate: onEdgeUpdate, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, setUpdateHover: setUpdateHover, setUpdating: setUpdating, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle }))] }) }));
|
|
2221
2252
|
}
|
|
2222
|
-
EdgeWrapper.displayName = 'EdgeWrapper';
|
|
2223
|
-
var EdgeWrapper$1 = memo(EdgeWrapper);
|
|
2224
2253
|
|
|
2225
2254
|
const selector$c = (s) => ({
|
|
2226
2255
|
width: s.width,
|
|
@@ -2231,15 +2260,15 @@ const selector$c = (s) => ({
|
|
|
2231
2260
|
connectionMode: s.connectionMode,
|
|
2232
2261
|
onError: s.onError,
|
|
2233
2262
|
});
|
|
2234
|
-
|
|
2263
|
+
function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onEdgeUpdate, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, edgeUpdaterRadius, onEdgeDoubleClick, onEdgeUpdateStart, onEdgeUpdateEnd, }) {
|
|
2235
2264
|
const { edgesFocusable, edgesUpdatable, elementsSelectable, onError } = useStore(selector$c, shallow);
|
|
2236
2265
|
const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements);
|
|
2237
2266
|
return (jsxs("div", { className: "react-flow__edges", children: [jsx(MarkerDefinitions$1, { defaultColor: defaultMarkerColor, rfId: rfId }), edgeIds.map((id) => {
|
|
2238
|
-
return (jsx(EdgeWrapper
|
|
2239
|
-
})
|
|
2240
|
-
}
|
|
2241
|
-
|
|
2242
|
-
|
|
2267
|
+
return (jsx(EdgeWrapper, { id: id, edgesFocusable: edgesFocusable, edgesUpdatable: edgesUpdatable, elementsSelectable: elementsSelectable, noPanClassName: noPanClassName, onEdgeUpdate: onEdgeUpdate, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onClick: onEdgeClick, edgeUpdaterRadius: edgeUpdaterRadius, onDoubleClick: onEdgeDoubleClick, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, rfId: rfId, onError: onError, edgeTypes: edgeTypes }, id));
|
|
2268
|
+
})] }));
|
|
2269
|
+
}
|
|
2270
|
+
EdgeRendererComponent.displayName = 'EdgeRenderer';
|
|
2271
|
+
const EdgeRenderer = memo(EdgeRendererComponent);
|
|
2243
2272
|
|
|
2244
2273
|
const selector$b = (s) => `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;
|
|
2245
2274
|
function Viewport({ children }) {
|
|
@@ -2380,15 +2409,15 @@ function useNodeOrEdgeTypesWarning(nodeOrEdgeTypes = emptyTypes) {
|
|
|
2380
2409
|
}, [nodeOrEdgeTypes]);
|
|
2381
2410
|
}
|
|
2382
2411
|
|
|
2383
|
-
|
|
2412
|
+
function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, onEdgeUpdate, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, edgeUpdaterRadius, onEdgeUpdateStart, onEdgeUpdateEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeOrigin, nodeExtent, rfId, viewport, onViewportChange, }) {
|
|
2384
2413
|
useNodeOrEdgeTypesWarning(nodeTypes);
|
|
2385
2414
|
useNodeOrEdgeTypesWarning(edgeTypes);
|
|
2386
2415
|
useOnInitHandler(onInit);
|
|
2387
2416
|
useViewportSync(viewport);
|
|
2388
|
-
return (jsx(FlowRenderer
|
|
2389
|
-
}
|
|
2390
|
-
|
|
2391
|
-
|
|
2417
|
+
return (jsx(FlowRenderer, { onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, deleteKeyCode: deleteKeyCode, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, onSelectionContextMenu: onSelectionContextMenu, preventScrolling: preventScrolling, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, onViewportChange: onViewportChange, isControlledViewport: !!viewport, children: jsxs(Viewport, { children: [jsx(EdgeRenderer, { edgeTypes: edgeTypes, onEdgeClick: onEdgeClick, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeUpdate: onEdgeUpdate, onlyRenderVisibleElements: onlyRenderVisibleElements, onEdgeContextMenu: onEdgeContextMenu, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, edgeUpdaterRadius: edgeUpdaterRadius, defaultMarkerColor: defaultMarkerColor, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, rfId: rfId }), jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsx("div", { className: "react-flow__edgelabel-renderer" }), jsx("div", { className: "react-flow__viewport-portal" }), jsx(NodeRenderer, { nodeTypes: nodeTypes, onNodeClick: onNodeClick, onNodeDoubleClick: onNodeDoubleClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, onlyRenderVisibleElements: onlyRenderVisibleElements, noPanClassName: noPanClassName, noDragClassName: noDragClassName, disableKeyboardA11y: disableKeyboardA11y, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, rfId: rfId })] }) }));
|
|
2418
|
+
}
|
|
2419
|
+
GraphViewComponent.displayName = 'GraphView';
|
|
2420
|
+
const GraphView = memo(GraphViewComponent);
|
|
2392
2421
|
|
|
2393
2422
|
function handleControlledSelectionChange(changes, items) {
|
|
2394
2423
|
return items.map((item) => {
|
|
@@ -2750,7 +2779,6 @@ function ReactFlowProvider({ children, initialNodes, initialEdges, initialWidth,
|
|
|
2750
2779
|
}
|
|
2751
2780
|
return jsx(Provider$1, { value: storeRef.current, children: children });
|
|
2752
2781
|
}
|
|
2753
|
-
ReactFlowProvider.displayName = 'ReactFlowProvider';
|
|
2754
2782
|
|
|
2755
2783
|
function Wrapper({ children, nodes, edges, width, height, fitView, }) {
|
|
2756
2784
|
const isWrapped = useContext(StoreContext);
|
|
@@ -2761,37 +2789,6 @@ function Wrapper({ children, nodes, edges, width, height, fitView, }) {
|
|
|
2761
2789
|
}
|
|
2762
2790
|
return (jsx(ReactFlowProvider, { initialNodes: nodes, initialEdges: edges, initialWidth: width, initialHeight: height, fitView: fitView, children: children }));
|
|
2763
2791
|
}
|
|
2764
|
-
Wrapper.displayName = 'ReactFlowWrapper';
|
|
2765
|
-
|
|
2766
|
-
function getMediaQuery() {
|
|
2767
|
-
if (typeof window === 'undefined' || !window.matchMedia) {
|
|
2768
|
-
return null;
|
|
2769
|
-
}
|
|
2770
|
-
return window.matchMedia('(prefers-color-scheme: dark)');
|
|
2771
|
-
}
|
|
2772
|
-
/**
|
|
2773
|
-
* Hook for receiving the current color mode class 'dark' or 'light'.
|
|
2774
|
-
*
|
|
2775
|
-
* @internal
|
|
2776
|
-
* @param colorMode - The color mode to use ('dark', 'light' or 'system')
|
|
2777
|
-
*/
|
|
2778
|
-
function useColorModeClass(colorMode) {
|
|
2779
|
-
const [colorModeClass, setColorModeClass] = useState(colorMode === 'system' ? null : colorMode);
|
|
2780
|
-
useEffect(() => {
|
|
2781
|
-
if (colorMode !== 'system') {
|
|
2782
|
-
setColorModeClass(colorMode);
|
|
2783
|
-
return;
|
|
2784
|
-
}
|
|
2785
|
-
const mediaQuery = getMediaQuery();
|
|
2786
|
-
const updateColorModeClass = () => setColorModeClass(mediaQuery?.matches ? 'dark' : 'light');
|
|
2787
|
-
updateColorModeClass();
|
|
2788
|
-
mediaQuery?.addEventListener('change', updateColorModeClass);
|
|
2789
|
-
return () => {
|
|
2790
|
-
mediaQuery?.removeEventListener('change', updateColorModeClass);
|
|
2791
|
-
};
|
|
2792
|
-
}, [colorMode]);
|
|
2793
|
-
return colorModeClass !== null ? colorModeClass : getMediaQuery()?.matches ? 'dark' : 'light';
|
|
2794
|
-
}
|
|
2795
2792
|
|
|
2796
2793
|
const initNodeOrigin = [0, 0];
|
|
2797
2794
|
const initDefaultViewport = { x: 0, y: 0, zoom: 1 };
|
|
@@ -2805,7 +2802,7 @@ const wrapperStyle = {
|
|
|
2805
2802
|
const ReactFlow = forwardRef(({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes, edgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onBeforeDelete, connectionMode, connectionLineType = ConnectionLineType.Bezier, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, deleteKeyCode = 'Backspace', selectionKeyCode = 'Shift', selectionOnDrag = false, selectionMode = SelectionMode.Full, panActivationKeyCode = 'Space', multiSelectionKeyCode = isMacOs() ? 'Meta' : 'Control', zoomActivationKeyCode = isMacOs() ? 'Meta' : 'Control', snapToGrid, snapGrid, onlyRenderVisibleElements = false, selectNodesOnDrag, nodesDraggable, nodesConnectable, nodesFocusable, nodeOrigin = initNodeOrigin, edgesFocusable, edgesUpdatable, elementsSelectable = true, defaultViewport = initDefaultViewport, minZoom = 0.5, maxZoom = 2, translateExtent = infiniteExtent, preventScrolling = true, nodeExtent, defaultMarkerColor = '#b1b1b7', zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, children, onEdgeUpdate, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeUpdateStart, onEdgeUpdateEnd, edgeUpdaterRadius = 10, onNodesChange, onEdgesChange, noDragClassName = 'nodrag', noWheelClassName = 'nowheel', noPanClassName = 'nopan', fitView, fitViewOptions, connectOnClick, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect, elevateEdgesOnSelect, disableKeyboardA11y = false, autoPanOnConnect, autoPanOnNodeDrag, connectionRadius, isValidConnection, onError, style, id, nodeDragThreshold, viewport, onViewportChange, width, height, colorMode = 'light', ...rest }, ref) => {
|
|
2806
2803
|
const rfId = id || '1';
|
|
2807
2804
|
const colorModeClassName = useColorModeClass(colorMode);
|
|
2808
|
-
return (jsx("div", { ...rest, style: { ...style, ...wrapperStyle }, ref: ref, className: cc(['react-flow', className, colorModeClassName]), "data-testid": "rf__wrapper", id: id, children: jsxs(Wrapper, { nodes: nodes, edges: edges, width: width, height: height, fitView: fitView, children: [jsx(GraphView
|
|
2805
|
+
return (jsx("div", { ...rest, style: { ...style, ...wrapperStyle }, ref: ref, className: cc(['react-flow', className, colorModeClassName]), "data-testid": "rf__wrapper", id: id, children: jsxs(Wrapper, { nodes: nodes, edges: edges, width: width, height: height, fitView: fitView, children: [jsx(GraphView, { onInit: onInit, onNodeClick: onNodeClick, onEdgeClick: onEdgeClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, onNodeDoubleClick: onNodeDoubleClick, nodeTypes: nodeTypes, edgeTypes: edgeTypes, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle, connectionLineComponent: connectionLineComponent, connectionLineContainerStyle: connectionLineContainerStyle, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, deleteKeyCode: deleteKeyCode, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, onlyRenderVisibleElements: onlyRenderVisibleElements, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, preventScrolling: preventScrolling, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneScroll: onPaneScroll, onPaneContextMenu: onPaneContextMenu, onSelectionContextMenu: onSelectionContextMenu, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onEdgeUpdate: onEdgeUpdate, onEdgeContextMenu: onEdgeContextMenu, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, onEdgeUpdateStart: onEdgeUpdateStart, onEdgeUpdateEnd: onEdgeUpdateEnd, edgeUpdaterRadius: edgeUpdaterRadius, defaultMarkerColor: defaultMarkerColor, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, rfId: rfId, disableKeyboardA11y: disableKeyboardA11y, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, viewport: viewport, onViewportChange: onViewportChange }), jsx(StoreUpdater, { nodes: nodes, edges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, onConnect: onConnect, onConnectStart: onConnectStart, onConnectEnd: onConnectEnd, onClickConnectStart: onClickConnectStart, onClickConnectEnd: onClickConnectEnd, nodesDraggable: nodesDraggable, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, edgesFocusable: edgesFocusable, edgesUpdatable: edgesUpdatable, elementsSelectable: elementsSelectable, elevateNodesOnSelect: elevateNodesOnSelect, elevateEdgesOnSelect: elevateEdgesOnSelect, minZoom: minZoom, maxZoom: maxZoom, nodeExtent: nodeExtent, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, snapToGrid: snapToGrid, snapGrid: snapGrid, connectionMode: connectionMode, translateExtent: translateExtent, connectOnClick: connectOnClick, defaultEdgeOptions: defaultEdgeOptions, fitView: fitView, fitViewOptions: fitViewOptions, onNodesDelete: onNodesDelete, onEdgesDelete: onEdgesDelete, onDelete: onDelete, onNodeDragStart: onNodeDragStart, onNodeDrag: onNodeDrag, onNodeDragStop: onNodeDragStop, onSelectionDrag: onSelectionDrag, onSelectionDragStart: onSelectionDragStart, onSelectionDragStop: onSelectionDragStop, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, noPanClassName: noPanClassName, nodeOrigin: nodeOrigin, rfId: rfId, autoPanOnConnect: autoPanOnConnect, autoPanOnNodeDrag: autoPanOnNodeDrag, onError: onError, connectionRadius: connectionRadius, isValidConnection: isValidConnection, selectNodesOnDrag: selectNodesOnDrag, nodeDragThreshold: nodeDragThreshold, onBeforeDelete: onBeforeDelete }), jsx(SelectionListener, { onSelectionChange: onSelectionChange }), children, jsx(Attribution, { proOptions: proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId: rfId, disableKeyboardA11y: disableKeyboardA11y })] }) }));
|
|
2809
2806
|
});
|
|
2810
2807
|
ReactFlow.displayName = 'ReactFlow';
|
|
2811
2808
|
|
|
@@ -3039,13 +3036,6 @@ function useConnection() {
|
|
|
3039
3036
|
return ongoingConnection;
|
|
3040
3037
|
}
|
|
3041
3038
|
|
|
3042
|
-
var BackgroundVariant;
|
|
3043
|
-
(function (BackgroundVariant) {
|
|
3044
|
-
BackgroundVariant["Lines"] = "lines";
|
|
3045
|
-
BackgroundVariant["Dots"] = "dots";
|
|
3046
|
-
BackgroundVariant["Cross"] = "cross";
|
|
3047
|
-
})(BackgroundVariant || (BackgroundVariant = {}));
|
|
3048
|
-
|
|
3049
3039
|
function LinePattern({ dimensions, lineWidth, variant, className }) {
|
|
3050
3040
|
return (jsx("path", { strokeWidth: lineWidth, d: `M${dimensions[0] / 2} 0 V${dimensions[1]} M0 ${dimensions[1] / 2} H${dimensions[0]}`, className: cc(['react-flow__background-pattern', variant, className]) }));
|
|
3051
3041
|
}
|
|
@@ -3053,13 +3043,20 @@ function DotPattern({ radius, className }) {
|
|
|
3053
3043
|
return (jsx("circle", { cx: radius, cy: radius, r: radius, className: cc(['react-flow__background-pattern', 'dots', className]) }));
|
|
3054
3044
|
}
|
|
3055
3045
|
|
|
3046
|
+
var BackgroundVariant;
|
|
3047
|
+
(function (BackgroundVariant) {
|
|
3048
|
+
BackgroundVariant["Lines"] = "lines";
|
|
3049
|
+
BackgroundVariant["Dots"] = "dots";
|
|
3050
|
+
BackgroundVariant["Cross"] = "cross";
|
|
3051
|
+
})(BackgroundVariant || (BackgroundVariant = {}));
|
|
3052
|
+
|
|
3056
3053
|
const defaultSize = {
|
|
3057
3054
|
[BackgroundVariant.Dots]: 1,
|
|
3058
3055
|
[BackgroundVariant.Lines]: 1,
|
|
3059
3056
|
[BackgroundVariant.Cross]: 6,
|
|
3060
3057
|
};
|
|
3061
3058
|
const selector$4 = (s) => ({ transform: s.transform, patternId: `pattern-${s.rfId}` });
|
|
3062
|
-
function
|
|
3059
|
+
function BackgroundComponent({ id, variant = BackgroundVariant.Dots,
|
|
3063
3060
|
// only used for dots and cross
|
|
3064
3061
|
gap = 20,
|
|
3065
3062
|
// only used for lines and cross
|
|
@@ -3084,8 +3081,8 @@ size, lineWidth = 1, offset = 2, color, bgColor, style, className, patternClassN
|
|
|
3084
3081
|
'--xy-background-pattern-color-props': color,
|
|
3085
3082
|
}, ref: ref, "data-testid": "rf__background", children: [jsx("pattern", { id: _patternId, x: transform[0] % scaledGap[0], y: transform[1] % scaledGap[1], width: scaledGap[0], height: scaledGap[1], patternUnits: "userSpaceOnUse", patternTransform: `translate(-${patternOffset[0]},-${patternOffset[1]})`, children: isDots ? (jsx(DotPattern, { radius: scaledSize / offset, className: patternClassName })) : (jsx(LinePattern, { dimensions: patternDimensions, lineWidth: lineWidth, variant: variant, className: patternClassName })) }), jsx("rect", { x: "0", y: "0", width: "100%", height: "100%", fill: `url(#${_patternId})` })] }));
|
|
3086
3083
|
}
|
|
3087
|
-
|
|
3088
|
-
|
|
3084
|
+
BackgroundComponent.displayName = 'Background';
|
|
3085
|
+
const Background = memo(BackgroundComponent);
|
|
3089
3086
|
|
|
3090
3087
|
function PlusIcon() {
|
|
3091
3088
|
return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", children: jsx("path", { d: "M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z" }) }));
|
|
@@ -3107,15 +3104,16 @@ function UnlockIcon() {
|
|
|
3107
3104
|
return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 25 32", children: jsx("path", { d: "M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z" }) }));
|
|
3108
3105
|
}
|
|
3109
3106
|
|
|
3110
|
-
|
|
3111
|
-
|
|
3107
|
+
function ControlButton({ children, className, ...rest }) {
|
|
3108
|
+
return (jsx("button", { type: "button", className: cc(['react-flow__controls-button', className]), ...rest, children: children }));
|
|
3109
|
+
}
|
|
3112
3110
|
|
|
3113
3111
|
const selector$3 = (s) => ({
|
|
3114
3112
|
isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable,
|
|
3115
3113
|
minZoomReached: s.transform[2] <= s.minZoom,
|
|
3116
3114
|
maxZoomReached: s.transform[2] >= s.maxZoom,
|
|
3117
3115
|
});
|
|
3118
|
-
|
|
3116
|
+
function ControlsComponent({ style, showZoom = true, showFitView = true, showInteractive = true, fitViewOptions, onZoomIn, onZoomOut, onFitView, onInteractiveChange, className, children, position = 'bottom-left', }) {
|
|
3119
3117
|
const store = useStoreApi();
|
|
3120
3118
|
const { isInteractive, minZoomReached, maxZoomReached } = useStore(selector$3, shallow);
|
|
3121
3119
|
const { zoomIn, zoomOut, fitView } = useReactFlow();
|
|
@@ -3140,11 +3138,11 @@ const Controls = ({ style, showZoom = true, showFitView = true, showInteractive
|
|
|
3140
3138
|
onInteractiveChange?.(!isInteractive);
|
|
3141
3139
|
};
|
|
3142
3140
|
return (jsxs(Panel, { className: cc(['react-flow__controls', className]), position: position, style: style, "data-testid": "rf__controls", children: [showZoom && (jsxs(Fragment, { children: [jsx(ControlButton, { onClick: onZoomInHandler, className: "react-flow__controls-zoomin", title: "zoom in", "aria-label": "zoom in", disabled: maxZoomReached, children: jsx(PlusIcon, {}) }), jsx(ControlButton, { onClick: onZoomOutHandler, className: "react-flow__controls-zoomout", title: "zoom out", "aria-label": "zoom out", disabled: minZoomReached, children: jsx(MinusIcon, {}) })] })), showFitView && (jsx(ControlButton, { className: "react-flow__controls-fitview", onClick: onFitViewHandler, title: "fit view", "aria-label": "fit view", children: jsx(FitViewIcon, {}) })), showInteractive && (jsx(ControlButton, { className: "react-flow__controls-interactive", onClick: onToggleInteractivity, title: "toggle interactivity", "aria-label": "toggle interactivity", children: isInteractive ? jsx(UnlockIcon, {}) : jsx(LockIcon, {}) })), children] }));
|
|
3143
|
-
}
|
|
3144
|
-
|
|
3145
|
-
|
|
3141
|
+
}
|
|
3142
|
+
ControlsComponent.displayName = 'Controls';
|
|
3143
|
+
const Controls = memo(ControlsComponent);
|
|
3146
3144
|
|
|
3147
|
-
function
|
|
3145
|
+
function MiniMapNodeComponent({ id, x, y, width, height, style, color, strokeColor, strokeWidth, className, borderRadius, shapeRendering, selected, onClick, }) {
|
|
3148
3146
|
const { background, backgroundColor } = style || {};
|
|
3149
3147
|
const fill = (color || background || backgroundColor);
|
|
3150
3148
|
return (jsx("rect", { className: cc(['react-flow__minimap-node', { selected }, className]), x: x, y: y, rx: borderRadius, ry: borderRadius, width: width, height: height, style: {
|
|
@@ -3153,7 +3151,7 @@ function MiniMapNode({ id, x, y, width, height, style, color, strokeColor, strok
|
|
|
3153
3151
|
strokeWidth,
|
|
3154
3152
|
}, shapeRendering: shapeRendering, onClick: onClick ? (event) => onClick(event, id) : undefined }));
|
|
3155
3153
|
}
|
|
3156
|
-
|
|
3154
|
+
const MiniMapNode = memo(MiniMapNodeComponent);
|
|
3157
3155
|
|
|
3158
3156
|
const selector$2 = (s) => s.nodeOrigin;
|
|
3159
3157
|
const selectorNodeIds = (s) => s.nodes.map((node) => node.id);
|
|
@@ -3161,7 +3159,7 @@ const getAttrFunction = (func) => (func instanceof Function ? func : () => func)
|
|
|
3161
3159
|
function MiniMapNodes({ nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth,
|
|
3162
3160
|
// We need to rename the prop to be `CapitalCase` so that JSX will render it as
|
|
3163
3161
|
// a component properly.
|
|
3164
|
-
nodeComponent: NodeComponent = MiniMapNode
|
|
3162
|
+
nodeComponent: NodeComponent = MiniMapNode, onClick, }) {
|
|
3165
3163
|
const nodeIds = useStore(selectorNodeIds, shallow);
|
|
3166
3164
|
const nodeOrigin = useStore(selector$2);
|
|
3167
3165
|
const nodeColorFunc = getAttrFunction(nodeColor);
|
|
@@ -3214,7 +3212,7 @@ const selector$1 = (s) => {
|
|
|
3214
3212
|
};
|
|
3215
3213
|
};
|
|
3216
3214
|
const ARIA_LABEL_KEY = 'react-flow__minimap-desc';
|
|
3217
|
-
function
|
|
3215
|
+
function MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth,
|
|
3218
3216
|
// We need to rename the prop to be `CapitalCase` so that JSX will render it as
|
|
3219
3217
|
// a component properly.
|
|
3220
3218
|
nodeComponent, maskColor, maskStrokeColor = 'none', maskStrokeWidth = 1, position = 'bottom-right', onClick, onNodeClick, pannable = false, zoomable = false, ariaLabel = 'React Flow mini map', inversePan, zoomStep = 10, offsetScale = 5, }) {
|
|
@@ -3282,8 +3280,8 @@ nodeComponent, maskColor, maskStrokeColor = 'none', maskStrokeWidth = 1, positio
|
|
|
3282
3280
|
}, className: cc(['react-flow__minimap', className]), "data-testid": "rf__minimap", children: jsxs("svg", { width: elementWidth, height: elementHeight, viewBox: `${x} ${y} ${width} ${height}`, role: "img", "aria-labelledby": labelledBy, ref: svg, onClick: onSvgClick, children: [ariaLabel && jsx("title", { id: labelledBy, children: ariaLabel }), jsx(MiniMapNodes$1, { onClick: onSvgNodeClick, nodeColor: nodeColor, nodeStrokeColor: nodeStrokeColor, nodeBorderRadius: nodeBorderRadius, nodeClassName: nodeClassName, nodeStrokeWidth: nodeStrokeWidth, nodeComponent: nodeComponent }), jsx("path", { className: "react-flow__minimap-mask", d: `M${x - offset},${y - offset}h${width + offset * 2}v${height + offset * 2}h${-width - offset * 2}z
|
|
3283
3281
|
M${viewBB.x},${viewBB.y}h${viewBB.width}v${viewBB.height}h${-viewBB.width}z`, fillRule: "evenodd", stroke: maskStrokeColor, strokeWidth: maskStrokeWidth, pointerEvents: "none" })] }) }));
|
|
3284
3282
|
}
|
|
3285
|
-
|
|
3286
|
-
|
|
3283
|
+
MiniMapComponent.displayName = 'MiniMap';
|
|
3284
|
+
const MiniMap = memo(MiniMapComponent);
|
|
3287
3285
|
|
|
3288
3286
|
var ResizeControlVariant;
|
|
3289
3287
|
(function (ResizeControlVariant) {
|
|
@@ -3544,4 +3542,4 @@ function NodeToolbar({ nodeId, children, className, style, isVisible, position =
|
|
|
3544
3542
|
return (jsx(NodeToolbarPortal, { children: jsx("div", { style: wrapperStyle, className: cc(['react-flow__node-toolbar', className]), ...rest, "data-id": nodes.reduce((acc, node) => `${acc}${node.id} `, '').trim(), children: children }) }));
|
|
3545
3543
|
}
|
|
3546
3544
|
|
|
3547
|
-
export { Background
|
|
3545
|
+
export { Background, BackgroundVariant, BaseEdge, BezierEdge, ControlButton, Controls, EdgeLabelRenderer, EdgeText, Handle, MiniMap, ResizeControl$1 as NodeResizeControl, NodeResizer, NodeToolbar, Panel, ReactFlow, ReactFlowProvider, ResizeControlVariant, SimpleBezierEdge, SmoothStepEdge, StepEdge, StraightEdge, ViewportPortal, addEdge, applyEdgeChanges, applyNodeChanges, getConnectedEdges, getIncomers, getOutgoers, getSimpleBezierPath, handleParentExpand, isEdge, isNode, updateEdge, useConnection, useEdges, useEdgesState, useHandleConnections, useKeyPress, useNodeId, useNodes, useNodesData, useNodesInitialized, useNodesState, useOnSelectionChange, useOnViewportChange, useReactFlow, useStore, useStoreApi, useUpdateNodeInternals, useViewport };
|