<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<!DOCTYPE html><html lang='en' class=''>
<head><script src='//production-assets.codepen.io/assets/editor/live/console_runner-079c09a0e3b9ff743e39ee2d5637b9216b3545af0de366d4b9aad9dc87e26bfd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/events_runner-73716630c22bbc8cff4bd0f07b135f00a0bdc5d14629260c3ec49e5606f98fdd.js'></script><script src='//production-assets.codepen.io/assets/editor/live/css_live_reload_init-2c0dc5167d60a5af3ee189d570b1835129687ea2a61bee3513dee3a50c115a77.js'></script><meta charset='UTF-8'><meta name="robots" content="noindex"><link rel="shortcut icon" type="image/x-icon" href="//production-assets.codepen.io/assets/favicon/favicon-8ea04875e70c4b0bb41da869e81236e54394d63638a1ef12fa558a4a835f1164.ico" /><link rel="mask-icon" type="" href="//production-assets.codepen.io/assets/favicon/logo-pin-f2d2b6d2c61838f7e76325261b7195c27224080bc099486ddd6dccb469b8e8e6.svg" color="#111" /><link rel="canonical" href="https://codepen.io/tjnoe01/pen/yewBYQ?limit=all&page=15&q=editor" />
<link rel='stylesheet prefetch' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css'>
<style class="cp-pen-styles">* {
  box-sizing: border-box;
}
html, body, #container, .full-height {
  height: 100%;
}
.space-top {
  padding-top: 50px;
}
#container {
  margin: 0;
  padding: 0;
  width: 100%;
  overflow: hidden;
}
.editor, .output {
  padding: 0 30px;
  height: 50%;
}
.editor {
  border-bottom: 1px solid #ccc;
}
.output {
  overflow: auto;
}
@media only screen and (min-width: 768px) {
  .editor, .output {
    height: 100%;
    padding: 0 20px;
  }
  .editor {
    border-right: 1px solid #ccc;
    border-bottom: none;
  }
  .output {
    overflow: auto;
  }
}
</style></head><body>
<div id="container"></div>
<script src='//production-assets.codepen.io/assets/common/stopExecutionOnTimeout-b2a7b3fe212eaa732349046d8416e00a9dec26eb7fd347590fbced3ab38af52e.js'></script><script src='//cdnjs.cloudflare.com/ajax/libs/react/0.14.3/react.min.js'></script><script src='//cdnjs.cloudflare.com/ajax/libs/react/0.14.3/react-dom.min.js'></script><script src='//cdnjs.cloudflare.com/ajax/libs/marked/0.3.5/marked.min.js'></script><script src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.3/ace.js'></script><script src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.3/mode-markdown.js'></script>
<script >"use strict";
var Editor = React.createClass({
  displayName: "Editor",
  componentDidMount: function componentDidMount() {
    this.editor = ace.edit(this.props.id);
    this.editor.getSession().setMode("ace/mode/markdown");
    this.editor.setTheme("ace/theme/github");
    this.editor.setValue(this.props.value, 1);
    this.editor.on("change", this.onChange);
    this.editor.getSession().setUseWrapMode(true);
    this.editor.setShowPrintMargin(false);
  },
  componentWillReceiveProps: function componentWillReceiveProps(newProps) {
    if (this.editor.getValue() !== newProps.value) {
      this.editor.setValue(newProps.value, 1);
    }
  },
  onChange: function onChange() {
    if (this.props.onChange) {
      this.props.onChange(this.editor.getValue());
    }
  },
  render: function render() {
    return React.createElement("div", {
      id: this.props.id,
      className: this.props.className });
  }
});
var Output = function Output(props) {
  return React.createElement("div", {
    className: props.className,
    dangerouslySetInnerHTML: props.rawMarkup });
};
var Header = function Header(props) {
  return React.createElement(
    "nav",
    { className: "navbar navbar-inverse navbar-fixed-top" },
    React.createElement(
      "div",
      { className: "container-fluid" },
      React.createElement(
        "div",
        { className: "navbar-header" },
        React.createElement(
          "a",
          { className: "navbar-brand", href: "#" },
          props.brandText
        )
      ),
      props.children
    )
  );
};
var Previewer = React.createClass({
  displayName: "Previewer",
  getInitialState: function getInitialState() {
    return {
      text: 'Heading\n=======\n\nSub-heading\n-----------\n \n### Another deeper heading\n \nParagraphs are separated\nby a blank line.\n\nLeave 2 spaces at the end of a line to do a  \nline break\n\nText attributes *italic*, **bold**, \n`monospace`, ~~strikethrough~~ .\n\nShopping list:\n\n  * apples\n  * oranges\n  * pears\n\nNumbered list:\n\n  1. apples\n  2. oranges\n  3. pears\n\nThe rain---not the reign---in\nSpain.\n\n *[Herman Fassett](https://freecodecamp.com/hermanfassett)*'
    };
  },
  handleChange: function handleChange(input) {
    this.setState({ text: input });
  },
  rawMarkup: function rawMarkup() {
    var rawMarkup = marked(this.state.text.toString(), { sanitize: true });
    return { __html: rawMarkup };
  },
  render: function render() {
    return React.createElement(
      "div",
      { className: "container-fluid full-height" },
      React.createElement(
        Header,
        {
          brandText: "Markdown Previewer" },
        React.createElement(
          "p",
          { className: "navbar-text navbar-right hidden-xs" },
          "Made By Tommy Noe for  ",
          React.createElement(
            "a",
            { href: "https://freecodecamp.com", className: "navbar-link" },
            "Free Code Camp"
          )
        )
      ),
      React.createElement(
        "div",
        { className: "row full-height space-top" },
        React.createElement(Editor, {
          id: "editor",
          className: "editor col-xs-12 col-sm-6",
          value: this.state.text,
          onChange: this.handleChange }),
        React.createElement(Output, {
          className: "output col-xs-12 col-sm-6",
          rawMarkup: this.rawMarkup() })
      )
    );
  }
});
ReactDOM.render(React.createElement(Previewer, null), document.getElementById("container"));
//# sourceURL=pen.js
</script>
</body></html>