2

Synopsis: In ReactJS, I have a string of HTML code that I've formatted using js-beautify and styled using react-syntax-highlighter:

import SyntaxHighlighter from "react-syntax-highlighter";
import { a11yDark } from "react-syntax-highlighter/dist/esm/styles/hljs";
let beautify = require("js-beautify").html;

export default function App() {
  const beautifyHTML = () => {
    const code =
      "<div><h1>Small Piece of Text.</h1><div><h2>AReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongPieceOfText.</h2></div><h3>AnotherReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongPieceOfText.</h3></div>";
    const beautifiedHTML = beautify(code, {
      indent_size: 2,
      brace_style: "expand"
    });
    return beautifiedHTML;
  };

  return (
    <div className="App">
      <SyntaxHighlighter language="html" style={a11yDark}>
        {beautifyHTML()}
      </SyntaxHighlighter>
    </div>
  );
}

On the UI, this is what I get: enter image description here

Here's the Code Sandbox to see it all in action and for you to edit.

Problem: What I would like to have happen is two things:

  1. Wrap the line at the width of the div, so that the horizontal scroll does not show up.
  2. When the line wraps to the next line, the overflowing text should not start at the beginning of the line, but right below where the original line started.

To try wrapping the text (Problem 1), I tried adding the following as suggested in this post, but it seems to only work when the code is wrapped in a pre tag, which I do not have here...

.App code {
  white-space: pre-wrap;
  word-wrap: break-word;
}
9
  • There's a CSS value for it. I'm not sure about question 2. Commented May 17, 2022 at 1:05
  • Yup, I edited my post to say that I tried that and it did not work... Commented May 17, 2022 at 1:08
  • 1
    @TheAmateurCoder I used VSCode as my IDE and Code Sandbox to demo. Both have the same results when I try to wrap the text using that last bit of code in my post. Commented May 17, 2022 at 1:17
  • 1
    This is my hack so far... only works for one set indentation Commented May 17, 2022 at 1:33
  • 1
    stackoverflow.com/questions/62492403/… might also help Commented May 17, 2022 at 1:36

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.