import { buildID } from '../../../../data/utilities/Concatenation.js'; import type { Axis } from '../../../assignment/AssignmentsContext.js'; import { useAssignment } from '../../../assignment/AssignmentsContext.js'; import { useHighlight } from '../../../highlight/index.js'; import type { AssignmentsColumnProps } from '../ZonesTableRow.js'; import type { ZoneData } from '../hooks/useMapZones.js'; import SignalAssignmentsColumn from './SignalAssignmentsColumn.js'; export function useSignalHighlight(rowData: ZoneData) { const signalKey = rowData.tableMetaInfo.id; const signalAssignment = useAssignment(signalKey); const highlightSignalX = useHighlight( [buildID(signalKey, 'X')].concat( signalAssignment.assignedDiaIds?.x || [], buildID(signalKey, 'Crosshair'), ), { type: 'SIGNAL' }, ); const highlightSignalY = useHighlight( [buildID(signalKey, 'Y')].concat( signalAssignment.assignedDiaIds?.y || [], buildID(signalKey, 'Crosshair'), ), { type: 'SIGNAL' }, ); function handleOnMouseEnter(axis: Axis) { if (axis === 'x') { signalAssignment.highlight('x'); highlightSignalX.show(); } else { signalAssignment.highlight('y'); highlightSignalY.show(); } } function handleOnMouseLeave(axis: Axis) { signalAssignment.clearHighlight(); if (axis === 'x') { highlightSignalX.hide(); } else { highlightSignalY.hide(); } } function isHighlighted(axis: Axis) { return axis === 'x' ? highlightSignalX.isActive : highlightSignalY?.isActive; } return { handleOnMouseEnter, handleOnMouseLeave, signalAssignment, isHighlighted, }; } function SignalAssignmentsColumns({ rowData, onUnlink, }: AssignmentsColumnProps) { return ( <> ); } export default SignalAssignmentsColumns;