@stringsync/vexml
Version:
MusicXML to Vexflow
49 lines (48 loc) • 1.51 kB
TypeScript
import * as events from '../events';
import { Rect } from '../spatial';
import { CursorFrame } from './cursorframe';
import { CursorPath } from './cursorpath';
export type CursorState = {
index: number;
hasNext: boolean;
hasPrevious: boolean;
rect: Rect;
frame: CursorFrame;
};
export type CursorEventMap = {
change: CursorState;
};
export declare class Cursor {
private path;
private locator;
private scroller;
private topic;
private currentIndex;
private currentAlpha;
private previousIndex;
private previousAlpha;
private constructor();
static create(path: CursorPath, scrollContainer: HTMLElement): Cursor;
getCurrentState(): CursorState;
getPreviousState(): CursorState | null;
next(): void;
previous(): void;
goTo(index: number): void;
/** Snaps to the closest sequence entry step. */
snap(timeMs: number): void;
/** Seeks to the exact position, interpolating as needed. */
seek(timestampMs: number): void;
isFullyVisible(): boolean;
scrollIntoView(behavior?: ScrollBehavior): void;
addEventListener<N extends keyof CursorEventMap>(name: N, listener: events.EventListener<CursorEventMap[N]>, opts?: {
emitBootstrapEvent?: boolean;
}): number;
removeEventListener(...ids: number[]): void;
removeAllEventListeners(): void;
private getState;
private getScrollPoint;
private normalize;
private getDuration;
private getCursorRect;
private update;
}