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