feat(viewer): Add data source dialog
Introduce a dialog for switching between built-in content and a user-selected local folder. Persist the folder handle in IndexedDB so the selection survives page refreshes. Scan the folder for .md, .yarn, and .csv files to build the file index. Update App and Sidebar to pass file tree and heading data, and add TypeScript declarations for the File System Access API.
This commit is contained in:
Vendored
+35
@@ -1,5 +1,40 @@
|
||||
/// <reference types="vite/client" />
|
||||
|
||||
// File System Access API (Chrome / Edge)
|
||||
interface FileSystemHandlePermissionDescriptor {
|
||||
mode?: "read" | "readwrite";
|
||||
}
|
||||
|
||||
interface FileSystemDirectoryHandle {
|
||||
kind: "directory";
|
||||
name: string;
|
||||
entries(): AsyncIterableIterator<[string, FileSystemHandle]>;
|
||||
queryPermission?(
|
||||
descriptor?: FileSystemHandlePermissionDescriptor,
|
||||
): Promise<PermissionState>;
|
||||
requestPermission?(
|
||||
descriptor?: FileSystemHandlePermissionDescriptor,
|
||||
): Promise<PermissionState>;
|
||||
}
|
||||
|
||||
interface FileSystemFileHandle {
|
||||
kind: "file";
|
||||
name: string;
|
||||
getFile(): Promise<File>;
|
||||
}
|
||||
|
||||
type FileSystemHandle = FileSystemDirectoryHandle | FileSystemFileHandle;
|
||||
|
||||
interface DirectoryPickerOptions {
|
||||
mode?: "read" | "readwrite";
|
||||
}
|
||||
|
||||
interface Window {
|
||||
showDirectoryPicker(
|
||||
options?: DirectoryPickerOptions,
|
||||
): Promise<FileSystemDirectoryHandle>;
|
||||
}
|
||||
|
||||
interface WebpackContext {
|
||||
(path: string): { default?: string } | string;
|
||||
keys(): string[];
|
||||
|
||||
Reference in New Issue
Block a user