[feat] Vue node lifecycle management implementation

Implements reactive position tracking, viewport culling, and event-driven
node management for Vue-based node rendering system.

Ready for demo and developer handoff.
This commit is contained in:
bymyself
2025-07-02 02:59:59 -07:00
parent 065e292b1c
commit 992d79b52f
11 changed files with 1002 additions and 253 deletions

View File

@@ -18,7 +18,7 @@ import { useTransformState } from '@/composables/element/useTransformState'
interface TransformPaneProps {
canvas?: LGraphCanvas
viewport?: DOMRect
viewport?: { width: number; height: number }
}
const props = defineProps<TransformPaneProps>()
@@ -76,10 +76,19 @@ const handlePointerDown = (event: PointerEvent) => {
// Sync with canvas on RAF
let rafId: number | null = null
const emit = defineEmits<{
rafStatusChange: [active: boolean]
transformUpdate: [time: number]
}>()
const startSync = () => {
emit('rafStatusChange', true)
const sync = () => {
if (props.canvas) {
const startTime = performance.now()
syncWithCanvas(props.canvas)
const endTime = performance.now()
emit('transformUpdate', endTime - startTime)
}
rafId = requestAnimationFrame(sync)
}
@@ -90,6 +99,7 @@ const stopSync = () => {
if (rafId !== null) {
cancelAnimationFrame(rafId)
rafId = null
emit('rafStatusChange', false)
}
}