Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import { computed, ref } from 'vue' import { useNodeExecutionStatus } from './useNodeExecutionStatus' import { useNodeInfoPopup } from './useNodeInfoPopup' /** * Unified node structure composable * Integrates node execution status, info popup, and action buttons * * @param nodeId - Node ID * @returns All required node states and methods */ export function useNodeStructure(nodeId: string) { const executionStatus = useNodeExecutionStatus() const statusClass = computed(() => executionStatus.getNodeStatusClass(nodeId)) const executionTime = computed(() => { const time = executionStatus.getNodeExecutionTime(nodeId) return time ? executionStatus.formatExecutionTime(time) : null }) const infoPopup = useNodeInfoPopup(nodeId) const showActions = ref(false) const onMouseEnter = () => { showActions.value = true } const onMouseLeave = () => { showActions.value = false } return { statusClass, executionTime, ...infoPopup, showActions, onMouseEnter, onMouseLeave, } } |