fix: onLoad being triggered when elements aren't ready

Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
Braks
2021-11-20 01:20:47 +01:00
parent c40e4962e3
commit 990126b2b9
2 changed files with 20 additions and 21 deletions
+19 -21
View File
@@ -126,28 +126,26 @@ const init = (state: FlowState) => {
}
onBeforeUnmount(() => store?.$dispose())
onMounted(() => {
init(options)
watch(elements, (val) => store.setElements(val), { flush: 'post', deep: true })
watch(
() => store.elements,
(val, oldVal) => {
nextTick(() => {
const hasDiff = diff(val, oldVal)
if (hasDiff.length > 0) elements.value = val
})
},
{ flush: 'post', deep: true },
)
watch(
() => props,
(val, oldVal) => {
init(options)
watch(elements, (val) => store.setElements(val), { flush: 'post', deep: true })
watch(
() => store.elements,
(val, oldVal) => {
nextTick(() => {
const hasDiff = diff(val, oldVal)
if (hasDiff.length > 0) init({ ...store.$state, ...val } as FlowState)
},
{ flush: 'pre', deep: true },
)
})
if (hasDiff.length > 0) elements.value = val
})
},
{ flush: 'post', deep: true },
)
watch(
() => props,
(val, oldVal) => {
const hasDiff = diff(val, oldVal)
if (hasDiff.length > 0) init({ ...store.$state, ...val } as FlowState)
},
{ flush: 'pre', deep: true },
)
</script>
<template>
<div class="vue-flow">
+1
View File
@@ -185,6 +185,7 @@ store.dimensions = {
invoke(async () => {
await until(() => !isNaN(width.value) && width.value > 0 && !isNaN(height.value) && height.value > 0).toBeTruthy()
await until(store.elements).toMatch((y) => y.length > 0)
const instance: FlowInstance = {
fitView: (params = { padding: 0.1 }) => fitView(params),
zoomIn,