From 63301cc0000eb41bdb6217d0c86d1d94c9aed1b2 Mon Sep 17 00:00:00 2001 From: Braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Sat, 11 Dec 2021 23:57:36 +0100 Subject: [PATCH] update(store): Add utils to state Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com> --- src/store/index.ts | 1 + src/store/state.ts | 96 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/src/store/index.ts b/src/store/index.ts index 205c738c..46e653f6 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -1 +1,2 @@ export { default as useFlowStore } from './store' +export * from './state' diff --git a/src/store/state.ts b/src/store/state.ts index 561c1eaa..60b29224 100644 --- a/src/store/state.ts +++ b/src/store/state.ts @@ -1,4 +1,98 @@ -import { FlowState } from '~/types' +import { ConnectionMode, FlowState, PanOnScrollMode, DefaultNodeTypes, DefaultEdgeTypes, ConnectionLineType } from '~/types' +import { DefaultNode, InputNode, OutputNode, BezierEdge, SmoothStepEdge, StepEdge, StraightEdge } from '~/components' +import { createHooks } from '~/composables' + +export const defaultNodeTypes: DefaultNodeTypes = { + input: InputNode, + default: DefaultNode, + output: OutputNode, +} + +export const defaultEdgeTypes: DefaultEdgeTypes = { + default: BezierEdge, + straight: StraightEdge, + step: StepEdge, + smoothstep: SmoothStepEdge, +} + +export const initialState = (): FlowState => ({ + elements: [], + nodes: [], + edges: [], + nodeTypes: [], + edgeTypes: [], + + isReady: false, + instance: undefined, + + dimensions: { + width: 0, + height: 0, + }, + transform: [0, 0, 1], + selectedNodes: [], + selectedEdges: [], + + d3Zoom: undefined, + d3Selection: undefined, + d3ZoomHandler: undefined, + minZoom: 0.5, + maxZoom: 2, + translateExtent: [ + [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], + [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY], + ], + + nodeExtent: [ + [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], + [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY], + ], + preventScrolling: true, + zoomOnScroll: true, + zoomOnPinch: true, + zoomOnDoubleClick: true, + panOnScroll: false, + panOnScrollSpeed: 0.5, + panOnScrollMode: PanOnScrollMode.Free, + paneMoveable: true, + edgeUpdaterRadius: 10, + onlyRenderVisibleElements: false, + defaultZoom: 1, + defaultPosition: [0, 0], + + nodesSelectionActive: false, + selectionActive: false, + + defaultMarkerColor: '#b1b1b7', + connectionLineStyle: {}, + connectionLineType: ConnectionLineType.Bezier, + connectionNodeId: undefined, + connectionHandleId: undefined, + connectionHandleType: 'source', + connectionPosition: { x: NaN, y: NaN }, + connectionMode: ConnectionMode.Loose, + + snapGrid: [15, 15], + snapToGrid: false, + + edgesUpdatable: false, + nodesConnectable: true, + nodesDraggable: true, + elementsSelectable: true, + selectNodesOnDrag: true, + multiSelectionActive: false, + selectionKeyCode: 'Shift', + multiSelectionKeyCode: 'Meta', + zoomActivationKeyCode: 'Meta', + deleteKeyCode: 'Backspace', + + hooks: createHooks(), + loading: undefined, + + storageKey: undefined, + + vueFlowVersion: typeof __VUE_FLOW_VERSION__ !== 'undefined' ? __VUE_FLOW_VERSION__ : '-', +}) export default (preloadedState: FlowState) => ({ ...preloadedState,