import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { action, observable, computed } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { Doc, DocListCast, Opt } from '../../new_fields/Doc'; import { InkTool } from '../../new_fields/InkField'; import { ObjectField } from '../../new_fields/ObjectField'; import { ScriptField } from '../../new_fields/ScriptField'; import { NumCast, StrCast } from '../../new_fields/Types'; import { emptyFunction, returnEmptyString, returnOne, returnTrue, returnFalse } from '../../Utils'; import { Docs } from '../documents/Documents'; import { DragManager } from '../util/DragManager'; import { Transform } from '../util/Transform'; import { UndoManager } from '../util/UndoManager'; import { InkingControl } from './InkingControl'; import { DocumentView } from './nodes/DocumentView'; import "./CollectionLinearView.scss"; interface CollectionLinearViewProps { Document: Doc; fieldKey: string; } @observer export class CollectionLinearView extends React.Component{ @observable public addMenuToggle = React.createRef(); private _dropDisposer?: DragManager.DragDropDisposer; componentWillUnmount() { this._dropDisposer && this._dropDisposer(); } protected createDropTarget = (ele: HTMLLabelElement) => { //used for stacking and masonry view this._dropDisposer && this._dropDisposer(); if (ele) { this._dropDisposer = DragManager.MakeDropTarget(ele, { handlers: { drop: this.drop.bind(this) } }); } } drop = action((e: Event, de: DragManager.DropEvent) => { (de.data as DragManager.DocumentDragData).draggedDocuments.map(doc => { if (!doc.onDragStart) { let dbox = Docs.Create.FontIconDocument({ nativeWidth: 100, nativeHeight: 100, width: 100, height: 100, backgroundColor: StrCast(doc.backgroundColor), title: "Custom", icon: "bolt" }); dbox.dragFactory = doc; dbox.removeDropProperties = doc.removeDropProperties instanceof ObjectField ? ObjectField.MakeCopy(doc.removeDropProperties) : undefined; dbox.onDragStart = ScriptField.MakeFunction('getCopy(this.dragFactory, true)'); doc = dbox; } Doc.AddDocToList(this.props.Document, this.props.fieldKey, doc); }); }); selected = (tool: InkTool) => { if (!InkingControl.Instance || InkingControl.Instance.selectedTool === InkTool.None) return { display: "none" }; if (InkingControl.Instance.selectedTool === tool) { return { color: "#61aaa3", fontSize: "50%" }; } return { fontSize: "50%" }; } render() { return
{DocListCast(this.props.Document[this.props.fieldKey]).map(doc =>
Doc.RemoveDocFromList(this.props.Document, this.props.fieldKey, doc)} ruleProvider={undefined} onClick={undefined} ScreenToLocalTransform={Transform.Identity} ContentScaling={() => 35 / NumCast(doc.nativeWidth, 35)} PanelWidth={() => 35} PanelHeight={() => 35} renderDepth={0} focus={emptyFunction} backgroundColor={returnEmptyString} parentActive={returnTrue} whenActiveChanged={emptyFunction} bringToFront={emptyFunction} ContainingCollectionView={undefined} ContainingCollectionDoc={undefined} zoomToScale={emptyFunction} getScale={returnOne}>
)} {/*
  • */}
    ; } }