import {IArticle} from 'superdesk-api'; interface IInternalEvents { addImage: { field: string; image: IArticle; }; saveArticleInEditMode: void; dangerouslyOverwriteAuthoringData: Partial; changeUserPreferences: {[preferenceId: string]: any}; openFullPreview: Array; openExportView: Array; extensionsHaveLoaded: true; } export function addInternalEventListener( eventName: T, handler: (event: CustomEvent) => void, ) { window.addEventListener(eventName, handler); return () => { window.removeEventListener(eventName, handler); }; } export function dispatchInternalEvent(eventName: T, payload: IInternalEvents[T]) { window.dispatchEvent(new CustomEvent(eventName, {detail: payload})); }