import * as React from 'react'; import * as classNames from 'classnames'; import {ChangeEvent, Component, KeyboardEvent} from 'react'; import {Button} from './../'; export interface JsonDebuggerProps { object: any; spaces?: number; onChange?: (object: any) => void; } export interface State { editionModeEnabled: boolean; hasError: boolean; json: any; } export class JsonDebugger extends Component { static defaultProps: Partial = { spaces: 2, onChange: () => { return; }, }; state: State; private textarea: HTMLTextAreaElement; private updatedFromInside: boolean; constructor(props: JsonDebuggerProps) { super(props); this.state = { editionModeEnabled: false, hasError: false, json: this.stringifyObject(), }; } componentDidMount() { this.updateTextareaHeight(); } componentWillReceiveProps(nextProps: JsonDebuggerProps) { if (!this.updatedFromInside) { const json = this.stringifyObject(nextProps.object); this.setState({json}); } } componentDidUpdate() { this.updatedFromInside = false; this.updateTextareaHeight(); } render() { const {editionModeEnabled, hasError} = this.state; const value = this.getTextareaValue(); return (
{hasError && (
Invalid JSON
)}