CodeMirror customElement

HTML

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.24.2/codemirror.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.24.2/codemirror.min.js"></script>

<body>

  <code-mirror>foo</code-mirror>
  <script>
    window.customElements.define('code-mirror', class extends HTMLElement {
      constructor() {
        super();
        let shadowRoot = this.attachShadow({
          mode: 'open'
        });
      }

      connectedCallback() {
        this.cm = CodeMirror(this.shadowRoot, {
          lineNumbers: true
        });
      }
    });

  </script>