aboutsummaryrefslogtreecommitdiff
path: root/src/client/util
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2023-11-01 23:54:49 -0400
committerbobzel <zzzman@gmail.com>2023-11-01 23:54:49 -0400
commit84c15417f2247fc650a9f7b2c959479519bd3ebb (patch)
treef97f9f34ed0a1e65394f7b9e3818a9075b3a64f7 /src/client/util
parent58213b0201ea0191f06f42beac9c3a17ebfc98ea (diff)
fixes to snapping lines when dragging/resizing (lines are created for doc not being dragged, snapping lines are created for documents in groups). cleanup of pres path code.
Diffstat (limited to 'src/client/util')
-rw-r--r--src/client/util/DragManager.ts22
-rw-r--r--src/client/util/SnappingManager.ts23
2 files changed, 14 insertions, 31 deletions
diff --git a/src/client/util/DragManager.ts b/src/client/util/DragManager.ts
index 4f30e92ce..ea13eaa5b 100644
--- a/src/client/util/DragManager.ts
+++ b/src/client/util/DragManager.ts
@@ -191,13 +191,6 @@ export namespace DragManager {
// drag a document and drop it (or make an embed/copy on drop)
export function StartDocumentDrag(eles: HTMLElement[], dragData: DocumentDragData, downX: number, downY: number, options?: DragOptions, onDropCompleted?: (e?: DragCompleteEvent) => any) {
- dragData.draggedViews.forEach(
- action(view => {
- const ffview = view.props.CollectionFreeFormDocumentView?.().props.CollectionFreeFormView;
- ffview && (ffview.GroupChildDrag = BoolCast(ffview.Document._isGroup));
- ffview?.setupDragLines(false);
- })
- );
const addAudioTag = (dropDoc: any) => {
dropDoc && !dropDoc.author_date && (dropDoc.author_date = new DateField());
dropDoc instanceof Doc && DocUtils.MakeLinkToActiveAudio(() => dropDoc);
@@ -205,14 +198,7 @@ export namespace DragManager {
};
const finishDrag = async (e: DragCompleteEvent) => {
const docDragData = e.docDragData;
- setTimeout(() =>
- dragData.draggedViews.forEach(
- action(view => {
- const ffview = view.props.CollectionFreeFormDocumentView?.().props.CollectionFreeFormView;
- ffview && (ffview.GroupChildDrag = false);
- })
- )
- );
+ setTimeout(() => dragData.draggedViews.forEach(view => view.props.CollectionFreeFormDocumentView?.().dragEnding()));
onDropCompleted?.(e); // glr: optional additional function to be called - in this case with presentation trails
if (docDragData && !docDragData.droppedDocuments.length) {
docDragData.dropAction = dragData.userDropAction || dragData.dropAction;
@@ -248,6 +234,7 @@ export namespace DragManager {
};
dragData.draggedDocuments.map(d => d.dragFactory); // does this help? trying to make sure the dragFactory Doc is loaded
StartDrag(eles, dragData, downX, downY, options, finishDrag);
+ dragData.draggedViews.forEach(view => view.props.CollectionFreeFormDocumentView?.().dragStarting());
return true;
}
@@ -281,9 +268,6 @@ export namespace DragManager {
StartDrag(ele, dragData, downX, downY, options, undefined, 'Drag Column');
}
- export function SetSnapLines(horizLines: number[], vertLines: number[]) {
- SnappingManager.setSnapLines(horizLines, vertLines);
- }
export function snapDragAspect(dragPt: number[], snapAspect: number) {
let closest = Utils.SNAP_THRESHOLD;
let near = dragPt;
@@ -491,11 +475,11 @@ export namespace DragManager {
};
const cleanupDrag = action((undo: boolean) => {
+ (dragData as DocumentDragData).draggedViews?.forEach(view => view.props.CollectionFreeFormDocumentView?.().dragEnding());
hideDragShowOriginalElements(false);
document.removeEventListener('pointermove', moveHandler, true);
document.removeEventListener('pointerup', upHandler, true);
SnappingManager.SetIsDragging(false);
- SnappingManager.clearSnapLines();
if (batch.end() && undo) UndoManager.Undo();
docsBeingDragged.length = 0;
});
diff --git a/src/client/util/SnappingManager.ts b/src/client/util/SnappingManager.ts
index ed9819fc0..3cb41ab4d 100644
--- a/src/client/util/SnappingManager.ts
+++ b/src/client/util/SnappingManager.ts
@@ -1,19 +1,19 @@
import { observable, action, runInAction } from 'mobx';
-import { computedFn } from 'mobx-utils';
import { Doc } from '../../fields/Doc';
export namespace SnappingManager {
class Manager {
@observable IsDragging: boolean = false;
+ @observable IsResizing: Doc | undefined;
@observable public horizSnapLines: number[] = [];
@observable public vertSnapLines: number[] = [];
@action public clearSnapLines() {
this.vertSnapLines = [];
this.horizSnapLines = [];
}
- @action public setSnapLines(horizLines: number[], vertLines: number[]) {
- this.horizSnapLines = horizLines;
- this.vertSnapLines = vertLines;
+ @action public addSnapLines(horizLines: number[], vertLines: number[]) {
+ this.horizSnapLines.push(...horizLines);
+ this.vertSnapLines.push(...vertLines);
}
}
@@ -22,8 +22,8 @@ export namespace SnappingManager {
export function clearSnapLines() {
manager.clearSnapLines();
}
- export function setSnapLines(horizLines: number[], vertLines: number[]) {
- manager.setSnapLines(horizLines, vertLines);
+ export function addSnapLines(horizLines: number[], vertLines: number[]) {
+ manager.addSnapLines(horizLines, vertLines);
}
export function horizSnapLines() {
return manager.horizSnapLines;
@@ -35,14 +35,13 @@ export namespace SnappingManager {
export function SetIsDragging(dragging: boolean) {
runInAction(() => (manager.IsDragging = dragging));
}
+ export function SetIsResizing(doc: Doc | undefined) {
+ runInAction(() => (manager.IsResizing = doc));
+ }
export function GetIsDragging() {
return manager.IsDragging;
}
-
- export function SetShowSnapLines(show: boolean) {
- runInAction(() => (Doc.UserDoc().freeform_snapLines = show));
- }
- export function GetShowSnapLines() {
- return Doc.UserDoc().freeform_snapLines;
+ export function GetIsResizing() {
+ return manager.IsResizing;
}
}