chore(core): cleanup initial render
Signed-off-by: braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
@@ -134,7 +134,7 @@ async function untilDimensions(dimensions: Dimensions, nodes: GraphNode[]) {
|
|||||||
if ('screen' in window) {
|
if ('screen' in window) {
|
||||||
// if initial nodes are present, wait until the node dimensions have been established
|
// if initial nodes are present, wait until the node dimensions have been established
|
||||||
if (nodes.length > 0) {
|
if (nodes.length > 0) {
|
||||||
await until(nodes).toMatch((nodes) => !!nodes.filter((node) => node.initialized).length)
|
await until(nodes).toMatch((nodes) => nodes.filter((node) => node.initialized).length === nodes.length, { flush: 'pre' })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import NodeRenderer from '../NodeRenderer/NodeRenderer.vue'
|
|||||||
import EdgeRenderer from '../EdgeRenderer/EdgeRenderer.vue'
|
import EdgeRenderer from '../EdgeRenderer/EdgeRenderer.vue'
|
||||||
import type { Dimensions } from '../../types'
|
import type { Dimensions } from '../../types'
|
||||||
|
|
||||||
const { id, viewport, dimensions, fitViewOnInit, emits, fitView, onNodesInitialized, ...rest } = useVueFlow()
|
const { id, viewport, dimensions, emits, onNodesInitialized, ...rest } = useVueFlow()
|
||||||
|
|
||||||
const untilDimensions = async (dim: Dimensions) => {
|
const untilDimensions = async (dim: Dimensions) => {
|
||||||
// if ssr we can't wait for dimensions, they'll never really exist
|
// if ssr we can't wait for dimensions, they'll never really exist
|
||||||
@@ -33,14 +33,10 @@ onMounted(async () => {
|
|||||||
id,
|
id,
|
||||||
viewport,
|
viewport,
|
||||||
dimensions,
|
dimensions,
|
||||||
fitViewOnInit,
|
|
||||||
fitView,
|
|
||||||
emits,
|
emits,
|
||||||
onNodesInitialized,
|
onNodesInitialized,
|
||||||
...rest,
|
...rest,
|
||||||
})
|
})
|
||||||
|
|
||||||
fitViewOnInit?.value && fitView()
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ const {
|
|||||||
connectionStartHandle,
|
connectionStartHandle,
|
||||||
userSelectionActive,
|
userSelectionActive,
|
||||||
paneDragging,
|
paneDragging,
|
||||||
|
viewport,
|
||||||
} = $(useVueFlow())
|
} = $(useVueFlow())
|
||||||
|
|
||||||
const viewportEl = ref<HTMLDivElement>()
|
const viewportEl = ref<HTMLDivElement>()
|
||||||
@@ -67,6 +68,14 @@ onMounted(() => {
|
|||||||
useEventListener(window, 'resize', setDimensions)
|
useEventListener(window, 'resize', setDimensions)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => viewport,
|
||||||
|
() => {
|
||||||
|
console.log(viewport)
|
||||||
|
},
|
||||||
|
{ deep: true },
|
||||||
|
)
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const viewportElement = viewportEl.value!
|
const viewportElement = viewportEl.value!
|
||||||
const bbox = viewportElement.getBoundingClientRect()
|
const bbox = viewportElement.getBoundingClientRect()
|
||||||
@@ -90,16 +99,20 @@ onMounted(() => {
|
|||||||
d3Zoom,
|
d3Zoom,
|
||||||
d3Selection,
|
d3Selection,
|
||||||
d3ZoomHandler,
|
d3ZoomHandler,
|
||||||
viewport: { x: updatedTransform.x, y: updatedTransform.y, zoom: updatedTransform.k },
|
viewport: { x: constrainedTransform.x, y: constrainedTransform.y, zoom: constrainedTransform.k },
|
||||||
viewportRef: viewportElement,
|
viewportRef: viewportElement,
|
||||||
})
|
})
|
||||||
|
|
||||||
const onKeyPress = (keyPress: boolean) => {
|
useKeyPress(selectionKeyCode, (keyPress) => {
|
||||||
selectionKeyPressed = keyPress
|
selectionKeyPressed = keyPress
|
||||||
|
})
|
||||||
|
|
||||||
if (keyPress && userSelectionActive && !isZoomingOrPanning) {
|
const zoomKeyPressed = useKeyPress(zoomActivationKeyCode)
|
||||||
|
|
||||||
|
watchEffect(() => {
|
||||||
|
if (selectionKeyPressed && userSelectionActive && !isZoomingOrPanning) {
|
||||||
d3Zoom.on('zoom', null)
|
d3Zoom.on('zoom', null)
|
||||||
} else if (!keyPress && !userSelectionActive) {
|
} else if (!selectionKeyPressed && !userSelectionActive) {
|
||||||
d3Zoom.on('zoom', (event: D3ZoomEvent<HTMLDivElement, any>) => {
|
d3Zoom.on('zoom', (event: D3ZoomEvent<HTMLDivElement, any>) => {
|
||||||
setState({ viewport: { x: event.transform.x, y: event.transform.y, zoom: event.transform.k } })
|
setState({ viewport: { x: event.transform.x, y: event.transform.y, zoom: event.transform.k } })
|
||||||
|
|
||||||
@@ -111,14 +124,7 @@ onMounted(() => {
|
|||||||
emits.move({ event, flowTransform })
|
emits.move({ event, flowTransform })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
useKeyPress(selectionKeyCode, onKeyPress)
|
|
||||||
|
|
||||||
// initialize
|
|
||||||
onKeyPress(false)
|
|
||||||
|
|
||||||
const zoomKeyPressed = useKeyPress(zoomActivationKeyCode)
|
|
||||||
|
|
||||||
d3Zoom.on('start', (event: D3ZoomEvent<HTMLDivElement, any>) => {
|
d3Zoom.on('start', (event: D3ZoomEvent<HTMLDivElement, any>) => {
|
||||||
if (!event.sourceEvent) return null
|
if (!event.sourceEvent) return null
|
||||||
|
|||||||
Reference in New Issue
Block a user