Merge pull request #484 from wbkd/develop

Develop
This commit is contained in:
Moritz
2020-09-03 09:02:21 +02:00
committed by GitHub
5 changed files with 439 additions and 458 deletions
+15
View File
@@ -15,6 +15,7 @@ const onNodeDragStart = (event, node) => console.log('drag start', node);
const onNodeDragStop = (event, node) => console.log('drag stop', node); const onNodeDragStop = (event, node) => console.log('drag stop', node);
const onElementClick = (event, element) => console.log('click', element); const onElementClick = (event, element) => console.log('click', element);
const onPaneClick = (event) => console.log('onPaneClick', event); const onPaneClick = (event) => console.log('onPaneClick', event);
const onPaneScroll = (event) => console.log('onPaneScroll', event);
const onPaneContextMenu = (event) => console.log('onPaneContextMenu', event); const onPaneContextMenu = (event) => console.log('onPaneContextMenu', event);
const InteractionFlow = () => { const InteractionFlow = () => {
@@ -28,6 +29,7 @@ const InteractionFlow = () => {
const [zoomOnDoubleClick, setZoomOnDoubleClick] = useState(false); const [zoomOnDoubleClick, setZoomOnDoubleClick] = useState(false);
const [paneMoveable, setPaneMoveable] = useState(true); const [paneMoveable, setPaneMoveable] = useState(true);
const [captureZoomClick, setCaptureZoomClick] = useState(false); const [captureZoomClick, setCaptureZoomClick] = useState(false);
const [captureZoomScroll, setCaptureZoomScroll] = useState(false);
const [captureElementClick, setCaptureElementClick] = useState(false); const [captureElementClick, setCaptureElementClick] = useState(false);
return ( return (
@@ -44,6 +46,7 @@ const InteractionFlow = () => {
onNodeDragStop={onNodeDragStop} onNodeDragStop={onNodeDragStop}
paneMoveable={paneMoveable} paneMoveable={paneMoveable}
onPaneClick={captureZoomClick ? onPaneClick : undefined} onPaneClick={captureZoomClick ? onPaneClick : undefined}
onPaneScroll={captureZoomScroll ? onPaneScroll : undefined}
onPaneContextMenu={captureZoomClick ? onPaneContextMenu : undefined} onPaneContextMenu={captureZoomClick ? onPaneContextMenu : undefined}
> >
<MiniMap /> <MiniMap />
@@ -134,6 +137,18 @@ const InteractionFlow = () => {
/> />
</label> </label>
</div> </div>
<div>
<label htmlFor="capturezoompanescroll">
capture zoom pane scroll
<input
id="capturezoompanescroll"
type="checkbox"
checked={captureZoomScroll}
onChange={(event) => setCaptureZoomScroll(event.target.checked)}
className="react-flow__capturezoompanescroll"
/>
</label>
</div>
<div> <div>
<label htmlFor="captureelementclick"> <label htmlFor="captureelementclick">
capture element click capture element click
+398 -445
View File
File diff suppressed because it is too large Load Diff
+11 -11
View File
@@ -35,34 +35,34 @@
"resize-observer": "^1.0.0" "resize-observer": "^1.0.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.11.4", "@babel/core": "^7.11.5",
"@babel/preset-env": "^7.11.0", "@babel/preset-env": "^7.11.5",
"@babel/preset-react": "^7.10.4", "@babel/preset-react": "^7.10.4",
"@svgr/rollup": "^5.4.0", "@svgr/rollup": "^5.4.0",
"@types/classnames": "^2.2.10", "@types/classnames": "^2.2.10",
"@types/d3": "^5.7.2", "@types/d3": "^5.7.2",
"@types/react": "^16.9.46", "@types/react": "^16.9.49",
"@types/react-dom": "^16.9.8", "@types/react-dom": "^16.9.8",
"autoprefixer": "^9.8.6", "autoprefixer": "^9.8.6",
"babel-loader": "^8.1.0", "babel-loader": "^8.1.0",
"babel-preset-react-app": "^9.1.2", "babel-preset-react-app": "^9.1.2",
"cypress": "^5.0.0", "cypress": "^5.1.0",
"postcss-nested": "^4.2.3", "postcss-nested": "^4.2.3",
"prettier": "2.0.5", "prettier": "2.1.1",
"prop-types": "^15.7.2", "prop-types": "^15.7.2",
"react": "^16.13.1", "react": "^16.13.1",
"release-it": "^13.6.9", "release-it": "^13.7.1",
"rollup": "^2.26.5", "rollup": "^2.26.9",
"rollup-plugin-babel": "^4.4.0", "rollup-plugin-babel": "^4.4.0",
"rollup-plugin-bundle-size": "^1.0.3", "rollup-plugin-bundle-size": "^1.0.3",
"rollup-plugin-commonjs": "^10.1.0", "rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-livereload": "^1.3.0", "rollup-plugin-livereload": "^2.0.0",
"rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-peer-deps-external": "^2.2.3", "rollup-plugin-peer-deps-external": "^2.2.3",
"rollup-plugin-postcss": "^3.1.5", "rollup-plugin-postcss": "^3.1.8",
"rollup-plugin-replace": "^2.2.0", "rollup-plugin-replace": "^2.2.0",
"rollup-plugin-serve": "^1.0.3", "rollup-plugin-serve": "^1.0.4",
"rollup-plugin-terser": "^7.0.0", "rollup-plugin-terser": "^7.0.1",
"rollup-plugin-typescript2": "^0.27.2", "rollup-plugin-typescript2": "^0.27.2",
"rollup-plugin-uglify": "^6.0.4", "rollup-plugin-uglify": "^6.0.4",
"start-server-and-test": "^1.11.3", "start-server-and-test": "^1.11.3",
+11 -1
View File
@@ -1,4 +1,4 @@
import React, { useEffect, useRef, useCallback, memo, CSSProperties, MouseEvent } from 'react'; import React, { useEffect, useRef, useCallback, memo, CSSProperties, MouseEvent, WheelEvent } from 'react';
import { useStoreState, useStoreActions, useStore } from '../../store/hooks'; import { useStoreState, useStoreActions, useStore } from '../../store/hooks';
import NodeRenderer from '../NodeRenderer'; import NodeRenderer from '../NodeRenderer';
@@ -44,6 +44,7 @@ export interface GraphViewProps {
onMove?: (flowTransform?: FlowTransform) => void; onMove?: (flowTransform?: FlowTransform) => void;
onMoveStart?: (flowTransform?: FlowTransform) => void; onMoveStart?: (flowTransform?: FlowTransform) => void;
onMoveEnd?: (flowTransform?: FlowTransform) => void; onMoveEnd?: (flowTransform?: FlowTransform) => void;
onPaneScroll?: (event?: WheelEvent) => void;
onPaneClick?: (event: MouseEvent) => void; onPaneClick?: (event: MouseEvent) => void;
onPaneContextMenu?: (event: MouseEvent) => void; onPaneContextMenu?: (event: MouseEvent) => void;
onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void; onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void;
@@ -117,6 +118,7 @@ const GraphView = ({
zoomOnDoubleClick, zoomOnDoubleClick,
paneMoveable, paneMoveable,
onPaneClick, onPaneClick,
onPaneScroll,
onPaneContextMenu, onPaneContextMenu,
}: GraphViewProps) => { }: GraphViewProps) => {
const isInitialised = useRef<boolean>(false); const isInitialised = useRef<boolean>(false);
@@ -155,6 +157,13 @@ const GraphView = ({
[onPaneContextMenu] [onPaneContextMenu]
); );
const onZoomPaneScroll = useCallback(
(event: WheelEvent) => {
onPaneScroll?.(event);
},
[onPaneScroll]
);
useResizeHandler(rendererNode); useResizeHandler(rendererNode);
useGlobalKeyHandler({ onElementsRemove, deleteKeyCode }); useGlobalKeyHandler({ onElementsRemove, deleteKeyCode });
useElementUpdater(elements); useElementUpdater(elements);
@@ -279,6 +288,7 @@ const GraphView = ({
className="react-flow__zoompane" className="react-flow__zoompane"
onClick={onZoomPaneClick} onClick={onZoomPaneClick}
onContextMenu={onZoomPaneContextMenu} onContextMenu={onZoomPaneContextMenu}
onWheel={onZoomPaneScroll}
ref={zoomPane} ref={zoomPane}
/> />
</div> </div>
+4 -1
View File
@@ -1,4 +1,4 @@
import React, { useMemo, CSSProperties, HTMLAttributes, MouseEvent } from 'react'; import React, { useMemo, CSSProperties, HTMLAttributes, MouseEvent, WheelEvent } from 'react';
import cc from 'classcat'; import cc from 'classcat';
const nodeEnv: string = process.env.NODE_ENV as string; const nodeEnv: string = process.env.NODE_ENV as string;
@@ -56,6 +56,7 @@ export interface ReactFlowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'on
onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void; onSelectionDragStart?: (event: MouseEvent, nodes: Node[]) => void;
onSelectionDrag?: (event: MouseEvent, nodes: Node[]) => void; onSelectionDrag?: (event: MouseEvent, nodes: Node[]) => void;
onSelectionDragStop?: (event: MouseEvent, nodes: Node[]) => void; onSelectionDragStop?: (event: MouseEvent, nodes: Node[]) => void;
onPaneScroll?: (event?: WheelEvent) => void;
onPaneClick?: (event: MouseEvent) => void; onPaneClick?: (event: MouseEvent) => void;
onPaneContextMenu?: (event: MouseEvent) => void; onPaneContextMenu?: (event: MouseEvent) => void;
nodeTypes: NodeTypesType; nodeTypes: NodeTypesType;
@@ -130,6 +131,7 @@ const ReactFlow = ({
zoomOnDoubleClick, zoomOnDoubleClick,
paneMoveable, paneMoveable,
onPaneClick, onPaneClick,
onPaneScroll,
onPaneContextMenu, onPaneContextMenu,
}: ReactFlowProps) => { }: ReactFlowProps) => {
const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []); const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), []);
@@ -180,6 +182,7 @@ const ReactFlow = ({
zoomOnDoubleClick={zoomOnDoubleClick} zoomOnDoubleClick={zoomOnDoubleClick}
paneMoveable={paneMoveable} paneMoveable={paneMoveable}
onPaneClick={onPaneClick} onPaneClick={onPaneClick}
onPaneScroll={onPaneScroll}
onPaneContextMenu={onPaneContextMenu} onPaneContextMenu={onPaneContextMenu}
onSelectionDragStart={onSelectionDragStart} onSelectionDragStart={onSelectionDragStart}
onSelectionDrag={onSelectionDrag} onSelectionDrag={onSelectionDrag}