# editor-flow
Handles document change events

## Install
```
yarn add editor-flow
```

## Usage
```
import { EditorFlow, EditorType, FlowEventType, ProjectChangeInfo, VSCodeInterface } from 'editor-flow';

const iface: VSCodeInterface = {
  disposable: Disposable,  // vscode disposable
  window: window,          // vscode window namespace
  workspace: workspace     // vscode workspace namespace
};

const editorFlow:EditorFlow = EditorFlow.getInstance(EditorType.VSCODE, iface);
const emitter: any = editorFlow.getEmitter();

emitter.on('editor_flow_data', (data: any) => {
  switch(data.flow_event_type) {
    case FlowEventType.CLOSE:
      this.fileCloseHandler(data.event);
      break;
    case FlowEventType.OPEN:
      this.fileOpenHandler(data.event);
      break;
    case FlowEventType.SAVE:
      this.fileSaveHandler(data.event);
      break;
    case FlowEventType.UNFOCUS:
      this.windowStateChangeHandler(data.event);
      break;
    case FlowEventType.FOCUS:
      this.windowStateChangeHandler(data.event);
      break;
    case FlowEventType.THEME:
      this.themeKindChangeHandler(data.event);
      break;
    case FlowEventType.KPM:
      // get the project_change_info attribute and post it
      this.kpmHandler(data.project_change_info);
      break;
  }
});

...

private kpmHandler(
  projectChangeInfo: ProjectChangeInfo) {
  this.tracker.trackCodeTimeEvent(projectChangeInfo);
}
```
