refactor(core): pass renderers to viewport cmp as slots

This commit is contained in:
braks
2024-02-05 07:51:12 +01:00
committed by Braks
parent daff22f3cf
commit cc9f4fb244
3 changed files with 12 additions and 13 deletions
@@ -1,7 +1,5 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useVueFlow } from '../../composables' import { useVueFlow } from '../../composables'
import NodeRenderer from '../NodeRenderer/NodeRenderer.vue'
import EdgeRenderer from '../EdgeRenderer/EdgeRenderer.vue'
const { viewport } = useVueFlow() const { viewport } = useVueFlow()
</script> </script>
@@ -16,16 +14,8 @@ export default {
<template> <template>
<div <div
class="vue-flow__transformationpane vue-flow__container" class="vue-flow__transformationpane vue-flow__container"
:style="{ :style="{ transform: `translate(${viewport.x}px,${viewport.y}px) scale(${viewport.zoom})` }"
transform: `translate(${viewport.x}px,${viewport.y}px) scale(${viewport.zoom})`,
}"
> >
<EdgeRenderer />
<div class="vue-flow__edge-labels" />
<NodeRenderer />
<slot /> <slot />
</div> </div>
</template> </template>
@@ -6,10 +6,11 @@ import { onMounted, ref, watch } from 'vue'
import { toRef } from '@vueuse/core' import { toRef } from '@vueuse/core'
import type { CoordinateExtent, D3ZoomHandler, ViewportTransform } from '../../types' import type { CoordinateExtent, D3ZoomHandler, ViewportTransform } from '../../types'
import { PanOnScrollMode } from '../../types' import { PanOnScrollMode } from '../../types'
import { useKeyPress, useVueFlow } from '../../composables' import { useKeyPress } from '../../composables/useKeyPress'
import { useVueFlow } from '../../composables/useVueFlow'
import { useResizeHandler } from '../../composables/useResizeHandler'
import { clamp, isMacOs, warn } from '../../utils' import { clamp, isMacOs, warn } from '../../utils'
import Pane from '../Pane/Pane.vue' import Pane from '../Pane/Pane.vue'
import { useResizeHandler } from '../../composables/useResizeHandler'
import Transform from './Transform.vue' import Transform from './Transform.vue'
const { const {
@@ -9,6 +9,8 @@ import { useOnInitHandler } from '../../composables/useOnInitHandler'
import { useWatchProps } from '../../composables/useWatchProps' import { useWatchProps } from '../../composables/useWatchProps'
import { useVueFlow } from '../../composables/useVueFlow' import { useVueFlow } from '../../composables/useVueFlow'
import { useHooks } from '../../store/hooks' import { useHooks } from '../../store/hooks'
import EdgeRenderer from '../EdgeRenderer/EdgeRenderer.vue'
import NodeRenderer from '../NodeRenderer/NodeRenderer.vue'
const props = withDefaults(defineProps<FlowProps>(), { const props = withDefaults(defineProps<FlowProps>(), {
snapToGrid: undefined, snapToGrid: undefined,
@@ -97,6 +99,12 @@ export default {
<template> <template>
<div ref="vueFlowRef" class="vue-flow"> <div ref="vueFlowRef" class="vue-flow">
<Viewport> <Viewport>
<EdgeRenderer />
<div class="vue-flow__edge-labels" />
<NodeRenderer />
<!-- This slot is affected by zooming & panning --> <!-- This slot is affected by zooming & panning -->
<slot name="zoom-pane" /> <slot name="zoom-pane" />
</Viewport> </Viewport>