refactor(app): folder structure, components cleanup

This commit is contained in:
moklick
2019-10-06 19:01:02 +02:00
parent 845bae284f
commit cc2775dd78
25 changed files with 822 additions and 981 deletions
+59
View File
@@ -0,0 +1,59 @@
import React, { memo } from 'react';
import { useStoreState } from 'easy-peasy';
import { isNode } from '../../graph-utils';
function renderNode(d, props, state) {
const nodeType = d.type || 'default';
if (!props.nodeTypes[nodeType]) {
console.warn(`No node type found for type "${nodeType}". Using fallback type "default".`);
}
const NodeComponent = props.nodeTypes[nodeType] || props.nodeTypes.default;
const selected = state.selectedElements
.filter(isNode)
.map(e => e.id)
.includes(d.id);
return (
<NodeComponent
key={d.id}
id={d.id}
type={d.type}
data={d.data}
xPos={d.__rg.position.x}
yPos={d.__rg.position.y}
onClick={props.onElementClick}
onNodeDragStop={props.onNodeDragStop}
transform={state.transform}
selected={selected}
style={d.style}
/>
);
}
const NodeRenderer = memo((props) => {
const state = useStoreState(s => ({
nodes: s.nodes,
transform: s.transform,
selectedElements: s.selectedElements
}));
const { transform, nodes } = state;
const transformStyle = { transform : `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})` };
return (
<div
className="react-graph__nodes"
style={transformStyle}
>
{nodes.map(d => renderNode(d, props, state))}
</div>
);
});
NodeRenderer.displayName = 'NodeRenderer';
NodeRenderer.whyDidYouRender = false;
export default NodeRenderer;
+26
View File
@@ -0,0 +1,26 @@
import DefaultNode from '../../components/Nodes/DefaultNode';
import InputNode from '../../components/Nodes/InputNode';
import OutputNode from '../../components/Nodes/OutputNode';
import wrapNode from '../../components/Nodes/wrapNode';
export function createNodeTypes(nodeTypes) {
const standardTypes = {
input: wrapNode(nodeTypes.input || InputNode),
default: wrapNode(nodeTypes.default || DefaultNode),
output: wrapNode(nodeTypes.output || OutputNode)
};
const specialTypes = Object
.keys(nodeTypes)
.filter(k => !['input', 'default', 'output'].includes(k))
.reduce((res, key) => {
res[key] = wrapNode(nodeTypes[key] || DefaultNode);
return res;
}, {});
return {
...standardTypes,
...specialTypes
};
}