dev@360: /// dev@360: declare const AmbientInstance: WavesUserInterface; dev@360: dev@360: declare module 'waves-ui-piper' { dev@360: export default AmbientInstance; dev@360: } dev@360: dev@360: interface WavesUserInterface { dev@360: core: Core; dev@360: helpers: any; dev@360: states: any; dev@360: utils: Utilities; dev@360: shapes: any; dev@360: } dev@360: dev@360: interface MatrixEntity { dev@360: getColumnCount(): number; dev@360: getColumnHeight(): number; dev@360: getColumn(n: number): Float32Array | number[]; dev@360: getStepDuration(): number; dev@360: getStartTime(): number; dev@360: dispose(): void; dev@360: } dev@360: dev@360: interface Area { dev@360: top: number; dev@360: left: number; dev@360: width: number; dev@360: height: number; dev@360: } dev@360: dev@360: interface Layer extends NodeJS.EventEmitter { dev@360: start: number; dev@360: offset: number; dev@360: duration: number; dev@360: stretchRatio: number; dev@360: yDomain: number[]; dev@360: opacity: number; dev@374: timeContext: LayerTimeContext; dev@360: readonly timeToPixel: () => (time: number) => number; dev@360: readonly valueToPixel: () => (value: number) => number; dev@360: readonly items: Element[]; dev@360: readonly selectedItems: Element[]; dev@360: data: ArrayLike | Object; dev@360: destroy(): void; dev@360: configureTimeContextBehaviour(ctor: ObjectConstructor): void; dev@374: setTimeContext(context: LayerTimeContext): void; dev@360: configureShape(ctor: ObjectConstructor /* TODO BaseShape*/, dev@360: accessors: Object, dev@360: options: Object): void; dev@360: configureCommonShape(ctor: ObjectConstructor /* TODO BaseShape*/, dev@360: accessors: Object, dev@360: options: Object): void; dev@360: setBehaviour(behaviour: Object /* TODO BaseBehavior */): void; dev@360: select(...$items: Element[]); dev@360: unselect(...$items: Element[]); dev@360: toggleSelection(...$items: Element[]); dev@360: edit($items: Element[], dx: number, dy: number, $target: Element): void; dev@360: setContextEditable(bool: boolean): void; dev@360: editContext(dx: number, dy: number, $target: Element): void; dev@360: stretchContext(dx: number, dy: number, $target: Element): void; dev@360: getItemFromDOMElement($el: Element): Element | null; dev@360: getDatumFromItem($item: Element): Object | any[] | null; dev@360: getDatumFromDOMElement($item: Element): Object | any[] | null; dev@360: hasItem($item: Element): boolean; dev@360: hasElement($el: Element): boolean; dev@360: getItemsInArea(area: Area): Element[]; dev@360: render(): void; dev@360: update(): void; dev@360: updateContainer(): void; dev@360: updateShapes(): void; dev@360: } dev@360: dev@391: interface HighlightLayer extends Layer { dev@391: currentPosition: number; dev@391: } dev@391: dev@360: interface LayerConstructor { dev@360: new(dataType: 'entity' | 'collection', dev@360: data: ArrayLike | Object, dev@360: options: Object): Layer; dev@360: } dev@360: dev@360: interface MatrixEntityConstructor { dev@360: new(): MatrixEntity; dev@360: } dev@360: dev@360: interface PrefilledMatrixEntityConstructor { dev@360: new(data: Float32Array[] | number[][], dev@360: startTime: number, dev@360: stepDuration: number): MatrixEntity; dev@360: } dev@360: dev@360: interface Utilities { dev@360: MatrixEntity: MatrixEntityConstructor; dev@360: PrefilledMatrixEntity: PrefilledMatrixEntityConstructor; dev@374: scales: { dev@375: linear: () => Scale; dev@374: }; dev@360: } dev@360: dev@360: type Timeline = any; dev@360: type Track = any; // TODO dev@360: dev@374: interface Scale { dev@374: (value: number): number; dev@374: invert(): (value: number) => number; dev@374: domain(arr?: [number, number]): Scale; dev@374: range(arr?: [number, number]): Scale; dev@374: } dev@374: dev@374: interface LayerTimeContext { dev@374: start: number; dev@374: duration: number; dev@374: offset: number; dev@374: stretchRatio: number; dev@374: parent: TimelineTimeContext; dev@374: timeToPixel(): Scale; dev@374: pixelToTime(px: number): number; dev@374: clone(): LayerTimeContext; dev@374: } dev@374: dev@374: interface LayerTimeContextConstructor { dev@374: new(parent: TimelineTimeContext): LayerTimeContext; dev@374: } dev@374: dev@360: interface Core { dev@360: Layer: LayerConstructor; dev@374: LayerTimeContext: LayerTimeContextConstructor; dev@360: Timeline: Timeline; // TODO dev@360: TimelineTimeContext: TimelineTimeContextConstructor; dev@360: } dev@360: dev@360: interface TimelineTimeContext { dev@360: pixelsPerSecond: number; dev@360: readonly computedPixelsPerSecond: number; dev@360: offset: number; dev@360: zoom: number; dev@360: visibleWidth: number; dev@360: readonly visibleDuration: number; dev@360: maintainVisibleDuration: boolean; dev@374: timeToPixel: Scale; dev@360: } dev@360: dev@360: interface TimelineTimeContextConstructor { dev@360: new(pixelsPerSecond: number, visibleWidth: number): TimelineTimeContext; dev@360: }