verdere refactoring
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
"use strict";
|
||||
|
||||
/** Own creation, loading and destruction of the wiki's active CMap editor. */
|
||||
export class CmapEditorHost {
|
||||
constructor({ canvas, factory, createOptions = null, getModel = null, onCreated = null, onDestroyed = null }) {
|
||||
this.canvas = canvas;
|
||||
this.factory = factory;
|
||||
this.createOptions = createOptions;
|
||||
this.getModel = getModel;
|
||||
this.onCreated = onCreated;
|
||||
this.onDestroyed = onDestroyed;
|
||||
this.editor = null;
|
||||
}
|
||||
|
||||
create(options = null, model = null) {
|
||||
this.destroy();
|
||||
if (!this.factory) return null;
|
||||
const editorOptions = options ?? this.createOptions?.() ?? {};
|
||||
this.editor = this.factory(this.canvas, editorOptions);
|
||||
const loadedModel = model || this.getModel?.();
|
||||
if (loadedModel) this.editor.loadModel(loadedModel);
|
||||
if (this.onCreated) this.onCreated(this.editor);
|
||||
return this.editor;
|
||||
}
|
||||
|
||||
destroy() {
|
||||
if (!this.editor) return;
|
||||
this.editor.destroy();
|
||||
if (this.onDestroyed) this.onDestroyed(this.editor);
|
||||
this.editor = null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user