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