import { atom } from 'jotai'; import { isNil } from 'ramda'; import type { TimeValue } from '../../common/timeSeries/models'; import type { GraphTooltipData } from '../models'; export const eventMouseDownAtom = atom(null); export const eventMouseUpAtom = atom(null); export const eventMouseLeaveAtom = atom(null); export const graphTooltipDataAtom = atom(null); export const timeValueAtom = atom(null); export const mousePositionAtom = atom(null); export const isListingGraphOpenAtom = atom(false); export type MousePosition = [number, number] | null; interface Position { position: MousePosition; } export const changeMousePositionDerivedAtom = atom( null, (_, set, { position }: Position): void => { if (isNil(position)) { set(mousePositionAtom, null); return; } set(mousePositionAtom, position); } );