import { h, Component } from 'preact'; import { Inspector, chromeDark } from 'react-inspector'; import { Trans, t, NumberFormat } from '@lingui/macro'; import { I18n } from '@lingui/react'; import { PureComponent } from 'preact/compat'; class LogRow extends Component { shouldComponentUpdate() { return false; } render() { const theme = { ...chromeDark, ...{ BASE_FONT_SIZE: '20px', TREENODE_FONT_SIZE: '20px' } }; return ; } } export class Console extends PureComponent { constructor(props) { super(props); this.mouseMoveHandler = this.mouseMoveHandler.bind(this); } componentDidUpdate(previousProps) { if (this.props.logs !== previousProps.logs) { // Scroll down after new log dom is inserted setTimeout(() => { this.logContainerEl.scrollTop = this.logContainerEl.scrollHeight; }, 1); } } componentWillUnmount() { this.endDragging(); } endDragging() { if (!this.isDragging) { return; } this.isDragging = false; window.consoleEl.style.transition = this.savedTransition; window.removeEventListener('mousemove', this.mouseMoveHandler); window.removeEventListener('mouseup', this.mouseUpHandler); } mouseDownHandler(e) { if (!this.props.isConsoleOpen) { return true; } this.isDragging = true; this.startY = e.pageY; this.startHeight = window.consoleEl.getBoundingClientRect().height; this.savedTransition = window.getComputedStyle(window.consoleEl).transition; window.consoleEl.style.transition = 'none'; window.addEventListener('mousemove', this.mouseMoveHandler); window.addEventListener('mouseup', this.mouseUpHandler); } mouseUpHandler() { this.endDragging(); } mouseMoveHandler(e) { if (!this.isDragging) return true; const newHeight = this.startHeight + (this.startY - e.pageY); window.consoleEl.style.height = `${newHeight}px`; } render() { const { logs, isConsoleOpen, onConsoleHeaderDblClick, onClearConsoleBtnClick, toggleConsole, onEvalInputKeyup } = this.props; return ( {({ i18n }) => ( )} ); } }