Browse Source

Clear deferred stuff on editor destroy. Fixes #4940

pull/4952/head
Artur Arseniev 3 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() {
const { em, $el, frame } = this;
if (!em) return;
if (!em || em.destroyed) return;
em.runDefault({ preserveSelected: 1 });
$el.removeClass(this.classAnim);
frame?.model?._emitUpdated();

4
src/editor/model/Editor.ts

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

Loading…
Cancel
Save