page editor fixes post merge

This commit is contained in:
Reece 2025-10-20 14:16:41 +01:00
parent b3c0c69a7c
commit a22913e1e4
2 changed files with 50 additions and 2 deletions

View File

@ -124,9 +124,14 @@ const DragDropGrid = <T extends DragDropItem>({
const [dropSide, setDropSide] = useState<'left' | 'right' | null>(null);
const lastCursorXRef = useRef<number | null>(null);
// Configure sensors for dnd-kit
// Configure sensors for dnd-kit with activation constraint
// Require 10px movement before drag starts to allow clicks for selection
const sensors = useSensors(
useSensor(PointerSensor)
useSensor(PointerSensor, {
activationConstraint: {
distance: 10,
},
})
);
// Throttled pointer move handler for drop indicator

View File

@ -201,6 +201,11 @@ const PageEditor = ({
// Interface functions for parent component
const displayDocument = editedDocument || mergedPdfDocument;
// Derived values for right rail and usePageEditorRightRailButtons (must be after displayDocument)
const totalPages = displayDocument?.pages.length || 0;
const selectedPageCount = selectedPageIds.length;
const activeFileIds = selectedFileIds;
// Utility functions to convert between page IDs and page numbers
const getPageNumbersFromIds = useCallback((pageIds: string[]): number[] => {
if (!displayDocument) return [];
@ -712,6 +717,44 @@ const PageEditor = ({
setSelectionMode(false);
}, [actions]);
// Function to reorder pages based on new file order
const reorderPagesByFileOrder = useCallback((newFileOrder: FileId[]) => {
const docToUpdate = editedDocument || mergedPdfDocument;
if (!docToUpdate) return;
// Group pages by originalFileId
const pagesByFileId = new Map<FileId, PDFPage[]>();
docToUpdate.pages.forEach(page => {
if (page.originalFileId) {
if (!pagesByFileId.has(page.originalFileId)) {
pagesByFileId.set(page.originalFileId, []);
}
pagesByFileId.get(page.originalFileId)!.push(page);
}
});
// Rebuild pages array in new file order
const reorderedPages: PDFPage[] = [];
newFileOrder.forEach(fileId => {
const filePages = pagesByFileId.get(fileId);
if (filePages) {
reorderedPages.push(...filePages);
}
});
// Renumber pages
const renumberedPages = reorderedPages.map((page, idx) => ({
...page,
pageNumber: idx + 1
}));
setEditedDocument({
...docToUpdate,
pages: renumberedPages,
totalPages: renumberedPages.length
});
}, [editedDocument, mergedPdfDocument]);
usePageEditorRightRailButtons({
totalPages,
selectedPageCount,