import { observable, computed, action, trace } from "mobx"; import React = require("react"); import { observer } from "mobx-react"; import './DocumentDecorations.scss'; import { Template } from "./Templates"; import { DocumentView } from "./nodes/DocumentView"; import { List } from "../../new_fields/List"; import { Doc } from "../../new_fields/Doc"; const higflyout = require("@hig/flyout"); export const { anchorPoints } = higflyout; export const Flyout = higflyout.default; @observer class TemplateToggle extends React.Component<{ template: Template, checked: boolean, toggle: (event: React.ChangeEvent, template: Template) => void }> { render() { if (this.props.template) { return (
  • this.props.toggle(event, this.props.template)} /> {this.props.template.Name}
  • ); } else { return (null); } } } export interface TemplateMenuProps { docs: DocumentView[]; templates: Map; } @observer export class TemplateMenu extends React.Component { @observable private _hidden: boolean = true; @action toggleTemplate = (event: React.ChangeEvent, template: Template): void => { if (event.target.checked) { if (template.Name == "Bullet") { this.props.docs[0].addTemplate(template); this.props.docs[0].props.Document.maximizedDocs = new List(this.props.docs.filter((v, i) => i !== 0).map(v => v.props.Document)); } else { this.props.docs.map(d => d.addTemplate(template)); } this.props.templates.set(template, true); this.props.templates.forEach((checked, template) => console.log("Set Checked + " + checked + " " + this.props.templates.get(template))); } else { if (template.Name == "Bullet") { this.props.docs[0].removeTemplate(template); this.props.docs[0].props.Document.maximizedDocs = undefined; } else { this.props.docs.map(d => d.removeTemplate(template)); } this.props.templates.set(template, false); this.props.templates.forEach((checked, template) => console.log("Unset Checked + " + checked + " " + this.props.templates.get(template))); } } @action componentWillReceiveProps(nextProps: TemplateMenuProps) { // this._templates = nextProps.templates; } @action toggleTemplateActivity = (): void => { this._hidden = !this._hidden; } render() { let templateMenu: Array = []; this.props.templates.forEach((checked, template) => templateMenu.push()); return (
    this.toggleTemplateActivity()}>+
      {templateMenu}
    ); } }