import * as React from "react"; import {observable, action, runInAction} from "mobx"; import {observer} from "mobx-react"; import "./TimelineMenu.scss"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faChartLine, faRoad, faClipboard, faPen, faTrash, faTable } from "@fortawesome/free-solid-svg-icons"; @observer export class TimelineMenu extends React.Component { public static Instance:TimelineMenu; @observable private _opacity = 0; @observable private _x = 0; @observable private _y = 0; @observable private _currentMenu:JSX.Element[] = []; constructor (props:Readonly<{}>){ super(props); TimelineMenu.Instance = this; } @action openMenu = (x?:number, y?:number) => { this._opacity = 1; x ? this._x = x : this._x = 0; y ? this._y = y : this._y = 0; } @action closeMenu = () => { this._opacity = 0; this._currentMenu = []; this._x = -1000000; this._y = -1000000; } @action addItem = (type: "input" | "button", title: string, event: (e:any) => void) => { if (type === "input"){ let inputRef = React.createRef(); this._currentMenu.push(
{ let text = e.target.value; document.addEventListener("keypress", (e:KeyboardEvent) => { if (e.keyCode === 13) { event(text); this.closeMenu(); } }); }}/>
); } else if (type === "button") { let buttonRef = React.createRef(); this._currentMenu.push(

{ event(e); this.closeMenu(); }}>{title}

); } } @action addMenu = (title:string) => { this._currentMenu.unshift(

{title}

); } render() { return (
{this._currentMenu}
); } }