diff options
| author | Sam Wilkins <samwilkins333@gmail.com> | 2019-10-14 13:38:31 -0400 | 
|---|---|---|
| committer | Sam Wilkins <samwilkins333@gmail.com> | 2019-10-14 13:38:31 -0400 | 
| commit | cc84f5620b3f3ef801e3b0696f817e4fb74f58fc (patch) | |
| tree | a743f02dd80daea6ea37040ec2371db7acd1b7b8 /src/client/util/DragManager.ts | |
| parent | fb3d1a66100e9ecf573031cfcafeb983f4ad5d5b (diff) | |
| parent | 9d877a5d38a5574b6ab99c20d0c1718e0af964b5 (diff) | |
merged with master
Diffstat (limited to 'src/client/util/DragManager.ts')
| -rw-r--r-- | src/client/util/DragManager.ts | 18 | 
1 files changed, 10 insertions, 8 deletions
| diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts index ddc8fb62c..2c316ccdf 100644 --- a/src/client/util/DragManager.ts +++ b/src/client/util/DragManager.ts @@ -1,6 +1,6 @@  import { action, runInAction } from "mobx";  import { Doc, Field } from "../../new_fields/Doc"; -import { Cast, StrCast } from "../../new_fields/Types"; +import { Cast, StrCast, ScriptCast } from "../../new_fields/Types";  import { URLField } from "../../new_fields/URLField";  import { emptyFunction } from "../../Utils";  import { CollectionDockingView } from "../views/collections/CollectionDockingView"; @@ -10,10 +10,10 @@ import { LinkManager } from "./LinkManager";  import { SelectionManager } from "./SelectionManager";  import { SchemaHeaderField } from "../../new_fields/SchemaHeaderField";  import { Docs } from "../documents/Documents"; -import { CompileScript } from "./Scripting";  import { ScriptField } from "../../new_fields/ScriptField";  import { List } from "../../new_fields/List";  import { PrefetchProxy } from "../../new_fields/Proxy"; +import { listSpec } from "../../new_fields/Schema";  export type dropActionType = "alias" | "copy" | undefined;  export function SetupDrag( @@ -234,16 +234,18 @@ export namespace DragManager {      export let StartDragFunctions: (() => void)[] = []; -    export function StartDocumentDrag(eles: HTMLElement[], dragData: DocumentDragData, downX: number, downY: number, options?: DragOptions) { +    export async function StartDocumentDrag(eles: HTMLElement[], dragData: DocumentDragData, downX: number, downY: number, options?: DragOptions) {          runInAction(() => StartDragFunctions.map(func => func())); +        await dragData.draggedDocuments.map(d => d.dragFactory);          StartDrag(eles, dragData, downX, downY, options, options && options.finishDrag ? options.finishDrag :              (dropData: { [id: string]: any }) => { -                (dropData.droppedDocuments = dragData.userDropAction === "alias" || (!dragData.userDropAction && dragData.dropAction === "alias") ? -                    dragData.draggedDocuments.map(d => Doc.MakeAlias(d)) : -                    dragData.userDropAction === "copy" || (!dragData.userDropAction && dragData.dropAction === "copy") ? -                        dragData.draggedDocuments.map(d => Doc.MakeCopy(d, true)) : -                        dragData.draggedDocuments +                (dropData.droppedDocuments = +                    dragData.draggedDocuments.map(d => ScriptCast(d.onDragStart) ? ScriptCast(d.onDragStart).script.run({ this: d }).result : +                        dragData.userDropAction === "alias" || (!dragData.userDropAction && dragData.dropAction === "alias") ? Doc.MakeAlias(d) : +                            dragData.userDropAction === "copy" || (!dragData.userDropAction && dragData.dropAction === "copy") ? Doc.MakeCopy(d, true) : d)                  ); +                dropData.droppedDocuments.forEach((drop: Doc, i: number) => +                    Cast(dragData.draggedDocuments[i].removeDropProperties, listSpec("string"), []).map(prop => drop[prop] = undefined));              });      } | 
