@sqlrooms/s3-browser 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"S3FileBrowser.js","sourceRoot":"","sources":["../src/S3FileBrowser.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"S3FileBrowser.js","sourceRoot":"","sources":["../src/S3FileBrowser.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbSeparator,\n Button,\n Checkbox,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n cn,\n} from '@sqlrooms/ui';\nimport {Undo2Icon, FolderIcon} from 'lucide-react';\nimport {formatBytes, formatTimeRelative} from '@sqlrooms/utils';\nimport {FC, useCallback, useEffect, useMemo} from 'react';\nimport {S3FileOrDirectory} from './S3FileOrDirectory';\n\n/**\n * A file browser component for navigating and selecting files from an S3-like storage.\n *\n * This component provides a familiar file explorer interface with features like:\n * - Directory navigation with breadcrumbs\n * - File and directory listing\n * - Multiple file selection\n * - File metadata display (size, type, last modified)\n *\n * ![S3 File Browser Interface](https://github.com/user-attachments/assets/dd79fbb9-c487-4050-96ef-81cff39930d3)\n *\n * @example\n * ```tsx\n * const [selectedFiles, setSelectedFiles] = useState<string[]>([]);\n * const [selectedDirectory, setSelectedDirectory] = useState('');\n *\n * return (\n * <S3FileBrowser\n * files={[\n * { key: 'documents', isDirectory: true },\n * {\n * key: 'example.txt',\n * isDirectory: false,\n * size: 1024,\n * contentType: 'text/plain',\n * lastModified: new Date()\n * }\n * ]}\n * selectedFiles={selectedFiles}\n * selectedDirectory={selectedDirectory}\n * onCanConfirmChange={(canConfirm) => console.log('Can confirm:', canConfirm)}\n * onChangeSelectedDirectory={setSelectedDirectory}\n * onChangeSelectedFiles={setSelectedFiles}\n * />\n * );\n * ```\n *\n * @param props - The component props\n * @param props.files - Array of files and directories to display\n * @param props.selectedFiles - Array of currently selected file keys\n * @param props.selectedDirectory - Current directory path (empty string for root)\n * @param props.onCanConfirmChange - Callback fired when selection state changes\n * @param props.onChangeSelectedDirectory - Callback fired when directory navigation occurs\n * @param props.onChangeSelectedFiles - Callback fired when file selection changes\n */\nconst S3FileBrowser: FC<{\n files?: S3FileOrDirectory[];\n selectedFiles: string[];\n selectedDirectory: string;\n onCanConfirmChange: (canConfirm: boolean) => void;\n onChangeSelectedDirectory: (directory: string) => void;\n onChangeSelectedFiles: (files: string[]) => void;\n}> = (props) => {\n const {\n files,\n selectedDirectory,\n selectedFiles,\n onCanConfirmChange,\n onChangeSelectedFiles,\n onChangeSelectedDirectory,\n } = props;\n\n useEffect(() => {\n onCanConfirmChange(Boolean(selectedFiles?.length));\n }, [selectedFiles, onCanConfirmChange]);\n\n const handleSelectFile = useCallback(\n (key: string) => {\n if (selectedFiles.includes(key)) {\n onChangeSelectedFiles(selectedFiles.filter((id) => id !== key));\n } else {\n onChangeSelectedFiles([...selectedFiles, key]);\n }\n },\n [onChangeSelectedFiles, selectedFiles],\n );\n\n const handleSelectDirectory = useCallback(\n (key: string) => {\n onChangeSelectedDirectory(`${selectedDirectory}${key}/`);\n },\n [selectedDirectory, onChangeSelectedDirectory],\n );\n\n const filesInDirectory = useMemo(\n () => files?.filter(({isDirectory}) => !isDirectory) ?? [],\n [files],\n );\n\n const handleSelectAll = useCallback(() => {\n if (selectedFiles.length === filesInDirectory.length) {\n onChangeSelectedFiles([]);\n } else {\n onChangeSelectedFiles(filesInDirectory.map(({key}) => key) ?? []);\n }\n }, [filesInDirectory, onChangeSelectedFiles, selectedFiles.length]);\n\n const parentDirectory = useMemo(() => {\n const dir = selectedDirectory.split('/').slice(0, -2).join('/');\n return dir ? `${dir}/` : '';\n }, [selectedDirectory]);\n\n return (\n <div className=\"relative w-full h-full overflow-hidden\">\n <div className=\"absolute w-full h-full overflow-x-auto overflow-y-auto flex flex-col py-0 items-start\">\n <div className=\"w-full rounded-lg border border-gray-600 overflow-y-auto\">\n <Table disableWrapper>\n <TableHeader>\n {selectedDirectory ? (\n <TableRow>\n <TableCell\n colSpan={5}\n className=\"py-3 text-gray-100 bg-gray-800\"\n >\n <div className=\"flex gap-2 items-center\">\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() =>\n onChangeSelectedDirectory(parentDirectory)\n }\n >\n <Undo2Icon className=\"w-3 h-3 mr-1\" />\n ..\n </Button>\n <Breadcrumb>\n <BreadcrumbList>\n <BreadcrumbItem>\n <BreadcrumbLink\n onClick={() => onChangeSelectedDirectory('')}\n className=\"text-xs text-blue-400\"\n >\n Home\n </BreadcrumbLink>\n </BreadcrumbItem>\n\n {selectedDirectory.split('/').map((directory, i) => {\n if (!directory) return null;\n const path = selectedDirectory\n .split('/')\n .slice(0, i + 1)\n .join('/')\n .concat('/');\n const isCurrent = path === selectedDirectory;\n return (\n <BreadcrumbItem key={i}>\n <BreadcrumbSeparator />\n <BreadcrumbLink\n className={cn(\n 'text-xs text-blue-400',\n isCurrent &&\n 'cursor-default hover:no-underline',\n )}\n onClick={() => {\n if (!isCurrent) {\n onChangeSelectedDirectory(path);\n }\n }}\n >\n {directory}\n </BreadcrumbLink>\n </BreadcrumbItem>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n </div>\n </TableCell>\n </TableRow>\n ) : null}\n <TableRow className=\"sticky top-0 z-[2] bg-gray-600\">\n <TableHead className=\"w-[1%]\">\n <Checkbox\n checked={selectedFiles.length === filesInDirectory.length}\n onCheckedChange={handleSelectAll}\n />\n </TableHead>\n <TableHead className=\"py-2 text-foreground\">Name</TableHead>\n <TableHead className=\"py-2 text-foreground\">Type</TableHead>\n <TableHead className=\"text-foreground text-right\">\n Size\n </TableHead>\n <TableHead className=\"text-foreground text-right\">\n Modified\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {files?.map((object) => {\n const {key, isDirectory} = object;\n return (\n <TableRow\n key={key}\n className=\"cursor-pointer text-blue-300 hover:bg-blue-700 hover:text-foreground\"\n onClick={(evt) => {\n if (isDirectory) {\n handleSelectDirectory(key);\n } else {\n handleSelectFile(key);\n evt.preventDefault(); // prevent double change when clicking checkbox\n }\n }}\n >\n <TableCell>\n <Checkbox\n disabled={isDirectory}\n checked={selectedFiles.includes(key)}\n />\n </TableCell>\n <TableCell className=\"text-xs\">\n {isDirectory ? (\n <div className=\"flex items-center gap-2\">\n <FolderIcon className=\"w-4 h-4\" />\n <span>{`${key}/`}</span>\n </div>\n ) : (\n key\n )}\n </TableCell>\n <TableCell className=\"text-xs\">\n {isDirectory ? 'Directory' : object.contentType}\n </TableCell>\n <TableCell className=\"text-xs text-right\">\n {!isDirectory && object.size !== undefined\n ? formatBytes(object.size)\n : ''}\n </TableCell>\n <TableCell className=\"text-xs text-right\">\n {!isDirectory && object.lastModified\n ? formatTimeRelative(object.lastModified)\n : ''}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n </div>\n </div>\n );\n};\n\nexport default S3FileBrowser;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"S3FileOrDirectory.js","sourceRoot":"","sources":["../src/S3FileOrDirectory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;KAC7B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7B,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;QACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"S3FileOrDirectory.js","sourceRoot":"","sources":["../src/S3FileOrDirectory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;KAC7B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAC7B,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;QACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC;CACH,CAAC,CAAC","sourcesContent":["import {z} from 'zod';\n\nexport const S3FileOrDirectory = z.union([\n z.object({\n key: z.string(),\n isDirectory: z.literal(true),\n }),\n z.object({\n key: z.string(),\n isDirectory: z.literal(false),\n lastModified: z.date().optional(),\n size: z.number().optional(),\n contentType: z.string().optional(),\n }),\n]);\nexport type S3FileOrDirectory = z.infer<typeof S3FileOrDirectory>;\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACzD,cAAc,MAAM,CAAC;AACrB,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACzD,cAAc,MAAM,CAAC;AACrB,cAAc,qBAAqB,CAAC","sourcesContent":["export {default as S3FileBrowser} from './S3FileBrowser';\nexport * from './s3';\nexport * from './S3FileOrDirectory';\n"]}
package/dist/s3.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"s3.js","sourceRoot":"","sources":["../src/s3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"s3.js","sourceRoot":"","sources":["../src/s3.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DeleteObjectCommand,\n HeadObjectCommand,\n ListObjectsCommand,\n ListObjectsV2Command,\n S3Client,\n} from '@aws-sdk/client-s3';\nimport {S3FileOrDirectory} from './S3FileOrDirectory';\n\nexport async function listFilesAndDirectoriesWithPrefix(\n S3: S3Client,\n bucket: string,\n prefix?: string,\n): Promise<S3FileOrDirectory[]> {\n const command = new ListObjectsV2Command({\n Bucket: bucket,\n Prefix: prefix ? `${prefix}${prefix.endsWith('/') ? '' : '/'}` : '',\n Delimiter: '/',\n });\n\n const response = await S3.send(command);\n\n const objects: S3FileOrDirectory[] = [];\n\n const removePrefix = (key: string) => {\n if (!prefix) {\n return key;\n }\n return key.replace(prefix ?? '', '');\n };\n\n if (response.CommonPrefixes) {\n for (const commonPrefix of response.CommonPrefixes) {\n if (commonPrefix.Prefix) {\n // Extract the directory name from the CommonPrefixes\n const directoryName = removePrefix(commonPrefix.Prefix).slice(0, -1);\n objects.push({key: directoryName, isDirectory: true});\n }\n }\n }\n\n if (response.Contents) {\n for (const content of response.Contents) {\n const key = content.Key;\n if (key) {\n // Exclude subdirectories by checking if the Key ends with '/'\n if (!key.endsWith('/')) {\n const fileName = removePrefix(key);\n\n const headCommand = new HeadObjectCommand({\n Bucket: bucket,\n Key: key,\n });\n\n const headResponse = await S3.send(headCommand);\n\n objects.push({\n key: fileName,\n isDirectory: false,\n lastModified: content.LastModified,\n size: content.Size,\n contentType: headResponse.ContentType,\n });\n }\n }\n }\n }\n\n return objects;\n}\n\n// async function listBucketContents(\n// prefix: string,\n// ): Promise<ListObjectsCommandOutput> {\n// if (!prefix.length) {\n// throw new Error('Prefix cannot be empty');\n// }\n// const listObjectsCommand = new ListObjectsCommand({\n// Bucket: S3_BUCKET_NAME,\n// Prefix: `${prefix}/`,\n// });\n// const response = await S3.send(listObjectsCommand);\n// return response;\n// }\n\n/**\n * Delete all files with the given prefix\n * @param prefix\n */\nexport async function deleteS3Files(\n S3: S3Client,\n bucket: string,\n prefix: string,\n) {\n const data = await S3.send(\n new ListObjectsCommand({Bucket: bucket, Prefix: `${prefix}/`}),\n );\n if (data.Contents?.length) {\n for (const obj of data.Contents) {\n await S3.send(new DeleteObjectCommand({Bucket: bucket, Key: obj.Key}));\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sqlrooms/s3-browser",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/index.js",
@@ -20,8 +20,8 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@aws-sdk/client-s3": "^3.726.1",
23
- "@sqlrooms/ui": "0.5.0",
24
- "@sqlrooms/utils": "0.5.0",
23
+ "@sqlrooms/ui": "0.5.1",
24
+ "@sqlrooms/utils": "0.5.1",
25
25
  "lucide-react": "^0.474.0",
26
26
  "zod": "^3.24.1"
27
27
  },
@@ -34,5 +34,5 @@
34
34
  "lint": "eslint .",
35
35
  "typedoc": "typedoc"
36
36
  },
37
- "gitHead": "2a27ef8a774f934c8150dce57aac22699fb6d22f"
37
+ "gitHead": "5e41362f1552ee1f8a661c487fe7cdb606cc6d23"
38
38
  }