Skip to content

Commit

Permalink
fix(minZoom,maxZoom): pass min- maxZoom for initial view closes #2343
Browse files Browse the repository at this point in the history
  • Loading branch information
moklick committed Aug 5, 2022
1 parent 9f5d610 commit d07e760
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 13 deletions.
7 changes: 4 additions & 3 deletions example/src/CustomNode/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ import ColorSelectorNode from './ColorSelectorNode';

const onInit = (reactFlowInstance: ReactFlowInstance) => {
console.log('flow loaded:', reactFlowInstance);
reactFlowInstance.fitView();
};

const onNodeDragStop = (_: MouseEvent, node: Node) => console.log('drag stop', node);
const onNodeClick = (_: MouseEvent, node: Node) => console.log('click', node);

Expand Down Expand Up @@ -117,8 +117,9 @@ const CustomNodeFlow = () => {
connectionLineStyle={connectionLineStyle}
snapToGrid={true}
snapGrid={snapGrid}
defaultZoom={1.5}
fitView
defaultZoom={0.3}
minZoom={0.3}
maxZoom={2}
>
<MiniMap
nodeStrokeColor={(n: Node): string => {
Expand Down
10 changes: 8 additions & 2 deletions src/container/FlowRenderer/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,11 @@ const FlowRenderer = ({
panOnScrollMode,
zoomOnDoubleClick,
panOnDrag,
defaultPosition,
translateExtent,
minZoom,
maxZoom,
defaultZoom,
defaultPosition,
preventScrolling,
onSelectionContextMenu,
noWheelClassName,
Expand Down Expand Up @@ -84,8 +87,11 @@ const FlowRenderer = ({
panOnScrollMode={panOnScrollMode}
zoomOnDoubleClick={zoomOnDoubleClick}
panOnDrag={panOnDrag}
defaultPosition={defaultPosition}
translateExtent={translateExtent}
minZoom={minZoom}
maxZoom={maxZoom}
defaultZoom={defaultZoom}
defaultPosition={defaultPosition}
zoomActivationKeyCode={zoomActivationKeyCode}
preventScrolling={preventScrolling}
noWheelClassName={noWheelClassName}
Expand Down
20 changes: 18 additions & 2 deletions src/container/GraphView/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,14 @@ import NodeRenderer from '../NodeRenderer';
import EdgeRenderer from '../EdgeRenderer';
import Viewport from '../Viewport';
import useOnInitHandler from '../../hooks/useOnInitHandler';
import { NodeTypesWrapped, EdgeTypesWrapped, ConnectionLineType, KeyCode, ReactFlowProps } from '../../types';
import {
NodeTypesWrapped,
EdgeTypesWrapped,
ConnectionLineType,
KeyCode,
ReactFlowProps,
CoordinateExtent,
} from '../../types';

export interface GraphViewProps
extends Omit<ReactFlowProps, 'onSelectionChange' | 'nodes' | 'edges' | 'nodeTypes' | 'edgeTypes'> {
Expand All @@ -16,6 +23,9 @@ export interface GraphViewProps
multiSelectionKeyCode: KeyCode | null;
connectionLineType: ConnectionLineType;
onlyRenderVisibleElements: boolean;
translateExtent: CoordinateExtent;
minZoom: number;
maxZoom: number;
defaultZoom: number;
defaultPosition: [number, number];
defaultMarkerColor: string;
Expand Down Expand Up @@ -52,6 +62,9 @@ const GraphView = ({
onlyRenderVisibleElements,
elementsSelectable,
selectNodesOnDrag,
translateExtent,
minZoom,
maxZoom,
defaultZoom,
defaultPosition,
preventScrolling,
Expand Down Expand Up @@ -102,8 +115,11 @@ const GraphView = ({
panOnScrollSpeed={panOnScrollSpeed}
panOnScrollMode={panOnScrollMode}
panOnDrag={panOnDrag}
defaultPosition={defaultPosition}
translateExtent={translateExtent}
minZoom={minZoom}
maxZoom={maxZoom}
defaultZoom={defaultZoom}
defaultPosition={defaultPosition}
onSelectionContextMenu={onSelectionContextMenu}
preventScrolling={preventScrolling}
noDragClassName={noDragClassName}
Expand Down
10 changes: 7 additions & 3 deletions src/container/ReactFlow/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import GraphView from '../GraphView';
import { createNodeTypes } from '../NodeRenderer/utils';
import { injectStyle, useNodeOrEdgeTypes } from './utils';
import Wrapper from './Wrapper';
import { infiniteExtent } from '../../store/initialState';

if (__INJECT_STYLES__) {
injectStyle(css as unknown as string);
Expand Down Expand Up @@ -103,11 +104,11 @@ const ReactFlow = forwardRef<ReactFlowRefType, ReactFlowProps>(
nodesDraggable,
nodesConnectable,
elementsSelectable,
minZoom,
maxZoom,
minZoom = 0.5,
maxZoom = 2,
defaultZoom = 1,
defaultPosition = initDefaultPosition,
translateExtent,
translateExtent = infiniteExtent,
preventScrolling = true,
nodeExtent,
defaultMarkerColor = '#b1b1b7',
Expand Down Expand Up @@ -177,6 +178,9 @@ const ReactFlow = forwardRef<ReactFlowRefType, ReactFlowProps>(
zoomActivationKeyCode={zoomActivationKeyCode}
onlyRenderVisibleElements={onlyRenderVisibleElements}
selectNodesOnDrag={selectNodesOnDrag}
translateExtent={translateExtent}
minZoom={minZoom}
maxZoom={maxZoom}
defaultZoom={defaultZoom}
defaultPosition={defaultPosition}
preventScrolling={preventScrolling}
Expand Down
10 changes: 7 additions & 3 deletions src/container/ZoomPane/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,11 @@ const ZoomPane = ({
selectionKeyPressed,
elementsSelectable,
panOnDrag = true,
defaultPosition = [0, 0],
translateExtent,
minZoom,
maxZoom,
defaultZoom = 1,
defaultPosition = [0, 0],
zoomActivationKeyCode,
preventScrolling = true,
children,
Expand All @@ -56,15 +59,16 @@ const ZoomPane = ({
const store = useStoreApi();
const isZoomingOrPanning = useRef(false);
const zoomPane = useRef<HTMLDivElement>(null);
const initialized = useRef(false);
const prevTransform = useRef<Viewport>({ x: 0, y: 0, zoom: 0 });
const { d3Zoom, d3Selection, d3ZoomHandler } = useStore(selector, shallow);
const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);

useResizeHandler(zoomPane);

useEffect(() => {
if (zoomPane.current) {
const { minZoom, maxZoom, translateExtent } = store.getState();
if (zoomPane.current && !initialized.current) {
initialized.current = true;
const d3ZoomInstance = zoom().scaleExtent([minZoom, maxZoom]).translateExtent(translateExtent);
const selection = select(zoomPane.current as Element).call(d3ZoomInstance);

Expand Down

0 comments on commit d07e760

Please sign in to comment.