feat(components): Return if document is undefined

This commit is contained in:
Przemysław Żydek
2021-03-22 11:36:10 +01:00
parent 96290483b1
commit a7e0ace550
5 changed files with 16 additions and 8 deletions
+10 -5
View File
@@ -11,6 +11,7 @@ import {
SetConnectionId,
Connection,
} from '../../types';
import { getInitialDocument } from '../../utils/document';
type ValidConnectionFunc = (connection: Connection) => boolean;
export type SetSourceIdFunc = (params: SetConnectionId) => void;
@@ -97,8 +98,12 @@ export function onMouseDown(
onConnectStart?: OnConnectStartFunc,
onConnectStop?: OnConnectStopFunc,
onConnectEnd?: OnConnectEndFunc,
document: Document | ShadowRoot = window.document
document: Document | ShadowRoot | undefined = getInitialDocument()
): void {
if(!document) {
return;
}
const reactFlowNode = (event.target as Element).closest('.react-flow');
const elementBelow = document.elementFromPoint(event.clientX, event.clientY);
const elementBelowIsTarget = elementBelow?.classList.contains('target');
@@ -121,7 +126,7 @@ export function onMouseDown(
setConnectionNodeId({ connectionNodeId: nodeId, connectionHandleId: handleId, connectionHandleType: handleType });
onConnectStart?.(event, { nodeId, handleId, handleType });
function onMouseMove(event: MouseEvent) {
const onMouseMove = (event: MouseEvent) => {
setPosition({
x: event.clientX - containerBounds.left,
y: event.clientY - containerBounds.top,
@@ -148,9 +153,9 @@ export function onMouseDown(
elementBelow.classList.add('react-flow__handle-connecting');
elementBelow.classList.toggle('react-flow__handle-valid', isValid);
}
}
};
function onMouseUp(event: MouseEvent) {
const onMouseUp = (event: MouseEvent) => {
const { connection, isValid } = checkElementBelowIsValid(
event,
connectionMode,
@@ -174,7 +179,7 @@ export function onMouseDown(
document.removeEventListener('mousemove', onMouseMove as EventListenerOrEventListenerObject);
document.removeEventListener('mouseup', onMouseUp as EventListenerOrEventListenerObject);
}
};
document.addEventListener('mousemove', onMouseMove as EventListenerOrEventListenerObject);
document.addEventListener('mouseup', onMouseUp as EventListenerOrEventListenerObject);
+2 -1
View File
@@ -35,6 +35,7 @@ import {
import '../../style.css';
import '../../theme-default.css';
import { getInitialDocument } from '../../utils/document';
const defaultNodeTypes = {
input: InputNode,
@@ -190,7 +191,7 @@ const ReactFlow = ({
edgeUpdaterRadius = 10,
nodeTypesId = '1',
edgeTypesId = '1',
document = window.document,
document = getInitialDocument(),
...rest
}: ReactFlowProps) => {
const nodeTypesParsed = useMemo(() => createNodeTypes(nodeTypes), [nodeTypesId]);
+2 -1
View File
@@ -1,9 +1,10 @@
import configureStore from './configure-store';
import { ReactFlowState, ConnectionMode } from '../types';
import { getInitialDocument } from '../utils/document';
export const initialState: ReactFlowState = {
document: window.document,
document: getInitialDocument(),
width: 0,
height: 0,
transform: [0, 0, 1],
+1 -1
View File
@@ -431,7 +431,7 @@ export interface ReactFlowState {
onConnectStop?: OnConnectStopFunc;
onConnectEnd?: OnConnectEndFunc;
document: Document | ShadowRoot;
document?: Document | ShadowRoot;
}
export type UpdateNodeInternals = (nodeId: ElementId) => void;
+1
View File
@@ -0,0 +1 @@
export const getInitialDocument = () => typeof window === 'undefined' ? undefined : window.document