Browse Source

Clear deferred stuff on editor destroy. Fixes #4940

pull/4952/head
Artur Arseniev 4 years ago
parent
commit
401f97d3a1
  1. 2
      src/canvas/view/FrameWrapView.ts
  2. 4
      src/editor/model/Editor.ts

2
src/canvas/view/FrameWrapView.ts

@ -85,7 +85,7 @@ export default class FrameWrapView extends ModuleView<Frame> {
updateOffset() { updateOffset() {
const { em, $el, frame } = this; const { em, $el, frame } = this;
if (!em) return; if (!em || em.destroyed) return;
em.runDefault({ preserveSelected: 1 }); em.runDefault({ preserveSelected: 1 });
$el.removeClass(this.classAnim); $el.removeClass(this.classAnim);
frame?.model?._emitUpdated(); frame?.model?._emitUpdated();

4
src/editor/model/Editor.ts

@ -101,6 +101,7 @@ export default class EditorModel extends Model {
defaultRunning = false; defaultRunning = false;
destroyed = false; destroyed = false;
_config: EditorConfig; _config: EditorConfig;
_storageTimeout?: NodeJS.Timeout;
attrsOrig: any; attrsOrig: any;
timedInterval?: number; timedInterval?: number;
updateItr?: number; updateItr?: number;
@ -323,7 +324,7 @@ export default class EditorModel extends Model {
postLoad(); postLoad();
} else { } else {
// Defer for storage load events. // Defer for storage load events.
setTimeout(async () => { this._storageTimeout = setTimeout(async () => {
if (projectData) { if (projectData) {
this.loadData(projectData); this.loadData(projectData);
} else if (sm?.canAutoload()) { } else if (sm?.canAutoload()) {
@ -997,6 +998,7 @@ export default class EditorModel extends Model {
// @ts-ignore // @ts-ignore
const { editors = [] } = config.grapesjs || {}; const { editors = [] } = config.grapesjs || {};
const shallow = this.get('shallow'); const shallow = this.get('shallow');
clearTimeout(this._storageTimeout);
shallow?.destroyAll(); shallow?.destroyAll();
this.stopListening(); this.stopListening();
this.stopDefault(); this.stopDefault();

Loading…
Cancel
Save