import { Accessor, Setter } from 'solid-js'; import { MaybeAccessor, Awaitable } from '@solidjs-use/shared'; import { ConfigurableWindow } from '../_configurable.js'; /** * window.showOpenFilePicker parameters * @see https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker#parameters */ interface FileSystemAccessShowOpenFileOptions { multiple?: boolean; types?: Array<{ description?: string; accept: Record; }>; excludeAcceptAllOption?: boolean; } /** * window.showSaveFilePicker parameters * @see https://developer.mozilla.org/en-US/docs/Web/API/window/showSaveFilePicker#parameters */ interface FileSystemAccessShowSaveFileOptions { suggestedName?: string; types?: Array<{ description?: string; accept: Record; }>; excludeAcceptAllOption?: boolean; } /** * FileHandle * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle */ interface FileSystemFileHandle { getFile: () => Promise; createWritable: () => FileSystemWritableFileStream; } /** * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream */ interface FileSystemWritableFileStream extends WritableStream { /** * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/write */ write: FileSystemWritableFileStreamWrite; /** * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/seek */ seek: (position: number) => Promise; /** * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/truncate */ truncate: (size: number) => Promise; } /** * FileStream.write * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/write */ interface FileSystemWritableFileStreamWrite { (data: string | BufferSource | Blob): Promise; (options: { type: 'write'; position: number; data: string | BufferSource | Blob; }): Promise; (options: { type: 'seek'; position: number; }): Promise; (options: { type: 'truncate'; size: number; }): Promise; } /** * FileStream.write * @see https://developer.mozilla.org/en-US/docs/Web/API/FileSystemWritableFileStream/write */ type FileSystemAccessWindow = Window & { showSaveFilePicker: (options: FileSystemAccessShowSaveFileOptions) => Promise; showOpenFilePicker: (options: FileSystemAccessShowOpenFileOptions) => Promise; }; type UseFileSystemAccessCommonOptions = Pick; type UseFileSystemAccessShowSaveFileOptions = Pick; type UseFileSystemAccessOptions = ConfigurableWindow & UseFileSystemAccessCommonOptions & { /** * file data type */ dataType?: MaybeAccessor<'Text' | 'ArrayBuffer' | 'Blob'>; }; /** * Create and read and write local files. * * @see https://solidjs-use.github.io/solidjs-use/core/useFileSystemAccess */ declare function useFileSystemAccess(options: UseFileSystemAccessOptions & { dataType: 'Text'; }): UseFileSystemAccessReturn; declare function useFileSystemAccess(options: UseFileSystemAccessOptions & { dataType: 'ArrayBuffer'; }): UseFileSystemAccessReturn; declare function useFileSystemAccess(options: UseFileSystemAccessOptions & { dataType: 'Blob'; }): UseFileSystemAccessReturn; declare function useFileSystemAccess(options: UseFileSystemAccessOptions): UseFileSystemAccessReturn; interface UseFileSystemAccessReturn { isSupported: Accessor; data: Accessor; setData: Setter; file: Accessor; setFile: Setter; fileName: Accessor; fileMIME: Accessor; fileSize: Accessor; fileLastModified: Accessor; open: (_options?: UseFileSystemAccessCommonOptions) => Awaitable; create: (_options?: UseFileSystemAccessShowSaveFileOptions) => Awaitable; save: (_options?: UseFileSystemAccessShowSaveFileOptions) => Awaitable; saveAs: (_options?: UseFileSystemAccessShowSaveFileOptions) => Awaitable; updateData: () => Awaitable; } export { FileSystemAccessShowOpenFileOptions, FileSystemAccessShowSaveFileOptions, FileSystemAccessWindow, FileSystemFileHandle, UseFileSystemAccessCommonOptions, UseFileSystemAccessOptions, UseFileSystemAccessReturn, UseFileSystemAccessShowSaveFileOptions, useFileSystemAccess };