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.36k stars 4.05k forks source link

BUG: <> is introduced at the beginning editor.getHtml() #5689

Closed mitcht closed 7 months ago

mitcht commented 7 months ago

GrapesJS version

What browser are you using?

Chrome Version 121.0.6167.185 (Official Build) (64-bit)

Reproducible demo link

https://jsfiddle.net/ja50kzne/4/

Describe the bug

How to reproduce the bug?

  1. I had a webpage from a previous version of grapesJS that loads into grapes correctly. You can see this in the fiddle. The latest version of GrapesJS "created" the JSON seen in the fiddle. I did not manipulate it.
  2. Notice that grapesJS does load, no errors in the console.
  3. When performing editor.getHtml (for db storage), I see that there is an empty element <> being introduced
  4. Note the console.log

What is the expected behavior? I expect to not see <> at the start of the string from editor.getHtml()

What is the current behavior? I see <> upon using .editor.getHtml()

I want to reiterate that I have not messed with the JSON. If there is something in there, it was generated by a previous version of grapesJS.

If is necessary to execute some code in order to reproduce the bug, paste it here below:

See fiddle https://jsfiddle.net/ja50kzne/4/

Code of Conduct

mitcht commented 7 months ago

I whittled the json down a quite a bit, and noticed there is some possibly invalid JSON being generated as output?

"components":[
                     {
                        "name":"Row",
                        "droppable":".cell",
                        "resizable":{
                           "tl":0,
                           "tc":0,
                           "tr":0,
                           "cl":0,
                           "cr":0,
                           "bl":0,
                           "br":0,
                           "minDim":1
                        },
                        "classes":[
                           "row"
                        ],
                        "attributes":{
                           "id":"ik4zj"
                        }
                     },
                     {
                        "type":"text",
                        "content":"<p style=\\""text-align":"center;\\""><em>With special appreciation for our <a href=\\""https":" target=\\""_blank\\"">Major Sponsors</a>:</em></p>\\n",
                        "attributes":{
                           "id":"in5ko"
                        }
                     }
                  ]

Its like the introduction of the escaped double quotes is off slightly. JSON.stringify and JSON.parse don't seem to care about it, but theres something going on.

artf commented 7 months ago

The root component of the page should be a wrapper, in your case is a textnode (eg. this might break a lot of stuff), with an empty tagName (the reason behind <>) and for some reason content: "undefined"(?)

Screenshot 2024-02-22 at 00 44 33

I wouldn't even expect it to load but the editor is making some slight enforcements on the root component but type and tagName are extendable so can not be enforced.

Can't really help here, I can only suggest updating the JSON manually or via script. This doesn't seem to be a behavior of any previous version, so might also be related to some custom code.

mitcht commented 7 months ago

This is what was coming out of Grapes 0.18.4, therefor it was generated by grapes. I would expect if content was "undefined", grapes would either strip it or ignore it. For now i'm just stripping the <> out on my end, but I thought I'd just share it with you.