35 lines
906 B
JavaScript
35 lines
906 B
JavaScript
import React from "react";
|
|
|
|
import { stateToggler, shallowEqual } from "./helpers";
|
|
import * as storage from "./storage";
|
|
|
|
export default class extends React.Component {
|
|
constructor() {
|
|
super();
|
|
this.state = Object.assign(
|
|
{
|
|
showSidebar: false,
|
|
showAst: false,
|
|
showDoc: false,
|
|
showSecondFormat: false,
|
|
toggleSidebar: () => this.setState(stateToggler("showSidebar")),
|
|
toggleAst: () => this.setState(stateToggler("showAst")),
|
|
toggleDoc: () => this.setState(stateToggler("showDoc")),
|
|
toggleSecondFormat: () =>
|
|
this.setState(stateToggler("showSecondFormat"))
|
|
},
|
|
storage.get("editor_state")
|
|
);
|
|
}
|
|
|
|
componentDidUpdate(_, prevState) {
|
|
if (!shallowEqual(this.state, prevState)) {
|
|
storage.set("editor_state", this.state);
|
|
}
|
|
}
|
|
|
|
render() {
|
|
return this.props.children(this.state);
|
|
}
|
|
}
|