UNPKG

@stringsync/vexml

Version:

MusicXML to Vexflow

51 lines (50 loc) 1.64 kB
import * as events from '../events'; import { Rect } from '../spatial'; import { CursorFrame, CursorStateHintProvider } from './types'; import { CursorPath } from './cursorpath'; import { ElementDescriber } from './elementdescriber'; export type CursorState = { index: number; hasNext: boolean; hasPrevious: boolean; rect: Rect; frame: CursorFrame; hints: CursorStateHintProvider; }; export type CursorEventMap = { change: CursorState; }; export declare class Cursor { private path; private locator; private scroller; private elementDescriber; private topic; private index; private alpha; private previousFrame; private constructor(); static create(path: CursorPath, scrollContainer: HTMLElement, elementDescriber: ElementDescriber): Cursor; iterable(): Iterable<CursorState>; getCurrentState(): CursorState; 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 getCurrentFrame; private getScrollPoint; private normalize; private getDuration; private getCursorRect; private update; }