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