import { MetadataTemplateFieldTypeEnum } from '../../../types/openapi'; import { AppName } from './stores/app'; import { FolderItemsFetcher, FolderCreator, FolderUpdater, FolderDeleter, FileCreator, FileUpdater, FileOpener, FileFetcher, FileListFetcher, ItemsMover, ItemsReorder, ItemsCopier, FileCopier, SelectDeviceFile, FileDeleter, FolderLister, DistributionGroupsFetcher, DistributionGroupsAssigner } from './stores/api'; export interface BrowserCustomFilterComponent { type: MetadataTemplateFieldTypeEnum; name: string; label: string; options?: { label: string; value: string; }[]; } export interface BrowserAppProps { appName: AppName; onFolderFetch: FolderItemsFetcher; onFolderCreate?: FolderCreator; onFolderUpdate?: FolderUpdater; onFolderDelete?: FolderDeleter; onFileCreate?: FileCreator; onFileDelete?: FileDeleter; onFileUpdate?: FileUpdater; onFileOpen: FileOpener; onFileFetch: FileFetcher; onFilesList: FileListFetcher; onItemsMove?: ItemsMover; onItemsReorder?: ItemsReorder; onItemsCopy?: ItemsCopier; /** * Per-upload fan-out: after the initial upload creates a new file in * destination[0], the upload store calls this to clone that file into every * additional destination the user selected in the modal. Returns the list * of destination folder IDs that FAILED so the upload store can surface a * partial-failure warning on the queue item. * * Gated by the `enable_multi_destination_upload` LD flag in the modal — the * host can still wire the prop unconditionally; the modal won't invoke it * unless the flag is on. */ onFileCopy?: FileCopier; onSelectDeviceFile?: SelectDeviceFile; onFolderList: FolderLister; onMetadataFilterFetch?: (params: any) => Promise>; onDeleteCanvases?: (payload: { ids: string[]; }) => Promise; onFetchDistributionGroups?: DistributionGroupsFetcher; onAssignDistributionGroups?: DistributionGroupsAssigner; distributionGroupsManageUrl?: string; customFilterComponents?: BrowserCustomFilterComponent[]; }