import { action, configure, observable, ObservableMap, Lambda } from 'mobx'; import "normalize.css"; import * as React from 'react'; import * as ReactDOM from 'react-dom'; import { observer } from 'mobx-react'; // configure({ // enforceActions: "observed" // }); // @observer // class FieldViewer extends React.Component<{ field: BasicField }> { // render() { // return {JSON.stringify(this.props.field.Data)} ({this.props.field.Id}); // } // } // @observer // class KeyViewer extends React.Component<{ field: Key }> { // render() { // return this.props.field.Name; // } // } // @observer // class ListViewer extends React.Component<{ field: ListField }>{ // @observable // expanded = false; // render() { // let content; // if (this.expanded) { // content = ( //
// {this.props.field.Data.map(field => )} //
// ); // } else { // content = <>[...] ({this.props.field.Id}); // } // return ( //
// // {content} //
// ); // } // } // @observer // class DocumentViewer extends React.Component<{ field: Document }> { // private keyMap: ObservableMap = new ObservableMap; // private disposer?: Lambda; // componentDidMount() { // let f = () => { // Array.from(this.props.field._proxies.keys()).forEach(id => { // if (!this.keyMap.has(id)) { // Server.GetField(id, (field) => { // if (field && field instanceof Key) { // this.keyMap.set(id, field); // } // }); // } // }); // }; // this.disposer = this.props.field._proxies.observe(f); // f(); // } // componentWillUnmount() { // if (this.disposer) { // this.disposer(); // } // } // render() { // let fields = Array.from(this.props.field._proxies.entries()).map(kv => { // let key = this.keyMap.get(kv[0]); // return ( //
// ({key ? key.Name : kv[0]}): // //
// ); // }); // return ( //
// Document ({this.props.field.Id}) //
// {fields} //
//
// ); // } // } // @observer // class DebugViewer extends React.Component<{ fieldId: string }> { // @observable // private field?: Field; // @observable // private error?: string; // constructor(props: { fieldId: string }) { // super(props); // this.update(); // } // update() { // Server.GetField(this.props.fieldId, action((field: Opt) => { // this.field = field; // if (!field) { // this.error = `Field with id ${this.props.fieldId} not found`; // } // })); // } // render() { // let content; // if (this.field) { // // content = this.field.ToJson(); // if (this.field instanceof ListField) { // content = (); // } else if (this.field instanceof Document) { // content = (); // } else if (this.field instanceof BasicField) { // content = (); // } else if (this.field instanceof Key) { // content = (); // } else { // content = (Unrecognized field type); // } // } else if (this.error) { // content = Field {this.props.fieldId} not found ; // } else { // content = Field loading: {this.props.fieldId}; // } // return content; // } // } // @observer // class Viewer extends React.Component { // @observable // private idToAdd: string = ''; // @observable // private ids: string[] = []; // @action // inputOnChange = (e: React.ChangeEvent) => { // this.idToAdd = e.target.value; // } // @action // onKeyPress = (e: React.KeyboardEvent) => { // if (e.key === "Enter") { // this.ids.push(this.idToAdd); // this.idToAdd = ""; // } // } // render() { // return ( // <> // //
// {this.ids.map(id => )} //
// // ); // } // } // ReactDOM.render(( //
// //
), // document.getElementById('root') // );