sstur / draft-js-utils

DraftJS: import/export ContentState to and from HTML/Markdown
ISC License
883 stars 234 forks source link

Call Stack Exceeded on large HTML Imports #125

Open skswanke opened 6 years ago

skswanke commented 6 years ago

When trying to import lengthy html to draft state most browsers (Chrome, Firefox, Safari) crash with call stack exceeded error.

Steps to reproduce:

  1. (In a react app with react-draft-wysiwyg) in constructer convert html
  2. convert large html string (in my case 75,000+ characters) to draftjs using stateFromHTML()
  3. Import will not complete, giving: RangeError: Maximum callstack size exceeded

To solve this I ended up using

import DraftPasteProcessor from 'draft-js/lib/DraftPasteProcessor'

const processedHTML = DraftPasteProcessor.processHTML(value);
const contentState = ContentState.createFromBlockArray(processedHTML);
editorState = EditorState.createWithContent(contentState);

From draftjs own utils.

sbstjn commented 6 years ago

Hey @skswanke, I just ran into a similar issue. Can you give https://github.com/sstur/draft-js-utils/pull/139 a try and check if this works for your use case as well?