refactor: make draggedDocIds a required property in PointerDownOptions and simplify handlePointerDown logic accordingly
This commit is contained in:
@@ -10,7 +10,7 @@ import React, {
|
|||||||
import { resolveDocumentAssetUrl } from '../asset_manager';
|
import { resolveDocumentAssetUrl } from '../asset_manager';
|
||||||
import type { GetAsset } from '../asset_manager';
|
import type { GetAsset } from '../asset_manager';
|
||||||
import { formatTransform } from '../utils/math';
|
import { formatTransform } from '../utils/math';
|
||||||
import useDocumentDrag from './useDocumentDrag';
|
import useDocumentDrag, { PointerDownOptions } from './useDocumentDrag';
|
||||||
import PreviewZoomOverlay from '../detail/PreviewZoomOverlay';
|
import PreviewZoomOverlay from '../detail/PreviewZoomOverlay';
|
||||||
import {
|
import {
|
||||||
WorkspaceEngine,
|
WorkspaceEngine,
|
||||||
@@ -894,7 +894,7 @@ function DesktopWorkspaceView({
|
|||||||
onDocumentActivate: handleDeskDocumentActivate,
|
onDocumentActivate: handleDeskDocumentActivate,
|
||||||
markLayoutDirty,
|
markLayoutDirty,
|
||||||
}) as {
|
}) as {
|
||||||
handlePointerDown: React.PointerEventHandler<HTMLElement>;
|
handlePointerDown: (event: React.PointerEvent<HTMLElement>, docId: Identifier | null, options: PointerDownOptions) => void;
|
||||||
handlePointerMove: React.PointerEventHandler<HTMLElement>;
|
handlePointerMove: React.PointerEventHandler<HTMLElement>;
|
||||||
handlePointerUp: React.PointerEventHandler<HTMLElement>;
|
handlePointerUp: React.PointerEventHandler<HTMLElement>;
|
||||||
handlePointerCancel: React.PointerEventHandler<HTMLElement>;
|
handlePointerCancel: React.PointerEventHandler<HTMLElement>;
|
||||||
|
|||||||
@@ -82,8 +82,8 @@ interface DragSettings {
|
|||||||
debugDrag?: boolean;
|
debugDrag?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PointerDownOptions {
|
export interface PointerDownOptions {
|
||||||
draggedDocIds?: string[];
|
draggedDocIds: string[];
|
||||||
stackSelectionApplied?: boolean;
|
stackSelectionApplied?: boolean;
|
||||||
modifierActive?: boolean;
|
modifierActive?: boolean;
|
||||||
}
|
}
|
||||||
@@ -310,7 +310,7 @@ const useDocumentDrag = (options: UseDocumentDragOptions) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const handlePointerDown = useCallback(
|
const handlePointerDown = useCallback(
|
||||||
(event: PointerEventLike, docIdInput?: Identifier | null, options: PointerDownOptions = {}) => {
|
(event: PointerEventLike, docIdInput: Identifier | null, options: PointerDownOptions) => {
|
||||||
const targetElement = getEventTargetElement(event);
|
const targetElement = getEventTargetElement(event);
|
||||||
if (targetElement?.closest && targetElement.closest('[data-desk-tag-chip="true"]')) {
|
if (targetElement?.closest && targetElement.closest('[data-desk-tag-chip="true"]')) {
|
||||||
return;
|
return;
|
||||||
@@ -330,22 +330,14 @@ const useDocumentDrag = (options: UseDocumentDragOptions) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const massGrams = computeDocumentMassGrams(doc);
|
const massGrams = computeDocumentMassGrams(doc);
|
||||||
const draggedDocIds = options?.draggedDocIds;
|
const draggedDocIds = options.draggedDocIds;
|
||||||
|
|
||||||
let selectionIds: string[] = [];
|
let selectionIds: string[] = draggedDocIds;
|
||||||
|
|
||||||
if (Array.isArray(draggedDocIds) && draggedDocIds.length > 0) {
|
|
||||||
// Use explicitly provided IDs for the drag operation
|
|
||||||
selectionIds = draggedDocIds;
|
|
||||||
} else {
|
|
||||||
// Fallback (should ideally not happen if useDeskPointer is correct)
|
|
||||||
selectionIds = [docKey];
|
|
||||||
}
|
|
||||||
|
|
||||||
selectionIds = selectionIds.filter((id, index, array) => array.indexOf(id) === index && documentLookup.has(id));
|
selectionIds = selectionIds.filter((id, index, array) => array.indexOf(id) === index && documentLookup.has(id));
|
||||||
|
|
||||||
if (!selectionIds.length) {
|
if (!selectionIds.length) {
|
||||||
selectionIds = [docKey];
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const isGroupDrag = selectionIds.length > 1;
|
const isGroupDrag = selectionIds.length > 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user