From 4f53226064e8b14b6ab89cbacd1908cf2b3138eb Mon Sep 17 00:00:00 2001
From: bobzel <zzzman@gmail.com>
Date: Thu, 7 Sep 2023 16:16:53 -0400
Subject: added deleted links to myRecentlyClosed.   added drag out of
 comparison box doc.   added all links to Doc.UserDoc().links

---
 src/client/views/nodes/ComparisonBox.tsx | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

(limited to 'src/client/views/nodes/ComparisonBox.tsx')

diff --git a/src/client/views/nodes/ComparisonBox.tsx b/src/client/views/nodes/ComparisonBox.tsx
index a334e75f1..b09fcd882 100644
--- a/src/client/views/nodes/ComparisonBox.tsx
+++ b/src/client/views/nodes/ComparisonBox.tsx
@@ -109,12 +109,11 @@ export class ComparisonBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatabl
     };
 
     @undoBatch
-    clearDoc = (e: React.MouseEvent, fieldKey: string) => {
-        e.stopPropagation; // prevent click event action (slider movement) in registerSliding
-        delete this.dataDoc[fieldKey];
-    };
+    clearDoc = (fieldKey: string) => delete this.dataDoc[fieldKey];
+
     moveDoc = (doc: Doc, addDocument: (document: Doc | Doc[]) => boolean, which: string) => this.remDoc(doc, which) && addDocument(doc);
     addDoc = (doc: Doc, which: string) => {
+        if (this.dataDoc[which]) return false;
         this.dataDoc[which] = doc;
         return true;
     };
@@ -128,6 +127,24 @@ export class ComparisonBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatabl
 
     whenChildContentsActiveChanged = action((isActive: boolean) => (this._isAnyChildContentActive = isActive));
 
+    closeDown = (e: React.PointerEvent, which: string) => {
+        setupMoveUpEvents(
+            this,
+            e,
+            e => {
+                const de = new DragManager.DocumentDragData([DocCast(this.dataDoc[which])], 'move');
+                de.moveDocument = (doc: Doc | Doc[], targetCollection: Doc | undefined, addDocument: (doc: Doc | Doc[]) => boolean): boolean => {
+                    this.clearDoc(which);
+                    return addDocument(doc);
+                };
+                de.canEmbed = true;
+                DragManager.StartDocumentDrag([this._closeRef.current!], de, e.clientX, e.clientY);
+                return true;
+            },
+            emptyFunction,
+            e => this.clearDoc(which)
+        );
+    };
     docStyleProvider = (doc: Opt<Doc>, props: Opt<DocumentViewProps>, property: string): any => {
         if (property === StyleProp.PointerEvents) return 'none';
         return this.props.styleProvider?.(doc, props, property);
@@ -136,13 +153,15 @@ export class ComparisonBox extends ViewBoxAnnotatableComponent<ViewBoxAnnotatabl
     moveDoc2 = (doc: Doc | Doc[], targetCol: Doc | undefined, addDoc: any) => (doc instanceof Doc ? [doc] : doc).reduce((res, doc: Doc) => res && this.moveDoc(doc, addDoc, this.fieldKey + '_2'), true);
     remDoc1 = (doc: Doc | Doc[]) => (doc instanceof Doc ? [doc] : doc).reduce((res, doc) => res && this.remDoc(doc, this.fieldKey + '_1'), true);
     remDoc2 = (doc: Doc | Doc[]) => (doc instanceof Doc ? [doc] : doc).reduce((res, doc) => res && this.remDoc(doc, this.fieldKey + '_2'), true);
+    _closeRef = React.createRef<HTMLDivElement>();
     render() {
         const clearButton = (which: string) => {
             return (
                 <div
+                    ref={this._closeRef}
                     className={`clear-button ${which}`}
-                    onPointerDown={e => e.stopPropagation()} // prevent triggering slider movement in registerSliding
-                    onClick={e => this.clearDoc(e, which)}>
+                    onPointerDown={e => this.closeDown(e, which)} // prevent triggering slider movement in registerSliding
+                >
                     <FontAwesomeIcon className={`clear-button ${which}`} icon="times" size="sm" />
                 </div>
             );
-- 
cgit v1.2.3-70-g09d2

