import { action, observable } from "mobx"; import { observer } from "mobx-react"; import { DocumentView } from "../nodes/DocumentView"; import { LinkEditor } from "./LinkEditor"; import './LinkMenu.scss'; import React = require("react"); import { Doc } from "../../../fields/Doc"; import { LinkManager } from "../../util/LinkManager"; import { LinkMenuGroup } from "./LinkMenuGroup"; import { faTrash } from '@fortawesome/free-solid-svg-icons'; import { library } from "@fortawesome/fontawesome-svg-core"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; library.add(faTrash); interface Props { docView: DocumentView; changeFlyout: () => void; addDocTab: (document: Doc, where: string) => boolean; } @observer export class LinkMenu extends React.Component { @observable private _editingLink?: Doc; @action componentDidMount() { this._editingLink = undefined; } clearAllLinks = () => { LinkManager.Instance.deleteAllLinksOnAnchor(this.props.docView.props.Document); } renderAllGroups = (groups: Map>): Array => { const linkItems: Array = []; groups.forEach((group, groupType) => { linkItems.push( this._editingLink = linkDoc)} addDocTab={this.props.addDocTab} /> ); }); // if source doc has no links push message if (linkItems.length === 0) linkItems.push(

No links have been created yet. Drag the linking button onto another document to create a link.

); return linkItems; } render() { const sourceDoc = this.props.docView.props.Document; const groups: Map = LinkManager.Instance.getRelatedGroupedLinks(sourceDoc); if (this._editingLink === undefined) { return (
{/* */} {/* */}
{this.renderAllGroups(groups)}
); } else { return ( this._editingLink = undefined)}> ); } } }