fix: no use of fragments for nodes as it results in warning from vue and we got enough of those as is

* some typing issues
This commit is contained in:
Braks
2021-07-17 22:54:52 +02:00
parent e77797acc7
commit 7c7c31b46f
11 changed files with 36 additions and 52 deletions
+2 -2
View File
@@ -29,11 +29,11 @@ const DefaultNode = defineComponent({
},
setup(props) {
return () => (
<>
<div>
<Handle type="target" position={props.targetPosition} isConnectable={props.isConnectable} />
{props.data?.label}
<Handle type="source" position={props.sourcePosition} isConnectable={props.isConnectable} />
</>
</div>
);
}
});
+2 -2
View File
@@ -24,10 +24,10 @@ const InputNode = defineComponent({
},
setup(props) {
return () => (
<>
<div>
{props.data?.label}
<Handle type="source" position={props.sourcePosition} isConnectable={props.isConnectable} />
</>
</div>
);
}
});
+2 -2
View File
@@ -24,10 +24,10 @@ const OutputNode = defineComponent({
},
setup(props) {
return () => (
<>
<div>
{props.data?.label}
<Handle type="source" position={props.targetPosition} isConnectable={props.isConnectable} />
</>
</div>
);
}
});
+2 -2
View File
@@ -1,8 +1,8 @@
import { Node, RevueFlowStore, WrapNodeProps } from '../../types';
import { computed, CSSProperties, defineComponent, inject, onMounted, provide, ref } from 'vue';
import { computed, CSSProperties, DefineComponent, defineComponent, inject, onMounted, provide, ref } from 'vue';
import { DraggableCore, DraggableEventHandler } from '@braks/revue-draggable';
export default (NodeComponent: any) => {
export default (NodeComponent: DefineComponent<WrapNodeProps>) => {
return defineComponent({
props: WrapNodeProps,
setup(props) {
+2 -3
View File
@@ -71,9 +71,7 @@ const NodesSelection = defineComponent({
};
const onDrag: DraggableEventHandler = (event, data) => {
if (props.onSelectionDrag) {
props.onSelectionDrag(event, selectedNodes.value);
}
props.onSelectionDrag?.(event, selectedNodes.value);
store.updateNodePosDiff({
diff: {
@@ -111,6 +109,7 @@ const NodesSelection = defineComponent({
onStart={onStart}
onDrag={onDrag}
onStop={onStop}
nodeRef={nodeRef.value}
enableUserSelectHack={false}
nodeRef={nodeRef.value}
>
+6 -8
View File
@@ -56,11 +56,11 @@ export default defineComponent({
return;
}
store?.setUserSelection(mousePos);
store.setUserSelection(mousePos);
};
const onMouseMove = (event: MouseEvent): void => {
if (!store?.selectionActive) {
if (!store.selectionActive) {
return;
}
const mousePos = getMousePosition(event);
@@ -69,16 +69,14 @@ export default defineComponent({
return;
}
store?.updateUserSelection(mousePos);
store.updateUserSelection(mousePos);
};
const onMouseUp = () => {
store?.unsetUserSelection();
};
const onMouseUp = () => store.unsetUserSelection();
const onMouseLeave = () => {
store?.unsetUserSelection();
store?.unsetNodesSelection();
store.unsetUserSelection();
store.unsetNodesSelection();
};
return () => (
+10 -12
View File
@@ -50,47 +50,47 @@ const NodeRenderer = defineComponent({
onElementClick: {
type: Function as unknown as PropType<NodeRendererProps['onElementClick']>,
required: false,
default: undefined
default: () => {}
},
onNodeDoubleClick: {
type: Function as unknown as PropType<NodeRendererProps['onNodeDoubleClick']>,
required: false,
default: undefined
default: () => {}
},
onNodeMouseEnter: {
type: Function as unknown as PropType<NodeRendererProps['onNodeMouseEnter']>,
required: false,
default: undefined
default: () => {}
},
onNodeMouseMove: {
type: Function as unknown as PropType<NodeRendererProps['onNodeMouseMove']>,
required: false,
default: undefined
default: () => {}
},
onNodeMouseLeave: {
type: Function as unknown as PropType<NodeRendererProps['onNodeMouseLeave']>,
required: false,
default: undefined
default: () => {}
},
onNodeContextMenu: {
type: Function as unknown as PropType<NodeRendererProps['onNodeContextMenu']>,
required: false,
default: undefined
default: () => {}
},
onNodeDrag: {
type: Function as unknown as PropType<NodeRendererProps['onNodeDrag']>,
required: false,
default: undefined
default: () => {}
},
onNodeDragStart: {
type: Function as unknown as PropType<NodeRendererProps['onNodeDragStart']>,
required: false,
default: undefined
default: () => {}
},
onNodeDragStop: {
type: Function as unknown as PropType<NodeRendererProps['onNodeDragStop']>,
required: false,
default: undefined
default: () => {}
}
},
setup(props) {
@@ -137,7 +137,7 @@ const NodeRenderer = defineComponent({
{visibleNodes.value?.map((node) => {
const nodeType = node.type || 'default';
if (props.nodeTypes) {
const NodeComponent: any = props.nodeTypes[nodeType] || props.nodeTypes.default;
const NodeComponent = (props.nodeTypes[nodeType] || props.nodeTypes.default);
if (!props.nodeTypes[nodeType]) {
console.warn(`Node type "${nodeType}" not found. Using fallback type "default".`);
}
@@ -150,8 +150,6 @@ const NodeRenderer = defineComponent({
<NodeComponent
key={node.id}
id={node.id}
className={node.className}
style={node.style}
type={nodeType}
data={node.data}
sourcePosition={node.sourcePosition}
+2 -12
View File
@@ -1,14 +1,4 @@
import {
computed,
CSSProperties,
defineComponent,
HTMLAttributes,
inject,
onBeforeUnmount,
PropType,
provide,
watchEffect
} from 'vue';
import { computed, CSSProperties, defineComponent, HTMLAttributes, onBeforeUnmount, PropType, provide, watchEffect } from 'vue';
import GraphView from '../GraphView';
import DefaultNode from '../../components/Nodes/DefaultNode';
import InputNode from '../../components/Nodes/InputNode';
@@ -548,7 +538,7 @@ const RevueFlow = defineComponent({
*/
},
setup(props, { slots }) {
const store = typeof inject('store') !== 'undefined' ? inject<RevueFlowStore>('store')! : configureStore(initialState)();
const store = configureStore(initialState)();
provide<RevueFlowStore>('store', store);
store.setElements(props.elements);
+3 -4
View File
@@ -1,5 +1,5 @@
import { Selection as D3Selection, ZoomBehavior } from 'd3';
import { Component, HTMLAttributes, PropType, VNode } from 'vue';
import { DefineComponent, HTMLAttributes, PropType, VNode } from 'vue';
import { Store } from 'pinia';
export type ElementId = string;
@@ -85,7 +85,7 @@ export enum BackgroundVariant {
export type HandleType = 'source' | 'target';
export type NodeTypesType = { [key: string]: Component };
export type NodeTypesType = { [key: string]: DefineComponent<WrapNodeProps> };
export type EdgeTypesType = NodeTypesType;
@@ -667,7 +667,6 @@ export interface WrapNodeProps<T = any> {
onNodeDrag?: (event: MouseEvent, node: Node) => void;
onNodeDragStop?: (event: MouseEvent, node: Node) => void;
style?: any;
className?: string;
sourcePosition?: Position;
targetPosition?: Position;
isHidden?: boolean;
@@ -738,7 +737,7 @@ export type ConnectionLineComponentProps = {
connectionLineType: ConnectionLineType;
};
export type ConnectionLineComponent = Component<ConnectionLineComponentProps>;
export type ConnectionLineComponent = DefineComponent<ConnectionLineComponentProps>;
export type OnConnectFunc = (connection: Connection) => void;
export type OnConnectStartParams = {