question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[Question] Losing the component information on saving the code from Code Editor

See original GitHub issue

I have integrated the code edit option in the Web builder.

  • Using editor.getHtml() to get the current HTML content and populate in the code editor

  • While saving the code from the code editor, I am using editor.setComponents() to set the edited content to the builder canvas.

Issues

  1. On Saving the html from the code editor, it loses all the old component related information and acts as a new component with default values in the traits.
  2. data-gjs-type becomes default and it is not recognizing the custom components.

Anaysis & Thoughts On checking it seems like,

  1. when we use editor.getHtml() it gives the final html without any data-gjs-* attributes.
  2. editor.setComponents() method seems to override the old component information.

Questions

  1. In order to retain all the old component information and use it after editing the HTML in the editor, how can we do that?
  2. If it is by using editor.getComponents(), how can we store and reuse after saving the content from the code editor? set_content save_content

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:7

github_iconTop GitHub Comments

3reactions
noogencommented, Apr 5, 2020

@sathyanarayananaCES First, to echo others that it is best to use get/setComponents and get/setStyle to save the content of the editor. If I understand your usage correctly, that you want HTML for htmlCodeEditor and be able to import back into the editor after user edit. Take a look at the demo of the editor import which simply call setComponents with raw HTML. Refs - https://github.com/artf/grapesjs/blob/dev/docs/api/editor.md#examples and https://github.com/artf/grapesjs/blob/dev/test/specs/grapesjs/index.js#L180

To do what you want will require call to editor.genHtml() for the htmlCodeViewer.setContent and import back with editor.setComponents with the raw HTML from htmlCodeViewer instead of dealing with components array. The gotcha/pitfall that you have to understand is, internally, grapejs try its best to parse that raw HTML back into components array. Parsing HTML is difficult even with valid HTML. Therefore, you will get unexpected result and may lose data that grapejs cannot parse. This is the reason why everyone is suggesting to use getComponents and getStyle if you ever want to store and load it back. I hope that provide some clarity into why you are losing data? It’s because you are using import/grapesjs HTML parsing.

3reactions
pouyamiralayicommented, Apr 1, 2020

@jenter #1331 comment and #2644 comment are good examples. Also checkout #2664 comment which is a pitfall to avoid! Cheers!

Read more comments on GitHub >

github_iconTop Results From Across the Web

react native - Visual Studio Code Formatting fail on save
I'm using Visual Studio Code as my editor. I've set up the boiler plate and started the app. But whenever I change a...
Read more >
Visual Studio Code Frequently Asked Questions
Our docs contain a Common questions section as needed for specific topics. ... What is the difference between Visual Studio Code and Visual...
Read more >
Code editor features - Visual Studio (Windows)
Learn about the features that the code editor in Visual Studio provides to make it easier for you to write and manage your...
Read more >
How to get content from the editor and set content
The TinyMCE getContent and setContent methods. Once a user has entered content in the editor, you'll probably want to save the content to...
Read more >
HTML Editor: Tips and Troubleshooting | D2L Help Pages
1. Problem: Font is Different Sizes When you create your content in Word (or any similar program), you generate content and computer codes....
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found