GrapesJS / grapesjs

Free and Open source Web Builder Framework. Next generation tool for building templates without coding
https://grapesjs.com
BSD 3-Clause "New" or "Revised" License
22.4k stars 4.06k forks source link

BUG: Loading initial project data from a designer-mode project results in wrong canvas size #4489

Closed contentfree closed 2 years ago

contentfree commented 2 years ago

GrapesJS version

What browser are you using?

Chrome v103

Reproducible demo link

https://codesandbox.io/s/laughing-austin-k12mc3?file=/index.js

Describe the bug

If you view the linked CodeSandbox and find the commented out line providing the projectData to the editor, you will see that the canvas gets resized away from the size specified by the device. In a debugger, it seems that updateDim is called multiple times at initialization: the first time with the correct device size and then again with empty width and height which then leads to the gjs-frame-wrapper's sizing getting removed.

Code of Conduct

contentfree commented 2 years ago

I can kinda force it to the correct canvas size by:

  1. Not providing projectData in the initial config,
  2. Loading the projectData via editor.loadProjectData(...) after initialization and
  3. Then running editor.Canvas.getModel().updateDevice(); though it animates from the full width back to device size.

It seems that loading the project data happens after the default device is rendered (maybe?) and somehow blows out the current frame, rerendering some default. (I don't know what the default is since I'm only providing a single device config, which appears to be ignored on the second render).

Also, leaving out any one of the three steps above results in the full-width canvas instead of the correct narrow canvas

artf commented 2 years ago

Thanks @contentfree I'll try to fix that for the next release

contentfree commented 2 years ago

Thanks @artf. I'll keep my eye open for the next release (looks like your kanban board is empty now … so should be imminent?)

artf commented 2 years ago

I'll probably try to monitor and fix some other bugs before releasing a new version but I guess it might be something around the end of the next week.