annotate src/app/visualisations/waveform/waves-ui-piper.d.ts @ 354:a9ce5516c17d

Introduce an abstract base class for components using waves-ui.
author Lucas Thompson <dev@lucas.im>
date Fri, 26 May 2017 18:17:31 +0100
parents 82d476b976e0
children
rev   line source
dev@347 1 /// <reference path="../../../../node_modules/@types/node/index.d.ts"/>
dev@347 2 declare const AmbientInstance: WavesUserInterface;
dev@347 3
dev@347 4 declare module 'waves-ui-piper' {
dev@347 5 export default AmbientInstance;
dev@347 6 }
dev@347 7
dev@347 8 interface WavesUserInterface {
dev@347 9 core: Core;
dev@347 10 helpers: any;
dev@347 11 states: any;
dev@347 12 utils: Utilities;
dev@347 13 shapes: any;
dev@347 14 }
dev@347 15
dev@347 16 interface MatrixEntity {
dev@347 17 getColumnCount(): number;
dev@347 18 getColumnHeight(): number;
dev@347 19 getColumn(n: number): Float32Array | number[];
dev@347 20 getStepDuration(): number;
dev@347 21 getStartTime(): number;
dev@347 22 dispose(): void;
dev@347 23 }
dev@347 24
dev@347 25 type TimeContext = any; // TODO
dev@347 26
dev@347 27 interface Area {
dev@347 28 top: number;
dev@347 29 left: number;
dev@347 30 width: number;
dev@347 31 height: number;
dev@347 32 }
dev@347 33
dev@347 34 interface Layer extends NodeJS.EventEmitter {
dev@347 35 start: number;
dev@347 36 offset: number;
dev@347 37 duration: number;
dev@347 38 stretchRatio: number;
dev@347 39 yDomain: number[];
dev@347 40 opacity: number;
dev@354 41 timeContext: any; // TODO
dev@347 42 readonly timeToPixel: () => (time: number) => number;
dev@347 43 readonly valueToPixel: () => (value: number) => number;
dev@347 44 readonly items: Element[];
dev@347 45 readonly selectedItems: Element[];
dev@347 46 data: ArrayLike<any> | Object;
dev@347 47 destroy(): void;
dev@347 48 configureTimeContextBehaviour(ctor: ObjectConstructor): void;
dev@347 49 setTimeContext(context: TimeContext): void;
dev@347 50 configureShape(ctor: ObjectConstructor /* TODO BaseShape*/,
dev@347 51 accessors: Object,
dev@347 52 options: Object): void;
dev@347 53 configureCommonShape(ctor: ObjectConstructor /* TODO BaseShape*/,
dev@347 54 accessors: Object,
dev@347 55 options: Object): void;
dev@347 56 setBehaviour(behaviour: Object /* TODO BaseBehavior */): void;
dev@347 57 select(...$items: Element[]);
dev@347 58 unselect(...$items: Element[]);
dev@347 59 toggleSelection(...$items: Element[]);
dev@347 60 edit($items: Element[], dx: number, dy: number, $target: Element): void;
dev@347 61 setContextEditable(bool: boolean): void;
dev@347 62 editContext(dx: number, dy: number, $target: Element): void;
dev@347 63 stretchContext(dx: number, dy: number, $target: Element): void;
dev@347 64 getItemFromDOMElement($el: Element): Element | null;
dev@347 65 getDatumFromItem($item: Element): Object | any[] | null;
dev@347 66 getDatumFromDOMElement($item: Element): Object | any[] | null;
dev@347 67 hasItem($item: Element): boolean;
dev@347 68 hasElement($el: Element): boolean;
dev@347 69 getItemsInArea(area: Area): Element[];
dev@347 70 render(): void;
dev@347 71 update(): void;
dev@347 72 updateContainer(): void;
dev@347 73 updateShapes(): void;
dev@347 74 }
dev@347 75
dev@347 76 interface LayerConstructor {
dev@347 77 new(dataType: 'entity' | 'collection',
dev@347 78 data: ArrayLike<any> | Object,
dev@347 79 options: Object): Layer;
dev@347 80 }
dev@347 81
dev@347 82 interface MatrixEntityConstructor {
dev@347 83 new(): MatrixEntity;
dev@347 84 }
dev@347 85
dev@347 86 interface PrefilledMatrixEntityConstructor {
dev@347 87 new(data: Float32Array[] | number[][],
dev@347 88 startTime: number,
dev@347 89 stepDuration: number): MatrixEntity;
dev@347 90 }
dev@347 91
dev@347 92 interface Utilities {
dev@347 93 MatrixEntity: MatrixEntityConstructor;
dev@347 94 PrefilledMatrixEntity: PrefilledMatrixEntityConstructor;
dev@347 95 scales: any;
dev@347 96 }
dev@347 97
dev@347 98 type Timeline = any;
dev@354 99 type Track = any; // TODO
dev@347 100
dev@347 101 interface Core {
dev@347 102 Layer: LayerConstructor;
dev@347 103 LayerTimeContext: any; // TODO
dev@347 104 Timeline: Timeline; // TODO
dev@347 105 TimelineTimeContext: TimelineTimeContextConstructor;
dev@347 106 }
dev@347 107
dev@347 108 interface TimelineTimeContext {
dev@347 109 pixelsPerSecond: number;
dev@347 110 readonly computedPixelsPerSecond: number;
dev@347 111 offset: number;
dev@347 112 zoom: number;
dev@347 113 visibleWidth: number;
dev@347 114 readonly visibleDuration: number;
dev@347 115 maintainVisibleDuration: boolean;
dev@347 116 timeToPixel: (time: number) => number;
dev@347 117 }
dev@347 118
dev@347 119 interface TimelineTimeContextConstructor {
dev@347 120 new(pixelsPerSecond: number, visibleWidth: number): TimelineTimeContext;
dev@347 121 }