import { action, observable } from "mobx"; import { observer } from "mobx-react"; import { Doc } from "../../new_fields/Doc"; import { List } from "../../new_fields/List"; import './DocumentDecorations.scss'; import { DocumentView } from "./nodes/DocumentView"; import { Template } from "./Templates"; import React = require("react"); 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; constructor(props: TemplateMenuProps) { super(props); } @action toggleTemplate = (event: React.ChangeEvent, template: Template): void => { if (event.target.checked) { if (template.Name === "Bullet") { let topDocView = this.props.docs[0]; topDocView.addTemplate(template); topDocView.props.Document.subBulletDocs = new List(this.props.docs.filter(v => v !== topDocView).map(v => v.props.Document.proto!)); } else { this.props.docs.map(d => d.addTemplate(template)); } this.props.templates.set(template, true); } else { if (template.Name === "Bullet") { let topDocView = this.props.docs[0]; topDocView.removeTemplate(template); topDocView.props.Document.subBulletDocs = undefined; } else { this.props.docs.map(d => d.removeTemplate(template)); } this.props.templates.set(template, false); } } @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}
    ); } }