From a12c8932267b3761806d6a0c3a2418832aba7c61 Mon Sep 17 00:00:00 2001 From: moklick Date: Thu, 16 Feb 2023 16:37:47 +0100 Subject: [PATCH] refactor(packages): add @reactflow/system --- packages/core/package.json | 1 + .../src/components/ConnectionLine/index.tsx | 2 +- packages/core/src/components/Handle/utils.ts | 3 +- .../core/src/container/EdgeRenderer/utils.ts | 3 +- .../core/src/container/NodeRenderer/index.tsx | 3 +- .../core/src/hooks/useNodesInitialized.ts | 3 +- packages/core/src/hooks/useVisibleEdges.ts | 3 +- packages/core/src/index.ts | 5 +- packages/core/src/store/index.ts | 3 +- packages/core/src/store/utils.ts | 3 +- packages/core/src/types/nodes.ts | 2 +- packages/core/src/utils/index.ts | 2 - packages/svelte/package.json | 2 +- .../svelte/src/lib/components/Handle.svelte | 2 +- .../src/lib/components/nodes/BaseNode.svelte | 2 +- .../lib/components/nodes/DefaultNode.svelte | 2 +- .../src/lib/container/EdgeRenderer/utils.ts | 2 +- .../src/lib/container/SvelteFlow.svelte | 2 +- packages/svelte/src/lib/hooks/drag/index.ts | 2 +- packages/svelte/src/lib/hooks/drag/utils.ts | 2 +- packages/svelte/src/lib/hooks/zoom/index.ts | 2 +- packages/svelte/src/lib/index.ts | 1 - packages/svelte/src/lib/store/index.ts | 6 +- packages/svelte/src/routes/+page.svelte | 2 +- packages/svelte/src/utils/index.ts | 2 +- packages/system/.eslintrc.js | 4 + packages/system/README.md | 10 + packages/system/package.json | 62 ++++ packages/system/src/index.ts | 3 + packages/system/src/types/changes.ts | 62 ++++ packages/system/src/types/component-props.ts | 149 ++++++++++ packages/system/src/types/edges.ts | 180 +++++++++++ packages/system/src/types/general.ts | 279 ++++++++++++++++++ packages/system/src/types/handles.ts | 23 ++ packages/system/src/types/index.ts | 8 + packages/system/src/types/instance.ts | 56 ++++ packages/system/src/types/nodes.ts | 118 ++++++++ packages/system/src/types/utils.ts | 29 ++ packages/system/tsconfig.json | 6 + pnpm-lock.yaml | 131 ++++---- 40 files changed, 1104 insertions(+), 78 deletions(-) create mode 100644 packages/system/.eslintrc.js create mode 100644 packages/system/README.md create mode 100644 packages/system/package.json create mode 100644 packages/system/src/index.ts create mode 100644 packages/system/src/types/changes.ts create mode 100644 packages/system/src/types/component-props.ts create mode 100644 packages/system/src/types/edges.ts create mode 100644 packages/system/src/types/general.ts create mode 100644 packages/system/src/types/handles.ts create mode 100644 packages/system/src/types/index.ts create mode 100644 packages/system/src/types/instance.ts create mode 100644 packages/system/src/types/nodes.ts create mode 100644 packages/system/src/types/utils.ts create mode 100644 packages/system/tsconfig.json diff --git a/packages/core/package.json b/packages/core/package.json index 06db1a98..99bb8c3e 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,6 +38,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { + "@reactflow/system": "workspace:11.5.5", "@types/d3": "^7.4.0", "@types/d3-drag": "^3.0.1", "@types/d3-selection": "^3.0.3", diff --git a/packages/core/src/components/ConnectionLine/index.tsx b/packages/core/src/components/ConnectionLine/index.tsx index 45ec7937..cb813589 100644 --- a/packages/core/src/components/ConnectionLine/index.tsx +++ b/packages/core/src/components/ConnectionLine/index.tsx @@ -1,12 +1,12 @@ import { CSSProperties, useCallback } from 'react'; import { shallow } from 'zustand/shallow'; import cc from 'classcat'; +import { internalsSymbol } from '@reactflow/system'; import { useStore } from '../../hooks/useStore'; import { getBezierPath } from '../Edges/BezierEdge'; import { getSmoothStepPath } from '../Edges/SmoothStepEdge'; import { getSimpleBezierPath } from '../Edges/SimpleBezierEdge'; -import { internalsSymbol } from '../../utils'; import type { ConnectionLineComponent, ConnectionStatus, diff --git a/packages/core/src/components/Handle/utils.ts b/packages/core/src/components/Handle/utils.ts index 58263781..7287022e 100644 --- a/packages/core/src/components/Handle/utils.ts +++ b/packages/core/src/components/Handle/utils.ts @@ -1,7 +1,8 @@ import { MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent } from 'react'; +import { internalsSymbol } from '@reactflow/system'; import { ConnectionMode, ConnectionStatus } from '../../types'; -import { getEventPosition, internalsSymbol } from '../../utils'; +import { getEventPosition } from '../../utils'; import type { Connection, HandleType, XYPosition, Node, NodeHandleBounds } from '../../types'; export type ConnectionHandle = { diff --git a/packages/core/src/container/EdgeRenderer/utils.ts b/packages/core/src/container/EdgeRenderer/utils.ts index edd74543..b3c3a802 100644 --- a/packages/core/src/container/EdgeRenderer/utils.ts +++ b/packages/core/src/container/EdgeRenderer/utils.ts @@ -1,8 +1,9 @@ import type { ComponentType } from 'react'; +import { internalsSymbol } from '@reactflow/system'; import { BezierEdge, SmoothStepEdge, StepEdge, StraightEdge, SimpleBezierEdge } from '../../components/Edges'; import wrapEdge from '../../components/Edges/wrapEdge'; -import { internalsSymbol, rectToBox } from '../../utils'; +import { rectToBox } from '../../utils'; import { Position } from '../../types'; import type { EdgeProps, diff --git a/packages/core/src/container/NodeRenderer/index.tsx b/packages/core/src/container/NodeRenderer/index.tsx index ab35cb74..b2d03613 100644 --- a/packages/core/src/container/NodeRenderer/index.tsx +++ b/packages/core/src/container/NodeRenderer/index.tsx @@ -1,10 +1,11 @@ import { memo, useMemo, useEffect, useRef } from 'react'; import type { ComponentType } from 'react'; import { shallow } from 'zustand/shallow'; +import { internalsSymbol } from '@reactflow/system'; import useVisibleNodes from '../../hooks/useVisibleNodes'; import { useStore } from '../../hooks/useStore'; -import { clampPosition, internalsSymbol } from '../../utils'; +import { clampPosition } from '../../utils'; import { containerStyle } from '../../styles'; import { GraphViewProps } from '../GraphView'; import { getPositionWithOrigin } from './utils'; diff --git a/packages/core/src/hooks/useNodesInitialized.ts b/packages/core/src/hooks/useNodesInitialized.ts index 45b14a33..0a1e851a 100644 --- a/packages/core/src/hooks/useNodesInitialized.ts +++ b/packages/core/src/hooks/useNodesInitialized.ts @@ -1,4 +1,5 @@ -import { internalsSymbol } from '../utils'; +import { internalsSymbol } from '@reactflow/system'; + import { useStore } from './useStore'; import type { ReactFlowState } from '../types'; diff --git a/packages/core/src/hooks/useVisibleEdges.ts b/packages/core/src/hooks/useVisibleEdges.ts index cbd673e5..3944697b 100644 --- a/packages/core/src/hooks/useVisibleEdges.ts +++ b/packages/core/src/hooks/useVisibleEdges.ts @@ -1,8 +1,9 @@ import { useCallback } from 'react'; +import { internalsSymbol } from '@reactflow/system'; import { useStore } from '../hooks/useStore'; import { isEdgeVisible } from '../container/EdgeRenderer/utils'; -import { internalsSymbol, isNumeric } from '../utils'; +import { isNumeric } from '../utils'; import type { ReactFlowState, NodeInternals, Edge } from '../types'; const defaultEdgeTree = [{ level: 0, isMaxLevel: true, edges: [] }]; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index c4a5b19e..140bcfcb 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -8,7 +8,7 @@ export { default as SimpleBezierEdge, getSimpleBezierPath } from './components/E export { default as SmoothStepEdge, getSmoothStepPath } from './components/Edges/SmoothStepEdge'; export { default as BaseEdge } from './components/Edges/BaseEdge'; -export { internalsSymbol, rectToBox, boxToRect, getBoundsOfRects } from './utils'; +export { rectToBox, boxToRect, getBoundsOfRects } from './utils'; export { isNode, isEdge, @@ -40,5 +40,6 @@ export { default as useOnSelectionChange } from './hooks/useOnSelectionChange'; export { default as useNodesInitialized } from './hooks/useNodesInitialized'; export { default as useGetPointerPosition } from './hooks/useGetPointerPosition'; export { useNodeId } from './contexts/NodeIdContext'; +export * from '@reactflow/system'; -export * from './types'; +// export * from './types'; diff --git a/packages/core/src/store/index.ts b/packages/core/src/store/index.ts index c85225db..21b04c28 100644 --- a/packages/core/src/store/index.ts +++ b/packages/core/src/store/index.ts @@ -1,7 +1,8 @@ import { createStore } from 'zustand'; import { zoomIdentity } from 'd3-zoom'; +import { internalsSymbol } from '@reactflow/system'; -import { clampPosition, getDimensions, internalsSymbol } from '../utils'; +import { clampPosition, getDimensions } from '../utils'; import { applyNodeChanges, createSelectionChange, getSelectionChanges } from '../utils/changes'; import { getHandleBounds } from '../components/Nodes/utils'; import { createNodeInternals, fitView, updateAbsoluteNodePositions, updateNodesAndEdgesSelections } from './utils'; diff --git a/packages/core/src/store/utils.ts b/packages/core/src/store/utils.ts index 994fbf20..b58b7e1d 100644 --- a/packages/core/src/store/utils.ts +++ b/packages/core/src/store/utils.ts @@ -1,7 +1,8 @@ import { zoomIdentity } from 'd3-zoom'; import type { StoreApi } from 'zustand'; +import { internalsSymbol } from '@reactflow/system'; -import { internalsSymbol, isNumeric } from '../utils'; +import { isNumeric } from '../utils'; import { getD3Transition, getRectOfNodes, getTransformForBounds, getNodePositionWithOrigin } from '../utils/graph'; import type { Edge, diff --git a/packages/core/src/types/nodes.ts b/packages/core/src/types/nodes.ts index a7ec9b2b..1494b0cd 100644 --- a/packages/core/src/types/nodes.ts +++ b/packages/core/src/types/nodes.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import type { CSSProperties, MouseEvent as ReactMouseEvent } from 'react'; +import { internalsSymbol } from '@reactflow/system'; -import { internalsSymbol } from '../utils'; import type { XYPosition, Position, CoordinateExtent, HandleElement } from '.'; // interface for the user node items diff --git a/packages/core/src/utils/index.ts b/packages/core/src/utils/index.ts index 2d801d05..1423a149 100644 --- a/packages/core/src/utils/index.ts +++ b/packages/core/src/utils/index.ts @@ -84,8 +84,6 @@ export const isRectObject = (obj: any): obj is Rect => /* eslint-disable-next-line @typescript-eslint/no-explicit-any */ export const isNumeric = (n: any): n is number => !isNaN(n) && isFinite(n); -export const internalsSymbol = Symbol.for('internals'); - // used for a11y key board controls for nodes and edges export const elementSelectionKeys = ['Enter', ' ', 'Escape']; diff --git a/packages/svelte/package.json b/packages/svelte/package.json index eb17ec7d..9e8d1321 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -16,7 +16,7 @@ ".": "./index.js" }, "dependencies": { - "@reactflow/core": "workspace:*", + "@reactflow/system": "workspace:*", "cc": "^3.0.1", "d3-drag": "^3.0.0", "d3-selection": "^3.0.0", diff --git a/packages/svelte/src/lib/components/Handle.svelte b/packages/svelte/src/lib/components/Handle.svelte index a90bccf2..2e8798c0 100644 --- a/packages/svelte/src/lib/components/Handle.svelte +++ b/packages/svelte/src/lib/components/Handle.svelte @@ -1,7 +1,7 @@