import type { CSSProperties } from 'react'; import { useBrushTracker } from '../../EventsTrackers/BrushTracker.js'; import { useMouseTracker } from '../../EventsTrackers/MouseTracker.js'; import { useChartData } from '../../context/ChartContext.js'; import { options } from '../../toolbar/ToolTypes.js'; const styles: Record<'line', CSSProperties> = { line: { stroke: 'black', strokeOpacity: 1, shapeRendering: 'crispEdges', strokeWidth: '1', willChange: 'transform', }, }; const allowTools = new Set([ options.zoom.id, options.apodization.id, options.apodizationDimension1.id, options.apodizationDimension2.id, options.baselineCorrection.id, options.phaseCorrectionTwoDimensions.id, options.zonePicking.id, options.slicing.id, options.zeroFillingDimension1.id, options.zeroFillingDimension2.id, options.integral.id, options.rangePicking.id, options.multipleSpectraAnalysis.id, options.exclusionZones.id, options.databaseRangesSelection.id, options.matrixGenerationExclusionZones.id, options.inset.id, ]); function CrossLinePointer() { const { height, width, margin, toolOptions: { selectedTool }, } = useChartData(); const position = useMouseTracker(); const brushState = useBrushTracker(); if ( !allowTools.has(selectedTool) || brushState.step === 'brushing' || !position || position.x > width - margin.right || position.y > height - margin.bottom || !width || !height ) { return null; } return (