|
@@ -1,8 +1,8 @@
|
|
-import { TimelineModel } from './timelineModel';
|
|
|
|
-import { TimelineRow } from './timelineRow';
|
|
|
|
-import { TimelineKeyframe } from './timelineKeyframe';
|
|
|
|
import { TimelineEventsEmitter } from './timelineEventsEmitter';
|
|
import { TimelineEventsEmitter } from './timelineEventsEmitter';
|
|
import { TimelineConsts } from './settings/timelineConsts';
|
|
import { TimelineConsts } from './settings/timelineConsts';
|
|
|
|
+import { TimelineModel } from './models/timelineModel';
|
|
|
|
+import { TimelineRow } from './models/timelineRow';
|
|
|
|
+import { TimelineKeyframe } from './models/timelineKeyframe';
|
|
import { TimelineOptions } from './settings/timelineOptions';
|
|
import { TimelineOptions } from './settings/timelineOptions';
|
|
import { TimelineElement } from './utils/timelineElement';
|
|
import { TimelineElement } from './utils/timelineElement';
|
|
import { TimelineCutBoundsRectResults } from './utils/timelineCutBoundsRectResults';
|
|
import { TimelineCutBoundsRectResults } from './utils/timelineCutBoundsRectResults';
|
|
@@ -10,15 +10,17 @@ import { TimelineSelectionResults } from './utils/timelineSelectionResults';
|
|
import { TimelineMouseData } from './utils/timelineMouseData';
|
|
import { TimelineMouseData } from './utils/timelineMouseData';
|
|
import { TimelineElementDragState } from './utils/timelineElementDragState';
|
|
import { TimelineElementDragState } from './utils/timelineElementDragState';
|
|
import { TimelineDraggableData } from './utils/timelineDraggableData';
|
|
import { TimelineDraggableData } from './utils/timelineDraggableData';
|
|
-import { TimelineModelCalcResults } from './utils/timelineModelCalcResults';
|
|
|
|
-import { TimelineCalculatedRow } from './utils/timelineCalculatedRow';
|
|
|
|
-import { TimelineCalculatedKeyframe } from './utils/timelineCalculatedKeyframe';
|
|
|
|
|
|
+import { TimelineGroupViewModel } from './viewModels/timelineGroupViewModel';
|
|
|
|
+import { TimelineKeyframeViewModel } from './viewModels/timelineKeyframeViewModel';
|
|
|
|
+import { TimelineRowViewModel } from './viewModels/timelineRowViewModel';
|
|
|
|
+import { TimelineViewModel } from './viewModels/timelineViewModel';
|
|
import { TimelineKeyframeChangedEvent } from './utils/events/timelineKeyframeChangedEvent';
|
|
import { TimelineKeyframeChangedEvent } from './utils/events/timelineKeyframeChangedEvent';
|
|
import { TimelineTimeChangedEvent } from './utils/events/timelineTimeChangedEvent';
|
|
import { TimelineTimeChangedEvent } from './utils/events/timelineTimeChangedEvent';
|
|
import { TimelineSelectedEvent } from './utils/events/timelineSelectedEvent';
|
|
import { TimelineSelectedEvent } from './utils/events/timelineSelectedEvent';
|
|
import { TimelineScrollEvent } from './utils/events/timelineScrollEvent';
|
|
import { TimelineScrollEvent } from './utils/events/timelineScrollEvent';
|
|
import { TimelineClickEvent } from './utils/events/timelineClickEvent';
|
|
import { TimelineClickEvent } from './utils/events/timelineClickEvent';
|
|
import { TimelineDragEvent } from './utils/events/timelineDragEvent';
|
|
import { TimelineDragEvent } from './utils/events/timelineDragEvent';
|
|
|
|
+import { TimelineKeyframeShape } from './enums/timelineKeyframeShape';
|
|
import { TimelineInteractionMode } from './enums/timelineInteractionMode';
|
|
import { TimelineInteractionMode } from './enums/timelineInteractionMode';
|
|
import { TimelineElementType } from './enums/timelineElementType';
|
|
import { TimelineElementType } from './enums/timelineElementType';
|
|
import { TimelineEventSource } from './enums/timelineEventSource';
|
|
import { TimelineEventSource } from './enums/timelineEventSource';
|
|
@@ -50,11 +52,11 @@ export declare class Timeline extends TimelineEventsEmitter {
|
|
/**
|
|
/**
|
|
* Components settings
|
|
* Components settings
|
|
*/
|
|
*/
|
|
- _options: TimelineOptions | null;
|
|
|
|
|
|
+ _options: TimelineOptions;
|
|
/**
|
|
/**
|
|
* Drag start position.
|
|
* Drag start position.
|
|
*/
|
|
*/
|
|
- _startPos: TimelineMouseData | null;
|
|
|
|
|
|
+ _startPosMouseArgs: TimelineMouseData | null;
|
|
/**
|
|
/**
|
|
* Drag scroll started position.
|
|
* Drag scroll started position.
|
|
*/
|
|
*/
|
|
@@ -79,7 +81,7 @@ export declare class Timeline extends TimelineEventsEmitter {
|
|
_startedDragWithCtrl: boolean;
|
|
_startedDragWithCtrl: boolean;
|
|
_startedDragWithShiftKey: boolean;
|
|
_startedDragWithShiftKey: boolean;
|
|
_scrollProgrammatically: boolean;
|
|
_scrollProgrammatically: boolean;
|
|
- _clickTimeout?: number;
|
|
|
|
|
|
+ _clickTimeout: number | null;
|
|
_lastClickTime: number;
|
|
_lastClickTime: number;
|
|
_lastClickPoint: DOMPoint | null;
|
|
_lastClickPoint: DOMPoint | null;
|
|
_consts: TimelineConsts;
|
|
_consts: TimelineConsts;
|
|
@@ -105,7 +107,15 @@ export declare class Timeline extends TimelineEventsEmitter {
|
|
* Private. Ref for the auto pan scroll interval.
|
|
* Private. Ref for the auto pan scroll interval.
|
|
*/
|
|
*/
|
|
_intervalRef?: number | null;
|
|
_intervalRef?: number | null;
|
|
|
|
+ /**
|
|
|
|
+ * Private.
|
|
|
|
+ * When last auto pan scroll action was started.
|
|
|
|
+ */
|
|
_autoPanLastActionDate: number;
|
|
_autoPanLastActionDate: number;
|
|
|
|
+ /**
|
|
|
|
+ * Private.
|
|
|
|
+ * Is pan mouse interactions are started.
|
|
|
|
+ */
|
|
_isPanStarted: boolean;
|
|
_isPanStarted: boolean;
|
|
/**
|
|
/**
|
|
* Private.
|
|
* Private.
|
|
@@ -113,6 +123,10 @@ export declare class Timeline extends TimelineEventsEmitter {
|
|
*/
|
|
*/
|
|
_interactionMode: TimelineInteractionMode;
|
|
_interactionMode: TimelineInteractionMode;
|
|
_lastUsedArgs: MouseEvent | TouchEvent | null;
|
|
_lastUsedArgs: MouseEvent | TouchEvent | null;
|
|
|
|
+ /**
|
|
|
|
+ * Private.
|
|
|
|
+ * Current set timeline model.
|
|
|
|
+ */
|
|
_model: TimelineModel | null;
|
|
_model: TimelineModel | null;
|
|
/**
|
|
/**
|
|
* Private.
|
|
* Private.
|
|
@@ -130,46 +144,56 @@ export declare class Timeline extends TimelineEventsEmitter {
|
|
* @param options Timeline settings.
|
|
* @param options Timeline settings.
|
|
* @param model Timeline model.
|
|
* @param model Timeline model.
|
|
*/
|
|
*/
|
|
- initialize(options: TimelineOptions | null, model: TimelineModel | null): void;
|
|
|
|
|
|
+ initialize: (options: TimelineOptions | null, model: TimelineModel | null) => void;
|
|
/**
|
|
/**
|
|
* Generate component html.
|
|
* Generate component html.
|
|
* @param id container.
|
|
* @param id container.
|
|
*/
|
|
*/
|
|
- _generateContainers(id: string | HTMLElement): void;
|
|
|
|
|
|
+ _generateContainers: (id: string | HTMLElement) => void;
|
|
|
|
+ /**
|
|
|
|
+ * Get drawing context
|
|
|
|
+ */
|
|
|
|
+ _getCtx(): CanvasRenderingContext2D | null;
|
|
/**
|
|
/**
|
|
* Subscribe current component on the related events.
|
|
* Subscribe current component on the related events.
|
|
* Private. Use initialize method instead.
|
|
* Private. Use initialize method instead.
|
|
*/
|
|
*/
|
|
- _subscribeComponentEvents(): void;
|
|
|
|
|
|
+ _subscribeComponentEvents: () => void;
|
|
/**
|
|
/**
|
|
* Private. Use dispose method instead.
|
|
* Private. Use dispose method instead.
|
|
*/
|
|
*/
|
|
- _unsubscribeComponentEvents(): void;
|
|
|
|
|
|
+ _unsubscribeComponentEvents: () => void;
|
|
/**
|
|
/**
|
|
* Dispose current component: unsubscribe component and user events.
|
|
* Dispose current component: unsubscribe component and user events.
|
|
*/
|
|
*/
|
|
- dispose(): void;
|
|
|
|
|
|
+ dispose: () => void;
|
|
|
|
+ /**
|
|
|
|
+ * On key up is received.
|
|
|
|
+ */
|
|
_handleKeyUp: (event: KeyboardEvent) => void;
|
|
_handleKeyUp: (event: KeyboardEvent) => void;
|
|
|
|
+ /**
|
|
|
|
+ * On key down is received.
|
|
|
|
+ */
|
|
_handleKeyDown: (event: KeyboardEvent) => void;
|
|
_handleKeyDown: (event: KeyboardEvent) => void;
|
|
- _setZoomCursor(e: MouseEvent | KeyboardEvent): void;
|
|
|
|
|
|
+ _setZoomCursor: (e: MouseEvent | KeyboardEvent) => void;
|
|
_handleBlurEvent: () => void;
|
|
_handleBlurEvent: () => void;
|
|
_handleWindowResizeEvent: () => void;
|
|
_handleWindowResizeEvent: () => void;
|
|
- _clearScrollFinishedTimer(): void;
|
|
|
|
|
|
+ _clearScrollFinishedTimer: () => void;
|
|
_handleScrollMouseDownEvent: () => void;
|
|
_handleScrollMouseDownEvent: () => void;
|
|
- _handleScrollEvent: (args: MouseEvent) => void;
|
|
|
|
- _controlKeyPressed(e: MouseEvent | KeyboardEvent | TouchEvent): boolean;
|
|
|
|
|
|
+ _handleScrollEvent: (args: Event) => void;
|
|
|
|
+ _controlKeyPressed: (e: MouseEvent | KeyboardEvent | TouchEvent) => boolean;
|
|
_handleWheelEvent: (event: WheelEvent) => void;
|
|
_handleWheelEvent: (event: WheelEvent) => void;
|
|
- _zoom(direction: number, speed: number, x: number): void;
|
|
|
|
|
|
+ _zoom: (direction: number, speed: number, x: number) => void;
|
|
/**
|
|
/**
|
|
* Zoom in
|
|
* Zoom in
|
|
* @param speed value from 0 to 1
|
|
* @param speed value from 0 to 1
|
|
*/
|
|
*/
|
|
- zoomIn(speed?: number): void;
|
|
|
|
|
|
+ zoomIn: (speed?: number | undefined) => void;
|
|
/**
|
|
/**
|
|
* Zoom out.
|
|
* Zoom out.
|
|
* @param speed value from 0 to 1
|
|
* @param speed value from 0 to 1
|
|
*/
|
|
*/
|
|
- zoomOut(speed?: number): void;
|
|
|
|
|
|
+ zoomOut: (speed?: number | undefined) => void;
|
|
/**
|
|
/**
|
|
* Set direct zoom value.
|
|
* Set direct zoom value.
|
|
* @param zoom zoom value to set. percent 0-1 and etc.
|
|
* @param zoom zoom value to set. percent 0-1 and etc.
|
|
@@ -177,91 +201,112 @@ export declare class Timeline extends TimelineEventsEmitter {
|
|
* @param max max zoom.
|
|
* @param max max zoom.
|
|
* @return normalized value.
|
|
* @return normalized value.
|
|
*/
|
|
*/
|
|
- _setZoom(zoom: number, min?: number | undefined, max?: number | undefined): number;
|
|
|
|
|
|
+ _setZoom: (zoom: number, min?: number | null | undefined, max?: number | null | undefined) => number;
|
|
/**
|
|
/**
|
|
* Set direct zoom value.
|
|
* Set direct zoom value.
|
|
* @public
|
|
* @public
|
|
* @param zoom zoom value to set. percent 0-1 and etc.
|
|
* @param zoom zoom value to set. percent 0-1 and etc.
|
|
* @return normalized value.
|
|
* @return normalized value.
|
|
*/
|
|
*/
|
|
- setZoom(zoom: number): number;
|
|
|
|
|
|
+ setZoom: (zoom: number) => number;
|
|
/**
|
|
/**
|
|
* Get current zoom level.
|
|
* Get current zoom level.
|
|
*/
|
|
*/
|
|
- getZoom(): number;
|
|
|
|
|
|
+ getZoom: () => number;
|
|
|
|
+ _getClickDetectionRadius: (point: TimelineMouseData) => number;
|
|
/**
|
|
/**
|
|
* @param args
|
|
* @param args
|
|
*/
|
|
*/
|
|
- _handleMouseDownEvent: (args: MouseEvent) => void;
|
|
|
|
- _setElementDragState(element: TimelineElement | TimelineElementDragState, val: number): TimelineElementDragState;
|
|
|
|
- isLeftButtonClicked(args: MouseEvent | TouchEvent | any): boolean;
|
|
|
|
- _handleMouseMoveEvent: (args: MouseEvent | TouchEvent | any) => void;
|
|
|
|
|
|
+ _handleMouseDownEvent: (args: MouseEvent | TouchEvent) => void;
|
|
|
|
+ _setElementDragState: (element: TimelineElement | TimelineElementDragState, val: number) => TimelineElementDragState;
|
|
|
|
+ /**
|
|
|
|
+ * Check is mouse left button is clicked.
|
|
|
|
+ */
|
|
|
|
+ isLeftButtonClicked: (args: MouseEvent | TouchEvent | any) => boolean;
|
|
|
|
+ /**
|
|
|
|
+ * Browser mouse move handler.
|
|
|
|
+ */
|
|
|
|
+ _handleMouseMoveEvent: (args: MouseEvent | TouchEvent | null) => void;
|
|
/**
|
|
/**
|
|
* Move elements
|
|
* Move elements
|
|
* @param offset vector to move elements along.
|
|
* @param offset vector to move elements along.
|
|
* @param elements Element to move.
|
|
* @param elements Element to move.
|
|
* @returns real moved value.
|
|
* @returns real moved value.
|
|
*/
|
|
*/
|
|
- _moveElements(offset: number, elements: Array<TimelineElementDragState>, source?: TimelineEventSource): number;
|
|
|
|
- _handleMouseUpEvent: (args: MouseEvent) => void;
|
|
|
|
|
|
+ _moveElements(offset: number, elements: TimelineElementDragState[], source?: TimelineEventSource): number;
|
|
/**
|
|
/**
|
|
- * client height.
|
|
|
|
|
|
+ * Mouse up handler.
|
|
*/
|
|
*/
|
|
- _height(): number;
|
|
|
|
|
|
+ _handleMouseUpEvent: (args: MouseEvent | TouchEvent) => void;
|
|
/**
|
|
/**
|
|
- * Client canvas width;
|
|
|
|
|
|
+ * Canvas client height.
|
|
*/
|
|
*/
|
|
- _width(): number;
|
|
|
|
|
|
+ _canvasClientHeight: () => number;
|
|
/**
|
|
/**
|
|
- * Convert virtual calculation results to keyframes
|
|
|
|
|
|
+ * Canvas client width.
|
|
*/
|
|
*/
|
|
- _mapKeyframes(array: Array<TimelineCalculatedKeyframe | TimelineElement>): Array<TimelineKeyframe>;
|
|
|
|
|
|
+ _canvasClientWidth: () => number;
|
|
/**
|
|
/**
|
|
* Get all keyframes under the screen rectangle.
|
|
* Get all keyframes under the screen rectangle.
|
|
* @param screenRect screen coordinates to get keyframes.
|
|
* @param screenRect screen coordinates to get keyframes.
|
|
*/
|
|
*/
|
|
- _getKeyframesByRectangle(screenRect: DOMRect): TimelineKeyframe[];
|
|
|
|
- _performClick(pos: TimelineMouseData, drag: TimelineDraggableData): boolean;
|
|
|
|
|
|
+ _getKeyframesByRectangle: (screenRect: DOMRect) => TimelineKeyframe[];
|
|
|
|
+ /**
|
|
|
|
+ * Private.
|
|
|
|
+ * Perform timeline click.
|
|
|
|
+ */
|
|
|
|
+ _performClick: (pos: TimelineMouseData, drag: TimelineDraggableData | null) => boolean;
|
|
/**
|
|
/**
|
|
* Set keyframe value.
|
|
* Set keyframe value.
|
|
* @param keyframe
|
|
* @param keyframe
|
|
* @param value
|
|
* @param value
|
|
* @return set value.
|
|
* @return set value.
|
|
*/
|
|
*/
|
|
- _setKeyframePos(element: TimelineElementDragState, value: number, source?: TimelineEventSource): number;
|
|
|
|
|
|
+ _setKeyframePos: (element: TimelineElementDragState, value: number, source?: TimelineEventSource) => number;
|
|
/**
|
|
/**
|
|
* @param cursor to set.
|
|
* @param cursor to set.
|
|
*/
|
|
*/
|
|
- _setCursor(cursor: string): void;
|
|
|
|
|
|
+ _setCursor: (cursor: string) => void;
|
|
/**
|
|
/**
|
|
* Set component interaction mode.
|
|
* Set component interaction mode.
|
|
*/
|
|
*/
|
|
- setInteractionMode(mode: TimelineInteractionMode): void;
|
|
|
|
|
|
+ setInteractionMode: (mode: TimelineInteractionMode) => void;
|
|
/**
|
|
/**
|
|
* Get current interaction mode.
|
|
* Get current interaction mode.
|
|
*/
|
|
*/
|
|
- getInteractionMode(): TimelineInteractionMode;
|
|
|
|
- _convertToElement(row: TimelineRow, keyframe: TimelineKeyframe): TimelineElement;
|
|
|
|
- getSelectedKeyframes(): Array<TimelineKeyframe>;
|
|
|
|
- getSelectedElements(): Array<TimelineElement>;
|
|
|
|
|
|
+ getInteractionMode: () => TimelineInteractionMode;
|
|
|
|
+ /**
|
|
|
|
+ * Private.
|
|
|
|
+ * Helper method. Convert model element to timeline element.
|
|
|
|
+ */
|
|
|
|
+ _convertToTimelineElement: (rowModel: TimelineRow | null, keyframe: TimelineKeyframe) => TimelineElement;
|
|
|
|
+ getSelectedKeyframes: () => TimelineKeyframe[];
|
|
|
|
+ /**
|
|
|
|
+ * Get selected timeline elements.
|
|
|
|
+ */
|
|
|
|
+ getSelectedElements: () => TimelineElement[];
|
|
/**
|
|
/**
|
|
* Get all keyframe models available in the model.
|
|
* Get all keyframe models available in the model.
|
|
*/
|
|
*/
|
|
- getAllKeyframes(): TimelineKeyframe[];
|
|
|
|
- selectAllKeyframes(): TimelineSelectionResults;
|
|
|
|
- deselectAll(): TimelineSelectionResults;
|
|
|
|
|
|
+ getAllKeyframes: () => TimelineKeyframe[];
|
|
|
|
+ selectAllKeyframes: () => TimelineSelectionResults;
|
|
|
|
+ deselectAll: () => TimelineSelectionResults;
|
|
private _changeNodeState;
|
|
private _changeNodeState;
|
|
- select(nodes: TimelineKeyframe[] | TimelineKeyframe | null, mode?: TimelineSelectionMode): TimelineSelectionResults;
|
|
|
|
|
|
+ select: (nodes: TimelineKeyframe[] | TimelineKeyframe | null, mode?: TimelineSelectionMode) => TimelineSelectionResults;
|
|
/**
|
|
/**
|
|
* Select keyframes
|
|
* Select keyframes
|
|
* @param nodes keyframe or list of the keyframes to be selected.
|
|
* @param nodes keyframe or list of the keyframes to be selected.
|
|
* @param mode selection mode.
|
|
* @param mode selection mode.
|
|
*/
|
|
*/
|
|
- _selectInternal(nodes: TimelineKeyframe[] | TimelineKeyframe | null, mode?: TimelineSelectionMode): TimelineSelectionResults;
|
|
|
|
|
|
+ _selectInternal: (nodes: TimelineKeyframe[] | TimelineKeyframe | null, mode?: TimelineSelectionMode) => TimelineSelectionResults;
|
|
/**
|
|
/**
|
|
* foreach visible keyframe.
|
|
* foreach visible keyframe.
|
|
*/
|
|
*/
|
|
- _forEachKeyframe(callback: (keyframe: TimelineCalculatedKeyframe, index?: number, newRow?: boolean) => void): void;
|
|
|
|
|
|
+ _forEachKeyframe(callback: (keyframe: TimelineKeyframeViewModel, index?: number, newRow?: boolean) => void): void;
|
|
|
|
+ /**
|
|
|
|
+ * Private.
|
|
|
|
+ * Create extended mouse position and calculate size of the selection rectangle.
|
|
|
|
+ */
|
|
_trackMousePos(canvas: HTMLCanvasElement, mouseArgs: MouseEvent | TouchEvent): TimelineMouseData;
|
|
_trackMousePos(canvas: HTMLCanvasElement, mouseArgs: MouseEvent | TouchEvent): TimelineMouseData;
|
|
/**
|
|
/**
|
|
* Get scroll container client width.
|
|
* Get scroll container client width.
|
|
@@ -279,11 +324,11 @@ export declare class Timeline extends TimelineEventsEmitter {
|
|
/**
|
|
/**
|
|
* Automatically pan. Scroll canvas when selection is made and mouse outside of the bounds.
|
|
* Automatically pan. Scroll canvas when selection is made and mouse outside of the bounds.
|
|
*/
|
|
*/
|
|
- _startAutoPan(): void;
|
|
|
|
|
|
+ _startAutoPan: () => void;
|
|
/**
|
|
/**
|
|
* Stop current running auto pan
|
|
* Stop current running auto pan
|
|
*/
|
|
*/
|
|
- _stopAutoPan(): void;
|
|
|
|
|
|
+ _stopAutoPan: () => void;
|
|
/**
|
|
/**
|
|
* Check whether auto pan should be slowed down a bit.
|
|
* Check whether auto pan should be slowed down a bit.
|
|
*/
|
|
*/
|
|
@@ -291,7 +336,7 @@ export declare class Timeline extends TimelineEventsEmitter {
|
|
/**
|
|
/**
|
|
* Scroll virtual canvas when pan mode is enabled.
|
|
* Scroll virtual canvas when pan mode is enabled.
|
|
*/
|
|
*/
|
|
- _scrollByPan(start: TimelineMouseData, pos: TimelineMouseData, scrollStartPos: DOMPoint): void;
|
|
|
|
|
|
+ _scrollByPan(start: DOMPoint, pos: DOMPoint, scrollStartPos: DOMPoint | null): void;
|
|
_scrollBySelectionOutOfBounds(pos: DOMPoint): boolean;
|
|
_scrollBySelectionOutOfBounds(pos: DOMPoint): boolean;
|
|
/**
|
|
/**
|
|
* Convert screen pixel to value.
|
|
* Convert screen pixel to value.
|
|
@@ -300,182 +345,208 @@ export declare class Timeline extends TimelineEventsEmitter {
|
|
/**
|
|
/**
|
|
* Convert value to local screen component coordinates.
|
|
* Convert value to local screen component coordinates.
|
|
*/
|
|
*/
|
|
- _toScreenPx(val: number): number;
|
|
|
|
|
|
+ _toScreenPx: (val: number) => number;
|
|
/**
|
|
/**
|
|
* Convert screen local coordinates to a global value info.
|
|
* Convert screen local coordinates to a global value info.
|
|
*/
|
|
*/
|
|
- _fromScreen(px: number): number;
|
|
|
|
|
|
+ _fromScreen: (px: number) => number;
|
|
/**
|
|
/**
|
|
* Convert area value to global screen pixel coordinates.
|
|
* Convert area value to global screen pixel coordinates.
|
|
*/
|
|
*/
|
|
- valToPx(val: number): number;
|
|
|
|
|
|
+ valToPx: (val: number) => number;
|
|
/**
|
|
/**
|
|
* Snap a value to a nearest grid point.
|
|
* Snap a value to a nearest grid point.
|
|
*/
|
|
*/
|
|
snapVal(val: number): number;
|
|
snapVal(val: number): number;
|
|
- _mousePosToVal(x: number, snapEnabled?: boolean): number;
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Convert mouse position to the timeline units considering all the scrolling and offsets.
|
|
|
|
+ */
|
|
|
|
+ _mousePosToVal: (x: number, snapEnabled?: boolean) => number;
|
|
/**
|
|
/**
|
|
* Format line gauge text.
|
|
* Format line gauge text.
|
|
* Default formatting is HMS
|
|
* Default formatting is HMS
|
|
* @param ms milliseconds to convert.
|
|
* @param ms milliseconds to convert.
|
|
* @param isSeconds whether seconds are passed.
|
|
* @param isSeconds whether seconds are passed.
|
|
*/
|
|
*/
|
|
- _formatUnitsText(ms: number, isSeconds?: boolean): string;
|
|
|
|
|
|
+ _formatUnitsText: (ms: number, isSeconds?: boolean) => string;
|
|
/**
|
|
/**
|
|
* Left padding of the timeline.
|
|
* Left padding of the timeline.
|
|
*/
|
|
*/
|
|
- _leftMargin(): number;
|
|
|
|
- _renderTicks(): void;
|
|
|
|
|
|
+ _leftMargin: () => number;
|
|
|
|
+ /**
|
|
|
|
+ * Private.
|
|
|
|
+ * Render line gauge ticks.
|
|
|
|
+ */
|
|
|
|
+ _renderTicks: () => void;
|
|
/**
|
|
/**
|
|
- * calculate virtual mode. Determine screen positions for the elements.
|
|
|
|
|
|
+ * Private.
|
|
|
|
+ * Calculate virtual view model.
|
|
|
|
+ * Determine screen positions for the model elements given.
|
|
|
|
+ */
|
|
|
|
+ _generateViewModel: () => TimelineViewModel;
|
|
|
|
+ /**
|
|
|
|
+ * Render timeline rows.
|
|
*/
|
|
*/
|
|
- _calculateModel(): TimelineModelCalcResults;
|
|
|
|
- _renderRows(): void;
|
|
|
|
|
|
+ _renderRows: () => void;
|
|
/**
|
|
/**
|
|
- * Method is used for the optimization.
|
|
|
|
- * Only visible part should be rendered.
|
|
|
|
|
|
+ * Render group for the row.
|
|
*/
|
|
*/
|
|
- _cutBounds(rect: DOMRect): TimelineCutBoundsRectResults;
|
|
|
|
|
|
+ _renderGroupBounds: (rowViewModel: TimelineRowViewModel) => void;
|
|
/**
|
|
/**
|
|
- * get keyframe group screen rect coordinates.
|
|
|
|
|
|
+ * Method is used for the canvas drawing optimization.
|
|
|
|
+ * Bounds are cut to draw only visible parts for the active canvas.
|
|
|
|
+ */
|
|
|
|
+ _cutBounds: (rect: DOMRect) => TimelineCutBoundsRectResults | null;
|
|
|
|
+ _cutBoundsWhenOverlap: (rect: DOMRect, minX: number, maxX: number, minY: number, maxY: number) => TimelineCutBoundsRectResults | null;
|
|
|
|
+ /**
|
|
|
|
+ * Calculate keyframe group screen rect size that is used during the rendering.
|
|
* @param row
|
|
* @param row
|
|
* @param rowY row screen coords y position
|
|
* @param rowY row screen coords y position
|
|
*/
|
|
*/
|
|
- _getKeyframesGroupSize(row: TimelineRow, rowY: number, minValue: number, maxValue: number): DOMRect;
|
|
|
|
- _getKeyframePosition(keyframe: TimelineKeyframe, rowCalculated: TimelineCalculatedRow): DOMRect | null;
|
|
|
|
- _renderKeyframes(): void;
|
|
|
|
- _renderSelectionRect(): void;
|
|
|
|
- _renderBackground(): void;
|
|
|
|
- _renderTimeline(): void;
|
|
|
|
- _renderHeaderBackground(): void;
|
|
|
|
- redraw(): void;
|
|
|
|
|
|
+ _getKeyframesGroupSize: (groupViewModel: TimelineGroupViewModel, rowViewModel: TimelineRowViewModel) => DOMRect;
|
|
|
|
+ _getKeyframePosition: (keyframe: TimelineKeyframe, groupViewModel: TimelineGroupViewModel, rowViewModel: TimelineRowViewModel, keyframeShape: TimelineKeyframeShape) => DOMRect | null;
|
|
|
|
+ _renderKeyframes: () => void;
|
|
|
|
+ _renderSelectionRect: () => void;
|
|
|
|
+ _renderBackground: () => void;
|
|
|
|
+ _renderTimeline: () => void;
|
|
/**
|
|
/**
|
|
- * perform scroll to max left.
|
|
|
|
|
|
+ * Render timeline cap top.
|
|
*/
|
|
*/
|
|
- scrollLeft(): void;
|
|
|
|
|
|
+ _renderTimelineCap: (timeLinePos: number, y: number) => void;
|
|
|
|
+ _renderHeaderBackground: () => void;
|
|
|
|
+ redraw: () => void;
|
|
/**
|
|
/**
|
|
- * Redraw parts of the component in the specific order.
|
|
|
|
|
|
+ * perform scroll to max right.
|
|
*/
|
|
*/
|
|
- _redrawInternal: () => void;
|
|
|
|
|
|
+ scrollToRightBounds: () => void;
|
|
/**
|
|
/**
|
|
- * Get row by y coordinate.
|
|
|
|
- * @param posY y screen coordinate.
|
|
|
|
|
|
+ * Redraw parts of the component in the specific order.
|
|
*/
|
|
*/
|
|
- getRowByY(posY: number): TimelineRow;
|
|
|
|
|
|
+ _redrawInternal: () => void;
|
|
/**
|
|
/**
|
|
* Find sharp pixel position
|
|
* Find sharp pixel position
|
|
*/
|
|
*/
|
|
- _getSharp(pos: number, thickness?: number): number;
|
|
|
|
|
|
+ _getSharp: (pos: number, thickness?: number) => number;
|
|
/**
|
|
/**
|
|
* Get current time:
|
|
* Get current time:
|
|
*/
|
|
*/
|
|
- getTime(): number;
|
|
|
|
|
|
+ getTime: () => number;
|
|
/**
|
|
/**
|
|
* Set current time internal
|
|
* Set current time internal
|
|
* @param val value.
|
|
* @param val value.
|
|
* @param source event source.
|
|
* @param source event source.
|
|
*/
|
|
*/
|
|
- _setTimeInternal(val: number, source?: TimelineEventSource): boolean;
|
|
|
|
- setTime(val: number): boolean;
|
|
|
|
- getOptions(): TimelineOptions;
|
|
|
|
- setScrollLeft(value: number): void;
|
|
|
|
- setScrollTop(value: number): void;
|
|
|
|
- getScrollLeft(): number;
|
|
|
|
- getScrollTop(): number;
|
|
|
|
|
|
+ _setTimeInternal: (val: number, source?: TimelineEventSource) => boolean;
|
|
|
|
+ setTime: (val: number) => boolean;
|
|
|
|
+ getOptions: () => TimelineOptions;
|
|
|
|
+ /**
|
|
|
|
+ * Current scroll left position.
|
|
|
|
+ */
|
|
|
|
+ get scrollLeft(): number;
|
|
|
|
+ set scrollLeft(value: number);
|
|
|
|
+ get scrollTop(): number;
|
|
|
|
+ set scrollTop(value: number);
|
|
/**
|
|
/**
|
|
* Set options and render the component.
|
|
* Set options and render the component.
|
|
* Note: Options will be merged\appended with the defaults and component will be invalidated/rendered again.
|
|
* Note: Options will be merged\appended with the defaults and component will be invalidated/rendered again.
|
|
*/
|
|
*/
|
|
- setOptions(toSet: TimelineOptions): TimelineOptions;
|
|
|
|
|
|
+ setOptions: (toSet: TimelineOptions) => TimelineOptions;
|
|
/**
|
|
/**
|
|
* Private. Apply html container styles from options if any is set.
|
|
* Private. Apply html container styles from options if any is set.
|
|
*/
|
|
*/
|
|
- _applyContainersStyles(): void;
|
|
|
|
- _setOptions(toSet: TimelineOptions): TimelineOptions;
|
|
|
|
- getModel(): TimelineModel;
|
|
|
|
|
|
+ _applyContainersStyles: () => void;
|
|
|
|
+ _setOptions: (toSet: TimelineOptions) => TimelineOptions;
|
|
|
|
+ /**
|
|
|
|
+ * Get current model.
|
|
|
|
+ */
|
|
|
|
+ getModel: () => TimelineModel | null;
|
|
/**
|
|
/**
|
|
* Set model and redraw application.
|
|
* Set model and redraw application.
|
|
* @param data
|
|
* @param data
|
|
*/
|
|
*/
|
|
- setModel(data: TimelineModel): void;
|
|
|
|
- _getMousePos(canvas: HTMLCanvasElement, e: TouchEvent | MouseEvent | any): TimelineMouseData;
|
|
|
|
|
|
+ setModel: (data: TimelineModel) => void;
|
|
|
|
+ _getMousePos: (canvas: HTMLCanvasElement, e: TouchEvent | MouseEvent | any) => TimelineMouseData;
|
|
/**
|
|
/**
|
|
* Apply container div size to the container on changes detected.
|
|
* Apply container div size to the container on changes detected.
|
|
*/
|
|
*/
|
|
- _updateCanvasScale(): boolean;
|
|
|
|
|
|
+ _updateCanvasScale: () => boolean;
|
|
/**
|
|
/**
|
|
* Rescale and update size of the container.
|
|
* Rescale and update size of the container.
|
|
*/
|
|
*/
|
|
- rescale(): boolean;
|
|
|
|
|
|
+ rescale: () => boolean;
|
|
/**
|
|
/**
|
|
* This method is used to draw additional space when after there are no keyframes.
|
|
* This method is used to draw additional space when after there are no keyframes.
|
|
* When scrolled we should allow to indefinitely scroll right, so space should be extended to drag keyframes outside of the current size bounds.
|
|
* When scrolled we should allow to indefinitely scroll right, so space should be extended to drag keyframes outside of the current size bounds.
|
|
*/
|
|
*/
|
|
- _rescaleInternal(newWidth?: number | null, newHeight?: number | null, scrollMode?: TimelineScrollSource): boolean;
|
|
|
|
|
|
+ _rescaleInternal: (newWidth?: number | null, newHeight?: number | null, scrollMode?: TimelineScrollSource) => boolean;
|
|
/**
|
|
/**
|
|
- * Filter and sort draggable elements by the priority to get first draggable element.
|
|
|
|
|
|
+ * Filter elements that can be dragged.
|
|
* Filtration is done based on the timeline styles and options.
|
|
* Filtration is done based on the timeline styles and options.
|
|
- * @param elements to filter and sort.
|
|
|
|
- * @param val current mouse value to find best match.
|
|
|
|
*/
|
|
*/
|
|
- _filterDraggableElements(elements: TimelineElement[], val?: number | null): TimelineElement;
|
|
|
|
|
|
+ _filterDraggableElements: (elements: TimelineElement[]) => TimelineElement[];
|
|
/**
|
|
/**
|
|
- * get all clickable elements by the given local screen coordinate.
|
|
|
|
|
|
+ * Filter and sort draggable elements by the priority to get first draggable element closest to the passed value.
|
|
*/
|
|
*/
|
|
- elementFromPoint(pos: DOMPoint, clickRadius?: number, onlyTypes?: TimelineElementType[] | null): TimelineElement[];
|
|
|
|
- _cloneOptions(previousOptions: TimelineOptions): TimelineOptions;
|
|
|
|
|
|
+ _findDraggableElement: (elements: TimelineElement[], val?: number | null) => TimelineElement | null;
|
|
/**
|
|
/**
|
|
- * Merge options. New keys will be added.
|
|
|
|
|
|
+ * get all clickable elements by the given local screen coordinate.
|
|
*/
|
|
*/
|
|
- _mergeOptions(previousOptions: TimelineOptions, newOptions: TimelineOptions): TimelineOptions;
|
|
|
|
|
|
+ elementFromPoint: (pos: DOMPoint, clickRadius: number, onlyTypes?: TimelineElementType[] | null) => TimelineElement[];
|
|
/**
|
|
/**
|
|
* Subscribe user callback on time changed.
|
|
* Subscribe user callback on time changed.
|
|
*/
|
|
*/
|
|
- onTimeChanged(callback: (eventArgs: TimelineTimeChangedEvent) => void): void;
|
|
|
|
|
|
+ onTimeChanged: (callback: (eventArgs: TimelineTimeChangedEvent) => void) => void;
|
|
/**
|
|
/**
|
|
* Subscribe user callback on drag started event.
|
|
* Subscribe user callback on drag started event.
|
|
*/
|
|
*/
|
|
- onDragStarted(callback: (eventArgs: TimelineDragEvent) => void): void;
|
|
|
|
|
|
+ onDragStarted: (callback: (eventArgs: TimelineDragEvent) => void) => void;
|
|
/**
|
|
/**
|
|
* Subscribe user callback on drag event.
|
|
* Subscribe user callback on drag event.
|
|
*/
|
|
*/
|
|
- onDrag(callback: (eventArgs: TimelineDragEvent) => void): void;
|
|
|
|
|
|
+ onDrag: (callback: (eventArgs: TimelineDragEvent) => void) => void;
|
|
/**
|
|
/**
|
|
* Subscribe user callback on drag finished event.
|
|
* Subscribe user callback on drag finished event.
|
|
*/
|
|
*/
|
|
- onDragFinished(callback: (eventArgs: TimelineDragEvent) => void): void;
|
|
|
|
|
|
+ onDragFinished: (callback: (eventArgs: TimelineDragEvent) => void) => void;
|
|
/**
|
|
/**
|
|
* Subscribe user callback on double click.
|
|
* Subscribe user callback on double click.
|
|
*/
|
|
*/
|
|
- onDoubleClick(callback: (eventArgs: TimelineClickEvent) => void): void;
|
|
|
|
|
|
+ onDoubleClick: (callback: (eventArgs: TimelineClickEvent) => void) => void;
|
|
/**
|
|
/**
|
|
* Subscribe user callback on keyframe changed event.
|
|
* Subscribe user callback on keyframe changed event.
|
|
*/
|
|
*/
|
|
- onKeyframeChanged(callback: (eventArgs: TimelineKeyframeChangedEvent) => void): void;
|
|
|
|
|
|
+ onKeyframeChanged: (callback: (eventArgs: TimelineKeyframeChangedEvent) => void) => void;
|
|
/**
|
|
/**
|
|
* Subscribe user callback on drag finished event.
|
|
* Subscribe user callback on drag finished event.
|
|
*/
|
|
*/
|
|
- onMouseDown(callback: (eventArgs: TimelineClickEvent) => void): void;
|
|
|
|
|
|
+ onMouseDown: (callback: (eventArgs: TimelineClickEvent) => void) => void;
|
|
/**
|
|
/**
|
|
* Subscribe user callback on selected.
|
|
* Subscribe user callback on selected.
|
|
*/
|
|
*/
|
|
- onSelected(callback: (eventArgs: TimelineSelectedEvent) => void): void;
|
|
|
|
|
|
+ onSelected: (callback: (eventArgs: TimelineSelectedEvent) => void) => void;
|
|
/**
|
|
/**
|
|
* Subscribe user callback on scroll event
|
|
* Subscribe user callback on scroll event
|
|
*/
|
|
*/
|
|
- onScroll(callback: (eventArgs: TimelineScrollEvent) => void): void;
|
|
|
|
- onScrollFinished(callback: (eventArgs: TimelineScrollEvent) => void): void;
|
|
|
|
- _emitScrollEvent(args: MouseEvent | null, scrollProgrammatically: boolean, eventType?: TimelineEvents): TimelineScrollEvent;
|
|
|
|
- _emitKeyframeChanged(element: TimelineElementDragState, source?: TimelineEventSource): TimelineKeyframeChangedEvent;
|
|
|
|
- _emitDragStartedEvent(): TimelineDragEvent;
|
|
|
|
|
|
+ onScroll: (callback: (eventArgs: TimelineScrollEvent) => void) => void;
|
|
|
|
+ /**
|
|
|
|
+ * Subscribe on scroll finished event.
|
|
|
|
+ */
|
|
|
|
+ onScrollFinished: (callback: (eventArgs: TimelineScrollEvent) => void) => void;
|
|
|
|
+ /**
|
|
|
|
+ * Private.
|
|
|
|
+ * Emit internally scroll eve
|
|
|
|
+ */
|
|
|
|
+ _emitScrollEvent: (args: Event | null, scrollProgrammatically: boolean, eventType?: TimelineEvents) => TimelineScrollEvent;
|
|
|
|
+ _emitKeyframeChanged: (element: TimelineElementDragState, source?: TimelineEventSource) => TimelineKeyframeChangedEvent;
|
|
|
|
+ _emitDragStartedEvent: (dragState: TimelineDraggableData) => TimelineDragEvent | null;
|
|
/**
|
|
/**
|
|
* Private emit timeline event that dragging element is finished.
|
|
* Private emit timeline event that dragging element is finished.
|
|
* @param forcePrevent - needed when during dragging components set to the state when they cannot be dragged anymore. (used only as recovery state).
|
|
* @param forcePrevent - needed when during dragging components set to the state when they cannot be dragged anymore. (used only as recovery state).
|
|
* @returns
|
|
* @returns
|
|
*/
|
|
*/
|
|
- _emitDragFinishedEvent(forcePrevent?: boolean): TimelineDragEvent;
|
|
|
|
- _preventDrag(dragArgs: TimelineDragEvent, data: TimelineDraggableData, toStart?: boolean): void;
|
|
|
|
- _emitDragEvent(): TimelineDragEvent;
|
|
|
|
- _emitKeyframesSelected(state: TimelineSelectionResults): TimelineSelectedEvent;
|
|
|
|
- _getDragEventArgs(): TimelineDragEvent;
|
|
|
|
|
|
+ _emitDragFinishedEvent: (dragState: TimelineDraggableData, forcePrevent?: boolean) => TimelineDragEvent | null;
|
|
|
|
+ _preventDrag: (dragArgs: TimelineDragEvent, data: TimelineDraggableData, toStart?: boolean) => void;
|
|
|
|
+ _emitDragEvent: (dragState: TimelineDraggableData) => TimelineDragEvent | null;
|
|
|
|
+ _emitKeyframesSelected: (state: TimelineSelectionResults) => TimelineSelectedEvent;
|
|
|
|
+ _getDragEventArgs: (dragState: TimelineDraggableData, point: TimelineMouseData | null) => TimelineDragEvent;
|
|
}
|
|
}
|