From 55f5d013f7406d8a4d972add5a0ab64671651b85 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Mon, 10 Mar 2025 12:37:17 +0400 Subject: [PATCH] Firefox resize fix + skip loading keymaps in headless mode (#6435) * Fix error when resizing components in Firefox * Avoid loading keymaps for headless editor * Fix other possible issues --- packages/core/src/canvas/index.ts | 4 +++- packages/core/src/commands/view/SelectComponent.ts | 2 +- packages/core/src/editor/model/Editor.ts | 8 ++++++++ packages/core/src/keymaps/index.ts | 3 ++- packages/core/src/utils/sorter/ComponentSorter.ts | 2 +- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/core/src/canvas/index.ts b/packages/core/src/canvas/index.ts index 88940b85b..3e4aca716 100644 --- a/packages/core/src/canvas/index.ts +++ b/packages/core/src/canvas/index.ts @@ -486,7 +486,9 @@ export default class CanvasModule extends Module { */ getMouseRelativePos(e: any, opts: any = {}) { const subWinOffset = opts.subWinOffset; - const doc = e.target.ownerDocument; + const { target } = e; + // In Firefox, pointing outside the window, will return the HTMLDocument. + const doc = target.nodeType === Node.DOCUMENT_NODE ? target : target.ownerDocument; const win = doc.defaultView || doc.parentWindow; const frame = win.frameElement; const yOffset = subWinOffset ? win.pageYOffset : 0; diff --git a/packages/core/src/commands/view/SelectComponent.ts b/packages/core/src/commands/view/SelectComponent.ts index 0c4b29285..608097350 100644 --- a/packages/core/src/commands/view/SelectComponent.ts +++ b/packages/core/src/commands/view/SelectComponent.ts @@ -496,7 +496,7 @@ export default { const style: any = {}; if (!onlyHeight) { - const bodyw = canvas.getBody().offsetWidth; + const bodyw = canvas.getBody()?.offsetWidth || 0; const width = rect.w < bodyw ? rect.w : bodyw; style[keyWidth!] = autoWidth ? 'auto' : `${width}${unitWidth}`; } diff --git a/packages/core/src/editor/model/Editor.ts b/packages/core/src/editor/model/Editor.ts index 37e70767a..13471b626 100644 --- a/packages/core/src/editor/model/Editor.ts +++ b/packages/core/src/editor/model/Editor.ts @@ -314,6 +314,14 @@ export default class EditorModel extends Model { return this.config.grapesjs?.version || ''; } + get isHeadless() { + return !!this.config.headless; + } + + get isShallow() { + return !!this.get('isShallow'); + } + /** * Get configurations * @param {string} [prop] Property name diff --git a/packages/core/src/keymaps/index.ts b/packages/core/src/keymaps/index.ts index ce0b0659f..015462dda 100644 --- a/packages/core/src/keymaps/index.ts +++ b/packages/core/src/keymaps/index.ts @@ -64,6 +64,7 @@ export default class KeymapsModule extends Module extends } } const addedNode = targetNode.addChildAt(sourceNode, index, { action: 'move-component' }) as NodeType; - this.triggerEndMoveEvent(addedNode); + addedNode && this.triggerEndMoveEvent(addedNode); return { addedNode, index }; }