import { EventEmitter } from "@angular/core"; import { InlineEditorError } from "./inline-editor-error.interface"; import { InlineConfig } from "../types/inline-configs"; import { InlineEditorState, InlineEditorStateOptions } from "./inline-editor-state.class"; import { InlineEditorComponent } from "../inline-editor.component"; export interface Events { internal: InternalEvents; external: ExternalEvents; } export class InternalEvents { public onUpdateStateOfParent: EventEmitter = new EventEmitter(); public onUpdateStateOfChild: EventEmitter = new EventEmitter(); public onChange: EventEmitter = new EventEmitter(); public onFocus: EventEmitter = new EventEmitter(); public onBlur: EventEmitter = new EventEmitter(); public onKeyPress: EventEmitter = new EventEmitter(); public onEnter: EventEmitter = new EventEmitter(); public onEscape: EventEmitter = new EventEmitter(); public onSave: EventEmitter = new EventEmitter(); public onEdit: EventEmitter = new EventEmitter(); public onCancel: EventEmitter = new EventEmitter(); public onClick: EventEmitter = new EventEmitter(); public onUpdateConfig: EventEmitter = new EventEmitter(); } export class ExternalEvents { public onChange: EventEmitter = new EventEmitter(); public onSave: EventEmitter = new EventEmitter(); public onKeyPress: EventEmitter = new EventEmitter(); public onFocus: EventEmitter = new EventEmitter(); public onBlur: EventEmitter = new EventEmitter(); public onEnter: EventEmitter = new EventEmitter(); public onEscape: EventEmitter = new EventEmitter(); public onEdit: EventEmitter = new EventEmitter(); public onCancel: EventEmitter = new EventEmitter(); public onClick: EventEmitter = new EventEmitter(); public onError: EventEmitter = new EventEmitter(); } export interface InternalEvent { event?: Event; state: InlineEditorState; } export interface ExternalEvent { event?: Event; state: InlineEditorStateOptions; } export interface InlineEditorEvent extends ExternalEvent { instance: InlineEditorComponent; }