Canvas.vue 886 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <script lang="ts" setup>
  2. import { computed } from 'vue'
  3. import { VueFlow } from '@vue-flow/core'
  4. import type { IWorkflow } from '../Interface'
  5. import CanvasNode from './elements/CanvasNode.vue'
  6. import CanvasEdge from './elements/CanvasEdge.vue'
  7. defineOptions({
  8. name: 'workflow-canvas'
  9. })
  10. const props = withDefaults(defineProps<{
  11. workflow?: IWorkflow
  12. }>(), {
  13. })
  14. // nodes
  15. const nodes = computed(() => props.workflow?.nodes ?? [])
  16. // edges
  17. const edges = computed(() => props.workflow?.edges ?? [])
  18. </script>
  19. <template>
  20. <VueFlow :nodes="nodes" :edges="edges">
  21. <template #node-canvas-node="nodeProps">
  22. <CanvasNode v-bind="nodeProps" />
  23. </template>
  24. <template #edge-canvas-edge="edgeProps">
  25. <CanvasEdge v-bind="edgeProps" />
  26. </template>
  27. </VueFlow>
  28. </template>
  29. <style>
  30. @import '@vue-flow/core/dist/style.css';
  31. @import '@vue-flow/core/dist/theme-default.css';
  32. </style>