From d83fc261dafe0318a91a17ade9cb742f166b3f9a Mon Sep 17 00:00:00 2001 From: Aviral Shukla Date: Thu, 9 Apr 2026 11:13:47 +0530 Subject: [PATCH] feat: implement split and extract functionality for PDF files - Added a new SplitExtractUI component for user interaction with split and extract features. - Created splitPDF and extractPDF functions to handle PDF manipulation based on specified modes (split at page, every N pages, and range). - Implemented tests for split and extract functionalities, ensuring correct behavior for various scenarios including edge cases. - Introduced utility functions for creating JPG files and formatting file metadata. - Removed outdated split tool tests and replaced them with new tests for the split-extract functionality. --- src/components/compress.tsx | 2 +- src/components/decrypt.tsx | 2 +- src/components/delete.tsx | 2 +- src/components/images-to-pdf.tsx | 2 +- src/components/merge.tsx | 2 +- src/components/pdf-to-images.tsx | 2 +- src/components/protect.tsx | 2 +- src/components/rotate.tsx | 2 +- src/components/split-extract.tsx | 537 ++++++++++++++++++ src/components/split.tsx | 337 ----------- src/components/ui.tsx | 130 ++++- src/constants/constants.ts | 2 +- src/index.tsx | 4 +- src/model/models.ts | 23 +- src/tools/index.ts | 2 +- src/tools/pdf-to-images.ts | 1 - src/tools/{split.ts => split-extract.ts} | 111 +++- src/utils/utils.ts | 49 ++ .../{split.spec.ts => split-extract.spec.ts} | 4 +- tests/tools/compress.branches.spec.ts | 37 -- tests/tools/compress.spec.ts | 64 ++- tests/tools/delete.spec.ts | 39 ++ tests/tools/images-to-pdf.branches.spec.ts | 36 -- tests/tools/images-to-pdf.spec.ts | 103 +++- tests/tools/merge.spec.ts | 16 + tests/tools/pdf-to-images.branches.spec.ts | 27 - tests/tools/pdf-to-images.spec.ts | 68 ++- tests/tools/protect.branches.spec.ts | 59 -- tests/tools/protect.spec.ts | 139 ++++- tests/tools/rotate.spec.ts | 41 ++ tests/tools/split-extract.spec.ts | 267 +++++++++ tests/tools/split.spec.ts | 117 ---- tests/utils/test-utils.spec.ts | 22 +- tests/utils/test-utils.ts | 26 + tests/utils/utils.spec.ts | 32 ++ 35 files changed, 1633 insertions(+), 676 deletions(-) create mode 100644 src/components/split-extract.tsx delete mode 100644 src/components/split.tsx rename src/tools/{split.ts => split-extract.ts} (57%) rename tests/components/{split.spec.ts => split-extract.spec.ts} (54%) delete mode 100644 tests/tools/compress.branches.spec.ts delete mode 100644 tests/tools/images-to-pdf.branches.spec.ts delete mode 100644 tests/tools/pdf-to-images.branches.spec.ts delete mode 100644 tests/tools/protect.branches.spec.ts create mode 100644 tests/tools/split-extract.spec.ts delete mode 100644 tests/tools/split.spec.ts diff --git a/src/components/compress.tsx b/src/components/compress.tsx index 2ca55f5..05327bf 100644 --- a/src/components/compress.tsx +++ b/src/components/compress.tsx @@ -185,7 +185,7 @@ export function CompressUI() { />