feat(tools): 2.0 phase 5 wave 2 - pdf depth (21 tools) (#220)

This commit is contained in:
SnapOtter
2026-06-13 10:18:55 +08:00
parent ae1337901d
commit 2f39e38162
128 changed files with 11381 additions and 778 deletions
+130
View File
@@ -429,6 +429,111 @@ const SplitCsvSettings = lazy(() =>
default: m.SplitCsvSettings,
})),
);
const ExtractPagesSettings = lazy(() =>
import("@/components/tools/extract-pages-settings").then((m) => ({
default: m.ExtractPagesSettings,
})),
);
const RemovePagesSettings = lazy(() =>
import("@/components/tools/remove-pages-settings").then((m) => ({
default: m.RemovePagesSettings,
})),
);
const OrganizePdfSettings = lazy(() =>
import("@/components/tools/organize-pdf-settings").then((m) => ({
default: m.OrganizePdfSettings,
})),
);
const ProtectPdfSettings = lazy(() =>
import("@/components/tools/protect-pdf-settings").then((m) => ({
default: m.ProtectPdfSettings,
})),
);
const UnlockPdfSettings = lazy(() =>
import("@/components/tools/unlock-pdf-settings").then((m) => ({
default: m.UnlockPdfSettings,
})),
);
const RepairPdfSettings = lazy(() =>
import("@/components/tools/repair-pdf-settings").then((m) => ({
default: m.RepairPdfSettings,
})),
);
const CropPdfSettings = lazy(() =>
import("@/components/tools/crop-pdf-settings").then((m) => ({
default: m.CropPdfSettings,
})),
);
const NupPdfSettings = lazy(() =>
import("@/components/tools/nup-pdf-settings").then((m) => ({
default: m.NupPdfSettings,
})),
);
const BookletPdfSettings = lazy(() =>
import("@/components/tools/booklet-pdf-settings").then((m) => ({
default: m.BookletPdfSettings,
})),
);
const WatermarkPdfSettings = lazy(() =>
import("@/components/tools/watermark-pdf-settings").then((m) => ({
default: m.WatermarkPdfSettings,
})),
);
const PdfPageNumbersSettings = lazy(() =>
import("@/components/tools/pdf-page-numbers-settings").then((m) => ({
default: m.PdfPageNumbersSettings,
})),
);
const LinearizePdfSettings = lazy(() =>
import("@/components/tools/linearize-pdf-settings").then((m) => ({
default: m.LinearizePdfSettings,
})),
);
const GrayscalePdfSettings = lazy(() =>
import("@/components/tools/grayscale-pdf-settings").then((m) => ({
default: m.GrayscalePdfSettings,
})),
);
const PdfaConvertSettings = lazy(() =>
import("@/components/tools/pdfa-convert-settings").then((m) => ({
default: m.PdfaConvertSettings,
})),
);
const FlattenPdfSettings = lazy(() =>
import("@/components/tools/flatten-pdf-settings").then((m) => ({
default: m.FlattenPdfSettings,
})),
);
const RedactPdfSettings = lazy(() =>
import("@/components/tools/redact-pdf-settings").then((m) => ({
default: m.RedactPdfSettings,
})),
);
const PdfToTextSettings = lazy(() =>
import("@/components/tools/pdf-to-text-settings").then((m) => ({
default: m.PdfToTextSettings,
})),
);
const PdfToWordSettings = lazy(() =>
import("@/components/tools/pdf-to-word-settings").then((m) => ({
default: m.PdfToWordSettings,
})),
);
const PdfMetadataSettings = lazy(() =>
import("@/components/tools/pdf-metadata-settings").then((m) => ({
default: m.PdfMetadataSettings,
})),
);
const HtmlToPdfSettings = lazy(() =>
import("@/components/tools/html-to-pdf-settings").then((m) => ({
default: m.HtmlToPdfSettings,
})),
);
const MarkdownToPdfSettings = lazy(() =>
import("@/components/tools/markdown-to-pdf-settings").then((m) => ({
default: m.MarkdownToPdfSettings,
})),
);
// ── Color tool wrapper ─────────────────────────────────────────────
// Color tools share a single component but differ by toolId.
@@ -561,6 +666,31 @@ const ENTRY_CONFIG: ReadonlyArray<[string, RegistryEntryConfig]> = [
["rotate-pdf", { accept: ".pdf", Settings: RotatePdfSettings }],
["word-to-pdf", { accept: ".docx,.doc,.odt,.rtf,.txt", Settings: WordToPdfSettings }],
// PDF depth tools (organize, secure, pdfcpu, layout)
["extract-pages", { accept: ".pdf", Settings: ExtractPagesSettings }],
["remove-pages", { accept: ".pdf", Settings: RemovePagesSettings }],
["organize-pdf", { accept: ".pdf", Settings: OrganizePdfSettings }],
["protect-pdf", { accept: ".pdf", Settings: ProtectPdfSettings }],
["unlock-pdf", { accept: ".pdf", Settings: UnlockPdfSettings }],
["repair-pdf", { accept: ".pdf", Settings: RepairPdfSettings }],
["crop-pdf", { accept: ".pdf", Settings: CropPdfSettings }],
["nup-pdf", { accept: ".pdf", Settings: NupPdfSettings }],
["booklet-pdf", { accept: ".pdf", Settings: BookletPdfSettings }],
["watermark-pdf", { accept: ".pdf", Settings: WatermarkPdfSettings }],
["pdf-page-numbers", { accept: ".pdf", Settings: PdfPageNumbersSettings }],
// PDF convert and optimize tools
["linearize-pdf", { accept: ".pdf", Settings: LinearizePdfSettings }],
["grayscale-pdf", { accept: ".pdf", Settings: GrayscalePdfSettings }],
["pdfa-convert", { accept: ".pdf", Settings: PdfaConvertSettings }],
["flatten-pdf", { accept: ".pdf", Settings: FlattenPdfSettings }],
["redact-pdf", { accept: ".pdf", Settings: RedactPdfSettings }],
["pdf-to-text", { accept: ".pdf", Settings: PdfToTextSettings }],
["pdf-to-word", { accept: ".pdf", Settings: PdfToWordSettings }],
["pdf-metadata", { accept: ".pdf", Settings: PdfMetadataSettings }],
["html-to-pdf", { accept: ".html,.htm", Settings: HtmlToPdfSettings }],
["markdown-to-pdf", { accept: ".md,.markdown", Settings: MarkdownToPdfSettings }],
// Data tools
["csv-excel", { accept: ".csv,.xlsx", Settings: CsvExcelSettings }],
["csv-json", { accept: ".csv,.json", Settings: CsvJsonSettings }],