Skip to content

Instantly share code, notes, and snippets.

@Cerber-Ursi
Created October 18, 2022 09:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Cerber-Ursi/6ca1b3a6f456732b2d444d4a085fef91 to your computer and use it in GitHub Desktop.
Save Cerber-Ursi/6ca1b3a6f456732b2d444d4a085fef91 to your computer and use it in GitHub Desktop.
export class InitEventArgs {};
export class ResetEventArgs {};
export class ItemsChangedEventArgs {
public added: ReadonlyArray<any>;
public removed: ReadonlyArray<any>;
constructor(added?: ReadonlyArray<any>, removed?: ReadonlyArray<any>) {
this.added = added || [];
this.removed = removed || [];
}
};
export type ApiEventType = 'init' | 'reset' | 'itemsChanged';
export type ApiEventHandler = (() => void)
| ((e:CustomEvent<InitEventArgs>) => void)
| ((e:CustomEvent<ResetEventArgs>) => void)
| ((e:CustomEvent<ItemsChangedEventArgs>) => void);
export interface IApi {
// ...
addEventListener: (type: ApiEventType, listener: ApiEventHandler) => void;
removeEventListener: (type: ApiEventType, listener: ApiEventHandler) => void;
// ...
}
const api: IApi = {} as any; // no implementation required
api.addEventListener('itemsChanged', (e:CustomEvent<ItemsChangedEventArgs>) => { /* ... */ });
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment