{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "document-splits-block",
  "title": "Document Splits",
  "description": "A split-group review block for organizing PDF pages into output documents.",
  "registryDependencies": [
    "@extend/document-splits",
    "@extend/pdf-block-resizable-shell",
    "@extend/pdf-viewer"
  ],
  "files": [
    {
      "path": "registry/new-york-v4/blocks/document-splits-block.tsx",
      "content": "\"use client\"\n\nimport * as React from \"react\"\n\nimport {\n  createInitialSplits,\n  DocumentSplits,\n  INITIAL_SPLITS,\n  type DocumentSplit,\n  type DocumentSplitPageId,\n} from \"@/components/extend/document-splits\"\nimport { PdfBlockResizableShell } from \"@/components/extend/pdf-block-resizable-shell\"\nimport { PDFViewer, type PDFViewerHandle } from \"@/components/extend/pdf-viewer\"\n\nexport function DocumentSplitsBlock({\n  file,\n  heightClassName = \"h-[720px]\",\n  thumbnailImages,\n}: {\n  file?: string\n  heightClassName?: string\n  thumbnailImages?: Record<DocumentSplitPageId, string>\n}) {\n  const [splits, setSplits] = React.useState<DocumentSplit[]>(INITIAL_SPLITS)\n  const [pdfFile, setPdfFile] = React.useState(file)\n  const viewerRef = React.useRef<PDFViewerHandle>(null)\n  const uploadedPdfUrlRef = React.useRef<string | null>(null)\n  const [previousFile, setPreviousFile] = React.useState(file)\n  if (!Object.is(previousFile, file)) {\n    setPreviousFile(file)\n    setPdfFile(file)\n  }\n  React.useEffect(() => {\n    return () => {\n      if (uploadedPdfUrlRef.current) {\n        URL.revokeObjectURL(uploadedPdfUrlRef.current)\n      }\n    }\n  }, [])\n  const handlePdfUpload = React.useCallback((uploadedFile: File) => {\n    const nextUrl = URL.createObjectURL(uploadedFile)\n    if (uploadedPdfUrlRef.current) {\n      URL.revokeObjectURL(uploadedPdfUrlRef.current)\n    }\n    uploadedPdfUrlRef.current = nextUrl\n    setPdfFile(nextUrl)\n  }, [])\n  const handleDocumentLoadSuccess = React.useCallback((pageCount: number) => {\n    setSplits(createInitialSplits(pageCount))\n  }, [])\n  const handleSelectPage = React.useCallback((pageNumber: number) => {\n    viewerRef.current?.scrollToPage(pageNumber, {\n      block: \"start\",\n      behavior: \"auto\",\n    })\n  }, [])\n  return (\n    <PdfBlockResizableShell\n      autoSaveId=\"pdf-block-document-splits\"\n      heightClassName={heightClassName}\n      rightDefaultSize={50}\n      rightMaxSize={66}\n      rightMinSize={30}\n      left={\n        <PDFViewer\n          ref={viewerRef}\n          src={pdfFile}\n          defaultZoom={1}\n          onDocumentLoadSuccess={handleDocumentLoadSuccess}\n          onPdfUpload={handlePdfUpload}\n        />\n      }\n      right={\n        <div className=\"flex min-h-0 flex-col bg-background\">\n          <div className=\"border-b px-4 py-3\">\n            <h3 className=\"text-sm font-medium\">Document splits</h3>\n            <p className=\"text-xs text-muted-foreground\">\n              Drag pages between split groups and reorder output documents.\n            </p>\n          </div>\n          <DocumentSplits\n            className=\"min-h-0 flex-1\"\n            splits={splits}\n            thumbnailImages={thumbnailImages}\n            withFrameDivider={false}\n            onSelectPage={handleSelectPage}\n            onSplitsChange={setSplits}\n          />\n        </div>\n      }\n    />\n  )\n}\n",
      "type": "registry:component",
      "target": "@components/blocks/document-splits-block.tsx"
    }
  ],
  "categories": [
    "documents",
    "blocks"
  ],
  "type": "registry:block",
  "dependencies": []
}
