added id, type to result from useNodesData

This commit is contained in:
peterkogo
2024-02-20 18:59:34 +01:00
parent 20e2d3d2ce
commit 89a90cb848
8 changed files with 99 additions and 65 deletions
@@ -1,3 +1,15 @@
<script context="module" lang="ts">
import TextNode from './TextNode.svelte';
import UppercaseNode from './UppercaseNode.svelte';
import ResultNode from './ResultNode.svelte';
export function isTextNode(node: any): node is TextNode | UppercaseNode {
return node.type === 'text' || node.type === 'uppercase';
}
export type MyNode = TextNode | UppercaseNode | ResultNode;
</script>
<script lang="ts">
import { writable } from 'svelte/store';
import {
@@ -12,10 +24,6 @@
} from '@xyflow/svelte';
import '@xyflow/svelte/dist/style.css';
import TextNode from './TextNode.svelte';
import UppercaseNode from './UppercaseNode.svelte';
import ResultNode from './ResultNode.svelte';
const nodeTypes: NodeTypes = {
text: TextNode,
uppercase: UppercaseNode,
@@ -34,7 +42,9 @@
{
id: '1a',
type: 'uppercase',
data: {},
data: {
text: ''
},
position: { x: 100, y: 0 }
},
{
@@ -6,6 +6,7 @@
useNodesData,
type NodeProps
} from '@xyflow/svelte';
import { isTextNode } from './+page.svelte';
type $$Props = NodeProps;
@@ -17,14 +18,15 @@
});
$: nodeData = useNodesData($connections.map((connection) => connection.source));
$: textNodes = $nodeData.filter(isTextNode);
</script>
<div class="custom">
<Handle type="target" position={Position.Left} />
<div>incoming texts:</div>
{#each $nodeData as data}
<div>{data.text}</div>
{#each textNodes as textNode}
<div>{textNode.data.text}</div>
{/each}
</div>
@@ -7,6 +7,7 @@
useSvelteFlow,
type NodeProps
} from '@xyflow/svelte';
import { isTextNode, type MyNode } from './+page.svelte';
type $$Props = NodeProps;
@@ -18,10 +19,11 @@
type: 'target'
});
$: nodeData = useNodesData($connections[0]?.source);
$: nodeData = useNodesData<MyNode>($connections[0]?.source);
$: textNode = isTextNode($nodeData) ? $nodeData : null;
$: {
updateNodeData(id, { text: $nodeData?.text?.toUpperCase() || '' });
updateNodeData(id, { text: textNode?.data.text.toUpperCase() || '' });
}
</script>