refactor(core): emit nodes initialized if getNodesInitialized has same length as nodes state
Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
@@ -9,7 +9,9 @@ const {
|
|||||||
nodesFocusable,
|
nodesFocusable,
|
||||||
elementsSelectable,
|
elementsSelectable,
|
||||||
nodesConnectable,
|
nodesConnectable,
|
||||||
|
nodes,
|
||||||
getNodes,
|
getNodes,
|
||||||
|
getNodesInitialized,
|
||||||
getNodeTypes,
|
getNodeTypes,
|
||||||
updateNodeDimensions,
|
updateNodeDimensions,
|
||||||
emits,
|
emits,
|
||||||
@@ -20,29 +22,20 @@ const selectable = (s?: boolean) => (typeof s === 'undefined' ? elementsSelectab
|
|||||||
const connectable = (c?: HandleConnectable) => (typeof c === 'undefined' ? nodesConnectable : c)
|
const connectable = (c?: HandleConnectable) => (typeof c === 'undefined' ? nodesConnectable : c)
|
||||||
const focusable = (f?: boolean) => (typeof f === 'undefined' ? nodesFocusable : f)
|
const focusable = (f?: boolean) => (typeof f === 'undefined' ? nodesFocusable : f)
|
||||||
|
|
||||||
const resizeObserver = ref<ResizeObserver>()
|
let resizeObserver = $ref<ResizeObserver>()
|
||||||
|
|
||||||
|
until(() => getNodesInitialized.length === nodes.length)
|
||||||
|
.toBe(true)
|
||||||
|
.then(() => {
|
||||||
|
nextTick(() => {
|
||||||
|
emits.nodesInitialized()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
// todo: remove nodesInitialized hook as it's not needed anymore, use `getNodesInitialized` instead
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const readyNodes = []
|
resizeObserver = new ResizeObserver((entries) => {
|
||||||
let initialized = false
|
|
||||||
|
|
||||||
const isReady = (id: string) => {
|
|
||||||
readyNodes.push(id)
|
|
||||||
|
|
||||||
if (readyNodes.length === getNodes.length) {
|
|
||||||
nextTick(() => {
|
|
||||||
initialized = true
|
|
||||||
emits.nodesInitialized()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
resizeObserver.value = new ResizeObserver((entries) => {
|
|
||||||
const updates = entries.map((entry: ResizeObserverEntry) => {
|
const updates = entries.map((entry: ResizeObserverEntry) => {
|
||||||
const id = entry.target.getAttribute('data-id') as string
|
const id = entry.target.getAttribute('data-id') as string
|
||||||
// if nodes initialized hasn't been emitted yet, add the node to the readyNodes array
|
|
||||||
if (!initialized) isReady(id)
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id,
|
id,
|
||||||
@@ -54,7 +47,7 @@ onMounted(() => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
onBeforeUnmount(() => resizeObserver.value?.disconnect())
|
onBeforeUnmount(() => resizeObserver?.disconnect())
|
||||||
|
|
||||||
const getType = (type?: string, template?: GraphNode['template']) => {
|
const getType = (type?: string, template?: GraphNode['template']) => {
|
||||||
const name = type || 'default'
|
const name = type || 'default'
|
||||||
|
|||||||
Reference in New Issue
Block a user