BookStack/resources/js/wysiwyg/ui/framework/manager.ts

38 lines
1.1 KiB
TypeScript
Raw Normal View History

import {EditorFormModal, EditorFormModalDefinition} from "./modals";
import {EditorUiContext} from "./core";
2024-05-30 23:50:55 +08:00
export class EditorUIManager {
2024-05-30 23:50:55 +08:00
protected modalDefinitionsByKey: Record<string, EditorFormModalDefinition> = {};
protected context: EditorUiContext|null = null;
2024-05-30 23:50:55 +08:00
setContext(context: EditorUiContext) {
this.context = context;
}
2024-05-30 23:50:55 +08:00
getContext(): EditorUiContext {
if (this.context === null) {
throw new Error(`Context attempted to be used without being set`);
}
return this.context;
}
registerModal(key: string, modalDefinition: EditorFormModalDefinition) {
this.modalDefinitionsByKey[key] = modalDefinition;
}
createModal(key: string): EditorFormModal {
const modalDefinition = this.modalDefinitionsByKey[key];
if (!modalDefinition) {
console.error(`Attempted to show modal of key [${key}] but no modal registered for that key`);
}
const modal = new EditorFormModal(modalDefinition);
modal.setContext(this.getContext());
2024-05-30 23:50:55 +08:00
return modal;
}
2024-05-30 23:50:55 +08:00
}