import type { GridRowId } from '../../types' export type GridScrollPosition = { scrollTop: number scrollLeft: number } export type GridScrollHeightRecord = { id: string scrollbar: number head: number tail: number } export type GridScrollCallback = (values: Partial) => void export type GridHoverCallback = (rowId: GridRowId | null) => void export type GridScrollHeightCallback = ( values: GridScrollHeightRecord[] ) => void export type GridSyncState = { scroll: { listeners: Map } height: { listeners: Map } hover: { listeners: Map } } export type SyncContext = { enabled: boolean scroll: { update: (id: string, position: GridScrollPosition) => void subscribe: (id: string, callback: GridScrollCallback) => () => void } height: { update: ( id: string, scrollbar: number, head: number, tail: number ) => GridScrollHeightRecord[] subscribe: ( id: string, callback: GridScrollHeightCallback ) => () => void } hover: { update: (id: string, rowId: GridRowId | null) => void subscribe: (id: string, callback: GridHoverCallback) => () => void } }