diff --git a/packages/core/src/editor/types.ts b/packages/core/src/editor/types.ts index eeb8089d1..2c8d415e5 100644 --- a/packages/core/src/editor/types.ts +++ b/packages/core/src/editor/types.ts @@ -14,6 +14,7 @@ import { PageEvent, PagesEventCallback } from '../pages/types'; import { ParserEvent, ParserEventCallback } from '../parser/types'; import { RichTextEditorEvent, RichTextEditorEventCallback } from '../rich_text_editor'; import { SelectorEvent, SelectorEventCallback } from '../selector_manager/types'; +import { StorageEvent, StorageEventCallback } from '../storage_manager/types'; import { StyleManagerEvent } from '../style_manager'; import { EditorConfig } from './config/config'; import EditorModel from './model/Editor'; @@ -60,7 +61,8 @@ export interface EditorEventCallbacks PagesEventCallback, ParserEventCallback, RichTextEditorEventCallback, - SelectorEventCallback + SelectorEventCallback, + StorageEventCallback { [key: string]: any[]; } diff --git a/packages/core/src/storage_manager/index.ts b/packages/core/src/storage_manager/index.ts index 272d42f45..677b5be75 100644 --- a/packages/core/src/storage_manager/index.ts +++ b/packages/core/src/storage_manager/index.ts @@ -47,13 +47,10 @@ import LocalStorage from './model/LocalStorage'; import RemoteStorage from './model/RemoteStorage'; import EditorModel from '../editor/model/Editor'; import IStorage, { StorageOptions, ProjectData } from './model/IStorage'; -import StorageEvents from './types'; +import StorageEvents, { StorageEventType } from './types'; export type { StorageOptions, ProjectData } from './model/IStorage'; - -export type StorageEvent = `${StorageEvents}`; - -type StorageEventType = 'store' | 'load'; +export type { StorageEvent, StorageEventCallback, StorageEventType } from './types'; const STORAGE_LOCAL = 'local'; const STORAGE_REMOTE = 'remote'; diff --git a/packages/core/src/storage_manager/types.ts b/packages/core/src/storage_manager/types.ts index 7bb67c9fb..e021408e8 100644 --- a/packages/core/src/storage_manager/types.ts +++ b/packages/core/src/storage_manager/types.ts @@ -1,3 +1,7 @@ +import { ProjectData } from './model/IStorage'; + +export type StorageEventType = 'store' | 'load'; + /**{START_EVENTS}*/ export enum StorageEvents { /** @@ -112,5 +116,24 @@ export enum StorageEvents { } /**{END_EVENTS}*/ +export type StorageEvent = `${StorageEvents}`; + +export interface StorageEventCallback { + [StorageEvents.start]: [StorageEventType, ProjectData | undefined]; + [StorageEvents.startStore]: [ProjectData]; + [StorageEvents.startLoad]: [ProjectData | undefined]; + [StorageEvents.load]: [ProjectData, unknown]; + [StorageEvents.store]: [ProjectData, unknown]; + [StorageEvents.after]: []; + [StorageEvents.afterStore]: [ProjectData, unknown]; + [StorageEvents.afterLoad]: [ProjectData, unknown]; + [StorageEvents.end]: [StorageEventType, unknown, unknown?]; + [StorageEvents.endStore]: [unknown, unknown?]; + [StorageEvents.endLoad]: [unknown, unknown?]; + [StorageEvents.error]: [unknown, StorageEventType]; + [StorageEvents.errorStore]: [unknown]; + [StorageEvents.errorLoad]: [unknown]; +} + // need this to avoid the TS documentation generator to break export default StorageEvents;