/** * Defines the interface a scroller component must implement. * @public */ import { RevSchemaField } from "../../../common"; import { RevClientObject } from "../../../common/types-utils"; import { RevBehavioredGridSettings, RevBehavioredColumnSettings } from "../../settings"; import { RevCanvas } from "../canvas"; import { RevViewLayout } from "../view"; import { RevScrollDimension } from "../view/scroll-dimension"; export interface RevScroller extends RevClientObject { actionEventer: RevScroller.ActionEventer; wheelEventer: RevScroller.WheelEventer | undefined; visibilityChangedEventer: RevScroller.VisibilityChangedEventer | undefined; readonly axis: RevScrollDimension.Axis; readonly trailing: boolean; // true: right/bottom of canvas, false: otherwise left/top of canvas readonly hidden: boolean; readonly insideOverlap: number; destroy(): void; // Called by RevClientGrid when the scroller is to be removed. setBeforeInsideOffset(offset: number): void; setAfterInsideOffset(offset: number): void; temporarilyGiveThumbFullVisibility(timePeriod: number): void; } export namespace RevScroller { /** * A function that handles a wheel event. */ export type WheelEventer = (this: void, event: WheelEvent) => void; /** @public */ export interface Action { readonly type: Action.TypeId; readonly viewportStart: number | undefined; } /** @public */ export namespace Action { export const enum TypeId { StepForward, StepBack, PageForward, PageBack, newViewportStart, } } export type ActionEventer = (this: void, action: Action) => void; export type VisibilityChangedEventer = (this: void) => void; export type CreateFn = ( clientId: string, internalParent: RevClientObject, gridSettings: BGS, canvas: RevCanvas, scrollDimension: RevScrollDimension, viewLayout: RevViewLayout, spaceAccommodatedScroller: RevScroller | undefined, ) => RevScroller; export type CreateFnPair = [ spaceAccommodated: CreateFn, spaceRelinquishing: CreateFn ]; }