fixed resetting nodes in svelte
This commit is contained in:
@@ -23,7 +23,8 @@
|
||||
'usenodesdata',
|
||||
'usesvelteflow',
|
||||
'useupdatenodeinternals',
|
||||
'validation'
|
||||
'validation',
|
||||
'reset'
|
||||
];
|
||||
|
||||
const onChange = (event: Event) => {
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
<script lang="ts">
|
||||
import { writable } from 'svelte/store';
|
||||
import {
|
||||
SvelteFlow,
|
||||
Controls,
|
||||
Background,
|
||||
MiniMap,
|
||||
type Node,
|
||||
type Edge,
|
||||
type NodeTypes
|
||||
} from '@xyflow/svelte';
|
||||
|
||||
import '@xyflow/svelte/dist/style.css';
|
||||
|
||||
const nodes = writable<Node[]>([]);
|
||||
const edges = writable<Edge[]>([]);
|
||||
|
||||
const resetNodesArray = () => {
|
||||
const node1: Node = {
|
||||
id: 'c1',
|
||||
data: { label: '1' },
|
||||
position: { x: 0, y: 0 }
|
||||
};
|
||||
|
||||
const node2: Node = {
|
||||
id: 'c2',
|
||||
data: { label: '2' },
|
||||
position: { x: 100, y: 0 }
|
||||
};
|
||||
|
||||
$nodes = [node1, node2];
|
||||
};
|
||||
</script>
|
||||
|
||||
<button on:click={resetNodesArray}> Reset </button>
|
||||
|
||||
<div style:height="100vh">
|
||||
<SvelteFlow {nodes} {edges} fitView>
|
||||
<Controls />
|
||||
<Background />
|
||||
<MiniMap />
|
||||
</SvelteFlow>
|
||||
</div>
|
||||
@@ -1,7 +1,13 @@
|
||||
<svelte:options immutable />
|
||||
|
||||
<script lang="ts">
|
||||
import { createEventDispatcher, setContext, SvelteComponent, type ComponentType } from 'svelte';
|
||||
import {
|
||||
createEventDispatcher,
|
||||
setContext,
|
||||
SvelteComponent,
|
||||
type ComponentType,
|
||||
onDestroy
|
||||
} from 'svelte';
|
||||
import { get, writable } from 'svelte/store';
|
||||
import cc from 'classcat';
|
||||
import { errorMessages, Position, type NodeProps } from '@xyflow/system';
|
||||
@@ -129,15 +135,22 @@
|
||||
setContext('svelteflow__node_connectable', connectableStore);
|
||||
|
||||
$: {
|
||||
// hiding the noder removes html element is removed from the dom
|
||||
if (nodeRef) {
|
||||
resizeObserver?.observe(nodeRef);
|
||||
prevNodeRef = nodeRef;
|
||||
} else if (prevNodeRef) {
|
||||
resizeObserver?.unobserve(prevNodeRef);
|
||||
if (!prevNodeRef) {
|
||||
resizeObserver?.observe(nodeRef);
|
||||
prevNodeRef = nodeRef;
|
||||
} else if (prevNodeRef !== nodeRef || (!computedWidth && !computedHeight)) {
|
||||
resizeObserver?.unobserve(prevNodeRef);
|
||||
resizeObserver?.observe(nodeRef);
|
||||
prevNodeRef = nodeRef;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onDestroy(() => {
|
||||
resizeObserver?.unobserve(nodeRef);
|
||||
});
|
||||
|
||||
function onSelectNodeHandler(event: MouseEvent | TouchEvent) {
|
||||
if (selectable && (!get(selectNodesOnDrag) || !draggable || get(nodeDragThreshold) > 0)) {
|
||||
// this handler gets called by XYDrag on drag start when selectNodesOnDrag=true
|
||||
|
||||
Reference in New Issue
Block a user