diff options
| author | andrewdkim <adkim414@gmail.com> | 2019-09-15 17:00:46 -0400 | 
|---|---|---|
| committer | andrewdkim <adkim414@gmail.com> | 2019-09-15 17:00:46 -0400 | 
| commit | 7dba132c37b0f4402e375d95c068a5fe31904a1f (patch) | |
| tree | cd4ab0558f6b599cf685f99e542f24d86328e0cc /src/client/views/collections/CollectionTreeView.tsx | |
| parent | c7678db105f952e7562f1b573266fb295e13cf7b (diff) | |
| parent | 143d4669e764f6967d4d826b00b29912892ca637 (diff) | |
new changes + pull from master
Diffstat (limited to 'src/client/views/collections/CollectionTreeView.tsx')
| -rw-r--r-- | src/client/views/collections/CollectionTreeView.tsx | 172 | 
1 files changed, 109 insertions, 63 deletions
| diff --git a/src/client/views/collections/CollectionTreeView.tsx b/src/client/views/collections/CollectionTreeView.tsx index 4b1fca18a..6217ef859 100644 --- a/src/client/views/collections/CollectionTreeView.tsx +++ b/src/client/views/collections/CollectionTreeView.tsx @@ -9,7 +9,8 @@ import { List } from '../../../new_fields/List';  import { Document, listSpec } from '../../../new_fields/Schema';  import { BoolCast, Cast, NumCast, StrCast } from '../../../new_fields/Types';  import { emptyFunction, Utils } from '../../../Utils'; -import { Docs, DocUtils, DocumentType } from '../../documents/Documents'; +import { Docs, DocUtils } from '../../documents/Documents'; +import { DocumentType } from "../../documents/DocumentTypes";  import { DocumentManager } from '../../util/DocumentManager';  import { DragManager, dropActionType, SetupDrag } from "../../util/DragManager";  import { SelectionManager } from '../../util/SelectionManager'; @@ -27,6 +28,7 @@ import "./CollectionTreeView.scss";  import React = require("react");  import { ComputedField, ScriptField } from '../../../new_fields/ScriptField';  import { KeyValueBox } from '../nodes/KeyValueBox'; +import { ContextMenuProps } from '../ContextMenuItem';  export interface TreeViewProps { @@ -35,9 +37,11 @@ export interface TreeViewProps {      containingCollection: Doc;      renderDepth: number;      deleteDoc: (doc: Doc) => boolean; +    ruleProvider: Doc | undefined;      moveDocument: DragManager.MoveFunction;      dropAction: "alias" | "copy" | undefined;      addDocTab: (doc: Doc, dataDoc: Doc | undefined, where: string) => void; +    pinToPres: (document: Doc) => void;      panelWidth: () => number;      panelHeight: () => number;      addDocument: (doc: Doc, relativeTo?: Doc, before?: boolean) => boolean; @@ -47,6 +51,9 @@ export interface TreeViewProps {      treeViewId: string;      parentKey: string;      active: () => boolean; +    showHeaderFields: () => boolean; +    preventTreeViewOpen: boolean; +    renderedIds: string[];  }  library.add(faTrashAlt); @@ -63,7 +70,12 @@ library.add(faArrowsAltH);  library.add(faPlus, faMinus);  @observer  /** - * Component that takes in a document prop and a boolean whether it's collapsed or not. + * Renders a treeView of a collection of documents + *  + * special fields: + * treeViewOpen : flag denoting whether the documents sub-tree (contents) is visible or hidden + * preventTreeViewOpen : ignores the treeViewOpen flag (for allowing a view to not be slaved to other views of the document) + * treeViewExpandedView : name of field whose contents are being displayed as the document's subtree   */  class TreeView extends React.Component<TreeViewProps> {      static loadId = ""; @@ -71,7 +83,9 @@ class TreeView extends React.Component<TreeViewProps> {      private _treedropDisposer?: DragManager.DragDropDisposer;      private _dref = React.createRef<HTMLDivElement>();      get defaultExpandedView() { return this.childDocs ? this.fieldKey : "fields"; } -    @observable _collapsed: boolean = true; +    @observable _overrideTreeViewOpen = false; // override of the treeViewOpen field allowing the display state to be independent of the document's state +    @computed get treeViewOpen() { return (BoolCast(this.props.document.treeViewOpen) && !this.props.preventTreeViewOpen) || this._overrideTreeViewOpen; } +    set treeViewOpen(c: boolean) { if (this.props.preventTreeViewOpen) this._overrideTreeViewOpen = c; else this.props.document.treeViewOpen = c; }      @computed get treeViewExpandedView() { return StrCast(this.props.document.treeViewExpandedView, this.defaultExpandedView); }      @computed get MAX_EMBED_HEIGHT() { return NumCast(this.props.document.maxEmbedHeight, 300); }      @computed get dataDoc() { return this.resolvedDataDoc ? this.resolvedDataDoc : this.props.document; } @@ -144,7 +158,7 @@ class TreeView extends React.Component<TreeViewProps> {          let rect = this._header!.current!.getBoundingClientRect();          let bounds = this.props.ScreenToLocalTransform().transformPoint(rect.left, rect.top + rect.height / 2);          let before = x[1] < bounds[1]; -        let inside = x[0] > bounds[0] + 75 || (!before && !this._collapsed); +        let inside = x[0] > bounds[0] + 75;          this._header!.current!.className = "treeViewItem-header";          if (inside) this._header!.current!.className += " treeViewItem-header-inside";          else if (before) this._header!.current!.className += " treeViewItem-header-above"; @@ -161,20 +175,21 @@ class TreeView extends React.Component<TreeViewProps> {          fontStyle={style}          fontSize={12}          GetValue={() => StrCast(this.props.document[key])} -        SetValue={(value: string) => (Doc.GetProto(this.dataDoc)[key] = value) ? true : true} -        OnFillDown={(value: string) => { +        SetValue={undoBatch((value: string) => (Doc.GetProto(this.dataDoc)[key] = value) ? true : true)} +        OnFillDown={undoBatch((value: string) => {              Doc.GetProto(this.dataDoc)[key] = value;              let doc = this.props.document.detailedLayout instanceof Doc ? Doc.ApplyTemplate(Doc.GetProto(this.props.document.detailedLayout)) : undefined;              if (!doc) doc = Docs.Create.FreeformDocument([], { title: "", x: 0, y: 0, width: 100, height: 25, templates: new List<string>([Templates.Title.Layout]) });              TreeView.loadId = doc[Id];              return this.props.addDocument(doc); -        }} -        OnTab={() => this.props.indentDocument && this.props.indentDocument()} +        })} +        OnTab={() => { TreeView.loadId = ""; this.props.indentDocument && this.props.indentDocument(); }}      />)      onWorkspaceContextMenu = (e: React.MouseEvent): void => {          if (!e.isPropagationStopped()) { // need to test this because GoldenLayout causes a parallel hierarchy in the React DOM for its children and the main document view7              if (NumCast(this.props.document.viewType) !== CollectionViewType.Docking) { +                ContextMenu.Instance.addItem({ description: "Pin to Presentation", event: () => this.props.pinToPres(this.props.document), icon: "tv" });                  ContextMenu.Instance.addItem({ description: "Open Tab", event: () => this.props.addDocTab(this.props.document, this.resolvedDataDoc, "inTab"), icon: "folder" });                  ContextMenu.Instance.addItem({ description: "Open Right", event: () => this.props.addDocTab(this.props.document, this.resolvedDataDoc, "onRight"), icon: "caret-square-right" });                  if (DocumentManager.Instance.getDocumentViews(this.dataDoc).length) { @@ -186,6 +201,7 @@ class TreeView extends React.Component<TreeViewProps> {                  ContextMenu.Instance.addItem({ description: "Delete Workspace", event: () => this.props.deleteDoc(this.props.document), icon: "trash-alt" });              }              ContextMenu.Instance.addItem({ description: "Open Fields", event: () => { let kvp = Docs.Create.KVPDocument(this.props.document, { width: 300, height: 300 }); this.props.addDocTab(kvp, this.props.dataDoc ? this.props.dataDoc : kvp, "onRight"); }, icon: "layer-group" }); +            ContextMenu.Instance.addItem({ description: "Publish", event: () => DocUtils.Publish(this.props.document, StrCast(this.props.document.title), () => { }, () => { }), icon: "file" });              ContextMenu.Instance.displayMenu(e.pageX > 156 ? e.pageX - 156 : 0, e.pageY - 15);              e.stopPropagation();              e.preventDefault(); @@ -198,7 +214,7 @@ class TreeView extends React.Component<TreeViewProps> {          let rect = this._header!.current!.getBoundingClientRect();          let bounds = this.props.ScreenToLocalTransform().transformPoint(rect.left, rect.top + rect.height / 2);          let before = x[1] < bounds[1]; -        let inside = x[0] > bounds[0] + 75 || (!before && !this._collapsed); +        let inside = x[0] > bounds[0] + 75 || (!before && this.treeViewOpen);          if (de.data instanceof DragManager.LinkDragData) {              let sourceDoc = de.data.linkSourceDocument;              let destDoc = this.props.document; @@ -252,16 +268,18 @@ class TreeView extends React.Component<TreeViewProps> {          doc && Object.keys(doc).forEach(key => !(key in ids) && doc[key] !== ComputedField.undefined && (ids[key] = key));          let rows: JSX.Element[] = []; -        for (let key of Object.keys(ids).sort()) { +        for (let key of Object.keys(ids).slice().sort()) {              let contents = doc[key]; -            let contentElement: JSX.Element[] | JSX.Element = []; +            let contentElement: (JSX.Element | null)[] | JSX.Element = [];              if (contents instanceof Doc || Cast(contents, listSpec(Doc))) {                  let remDoc = (doc: Doc) => this.remove(doc, key); -                let addDoc = (doc: Doc, addBefore?: Doc, before?: boolean) => Doc.AddDocToList(this.dataDoc, key, doc, addBefore, before); +                let addDoc = (doc: Doc, addBefore?: Doc, before?: boolean) => Doc.AddDocToList(this.dataDoc, key, doc, addBefore, before, false, true);                  contentElement = TreeView.GetChildElements(contents instanceof Doc ? [contents] :                      DocListCast(contents), this.props.treeViewId, doc, undefined, key, addDoc, remDoc, this.move, -                    this.props.dropAction, this.props.addDocTab, this.props.ScreenToLocalTransform, this.props.outerXf, this.props.active, this.props.panelWidth, this.props.renderDepth); +                    this.props.dropAction, this.props.addDocTab, this.props.pinToPres, this.props.ScreenToLocalTransform, this.props.outerXf, this.props.active, +                    this.props.panelWidth, this.props.renderDepth, this.props.showHeaderFields, this.props.preventTreeViewOpen, +                    [...this.props.renderedIds, doc[Id]]);              } else {                  contentElement = <EditableView                      key="editableView" @@ -286,14 +304,15 @@ class TreeView extends React.Component<TreeViewProps> {          const expandKey = this.treeViewExpandedView === this.fieldKey ? this.fieldKey : this.treeViewExpandedView === "links" ? "links" : undefined;          if (expandKey !== undefined) {              let remDoc = (doc: Doc) => this.remove(doc, expandKey); -            let addDoc = (doc: Doc, addBefore?: Doc, before?: boolean) => Doc.AddDocToList(this.dataDoc, expandKey, doc, addBefore, before); +            let addDoc = (doc: Doc, addBefore?: Doc, before?: boolean) => Doc.AddDocToList(this.dataDoc, expandKey, doc, addBefore, before, false, true);              let docs = expandKey === "links" ? this.childLinks : this.childDocs;              return <ul key={expandKey + "more"}>                  {!docs ? (null) :                      TreeView.GetChildElements(docs as Doc[], this.props.treeViewId, this.props.document.layout as Doc,                          this.resolvedDataDoc, expandKey, addDoc, remDoc, this.move, -                        this.props.dropAction, this.props.addDocTab, this.props.ScreenToLocalTransform, -                        this.props.outerXf, this.props.active, this.props.panelWidth, this.props.renderDepth)} +                        this.props.dropAction, this.props.addDocTab, this.props.pinToPres, this.props.ScreenToLocalTransform, +                        this.props.outerXf, this.props.active, this.props.panelWidth, this.props.renderDepth, this.props.showHeaderFields, this.props.preventTreeViewOpen, +                        [...this.props.renderedIds, this.props.document[Id]])}              </ul >;          } else if (this.treeViewExpandedView === "fields") {              return <ul><div ref={this._dref} style={{ display: "inline-block" }} key={this.props.document[Id] + this.props.document.title}> @@ -307,6 +326,7 @@ class TreeView extends React.Component<TreeViewProps> {                      DataDocument={this.resolvedDataDoc}                      renderDepth={this.props.renderDepth}                      showOverlays={this.noOverlays} +                    ruleProvider={this.props.document.isRuleProvider && layoutDoc.type !== DocumentType.TEXT ? this.props.document : this.props.ruleProvider}                      fitToBox={this.boundsOfCollectionDocument !== undefined}                      width={this.docWidth}                      height={this.docHeight} @@ -318,6 +338,7 @@ class TreeView extends React.Component<TreeViewProps> {                      active={this.props.active}                      whenActiveChanged={emptyFunction as any}                      addDocTab={this.props.addDocTab} +                    pinToPres={this.props.pinToPres}                      setPreviewScript={emptyFunction}>                  </CollectionSchemaPreview>              </div>; @@ -326,8 +347,8 @@ class TreeView extends React.Component<TreeViewProps> {      @computed      get renderBullet() { -        return <div className="bullet" onClick={action(() => this._collapsed = !this._collapsed)} style={{ color: StrCast(this.props.document.color, "black"), opacity: 0.4 }}> -            {<FontAwesomeIcon icon={this._collapsed ? (this.childDocs ? "caret-square-right" : "caret-right") : (this.childDocs ? "caret-square-down" : "caret-down")} />} +        return <div className="bullet" title="view inline" onClick={action(() => this.treeViewOpen = !this.treeViewOpen)} style={{ color: StrCast(this.props.document.color, "black"), opacity: 0.4 }}> +            {<FontAwesomeIcon icon={!this.treeViewOpen ? (this.childDocs ? "caret-square-right" : "caret-right") : (this.childDocs ? "caret-square-down" : "caret-down")} />}          </div>;      }      /** @@ -341,31 +362,31 @@ class TreeView extends React.Component<TreeViewProps> {          let headerElements = (              <span className="collectionTreeView-keyHeader" key={this.treeViewExpandedView}                  onPointerDown={action(() => { -                    if (!this._collapsed) { +                    if (this.treeViewOpen) {                          this.props.document.treeViewExpandedView = this.treeViewExpandedView === this.fieldKey ? "fields" :                              this.treeViewExpandedView === "fields" && this.props.document.layout ? "layout" :                                  this.treeViewExpandedView === "layout" && this.props.document.links ? "links" :                                      this.childDocs ? this.fieldKey : "fields";                      } -                    this._collapsed = false; +                    this.treeViewOpen = true;                  })}>                  {this.treeViewExpandedView}              </span>); -        let dataDocs = CollectionDockingView.Instance ? Cast(CollectionDockingView.Instance.props.Document[this.fieldKey], listSpec(Doc), []) : []; -        let openRight = dataDocs && dataDocs.indexOf(this.dataDoc) !== -1 ? (null) : ( -            <div className="treeViewItem-openRight" onPointerDown={this.onPointerDown} onClick={this.openRight}> -                <FontAwesomeIcon icon="angle-right" size="lg" /> -            </div>); +        let openRight = (<div className="treeViewItem-openRight" onPointerDown={this.onPointerDown} onClick={this.openRight}> +            <FontAwesomeIcon title="open in pane on right" icon="angle-right" size="lg" /> +        </div>);          return <> -            <div className="docContainer" id={`docContainer-${this.props.parentKey}`} ref={reference} onPointerDown={onItemDown} +            <div className="docContainer" title="click to edit title" id={`docContainer-${this.props.parentKey}`} ref={reference} onPointerDown={onItemDown}                  style={{ +                    color: this.props.document.isMinimized ? "red" : "black",                      background: Doc.IsBrushed(this.props.document) ? "#06121212" : "0", +                    fontWeight: this.props.document.search_string ? "bold" : undefined,                      outline: BoolCast(this.props.document.workspaceBrush) ? "dashed 1px #06123232" : undefined,                      pointerEvents: this.props.active() || SelectionManager.GetIsDragging() ? "all" : "none"                  }} >                  {this.editableView("title")}              </div > -            {headerElements} +            {this.props.showHeaderFields() ? headerElements : (null)}              {openRight}          </>;      } @@ -378,13 +399,13 @@ class TreeView extends React.Component<TreeViewProps> {                      {this.renderTitle}                  </div>                  <div className="treeViewItem-border"> -                    {this._collapsed ? (null) : this.renderContent} +                    {!this.treeViewOpen || this.props.renderedIds.indexOf(this.props.document[Id]) !== -1 ? (null) : this.renderContent}                  </div>              </li>          </div>;      }      public static GetChildElements( -        docs: Doc[], +        docList: Doc[],          treeViewId: string,          containingCollection: Doc,          dataDoc: Doc | undefined, @@ -394,12 +415,17 @@ class TreeView extends React.Component<TreeViewProps> {          move: DragManager.MoveFunction,          dropAction: dropActionType,          addDocTab: (doc: Doc, dataDoc: Doc | undefined, where: string) => void, +        pinToPres: (document: Doc) => void,          screenToLocalXf: () => Transform,          outerXf: () => { translateX: number, translateY: number },          active: () => boolean,          panelWidth: () => number, -        renderDepth: number +        renderDepth: number, +        showHeaderFields: () => boolean, +        preventTreeViewOpen: boolean, +        renderedIds: string[]      ) { +        let docs = docList.filter(child => !child.excludeFromLibrary && child.opacity !== 0);          let viewSpecScript = Cast(containingCollection.viewSpecScript, ScriptField);          if (viewSpecScript) {              let script = viewSpecScript.script; @@ -414,38 +440,46 @@ class TreeView extends React.Component<TreeViewProps> {              });          } -        let descending = BoolCast(containingCollection.stackingHeadersSortDescending); -        docs.sort(function (a, b): 1 | -1 { -            let descA = descending ? b : a; -            let descB = descending ? a : b; -            let first = descA[String(containingCollection.sectionFilter)]; -            let second = descB[String(containingCollection.sectionFilter)]; -            // TODO find better way to sort how to sort.................. -            if (typeof first === 'number' && typeof second === 'number') { -                return (first - second) > 0 ? 1 : -1; -            } -            if (typeof first === 'string' && typeof second === 'string') { -                return first > second ? 1 : -1; -            } -            if (typeof first === 'boolean' && typeof second === 'boolean') { -                // if (first === second) { // bugfixing?: otherwise, the list "flickers" because the list is resorted during every load -                //     return Number(descA.x) > Number(descB.x) ? 1 : -1; -                // } -                return first > second ? 1 : -1; -            } -            return descending ? 1 : -1; -        }); +        let ascending = Cast(containingCollection.sortAscending, "boolean", null); +        if (ascending !== undefined) { +            docs.sort(function (a, b): 1 | -1 { +                let descA = ascending ? b : a; +                let descB = ascending ? a : b; +                let first = descA.title; +                let second = descB.title; +                // TODO find better way to sort how to sort.................. +                if (typeof first === 'number' && typeof second === 'number') { +                    return (first - second) > 0 ? 1 : -1; +                } +                if (typeof first === 'string' && typeof second === 'string') { +                    return first > second ? 1 : -1; +                } +                if (typeof first === 'boolean' && typeof second === 'boolean') { +                    // if (first === second) { // bugfixing?: otherwise, the list "flickers" because the list is resorted during every load +                    //     return Number(descA.x) > Number(descB.x) ? 1 : -1; +                    // } +                    return first > second ? 1 : -1; +                } +                return ascending ? 1 : -1; +            }); +        }          let rowWidth = () => panelWidth() - 20;          return docs.map((child, i) => {              let pair = Doc.GetLayoutDataDocPair(containingCollection, dataDoc, key, child); +            if (!pair.layout || pair.data instanceof Promise) { +                return (null); +            }              let indent = i === 0 ? undefined : () => { -                if (StrCast(docs[i - 1].layout).indexOf("CollectionView") !== -1) { +                if (StrCast(docs[i - 1].layout).indexOf("fieldKey") !== -1) {                      let fieldKeysub = StrCast(docs[i - 1].layout).split("fieldKey")[1];                      let fieldKey = fieldKeysub.split("\"")[1]; -                    Doc.AddDocToList(docs[i - 1], fieldKey, child); -                    remove(child); +                    if (fieldKey && Cast(docs[i - 1][fieldKey], listSpec(Doc)) !== undefined) { +                        Doc.AddDocToList(docs[i - 1], fieldKey, child); +                        docs[i - 1].treeViewOpen = true; +                        remove(child); +                    }                  }              };              let addDocument = (doc: Doc, relativeTo?: Doc, before?: boolean) => { @@ -460,6 +494,7 @@ class TreeView extends React.Component<TreeViewProps> {                  dataDoc={pair.data}                  containingCollection={containingCollection}                  treeViewId={treeViewId} +                ruleProvider={containingCollection.isRuleProvider && pair.layout.type !== DocumentType.TEXT ? containingCollection : containingCollection.ruleProvider as Doc}                  key={child[Id]}                  indentDocument={indent}                  renderDepth={renderDepth} @@ -470,10 +505,14 @@ class TreeView extends React.Component<TreeViewProps> {                  moveDocument={move}                  dropAction={dropAction}                  addDocTab={addDocTab} +                pinToPres={pinToPres}                  ScreenToLocalTransform={screenToLocalXf}                  outerXf={outerXf}                  parentKey={key} -                active={active} />; +                active={active} +                showHeaderFields={showHeaderFields} +                preventTreeViewOpen={preventTreeViewOpen} +                renderedIds={renderedIds} />;          });      }  } @@ -515,6 +554,10 @@ export class CollectionTreeView extends CollectionSubView(Document) {              e.stopPropagation();              e.preventDefault();              ContextMenu.Instance.displayMenu(e.pageX - 15, e.pageY - 15); +        } else { +            let layoutItems: ContextMenuProps[] = []; +            layoutItems.push({ description: this.props.Document.preventTreeViewOpen ? "Persist Treeview State" : "Abandon Treeview State", event: () => this.props.Document.preventTreeViewOpen = !this.props.Document.preventTreeViewOpen, icon: "paint-brush" }); +            ContextMenu.Instance.addItem({ description: "Treeview Options ...", subitems: layoutItems, icon: "eye" });          }      }      outerXf = () => Utils.GetScreenTransform(this._mainEle!); @@ -553,34 +596,37 @@ export class CollectionTreeView extends CollectionSubView(Document) {      render() {          Doc.UpdateDocumentExtensionForField(this.props.DataDoc ? this.props.DataDoc : this.props.Document, this.props.fieldKey);          let dropAction = StrCast(this.props.Document.dropAction) as dropActionType; -        let addDoc = (doc: Doc, relativeTo?: Doc, before?: boolean) => Doc.AddDocToList(this.props.Document, this.props.fieldKey, doc, relativeTo, before); +        let addDoc = (doc: Doc, relativeTo?: Doc, before?: boolean) => Doc.AddDocToList(this.props.Document, this.props.fieldKey, doc, relativeTo, before, false, false, false);          let moveDoc = (d: Doc, target: Doc, addDoc: (doc: Doc) => boolean) => this.props.moveDocument(d, target, addDoc);          return !this.childDocs ? (null) : (              <div id="body" className="collectionTreeView-dropTarget"                  style={{ overflow: "auto", background: StrCast(this.props.Document.backgroundColor, "lightgray") }}                  onContextMenu={this.onContextMenu} -                onWheel={(e: React.WheelEvent) => (e.target as any).scrollHeight > (e.target as any).clientHeight && e.stopPropagation()} +                onWheel={(e: React.WheelEvent) => this._mainEle && this._mainEle.scrollHeight > this._mainEle.clientHeight && e.stopPropagation()}                  onDrop={this.onTreeDrop}                  ref={this.createTreeDropTarget}>                  <EditableView                      contents={this.resolvedDataDoc.title}                      display={"block"} -                    height={72} +                    maxHeight={72} +                    height={"auto"}                      GetValue={() => StrCast(this.resolvedDataDoc.title)} -                    SetValue={(value: string) => (Doc.GetProto(this.resolvedDataDoc).title = value) ? true : true} -                    OnFillDown={(value: string) => { +                    SetValue={undoBatch((value: string) => (Doc.GetProto(this.resolvedDataDoc).title = value) ? true : true)} +                    OnFillDown={undoBatch((value: string) => {                          Doc.GetProto(this.props.Document).title = value;                          let doc = this.props.Document.detailedLayout instanceof Doc ? Doc.ApplyTemplate(Doc.GetProto(this.props.Document.detailedLayout)) : undefined;                          if (!doc) doc = Docs.Create.FreeformDocument([], { title: "", x: 0, y: 0, width: 100, height: 25, templates: new List<string>([Templates.Title.Layout]) });                          TreeView.loadId = doc[Id]; -                        Doc.AddDocToList(this.props.Document, this.props.fieldKey, doc, this.childDocs.length ? this.childDocs[0] : undefined, true); -                    }} /> +                        Doc.AddDocToList(this.props.Document, this.props.fieldKey, doc, this.childDocs.length ? this.childDocs[0] : undefined, true, false, false, false); +                    })} />                  {this.props.Document.workspaceLibrary ? this.renderNotifsButton : (null)}                  {this.props.Document.allowClear ? this.renderClearButton : (null)}                  <ul className="no-indent" style={{ width: "max-content" }} >                      {                          TreeView.GetChildElements(this.childDocs, this.props.Document[Id], this.props.Document, this.props.DataDoc, this.props.fieldKey, addDoc, this.remove, -                            moveDoc, dropAction, this.props.addDocTab, this.props.ScreenToLocalTransform, this.outerXf, this.props.active, this.props.PanelWidth, this.props.renderDepth) +                            moveDoc, dropAction, this.props.addDocTab, this.props.pinToPres, this.props.ScreenToLocalTransform, +                            this.outerXf, this.props.active, this.props.PanelWidth, this.props.renderDepth, () => this.props.Document.chromeStatus !== "disabled", +                            BoolCast(this.props.Document.preventTreeViewOpen), [])                      }                  </ul>              </div > | 
