feat(edges): animated prop

This commit is contained in:
moklick
2019-07-25 16:03:50 +02:00
parent d094f5f312
commit 064f7d9c75
7 changed files with 45 additions and 31 deletions
+2 -2
View File
@@ -9,11 +9,11 @@ const isInputTarget = (e) => ['INPUT', 'SELECT', 'TEXTAREA'].includes(e.target.n
export default EdgeComponent => memo((props) => {
const { state, dispatch } = useContext(GraphContext);
const { data, onClick } = props;
const { data = {}, onClick } = props;
const selected = state.selectedElements
.filter(e => isEdge(e))
.find(e => e.data.source === data.source && e.data.target === data.target);
const edgeClasses = cx('react-graph__edge', { selected });
const edgeClasses = cx('react-graph__edge', { selected, animated: data.animated });
return (
<g
+5 -5
View File
@@ -1,18 +1,18 @@
import DefaultEdge from './EdgeTypes/DefaultEdge';
import StraightEdge from './EdgeTypes/StraightEdge';
import BezierEdge from './EdgeTypes/BezierEdge';
import wrapEdge from './EdgeTypes/wrapEdge';
export function createEdgeTypes(edgeTypes) {
const standardTypes = {
default: wrapEdge(edgeTypes.default || DefaultEdge),
bezier: wrapEdge(edgeTypes.bezier || BezierEdge)
default: wrapEdge(edgeTypes.default || BezierEdge),
straight: wrapEdge(edgeTypes.bezier || StraightEdge)
};
const specialTypes = Object
.keys(DefaultEdge)
.keys(edgeTypes)
.filter(k => !['default', 'bezier'].includes(k))
.reduce((res, key) => {
res[key] = wrapEdge(nodeTypes[key] || DefaultEdge);
res[key] = wrapEdge(edgeTypes[key] ||BezierEdge);
return res;
}, {});
+4 -2
View File
@@ -10,7 +10,8 @@ import InputNode from './NodeRenderer/NodeTypes/InputNode';
import OutputNode from './NodeRenderer/NodeTypes/OutputNode';
import { createNodeTypes } from './NodeRenderer/utils';
import DefaultEdge from './EdgeRenderer/EdgeTypes/DefaultEdge';
import BezierEdge from './EdgeRenderer/EdgeTypes/BezierEdge';
import StraightEdge from './EdgeRenderer/EdgeTypes/StraightEdge';
import { createEdgeTypes } from './EdgeRenderer/utils';
import './style.css';
@@ -65,7 +66,8 @@ ReactGraph.defaultProps = {
output: OutputNode
},
edgeTypes: {
default: DefaultEdge
default: BezierEdge,
straight: StraightEdge
}
};
+9
View File
@@ -54,6 +54,15 @@
&.selected {
stroke: #ff5050;
}
&.animated {
stroke-dasharray: 5;
animation: dashdraw 0.5s linear infinite;
}
}
@keyframes dashdraw {
from {stroke-dashoffset: 10}
}
.react-graph__nodes {