fixed resetting nodes in svelte
This commit is contained in:
@@ -23,7 +23,8 @@
|
|||||||
'usenodesdata',
|
'usenodesdata',
|
||||||
'usesvelteflow',
|
'usesvelteflow',
|
||||||
'useupdatenodeinternals',
|
'useupdatenodeinternals',
|
||||||
'validation'
|
'validation',
|
||||||
|
'reset'
|
||||||
];
|
];
|
||||||
|
|
||||||
const onChange = (event: Event) => {
|
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 />
|
<svelte:options immutable />
|
||||||
|
|
||||||
<script lang="ts">
|
<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 { get, writable } from 'svelte/store';
|
||||||
import cc from 'classcat';
|
import cc from 'classcat';
|
||||||
import { errorMessages, Position, type NodeProps } from '@xyflow/system';
|
import { errorMessages, Position, type NodeProps } from '@xyflow/system';
|
||||||
@@ -129,15 +135,22 @@
|
|||||||
setContext('svelteflow__node_connectable', connectableStore);
|
setContext('svelteflow__node_connectable', connectableStore);
|
||||||
|
|
||||||
$: {
|
$: {
|
||||||
// hiding the noder removes html element is removed from the dom
|
|
||||||
if (nodeRef) {
|
if (nodeRef) {
|
||||||
resizeObserver?.observe(nodeRef);
|
if (!prevNodeRef) {
|
||||||
prevNodeRef = nodeRef;
|
resizeObserver?.observe(nodeRef);
|
||||||
} else if (prevNodeRef) {
|
prevNodeRef = nodeRef;
|
||||||
resizeObserver?.unobserve(prevNodeRef);
|
} else if (prevNodeRef !== nodeRef || (!computedWidth && !computedHeight)) {
|
||||||
|
resizeObserver?.unobserve(prevNodeRef);
|
||||||
|
resizeObserver?.observe(nodeRef);
|
||||||
|
prevNodeRef = nodeRef;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
resizeObserver?.unobserve(nodeRef);
|
||||||
|
});
|
||||||
|
|
||||||
function onSelectNodeHandler(event: MouseEvent | TouchEvent) {
|
function onSelectNodeHandler(event: MouseEvent | TouchEvent) {
|
||||||
if (selectable && (!get(selectNodesOnDrag) || !draggable || get(nodeDragThreshold) > 0)) {
|
if (selectable && (!get(selectNodesOnDrag) || !draggable || get(nodeDragThreshold) > 0)) {
|
||||||
// this handler gets called by XYDrag on drag start when selectNodesOnDrag=true
|
// this handler gets called by XYDrag on drag start when selectNodesOnDrag=true
|
||||||
|
|||||||
Reference in New Issue
Block a user