import { h, Component } from 'preact'; import PropTypes from 'prop-types'; export default class CodeEditor extends Component { componentDidMount() { import('codemirror').then(CodeMirror => { const editor = document.getElementById('codeeditor'); const myCodeMirror = CodeMirror(editor, { mode: 'javascript', theme: 'material', autofocus: true, }); myCodeMirror.setSize('100%', '100%'); // Initial trigger: const channel = window.pusher.channel( `presence-channel-${this.props.activeChannelId}`, ); channel.trigger('client-livecode', { context: 'initializing-live-code-channel', channel: `presence-channel-${this.props.activeChannelId}`, }); // Coding trigger: myCodeMirror.on('keyup', cm => { channel.trigger('client-livecode', { keyPressed: true, value: cm.getValue(), cursorPos: cm.getCursor(), }); }); }); } shouldComponentUpdate() { return false; } render() { return (