changeset 127:2b88e4d78ec6

First pass at Layer type definition.
author Lucas Thompson <dev@lucas.im>
date Wed, 15 Mar 2017 15:21:00 +0000
parents b08058753a06
children 576e7e0246cb
files src/app/waveform/waves-ui.d.ts
diffstat 1 files changed, 64 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/app/waveform/waves-ui.d.ts	Wed Mar 15 14:29:11 2017 +0000
+++ b/src/app/waveform/waves-ui.d.ts	Wed Mar 15 15:21:00 2017 +0000
@@ -1,3 +1,4 @@
+import EventEmitter = NodeJS.EventEmitter;
 /**
  * Created by lucas on 01/12/2016.
  */
@@ -8,7 +9,7 @@
 }
 
 interface WavesUserInterface {
-  core: any;
+  core: Core;
   helpers: any;
   states: any;
   utils: Utilities;
@@ -22,6 +23,62 @@
   getStartTime(): number;
 }
 
+type TimeContext = any; // TODO
+
+interface Area {
+  top: number;
+  left: number;
+  width: number;
+  height: number;
+}
+
+interface Layer extends EventEmitter {
+  destroy(): void;
+  configureTimeContextBehaviour(ctor: ObjectConstructor): void;
+  start: number;
+  offset: number;
+  duration: number;
+  stretchRatio: number;
+  yDomain: number[];
+  opacity: number;
+  readonly timeToPixel: () => (time: number) => number;
+  readonly valueToPixel: () => (value: number) => number;
+  readonly items: Element[];
+  data: ArrayLike<any> | Object;
+  setTimeContext(context: TimeContext): void;
+  configureShape(ctor: ObjectConstructor /* TODO BaseShape*/,
+                 accessors: Object,
+                 options: Object): void;
+  configureCommonShape(ctor: ObjectConstructor /* TODO BaseShape*/,
+                       accessors: Object,
+                       options: Object): void;
+  setBehaviour(behaviour: Object /* TODO BaseBehavior */): void;
+  readonly selectedItems: Element[];
+  select(...$items: Element[]);
+  unselect(...$items: Element[]);
+  toggleSelection(...$items: Element[]);
+  edit($items: Element[], dx: number, dy: number, $target: Element): void;
+  setContextEditable(bool: boolean): void;
+  editContext(dx: number, dy: number, $target: Element): void;
+  stretchContext(dx: number, dy: number, $target: Element): void;
+  getItemFromDOMElement($el: Element): Element | null;
+  getDatumFromItem($item: Element): Object | any[] | null;
+  getDatumFromDOMElement($item: Element): Object | any[] | null;
+  hasItem($item: Element): boolean;
+  hasElement($el: Element): boolean;
+  getItemsInArea(area: Area): Element[];
+  render(): void;
+  update(): void;
+  updateContainer(): void;
+  updateShapes(): void;
+}
+
+interface LayerConstructor {
+  new(dataType: "entity" | "collection",
+      data: ArrayLike<any> | Object,
+      options: Object): Layer;
+}
+
 interface MatrixEntityConstructor {
   new(): MatrixEntity;
 }
@@ -37,3 +94,9 @@
   PrefilledMatrixEntity: PrefilledMatrixEntityConstructor;
   scales: any;
 }
+
+interface Core {
+  Layer: LayerConstructor;
+  LayerTimeContext: any; // TODO
+  Timeline: any; // TODO
+}