| | |
| | | <template> |
| | | <div class="relative h-full w-full" id="main-canvas" @drop="handleOnDrop" @dragover="handleOnDragOver"> |
| | | <VueFlow v-model="elements" :node-types="nodeTypes" :connection-mode="ConnectionMode.Loose"> |
| | | <VueFlow v-model="elements" :node-types="nodeTypes" :connection-mode="ConnectionMode.Strict" > |
| | | <template #edge-custom="customEdgeProps"> |
| | | <CustomEdge v-bind="customEdgeProps" /> |
| | | </template> |
| | |
| | | <template #node-agent="agentNodeProps"> |
| | | <AgentNode v-bind="agentNodeProps" :agentNames="agentNames" /> |
| | | </template> |
| | | <template #node-func="funcNodeProps"> |
| | | <FuncNode v-bind="funcNodeProps" :funcNames="funcNames" /> |
| | | </template> |
| | | |
| | | <template #node-code="codeNodeProps"> |
| | | <CodeNode v-bind="codeNodeProps" /> |
| | | </template> |
| | | <Controls /> |
| | | <Background /> |
| | | <MiniMap pannable zoomable /> |
| | | </VueFlow> |
| | | </div> |
| | | </template> |
| | |
| | | <script setup lang="ts"> |
| | | import { Background } from '@vue-flow/background'; |
| | | import { Controls } from '@vue-flow/controls'; |
| | | import { MiniMap } from '@vue-flow/minimap'; |
| | | |
| | | import { Dimensions, Elements, useVueFlow, VueFlow, ConnectionMode, MarkerType } from '@vue-flow/core'; |
| | | import { markRaw, nextTick, ref, watch } from 'vue'; |
| | | import { Test_data } from './testData'; |
| | |
| | | import LLMNode from './ui/nodes/LLMNode.vue'; |
| | | import OutputNode from './ui/nodes/OutputNode.vue'; |
| | | import AgentNode from './ui/nodes/AgentNode.vue'; |
| | | import FuncNode from './ui/nodes/FuncNode.vue'; |
| | | import CodeNode from './ui/nodes/CodeNode.vue'; |
| | | |
| | | import CustomEdge from './ui/edges/CustomEdge.vue'; |
| | | import { onMounted } from 'vue'; |
| | | |
| | | const props = defineProps(['flowJson', 'agentNames']); |
| | | const props = defineProps(['flowJson', 'agentNames', 'funcNames']); |
| | | |
| | | const nodeTypes = { |
| | | start: markRaw(StartNode), |
| | |
| | | @import '@vue-flow/core/dist/style.css'; |
| | | @import '@vue-flow/core/dist/theme-default.css'; |
| | | @import '@vue-flow/controls/dist/style.css'; |
| | | @import '@vue-flow/minimap/dist/style.css'; |
| | | @import '@vue-flow/node-resizer/dist/style.css'; |
| | | |
| | | #main-canvas { |
| | | --vf-handle: #2563eb; |
| | | --handle-size: 13px; |
| | | --resize-handle-size: 8px; |
| | | .vue-flow__handle { |
| | | width: var(--handle-size); |
| | | height: var(--handle-size); |
| | | } |
| | | |
| | | .vue-flow__resize-control.handle { |
| | | width: var(--resize-handle-size); |
| | | height: var(--resize-handle-size); |
| | | // visibility: hidden; |
| | | } |
| | | } |
| | | </style> |
| | | |