feat(svelte): add useHandleConnections, useNodesData and useUpdateNodeData
This commit is contained in:
@@ -5,7 +5,7 @@ function ResultNode() {
|
||||
const connections = useHandleConnections({
|
||||
handleType: 'target',
|
||||
});
|
||||
const nodesData = useNodesData<{ text: string }>(connections.map((connection) => connection.source));
|
||||
const nodesData = useNodesData(connections.map((connection) => connection.source));
|
||||
|
||||
useEffect(() => {
|
||||
console.log('incoming data changed', nodesData);
|
||||
@@ -16,7 +16,8 @@ function ResultNode() {
|
||||
<Handle type="target" position={Position.Left} />
|
||||
<div>
|
||||
incoming texts:{' '}
|
||||
{nodesData?.filter((nodeData) => nodeData.text).map(({ text }, i) => <div key={i}>{text}</div>) || 'none'}
|
||||
{nodesData?.filter((nodeData) => nodeData.text !== undefined).map(({ text }, i) => <div key={i}>{text}</div>) ||
|
||||
'none'}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -5,7 +5,7 @@ function UppercaseNode({ id }: NodeProps) {
|
||||
const connections = useHandleConnections({
|
||||
handleType: 'target',
|
||||
});
|
||||
const nodeData = useNodesData<{ text: string }>(connections[0]?.source);
|
||||
const nodeData = useNodesData(connections[0]?.source);
|
||||
const updateNodeData = useUpdateNodeData();
|
||||
|
||||
useEffect(() => {
|
||||
@@ -14,9 +14,9 @@ function UppercaseNode({ id }: NodeProps) {
|
||||
|
||||
return (
|
||||
<div style={{ background: '#eee', color: '#222', padding: 10, fontSize: 12, borderRadius: 10 }}>
|
||||
<Handle type="source" position={Position.Right} />
|
||||
<div>uppercase transform</div>
|
||||
<Handle type="target" position={Position.Left} isConnectable={connections.length === 0} />
|
||||
<div>uppercase transform</div>
|
||||
<Handle type="source" position={Position.Right} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -15,13 +15,18 @@ import TextNode from './TextNode';
|
||||
import ResultNode from './ResultNode';
|
||||
import UppercaseNode from './UppercaseNode';
|
||||
|
||||
export type TextNode = Node<{ text: string }, 'text'>;
|
||||
export type ResultNode = Node<{}, 'result'>;
|
||||
export type UppercaseNode = Node<{}, 'uppercase'>;
|
||||
export type MyNode = Node<{ text: string }, 'text'> | Node<{}, 'result'> | Node<{}, 'uppercase'>;
|
||||
|
||||
const nodeTypes = {
|
||||
text: TextNode,
|
||||
result: ResultNode,
|
||||
uppercase: UppercaseNode,
|
||||
};
|
||||
|
||||
const initNodes: Node[] = [
|
||||
const initNodes: MyNode[] = [
|
||||
{
|
||||
id: '1',
|
||||
type: 'text',
|
||||
|
||||
Reference in New Issue
Block a user