@anymux/ui-kit 0.1.0
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.
- package/dist/ExplorerLayout-CSIJd7N4.js +105 -0
- package/dist/ExplorerLayout-CSIJd7N4.js.map +1 -0
- package/dist/FileBrowserContext-B6jixa2j.js +11 -0
- package/dist/FileBrowserContext-B6jixa2j.js.map +1 -0
- package/dist/calendar-DSlrbHoj.js +761 -0
- package/dist/calendar-DSlrbHoj.js.map +1 -0
- package/dist/calendar.d.ts +3 -0
- package/dist/calendar.js +3 -0
- package/dist/contacts-DQXTZzHc.js +539 -0
- package/dist/contacts-DQXTZzHc.js.map +1 -0
- package/dist/contacts.d.ts +3 -0
- package/dist/contacts.js +3 -0
- package/dist/file-browser-m5atC3kF.js +6755 -0
- package/dist/file-browser-m5atC3kF.js.map +1 -0
- package/dist/file-browser.d.ts +11 -0
- package/dist/file-browser.js +9 -0
- package/dist/git-B55e6LL-.js +561 -0
- package/dist/git-B55e6LL-.js.map +1 -0
- package/dist/git.d.ts +2 -0
- package/dist/git.js +3 -0
- package/dist/iconMap-V4B8P-Uh.js +206 -0
- package/dist/iconMap-V4B8P-Uh.js.map +1 -0
- package/dist/icons-CIsIOZXR.js +0 -0
- package/dist/icons.d.ts +2 -0
- package/dist/icons.js +4 -0
- package/dist/index-BNmNIWBL.d.ts +71 -0
- package/dist/index-BNmNIWBL.d.ts.map +1 -0
- package/dist/index-Bryv_GCG.d.ts +1481 -0
- package/dist/index-Bryv_GCG.d.ts.map +1 -0
- package/dist/index-CuQIjSXs.d.ts +134 -0
- package/dist/index-CuQIjSXs.d.ts.map +1 -0
- package/dist/index-DSu19mq0.d.ts +153 -0
- package/dist/index-DSu19mq0.d.ts.map +1 -0
- package/dist/index-DmsyeHFr.d.ts +149 -0
- package/dist/index-DmsyeHFr.d.ts.map +1 -0
- package/dist/index-DxnJ8FYM.d.ts +17 -0
- package/dist/index-DxnJ8FYM.d.ts.map +1 -0
- package/dist/index-DzfY1Tok.d.ts +32 -0
- package/dist/index-DzfY1Tok.d.ts.map +1 -0
- package/dist/index-Ml_SgiKa.d.ts +1847 -0
- package/dist/index-Ml_SgiKa.d.ts.map +1 -0
- package/dist/index-kHr9udZD.d.ts +1025 -0
- package/dist/index-kHr9udZD.d.ts.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +15 -0
- package/dist/layout-Ca_4r8ka.js +89 -0
- package/dist/layout-Ca_4r8ka.js.map +1 -0
- package/dist/layout.d.ts +2 -0
- package/dist/layout.js +5 -0
- package/dist/list-CxfT6hix.js +6831 -0
- package/dist/list-CxfT6hix.js.map +1 -0
- package/dist/list.d.ts +2 -0
- package/dist/list.js +5 -0
- package/dist/media-DZ292aKK.js +557 -0
- package/dist/media-DZ292aKK.js.map +1 -0
- package/dist/media.d.ts +3 -0
- package/dist/media.js +3 -0
- package/dist/tree-Dd9Z0Aso.js +3351 -0
- package/dist/tree-Dd9Z0Aso.js.map +1 -0
- package/dist/tree.d.ts +2 -0
- package/dist/tree.js +6 -0
- package/dist/types-common-CB3kRek8.d.ts +26 -0
- package/dist/types-common-CB3kRek8.d.ts.map +1 -0
- package/dist/utils-B4fdKKsy.js +3 -0
- package/package.json +109 -0
- package/src/calendar/AgendaView.tsx +37 -0
- package/src/calendar/CalendarBrowser.tsx +90 -0
- package/src/calendar/CalendarModel.ts +142 -0
- package/src/calendar/CalendarSidebar.tsx +81 -0
- package/src/calendar/DayView.tsx +76 -0
- package/src/calendar/EventCard.tsx +51 -0
- package/src/calendar/MockCalendarProvider.ts +98 -0
- package/src/calendar/MonthView.tsx +77 -0
- package/src/calendar/WeekView.tsx +129 -0
- package/src/calendar/index.ts +18 -0
- package/src/calendar/types.ts +25 -0
- package/src/contacts/ContactAvatar.tsx +35 -0
- package/src/contacts/ContactBrowser.tsx +56 -0
- package/src/contacts/ContactCard.tsx +37 -0
- package/src/contacts/ContactDetail.tsx +63 -0
- package/src/contacts/ContactGroupSidebar.tsx +40 -0
- package/src/contacts/ContactList.tsx +32 -0
- package/src/contacts/ContactListModel.ts +120 -0
- package/src/contacts/MockContactProvider.ts +77 -0
- package/src/contacts/index.ts +17 -0
- package/src/contacts/types.ts +26 -0
- package/src/demos/CalendarBrowserDemo.tsx +15 -0
- package/src/demos/ContactBrowserDemo.tsx +15 -0
- package/src/demos/MediaBrowserDemo.tsx +15 -0
- package/src/file-browser/adapters/DocumentViewerAdapter.ts +371 -0
- package/src/file-browser/adapters/FileSystemBridge.ts +168 -0
- package/src/file-browser/adapters/GitBrowserAdapter.ts +546 -0
- package/src/file-browser/adapters/README.md +504 -0
- package/src/file-browser/adapters/index.ts +27 -0
- package/src/file-browser/adapters/types.ts +70 -0
- package/src/file-browser/architecture.md +645 -0
- package/src/file-browser/components/CreateItemDialog.tsx +71 -0
- package/src/file-browser/components/DeleteConfirmDialog.tsx +58 -0
- package/src/file-browser/components/FileBrowser.tsx +473 -0
- package/src/file-browser/components/FileBrowserContent.tsx +209 -0
- package/src/file-browser/components/FileBrowserHeader.tsx +151 -0
- package/src/file-browser/components/FileBrowserToolbar.tsx +145 -0
- package/src/file-browser/components/LeftPanel/LeftPanel.tsx +103 -0
- package/src/file-browser/components/LeftPanel/LeftPanelTabs.tsx +70 -0
- package/src/file-browser/components/LeftPanel/TreeNavigationView.tsx +256 -0
- package/src/file-browser/components/PreviewPane.tsx +146 -0
- package/src/file-browser/components/RightPanel/FilePreview.tsx +219 -0
- package/src/file-browser/components/RightPanel/RightPanel.tsx +186 -0
- package/src/file-browser/components/RightPanel/RightPanelToolbar.tsx +113 -0
- package/src/file-browser/components/UploadProgress.tsx +123 -0
- package/src/file-browser/components/ViewerHost.tsx +208 -0
- package/src/file-browser/components/mobile/MobileNavigation.tsx +227 -0
- package/src/file-browser/components/navigation/NavigationButtons.tsx +171 -0
- package/src/file-browser/components/shared/ErrorBoundary.tsx +116 -0
- package/src/file-browser/components/shared/FileBrowserItem.tsx +195 -0
- package/src/file-browser/components/shared/FileIcon.tsx +169 -0
- package/src/file-browser/components/toolbar/ViewModeToggle.tsx +200 -0
- package/src/file-browser/components/views/ListView/ListView.tsx +484 -0
- package/src/file-browser/components/views/ThumbnailView/ThumbnailView.tsx +323 -0
- package/src/file-browser/components/views/TreeView/TreeNode.tsx +186 -0
- package/src/file-browser/components/views/TreeView/TreeNodeList.tsx +191 -0
- package/src/file-browser/components/views/TreeView/TreeView.tsx +200 -0
- package/src/file-browser/components/views/TreemapView/TreemapView.tsx +339 -0
- package/src/file-browser/context/FileBrowserContext.tsx +13 -0
- package/src/file-browser/examples/BasicUsage.tsx +20 -0
- package/src/file-browser/index.ts +98 -0
- package/src/file-browser/models/FileBrowserModel.ts +623 -0
- package/src/file-browser/models/LeftPanelManagerModel.ts +105 -0
- package/src/file-browser/models/NavigationManagerModel.ts +312 -0
- package/src/file-browser/models/ResponsiveLayoutManagerModel.ts +437 -0
- package/src/file-browser/models/RightPanelManagerModel.ts +190 -0
- package/src/file-browser/models/SelectionManagerModel.ts +252 -0
- package/src/file-browser/models/ToolbarManagerModel.ts +144 -0
- package/src/file-browser/models/UploadModel.ts +147 -0
- package/src/file-browser/models/ViewModeManagerModel.ts +185 -0
- package/src/file-browser/models/ViewerHostModel.ts +44 -0
- package/src/file-browser/models/ui/ListViewUIModel.ts +265 -0
- package/src/file-browser/models/ui/PreviewUIModel.ts +297 -0
- package/src/file-browser/models/ui/ThumbnailViewUIModel.ts +254 -0
- package/src/file-browser/models/ui/TreeViewUIModel.ts +128 -0
- package/src/file-browser/models/ui/TreemapViewUIModel.ts +350 -0
- package/src/file-browser/providers/FileSystemListProvider.ts +552 -0
- package/src/file-browser/providers/FileSystemProvider.ts +401 -0
- package/src/file-browser/providers/FileSystemTreeProvider.ts +231 -0
- package/src/file-browser/providers/GitProvider.ts +337 -0
- package/src/file-browser/providers/GitRepositoryProvider.ts +376 -0
- package/src/file-browser/providers/IFileBrowserProvider.ts +56 -0
- package/src/file-browser/providers/MemoryProvider.ts +303 -0
- package/src/file-browser/providers/index.ts +4 -0
- package/src/file-browser/registry/ViewerRegistry.ts +551 -0
- package/src/file-browser/registry/types.ts +144 -0
- package/src/file-browser/scripts/performanceBenchmark.ts +553 -0
- package/src/file-browser/services/ThumbnailCacheService.ts +128 -0
- package/src/file-browser/tasks.md +537 -0
- package/src/file-browser/types/FileBrowserTypes.ts +126 -0
- package/src/file-browser/types/ProviderTypes.ts +155 -0
- package/src/file-browser/types/UITypes.ts +235 -0
- package/src/file-browser/types/ViewModeTypes.ts +150 -0
- package/src/file-browser/utils/gestures.ts +327 -0
- package/src/file-browser/utils/performance.ts +563 -0
- package/src/file-browser/viewers/ImageViewer.tsx +163 -0
- package/src/file-browser/viewers/ImageViewerModel.ts +79 -0
- package/src/file-browser/viewers/TextViewer.tsx +95 -0
- package/src/file-browser/viewers/UnsupportedFileViewer.tsx +57 -0
- package/src/file-browser/viewers/index.ts +61 -0
- package/src/git/BranchList.tsx +128 -0
- package/src/git/CommitGraph.tsx +239 -0
- package/src/git/CommitList.tsx +258 -0
- package/src/git/DiffViewer.tsx +219 -0
- package/src/git/index.ts +4 -0
- package/src/icons/iconMap.ts +146 -0
- package/src/icons/index.ts +9 -0
- package/src/index.ts +13 -0
- package/src/layout/README.md +307 -0
- package/src/layout/components/ExplorerLayout/ExplorerLayout.tsx +178 -0
- package/src/layout/examples/SimpleExample.tsx +60 -0
- package/src/layout/index.ts +6 -0
- package/src/lib/utils.ts +1 -0
- package/src/list/README.md +303 -0
- package/src/list/architecture.md +807 -0
- package/src/list/components/CalculatedGridView.tsx +252 -0
- package/src/list/components/DragPreview.tsx +102 -0
- package/src/list/components/ListContextMenu.tsx +274 -0
- package/src/list/components/ListItem.tsx +761 -0
- package/src/list/components/ListItems.tsx +919 -0
- package/src/list/components/MasonryView.tsx +241 -0
- package/src/list/components/SearchFilter.tsx +44 -0
- package/src/list/components/TreemapView.tsx +709 -0
- package/src/list/components/ViewSizeControls.tsx +205 -0
- package/src/list/components/ViewTypeSelector.tsx +312 -0
- package/src/list/components/VirtualizedDetailsView.tsx +231 -0
- package/src/list/components/VirtualizedGrid.tsx +164 -0
- package/src/list/components/VirtualizedList.tsx +154 -0
- package/src/list/components/VirtualizedMasonryView.tsx +344 -0
- package/src/list/components/shared/EmptyState.tsx +103 -0
- package/src/list/components/shared/ErrorBoundary.tsx +123 -0
- package/src/list/components/shared/ErrorDisplay.tsx +100 -0
- package/src/list/components/shared/ListLoader.tsx +146 -0
- package/src/list/components/shared/LoadingIndicator.tsx +80 -0
- package/src/list/index.ts +92 -0
- package/src/list/models/ListItemsModel.ts +1301 -0
- package/src/list/models/TreemapModel.ts +204 -0
- package/src/list/providers/ListItemsProvider.ts +313 -0
- package/src/list/providers/TestListProvider.ts +604 -0
- package/src/list/tasks.md +937 -0
- package/src/list/types/ListTypes.ts +178 -0
- package/src/list/utils/BenchmarkLogger.ts +243 -0
- package/src/list/utils/DragDropManager.ts +320 -0
- package/src/list/utils/GridLayoutCalculator.ts +290 -0
- package/src/list/utils/ListAccessibility.ts +367 -0
- package/src/list/utils/ListKeyboard.ts +414 -0
- package/src/list/utils/MasonryLayoutCalculator.ts +302 -0
- package/src/list/utils/MasonryLayoutEngine.ts +401 -0
- package/src/list/utils/__tests__/MasonryLayoutEngine.test.ts +157 -0
- package/src/list/utils/__tests__/VirtualizedMasonryView.test.tsx +251 -0
- package/src/media/AlbumSidebar.tsx +48 -0
- package/src/media/MediaBrowser.tsx +92 -0
- package/src/media/MediaBrowserModel.ts +138 -0
- package/src/media/MediaGrid.tsx +50 -0
- package/src/media/MediaList.tsx +49 -0
- package/src/media/MediaPreview.tsx +63 -0
- package/src/media/MediaTimeline.tsx +38 -0
- package/src/media/MockMediaProvider.ts +70 -0
- package/src/media/index.ts +18 -0
- package/src/media/types.ts +21 -0
- package/src/styles/variables.css +60 -0
- package/src/tree/DEVELOPMENT_SUMMARY.md +170 -0
- package/src/tree/__tests__/TreeModel.test.ts +16 -0
- package/src/tree/architecture.md +530 -0
- package/src/tree/components/Tree.tsx +283 -0
- package/src/tree/components/TreeCheckbox.tsx +147 -0
- package/src/tree/components/TreeContextMenu.tsx +139 -0
- package/src/tree/components/TreeNodeList.tsx +329 -0
- package/src/tree/components/TreeTable.tsx +382 -0
- package/src/tree/index.ts +58 -0
- package/src/tree/models/TreeModel.ts +839 -0
- package/src/tree/providers/SimpleTreeProvider.ts +463 -0
- package/src/tree/providers/TestTreeProvider.ts +946 -0
- package/src/tree/providers/TreeProvider.ts +308 -0
- package/src/tree/tasks.md +2046 -0
- package/src/tree/types/TreeTypes.ts +279 -0
- package/src/tree/utils/SelectionTheme.ts +150 -0
- package/src/tree/utils/logger.ts +203 -0
- package/src/types-common.ts +21 -0
|
@@ -0,0 +1,1847 @@
|
|
|
1
|
+
import { TreeContextMenuItem, TreeLoadOptions, TreeLoadResult, TreeModel$1 as TreeModel, TreeNodeData, TreeProvider, TreeSelectionInfo } from "./index-kHr9udZD.js";
|
|
2
|
+
import { ListContextMenuItem, ListDragDropInfo, ListItemData, ListItemsModel$1 as ListItemsModel, ListItemsProvider, ListItemsProviderListener, ListLoadOptions, ListLoadResult, ListSelectionInfo, ListViewType$1 as ListViewType, TreemapNodeData, TreemapScanProgress, VirtualizationConfig } from "./index-Bryv_GCG.js";
|
|
3
|
+
import React$1, { Component, ReactNode } from "react";
|
|
4
|
+
import { cn } from "@anymux/ui/lib/utils";
|
|
5
|
+
import * as mobx35 from "mobx";
|
|
6
|
+
import * as mobx36 from "mobx";
|
|
7
|
+
import * as mobx31 from "mobx";
|
|
8
|
+
import * as mobx32 from "mobx";
|
|
9
|
+
import * as mobx29 from "mobx";
|
|
10
|
+
import * as mobx27 from "mobx";
|
|
11
|
+
import * as mobx28 from "mobx";
|
|
12
|
+
import * as mobx30 from "mobx";
|
|
13
|
+
import * as mobx37 from "mobx";
|
|
14
|
+
import * as react_jsx_runtime25 from "react/jsx-runtime";
|
|
15
|
+
import * as mobx_dist_internal26 from "mobx/dist/internal";
|
|
16
|
+
import { IFileSystem, IGitRepo } from "@anymux/file-system";
|
|
17
|
+
|
|
18
|
+
//#region src/file-browser/components/FileBrowser.d.ts
|
|
19
|
+
interface FileBrowserProps$1 {
|
|
20
|
+
fileSystem: IFileSystem;
|
|
21
|
+
initialPath?: string;
|
|
22
|
+
className?: string;
|
|
23
|
+
showBreadcrumbs?: boolean;
|
|
24
|
+
showNavigation?: boolean;
|
|
25
|
+
onError?: (error: {
|
|
26
|
+
message: string;
|
|
27
|
+
}) => void;
|
|
28
|
+
onPathChange?: (path: string) => void;
|
|
29
|
+
onNotify?: (type: 'success' | 'error' | 'warning', message: string) => void;
|
|
30
|
+
/** Structured action callback with undo support (preferred over onNotify for success actions) */
|
|
31
|
+
onAction?: (action: {
|
|
32
|
+
type: 'create' | 'rename' | 'delete' | 'upload';
|
|
33
|
+
message: string;
|
|
34
|
+
undo?: () => Promise<void>;
|
|
35
|
+
}) => void;
|
|
36
|
+
}
|
|
37
|
+
declare const FileBrowser: React$1.FC<FileBrowserProps$1>;
|
|
38
|
+
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/file-browser/types/FileBrowserTypes.d.ts
|
|
41
|
+
//# sourceMappingURL=FileBrowser.d.ts.map
|
|
42
|
+
interface FileBrowserItem {
|
|
43
|
+
id: string;
|
|
44
|
+
name: string;
|
|
45
|
+
path: string;
|
|
46
|
+
type: 'file' | 'directory';
|
|
47
|
+
size?: number;
|
|
48
|
+
lastModified?: Date;
|
|
49
|
+
permissions?: string;
|
|
50
|
+
metadata?: Record<string, any>;
|
|
51
|
+
children?: FileBrowserItem[];
|
|
52
|
+
isLoading?: boolean;
|
|
53
|
+
hasChildren?: boolean;
|
|
54
|
+
}
|
|
55
|
+
interface FileBrowserItemDetails extends FileBrowserItem {
|
|
56
|
+
content?: string | Uint8Array;
|
|
57
|
+
preview?: PreviewData;
|
|
58
|
+
properties?: Record<string, any>;
|
|
59
|
+
}
|
|
60
|
+
interface PreviewData {
|
|
61
|
+
type: 'image' | 'text' | 'video' | 'audio' | 'document';
|
|
62
|
+
url?: string;
|
|
63
|
+
content?: string;
|
|
64
|
+
thumbnail?: string;
|
|
65
|
+
metadata?: Record<string, any>;
|
|
66
|
+
}
|
|
67
|
+
interface IconDefinition {
|
|
68
|
+
type: 'lucide' | 'custom';
|
|
69
|
+
name?: string;
|
|
70
|
+
component?: React$1.ComponentType<any>;
|
|
71
|
+
color?: string;
|
|
72
|
+
size?: number;
|
|
73
|
+
}
|
|
74
|
+
interface ItemChange {
|
|
75
|
+
type: 'added' | 'removed' | 'modified' | 'moved';
|
|
76
|
+
item: FileBrowserItem;
|
|
77
|
+
oldPath?: string;
|
|
78
|
+
newPath?: string;
|
|
79
|
+
}
|
|
80
|
+
interface FilterCriteria {
|
|
81
|
+
searchText?: string;
|
|
82
|
+
fileTypes?: string[];
|
|
83
|
+
dateRange?: {
|
|
84
|
+
start: Date;
|
|
85
|
+
end: Date;
|
|
86
|
+
};
|
|
87
|
+
sizeRange?: {
|
|
88
|
+
min: number;
|
|
89
|
+
max: number;
|
|
90
|
+
};
|
|
91
|
+
customFilters?: Record<string, any>;
|
|
92
|
+
}
|
|
93
|
+
interface SortCriteria$1 {
|
|
94
|
+
field: string;
|
|
95
|
+
direction: 'asc' | 'desc';
|
|
96
|
+
}
|
|
97
|
+
interface NavigationState {
|
|
98
|
+
currentPath: string;
|
|
99
|
+
history: string[];
|
|
100
|
+
historyIndex: number;
|
|
101
|
+
canGoBack: boolean;
|
|
102
|
+
canGoForward: boolean;
|
|
103
|
+
}
|
|
104
|
+
interface SelectionState {
|
|
105
|
+
selectedItems: Set<string>;
|
|
106
|
+
lastSelectedIndex: number;
|
|
107
|
+
focusedItemId: string | null;
|
|
108
|
+
selectionMode: 'single' | 'multiple';
|
|
109
|
+
}
|
|
110
|
+
type LoadingState = 'idle' | 'loading' | 'success' | 'error';
|
|
111
|
+
interface ErrorState {
|
|
112
|
+
message: string;
|
|
113
|
+
code?: string;
|
|
114
|
+
details?: any;
|
|
115
|
+
timestamp: Date;
|
|
116
|
+
}
|
|
117
|
+
interface FileBrowserEventHandlers {
|
|
118
|
+
onPathChange?: (path: string) => void;
|
|
119
|
+
onItemSelect?: (item: FileBrowserItem) => void;
|
|
120
|
+
onItemActivate?: (item: FileBrowserItem) => void;
|
|
121
|
+
onSelectionChange?: (selectedItems: FileBrowserItem[]) => void;
|
|
122
|
+
onError?: (error: ErrorState) => void;
|
|
123
|
+
onLoadingChange?: (isLoading: boolean) => void;
|
|
124
|
+
}
|
|
125
|
+
interface FileBrowserProps {
|
|
126
|
+
provider: any;
|
|
127
|
+
initialPath?: string;
|
|
128
|
+
initialViewMode?: string;
|
|
129
|
+
eventHandlers?: FileBrowserEventHandlers;
|
|
130
|
+
className?: string;
|
|
131
|
+
style?: React$1.CSSProperties;
|
|
132
|
+
showToolbar?: boolean;
|
|
133
|
+
showBreadcrumb?: boolean;
|
|
134
|
+
showStatusBar?: boolean;
|
|
135
|
+
allowMultiSelect?: boolean;
|
|
136
|
+
availableViewModes?: string[];
|
|
137
|
+
defaultViewMode?: string;
|
|
138
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
139
|
+
density?: 'compact' | 'normal' | 'comfortable';
|
|
140
|
+
} //#endregion
|
|
141
|
+
//#region src/file-browser/components/shared/FileBrowserItem.d.ts
|
|
142
|
+
|
|
143
|
+
//# sourceMappingURL=FileBrowserTypes.d.ts.map
|
|
144
|
+
interface FileBrowserItemProps {
|
|
145
|
+
item: FileBrowserItem;
|
|
146
|
+
isSelected?: boolean;
|
|
147
|
+
isHovered?: boolean;
|
|
148
|
+
showDetails?: boolean;
|
|
149
|
+
showIcon?: boolean;
|
|
150
|
+
showSize?: boolean;
|
|
151
|
+
showDate?: boolean;
|
|
152
|
+
iconSize?: 'sm' | 'md' | 'lg';
|
|
153
|
+
layout?: 'horizontal' | 'vertical';
|
|
154
|
+
onClick?: (item: FileBrowserItem, event: React$1.MouseEvent) => void;
|
|
155
|
+
onDoubleClick?: (item: FileBrowserItem, event: React$1.MouseEvent) => void;
|
|
156
|
+
onContextMenu?: (item: FileBrowserItem, event: React$1.MouseEvent) => void;
|
|
157
|
+
onKeyDown?: (item: FileBrowserItem, event: React$1.KeyboardEvent) => void;
|
|
158
|
+
className?: string;
|
|
159
|
+
style?: React$1.CSSProperties;
|
|
160
|
+
children?: React$1.ReactNode;
|
|
161
|
+
}
|
|
162
|
+
declare const FileBrowserItemComponent: React$1.FC<FileBrowserItemProps>;
|
|
163
|
+
|
|
164
|
+
//#endregion
|
|
165
|
+
//#region src/file-browser/components/shared/ErrorBoundary.d.ts
|
|
166
|
+
interface ErrorBoundaryProps {
|
|
167
|
+
children: ReactNode;
|
|
168
|
+
fallback?: (error: Error, errorInfo: string, onReset: () => void) => ReactNode;
|
|
169
|
+
onError?: (error: Error, errorInfo: string) => void;
|
|
170
|
+
className?: string;
|
|
171
|
+
}
|
|
172
|
+
interface ErrorBoundaryState {
|
|
173
|
+
hasError: boolean;
|
|
174
|
+
error: Error | null;
|
|
175
|
+
errorInfo: string | null;
|
|
176
|
+
}
|
|
177
|
+
declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
178
|
+
constructor(props: ErrorBoundaryProps);
|
|
179
|
+
static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState>;
|
|
180
|
+
componentDidCatch(error: Error, errorInfo: React$1.ErrorInfo): void;
|
|
181
|
+
handleReset: () => void;
|
|
182
|
+
render(): string | number | bigint | boolean | react_jsx_runtime25.JSX.Element | Iterable<React$1.ReactNode> | Promise<string | number | bigint | boolean | React$1.ReactPortal | React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>> | Iterable<React$1.ReactNode> | null | undefined> | null | undefined;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
//#endregion
|
|
186
|
+
//#region src/file-browser/components/shared/FileIcon.d.ts
|
|
187
|
+
interface FileIconProps$1 {
|
|
188
|
+
item: FileBrowserItem;
|
|
189
|
+
getItemIcon?: (item: FileBrowserItem) => IconDefinition;
|
|
190
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
191
|
+
className?: string;
|
|
192
|
+
isExpanded?: boolean;
|
|
193
|
+
}
|
|
194
|
+
declare const FileIcon: React$1.FC<FileIconProps$1>;
|
|
195
|
+
|
|
196
|
+
//#endregion
|
|
197
|
+
//#region src/file-browser/types/ViewModeTypes.d.ts
|
|
198
|
+
interface ViewModeDefinition$1 {
|
|
199
|
+
id: string;
|
|
200
|
+
name: string;
|
|
201
|
+
description?: string;
|
|
202
|
+
icon: IconDefinition;
|
|
203
|
+
component: React$1.ComponentType<ViewModeComponentProps>;
|
|
204
|
+
capabilities: ViewModeCapabilities;
|
|
205
|
+
settings?: ViewModeSettings;
|
|
206
|
+
isDefault?: boolean;
|
|
207
|
+
priority?: number;
|
|
208
|
+
}
|
|
209
|
+
interface ViewModeComponentProps {
|
|
210
|
+
model: any;
|
|
211
|
+
className?: string;
|
|
212
|
+
style?: React$1.CSSProperties;
|
|
213
|
+
}
|
|
214
|
+
interface ViewModeCapabilities {
|
|
215
|
+
supportsSelection: boolean;
|
|
216
|
+
supportsMultiSelection: boolean;
|
|
217
|
+
supportsNavigation: boolean;
|
|
218
|
+
supportsSorting: boolean;
|
|
219
|
+
supportsFiltering: boolean;
|
|
220
|
+
supportsDragDrop: boolean;
|
|
221
|
+
supportsKeyboardNavigation: boolean;
|
|
222
|
+
supportsVirtualization: boolean;
|
|
223
|
+
supportsGrouping?: boolean;
|
|
224
|
+
supportsInlinePreview?: boolean;
|
|
225
|
+
supportsCustomColumns?: boolean;
|
|
226
|
+
supportsZoom?: boolean;
|
|
227
|
+
}
|
|
228
|
+
interface ViewModeSettings {
|
|
229
|
+
defaultSortField?: string;
|
|
230
|
+
defaultSortDirection?: 'asc' | 'desc';
|
|
231
|
+
itemSize?: {
|
|
232
|
+
width?: number;
|
|
233
|
+
height?: number;
|
|
234
|
+
minWidth?: number;
|
|
235
|
+
maxWidth?: number;
|
|
236
|
+
minHeight?: number;
|
|
237
|
+
maxHeight?: number;
|
|
238
|
+
};
|
|
239
|
+
layout?: {
|
|
240
|
+
padding?: number;
|
|
241
|
+
gap?: number;
|
|
242
|
+
columns?: number | 'auto';
|
|
243
|
+
rows?: number | 'auto';
|
|
244
|
+
};
|
|
245
|
+
display?: {
|
|
246
|
+
showIcons?: boolean;
|
|
247
|
+
showLabels?: boolean;
|
|
248
|
+
showDetails?: boolean;
|
|
249
|
+
showPreview?: boolean;
|
|
250
|
+
iconSize?: 'small' | 'medium' | 'large';
|
|
251
|
+
labelPosition?: 'bottom' | 'right' | 'overlay';
|
|
252
|
+
};
|
|
253
|
+
interaction?: {
|
|
254
|
+
singleClickOpen?: boolean;
|
|
255
|
+
doubleClickOpen?: boolean;
|
|
256
|
+
hoverPreview?: boolean;
|
|
257
|
+
contextMenu?: boolean;
|
|
258
|
+
};
|
|
259
|
+
performance?: {
|
|
260
|
+
virtualization?: boolean;
|
|
261
|
+
bufferSize?: number;
|
|
262
|
+
preloadCount?: number;
|
|
263
|
+
debounceMs?: number;
|
|
264
|
+
};
|
|
265
|
+
customSettings?: Record<string, any>;
|
|
266
|
+
}
|
|
267
|
+
interface TreeViewSettings extends ViewModeSettings {
|
|
268
|
+
indentSize?: number;
|
|
269
|
+
showConnectors?: boolean;
|
|
270
|
+
expandOnSingleClick?: boolean;
|
|
271
|
+
collapseOnSecondClick?: boolean;
|
|
272
|
+
rememberExpansion?: boolean;
|
|
273
|
+
autoExpand?: boolean;
|
|
274
|
+
maxDepth?: number;
|
|
275
|
+
}
|
|
276
|
+
interface ListViewSettings extends ViewModeSettings {
|
|
277
|
+
columns?: ColumnDefinition$1[];
|
|
278
|
+
headerHeight?: number;
|
|
279
|
+
rowHeight?: number;
|
|
280
|
+
alternatingRows?: boolean;
|
|
281
|
+
gridLines?: boolean;
|
|
282
|
+
resizableColumns?: boolean;
|
|
283
|
+
sortableColumns?: boolean;
|
|
284
|
+
}
|
|
285
|
+
interface ThumbnailViewSettings extends ViewModeSettings {
|
|
286
|
+
thumbnailSize?: number;
|
|
287
|
+
aspectRatio?: number;
|
|
288
|
+
showFilenames?: boolean;
|
|
289
|
+
showFileSize?: boolean;
|
|
290
|
+
showDate?: boolean;
|
|
291
|
+
gridSpacing?: number;
|
|
292
|
+
loadThumbnails?: boolean;
|
|
293
|
+
thumbnailQuality?: 'low' | 'medium' | 'high';
|
|
294
|
+
}
|
|
295
|
+
interface TreemapViewSettings extends ViewModeSettings {
|
|
296
|
+
algorithm?: 'squarified' | 'slice-dice' | 'strip';
|
|
297
|
+
colorScheme?: 'size' | 'type' | 'date' | 'custom';
|
|
298
|
+
paddingInner?: number;
|
|
299
|
+
paddingOuter?: number;
|
|
300
|
+
showLabels?: boolean;
|
|
301
|
+
labelThreshold?: number;
|
|
302
|
+
animation?: boolean;
|
|
303
|
+
zoomable?: boolean;
|
|
304
|
+
}
|
|
305
|
+
interface ColumnDefinition$1 {
|
|
306
|
+
id: string;
|
|
307
|
+
label: string;
|
|
308
|
+
width?: number;
|
|
309
|
+
minWidth?: number;
|
|
310
|
+
maxWidth?: number;
|
|
311
|
+
sortable?: boolean;
|
|
312
|
+
resizable?: boolean;
|
|
313
|
+
visible?: boolean;
|
|
314
|
+
align?: 'left' | 'center' | 'right';
|
|
315
|
+
format?: (value: any) => string;
|
|
316
|
+
renderer?: React$1.ComponentType<{
|
|
317
|
+
value: any;
|
|
318
|
+
item: any;
|
|
319
|
+
}>;
|
|
320
|
+
priority?: number;
|
|
321
|
+
}
|
|
322
|
+
type ViewModeType = 'tree' | 'list' | 'thumbnail' | 'treemap' | 'custom';
|
|
323
|
+
|
|
324
|
+
//#endregion
|
|
325
|
+
//#region src/file-browser/models/ui/TreeViewUIModel.d.ts
|
|
326
|
+
declare class TreeViewUIModel {
|
|
327
|
+
expandedFolders: mobx35.ObservableMap<string, boolean>;
|
|
328
|
+
indentSize: number;
|
|
329
|
+
showConnectors: boolean;
|
|
330
|
+
expandOnSingleClick: boolean;
|
|
331
|
+
collapseOnSecondClick: boolean;
|
|
332
|
+
rememberExpansion: boolean;
|
|
333
|
+
settings: TreeViewSettings;
|
|
334
|
+
private owner;
|
|
335
|
+
constructor(owner: any);
|
|
336
|
+
get logger(): any;
|
|
337
|
+
get expandedFoldersArray(): string[];
|
|
338
|
+
expandFolder: (path: string) => void;
|
|
339
|
+
collapseFolder: (path: string) => void;
|
|
340
|
+
toggleFolder: (path: string) => void;
|
|
341
|
+
isFolderExpanded: (path: string) => boolean;
|
|
342
|
+
hasChildren: (item: FileBrowserItem) => boolean;
|
|
343
|
+
sortTreeNodes: (nodes: FileBrowserItem[]) => FileBrowserItem[];
|
|
344
|
+
expandAll: () => void;
|
|
345
|
+
collapseAll: () => void;
|
|
346
|
+
updateSettings: (newSettings: Partial<TreeViewSettings>) => void;
|
|
347
|
+
private initializeSettings;
|
|
348
|
+
dispose(): void;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
//#endregion
|
|
352
|
+
//#region src/file-browser/models/LeftPanelManagerModel.d.ts
|
|
353
|
+
//# sourceMappingURL=TreeViewUIModel.d.ts.map
|
|
354
|
+
interface LeftPanelMode {
|
|
355
|
+
id: string;
|
|
356
|
+
name: string;
|
|
357
|
+
icon?: string;
|
|
358
|
+
component: React.ComponentType<any>;
|
|
359
|
+
isAvailable?: () => boolean;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
//#endregion
|
|
363
|
+
//#region src/file-browser/models/ui/ListViewUIModel.d.ts
|
|
364
|
+
interface SortCriteria {
|
|
365
|
+
field: string;
|
|
366
|
+
direction: 'asc' | 'desc';
|
|
367
|
+
}
|
|
368
|
+
interface ColumnDefinition {
|
|
369
|
+
id: string;
|
|
370
|
+
label: string;
|
|
371
|
+
field: string;
|
|
372
|
+
width: number;
|
|
373
|
+
minWidth: number;
|
|
374
|
+
maxWidth?: number;
|
|
375
|
+
resizable: boolean;
|
|
376
|
+
sortable: boolean;
|
|
377
|
+
visible: boolean;
|
|
378
|
+
align?: 'left' | 'center' | 'right';
|
|
379
|
+
format?: (value: any) => string;
|
|
380
|
+
}
|
|
381
|
+
interface ListViewOwner {
|
|
382
|
+
logger?: {
|
|
383
|
+
info: (message: string) => void;
|
|
384
|
+
} | null;
|
|
385
|
+
}
|
|
386
|
+
declare class ListViewUIModel {
|
|
387
|
+
columns: mobx36.ObservableMap<string, ColumnDefinition>;
|
|
388
|
+
columnOrder: string[];
|
|
389
|
+
currentSort: SortCriteria | null;
|
|
390
|
+
settings: ListViewSettings;
|
|
391
|
+
showHeader: boolean;
|
|
392
|
+
striped: boolean;
|
|
393
|
+
compact: boolean;
|
|
394
|
+
hoverable: boolean;
|
|
395
|
+
private owner;
|
|
396
|
+
constructor(owner: ListViewOwner);
|
|
397
|
+
get logger(): {
|
|
398
|
+
info: (message: string) => void;
|
|
399
|
+
} | null | undefined;
|
|
400
|
+
get visibleColumns(): ColumnDefinition[];
|
|
401
|
+
get sortableColumns(): ColumnDefinition[];
|
|
402
|
+
get allColumns(): ColumnDefinition[];
|
|
403
|
+
get totalWidth(): number;
|
|
404
|
+
addColumn: (column: ColumnDefinition) => void;
|
|
405
|
+
removeColumn: (columnId: string) => void;
|
|
406
|
+
updateColumn: (columnId: string, updates: Partial<ColumnDefinition>) => void;
|
|
407
|
+
resizeColumn: (columnId: string, width: number) => void;
|
|
408
|
+
reorderColumns: (fromIndex: number, toIndex: number) => void;
|
|
409
|
+
showColumn: (columnId: string) => void;
|
|
410
|
+
hideColumn: (columnId: string) => void;
|
|
411
|
+
toggleColumnVisibility: (columnId: string) => void;
|
|
412
|
+
setSortCriteria: (field: string, direction: "asc" | "desc") => void;
|
|
413
|
+
toggleSort: (field: string) => void;
|
|
414
|
+
clearSort: () => void;
|
|
415
|
+
updateSettings: (newSettings: Partial<ListViewSettings>) => void;
|
|
416
|
+
resetToDefaults: () => void;
|
|
417
|
+
saveColumnLayout: (name: string) => void;
|
|
418
|
+
loadColumnLayout: (name: string) => void;
|
|
419
|
+
private initializeDefaultColumns;
|
|
420
|
+
dispose(): void;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
//#endregion
|
|
424
|
+
//#region src/file-browser/models/ui/ThumbnailViewUIModel.d.ts
|
|
425
|
+
interface ThumbnailOwner {
|
|
426
|
+
logger?: {
|
|
427
|
+
info: (message: string) => void;
|
|
428
|
+
} | null;
|
|
429
|
+
}
|
|
430
|
+
declare class ThumbnailViewUIModel {
|
|
431
|
+
thumbnailSize: number;
|
|
432
|
+
gridSpacing: number;
|
|
433
|
+
aspectRatio: number;
|
|
434
|
+
showFilenames: boolean;
|
|
435
|
+
showFileSize: boolean;
|
|
436
|
+
showDate: boolean;
|
|
437
|
+
loadThumbnails: boolean;
|
|
438
|
+
thumbnailQuality: 'low' | 'medium' | 'high';
|
|
439
|
+
columnsPerRow: number | "auto";
|
|
440
|
+
settings: ThumbnailViewSettings;
|
|
441
|
+
loadingThumbnails: Set<string>;
|
|
442
|
+
failedThumbnails: Set<string>;
|
|
443
|
+
private owner;
|
|
444
|
+
constructor(owner: ThumbnailOwner);
|
|
445
|
+
get logger(): {
|
|
446
|
+
info: (message: string) => void;
|
|
447
|
+
} | null | undefined;
|
|
448
|
+
get itemWidth(): number;
|
|
449
|
+
get itemHeight(): number;
|
|
450
|
+
get isLoadingAnyThumbnails(): boolean;
|
|
451
|
+
get thumbnailSizePresets(): {
|
|
452
|
+
label: string;
|
|
453
|
+
value: number;
|
|
454
|
+
}[];
|
|
455
|
+
setThumbnailSize: (size: number) => void;
|
|
456
|
+
setGridSpacing: (spacing: number) => void;
|
|
457
|
+
setAspectRatio: (ratio: number) => void;
|
|
458
|
+
setColumnsPerRow: (columns: number | "auto") => void;
|
|
459
|
+
toggleShowFilenames: () => void;
|
|
460
|
+
toggleShowFileSize: () => void;
|
|
461
|
+
toggleShowDate: () => void;
|
|
462
|
+
setThumbnailQuality: (quality: "low" | "medium" | "high") => void;
|
|
463
|
+
setThumbnailLoading: (itemId: string, loading: boolean) => void;
|
|
464
|
+
setThumbnailFailed: (itemId: string) => void;
|
|
465
|
+
setThumbnailSuccess: (itemId: string) => void;
|
|
466
|
+
isThumbnailLoading: (itemId: string) => boolean;
|
|
467
|
+
isThumbnailFailed: (itemId: string) => boolean;
|
|
468
|
+
clearThumbnailStates: () => void;
|
|
469
|
+
calculateGridLayout: (containerWidth: number) => {
|
|
470
|
+
columns: number;
|
|
471
|
+
itemsPerRow: number;
|
|
472
|
+
};
|
|
473
|
+
updateSettings: (newSettings: Partial<ThumbnailViewSettings>) => void;
|
|
474
|
+
applyPreset: (preset: "compact" | "balanced" | "detailed") => void;
|
|
475
|
+
resetToDefaults: () => void;
|
|
476
|
+
private initializeSettings;
|
|
477
|
+
dispose(): void;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
//#endregion
|
|
481
|
+
//#region src/file-browser/models/ui/TreemapViewUIModel.d.ts
|
|
482
|
+
interface TreemapOwner {
|
|
483
|
+
logger?: {
|
|
484
|
+
info: (message: string) => void;
|
|
485
|
+
} | null;
|
|
486
|
+
}
|
|
487
|
+
interface TreemapNode {
|
|
488
|
+
id: string;
|
|
489
|
+
name: string;
|
|
490
|
+
size: number;
|
|
491
|
+
type: 'file' | 'directory';
|
|
492
|
+
children?: TreemapNode[];
|
|
493
|
+
depth: number;
|
|
494
|
+
x: number;
|
|
495
|
+
y: number;
|
|
496
|
+
width: number;
|
|
497
|
+
height: number;
|
|
498
|
+
color?: string;
|
|
499
|
+
}
|
|
500
|
+
declare class TreemapViewUIModel {
|
|
501
|
+
minTileSize: number;
|
|
502
|
+
maxDepth: number;
|
|
503
|
+
showLabels: boolean;
|
|
504
|
+
showSizes: boolean;
|
|
505
|
+
colorScheme: 'type' | 'size' | 'date' | 'custom';
|
|
506
|
+
animationDuration: number;
|
|
507
|
+
padding: number;
|
|
508
|
+
borderWidth: number;
|
|
509
|
+
aspectRatio: number;
|
|
510
|
+
enableZoom: boolean;
|
|
511
|
+
enableDrillDown: boolean;
|
|
512
|
+
showTooltips: boolean;
|
|
513
|
+
settings: TreemapViewSettings;
|
|
514
|
+
currentRoot: string | null;
|
|
515
|
+
zoomLevel: number;
|
|
516
|
+
private owner;
|
|
517
|
+
constructor(owner: TreemapOwner);
|
|
518
|
+
get logger(): {
|
|
519
|
+
info: (message: string) => void;
|
|
520
|
+
} | null | undefined;
|
|
521
|
+
get effectiveMinTileSize(): number;
|
|
522
|
+
get colorSchemes(): {
|
|
523
|
+
id: string;
|
|
524
|
+
label: string;
|
|
525
|
+
description: string;
|
|
526
|
+
}[];
|
|
527
|
+
setMinTileSize: (size: number) => void;
|
|
528
|
+
setMaxDepth: (depth: number) => void;
|
|
529
|
+
setColorScheme: (scheme: "type" | "size" | "date" | "custom") => void;
|
|
530
|
+
setPadding: (padding: number) => void;
|
|
531
|
+
setZoomLevel: (level: number) => void;
|
|
532
|
+
toggleShowLabels: () => void;
|
|
533
|
+
toggleShowSizes: () => void;
|
|
534
|
+
toggleEnableZoom: () => void;
|
|
535
|
+
toggleEnableDrillDown: () => void;
|
|
536
|
+
drillDown: (nodeId: string) => void;
|
|
537
|
+
drillUp: () => void;
|
|
538
|
+
resetView: () => void;
|
|
539
|
+
calculateTreemapLayout: (items: FileBrowserItem[], width: number, height: number) => TreemapNode[];
|
|
540
|
+
private itemsToTreemapNodes;
|
|
541
|
+
private calculateItemSize;
|
|
542
|
+
private getItemColor;
|
|
543
|
+
private getExtensionColor;
|
|
544
|
+
private squarify;
|
|
545
|
+
updateSettings: (newSettings: Partial<TreemapViewSettings>) => void;
|
|
546
|
+
applyPreset: (preset: "overview" | "detailed" | "interactive") => void;
|
|
547
|
+
resetToDefaults: () => void;
|
|
548
|
+
private initializeSettings;
|
|
549
|
+
dispose(): void;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
//#endregion
|
|
553
|
+
//#region src/file-browser/models/RightPanelManagerModel.d.ts
|
|
554
|
+
interface ViewModeDefinition {
|
|
555
|
+
id: string;
|
|
556
|
+
name: string;
|
|
557
|
+
icon: string;
|
|
558
|
+
component?: React.ComponentType<any>;
|
|
559
|
+
applicableFor?: (contentType: 'file' | 'folder' | 'empty') => boolean;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
//#endregion
|
|
563
|
+
//#region src/file-browser/providers/IFileBrowserProvider.d.ts
|
|
564
|
+
interface IFileBrowserProvider$1 {
|
|
565
|
+
readonly id: string;
|
|
566
|
+
readonly name: string;
|
|
567
|
+
readonly version: string;
|
|
568
|
+
loadItems(path: string): Promise<FileBrowserItem[]>;
|
|
569
|
+
getLeftPanelModes?(): LeftPanelMode[];
|
|
570
|
+
getRightPanelViewModes?(): ViewModeDefinition[];
|
|
571
|
+
normalizePath?(path: string): string;
|
|
572
|
+
getParentPath?(path: string): string | null;
|
|
573
|
+
resolvePath?(basePath: string, relativePath: string): string;
|
|
574
|
+
getItemIcon?(item: FileBrowserItem): IconDefinition;
|
|
575
|
+
getItemPreview?(item: FileBrowserItem): Promise<PreviewData | null>;
|
|
576
|
+
getItemDisplayName?(item: FileBrowserItem): string;
|
|
577
|
+
canPreviewFile?(item: FileBrowserItem): boolean;
|
|
578
|
+
getFilePreview?(item: FileBrowserItem): Promise<PreviewData>;
|
|
579
|
+
canPerformAction?(action: string, items: FileBrowserItem[]): boolean;
|
|
580
|
+
performAction?(action: string, items: FileBrowserItem[]): Promise<any>;
|
|
581
|
+
initialize?(): Promise<void>;
|
|
582
|
+
dispose?(): void;
|
|
583
|
+
}
|
|
584
|
+
interface ProviderCapabilities {
|
|
585
|
+
canCreate: boolean;
|
|
586
|
+
canRead: boolean;
|
|
587
|
+
canUpdate: boolean;
|
|
588
|
+
canDelete: boolean;
|
|
589
|
+
canMove: boolean;
|
|
590
|
+
canCopy: boolean;
|
|
591
|
+
canRename: boolean;
|
|
592
|
+
supportsNavigation: boolean;
|
|
593
|
+
supportsSelection: boolean;
|
|
594
|
+
supportsHierarchy: boolean;
|
|
595
|
+
supportsLeftPanelModes: boolean;
|
|
596
|
+
supportsRightPanelViewModes: boolean;
|
|
597
|
+
supportsFilePreview: boolean;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
//#endregion
|
|
601
|
+
//#region src/file-browser/providers/FileSystemProvider.d.ts
|
|
602
|
+
//# sourceMappingURL=IFileBrowserProvider.d.ts.map
|
|
603
|
+
interface CacheOptions {
|
|
604
|
+
maxSize: number;
|
|
605
|
+
ttlMs: number;
|
|
606
|
+
enableLogging: boolean;
|
|
607
|
+
}
|
|
608
|
+
declare class FileSystemProvider implements IFileBrowserProvider$1 {
|
|
609
|
+
readonly id = "filesystem";
|
|
610
|
+
readonly name = "File System Provider";
|
|
611
|
+
readonly version = "1.0.0";
|
|
612
|
+
private fileSystem;
|
|
613
|
+
private cache;
|
|
614
|
+
private cacheOptions;
|
|
615
|
+
constructor(fileSystem: IFileSystem, cacheOptions?: Partial<CacheOptions>);
|
|
616
|
+
loadItems(path: string): Promise<FileBrowserItem[]>;
|
|
617
|
+
normalizePath(path: string): string;
|
|
618
|
+
private formatPermissions;
|
|
619
|
+
private enhanceError;
|
|
620
|
+
getParentPath(path: string): string | null;
|
|
621
|
+
resolvePath(basePath: string, relativePath: string): string;
|
|
622
|
+
getItemIcon(item: FileBrowserItem): IconDefinition;
|
|
623
|
+
getItemDisplayName(item: FileBrowserItem): string;
|
|
624
|
+
getItemPreview(item: FileBrowserItem): Promise<PreviewData | null>;
|
|
625
|
+
canPerformAction(action: string, items: FileBrowserItem[]): boolean;
|
|
626
|
+
performAction(action: string, items: FileBrowserItem[]): Promise<any>;
|
|
627
|
+
initialize(): Promise<void>;
|
|
628
|
+
dispose(): void;
|
|
629
|
+
private getFromCache;
|
|
630
|
+
private setInCache;
|
|
631
|
+
private invalidateCache;
|
|
632
|
+
private evictLeastRecentlyUsed;
|
|
633
|
+
private logCache;
|
|
634
|
+
clearCache(): void;
|
|
635
|
+
getCacheStats(): {
|
|
636
|
+
size: number;
|
|
637
|
+
maxSize: number;
|
|
638
|
+
hitRate?: number;
|
|
639
|
+
};
|
|
640
|
+
getLeftPanelModes(): LeftPanelMode[];
|
|
641
|
+
getRightPanelViewModes(): ViewModeDefinition[];
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
//#endregion
|
|
645
|
+
//#region src/file-browser/providers/GitRepositoryProvider.d.ts
|
|
646
|
+
interface GitRepositoryOptions {
|
|
647
|
+
repositoryPath: string;
|
|
648
|
+
branch?: string;
|
|
649
|
+
enableLogging?: boolean;
|
|
650
|
+
fileSystem?: IFileSystem;
|
|
651
|
+
gitRepo?: IGitRepo;
|
|
652
|
+
}
|
|
653
|
+
declare class GitRepositoryProvider implements IFileBrowserProvider$1 {
|
|
654
|
+
readonly id = "git-repository";
|
|
655
|
+
readonly name = "Git Repository Provider";
|
|
656
|
+
readonly version = "1.0.0";
|
|
657
|
+
private options;
|
|
658
|
+
private fileSystem;
|
|
659
|
+
private gitRepo;
|
|
660
|
+
constructor(options: GitRepositoryOptions);
|
|
661
|
+
loadItems(path: string): Promise<FileBrowserItem[]>;
|
|
662
|
+
private loadItemsFromFileSystem;
|
|
663
|
+
normalizePath(path: string): string;
|
|
664
|
+
getParentPath(path: string): string | null;
|
|
665
|
+
resolvePath(basePath: string, relativePath: string): string;
|
|
666
|
+
getItemIcon(item: FileBrowserItem): IconDefinition;
|
|
667
|
+
private getBaseFileIcon;
|
|
668
|
+
getItemDisplayName(item: FileBrowserItem): string;
|
|
669
|
+
getItemPreview(item: FileBrowserItem): Promise<PreviewData | null>;
|
|
670
|
+
canPerformAction(action: string, items: FileBrowserItem[]): boolean;
|
|
671
|
+
performAction(action: string, items: FileBrowserItem[]): Promise<any>;
|
|
672
|
+
initialize(): Promise<void>;
|
|
673
|
+
dispose(): void;
|
|
674
|
+
getCurrentBranch(): Promise<string>;
|
|
675
|
+
getBranches(): Promise<string[]>;
|
|
676
|
+
switchBranch(branch: string): Promise<void>;
|
|
677
|
+
getCommitHistory(path?: string, limit?: number): Promise<any[]>;
|
|
678
|
+
private getMockGitFiles;
|
|
679
|
+
private getFileName;
|
|
680
|
+
private getGitStatus;
|
|
681
|
+
private log;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
//#endregion
|
|
685
|
+
//#region src/file-browser/providers/GitProvider.d.ts
|
|
686
|
+
interface GitRepositoryModel {
|
|
687
|
+
path: string;
|
|
688
|
+
fileTree: any[];
|
|
689
|
+
isLoadingFiles: boolean;
|
|
690
|
+
getFileContent(path: string): Promise<string>;
|
|
691
|
+
}
|
|
692
|
+
interface GitWrapperIntegration {
|
|
693
|
+
path: string;
|
|
694
|
+
fileTree: any[];
|
|
695
|
+
isLoadingFiles: boolean;
|
|
696
|
+
getFileContent(path: string): Promise<string>;
|
|
697
|
+
}
|
|
698
|
+
declare class GitProvider implements IFileBrowserProvider$1 {
|
|
699
|
+
readonly id = "git";
|
|
700
|
+
readonly name = "Git Provider";
|
|
701
|
+
readonly version = "1.0.0";
|
|
702
|
+
private repository;
|
|
703
|
+
constructor(repository: GitRepositoryModel | GitWrapperIntegration);
|
|
704
|
+
loadItems(path: string): Promise<FileBrowserItem[]>;
|
|
705
|
+
private getItemsForPath;
|
|
706
|
+
private convertGitNodeToFileBrowserItem;
|
|
707
|
+
getLeftPanelModes(): LeftPanelMode[];
|
|
708
|
+
getRightPanelViewModes(): ViewModeDefinition[];
|
|
709
|
+
normalizePath(path: string): string;
|
|
710
|
+
getParentPath(path: string): string | null;
|
|
711
|
+
resolvePath(basePath: string, relativePath: string): string;
|
|
712
|
+
getItemIcon(item: FileBrowserItem): IconDefinition;
|
|
713
|
+
getItemDisplayName(item: FileBrowserItem): string;
|
|
714
|
+
canPreviewFile(item: FileBrowserItem): boolean;
|
|
715
|
+
getFilePreview(item: FileBrowserItem): Promise<PreviewData>;
|
|
716
|
+
getItemPreview(item: FileBrowserItem): Promise<PreviewData | null>;
|
|
717
|
+
canPerformAction(action: string, items: FileBrowserItem[]): boolean;
|
|
718
|
+
performAction(action: string, items: FileBrowserItem[]): Promise<any>;
|
|
719
|
+
initialize(): Promise<void>;
|
|
720
|
+
dispose(): void;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
//#endregion
|
|
724
|
+
//#region src/file-browser/adapters/FileSystemBridge.d.ts
|
|
725
|
+
interface ScanProgress {
|
|
726
|
+
directoriesScanned: number;
|
|
727
|
+
filesFound: number;
|
|
728
|
+
totalSize: number;
|
|
729
|
+
}
|
|
730
|
+
interface FileSystemItem {
|
|
731
|
+
id: string;
|
|
732
|
+
path: string;
|
|
733
|
+
name: string;
|
|
734
|
+
type: 'file' | 'directory';
|
|
735
|
+
size?: number;
|
|
736
|
+
modified?: Date;
|
|
737
|
+
isDirectory: boolean;
|
|
738
|
+
children?: FileSystemItem[];
|
|
739
|
+
}
|
|
740
|
+
declare class FileSystemBridge {
|
|
741
|
+
private fileSystem;
|
|
742
|
+
constructor(fileSystem: IFileSystem);
|
|
743
|
+
loadDirectoryTree(path: string): Promise<FileSystemItem[]>;
|
|
744
|
+
loadDirectoryContents(path: string): Promise<FileSystemItem[]>;
|
|
745
|
+
loadDirectoryRecursive(path: string, maxDepth?: number, onProgress?: (progress: ScanProgress) => void, _progress?: ScanProgress): Promise<FileSystemItem[]>;
|
|
746
|
+
readFile(path: string): Promise<Buffer | string>;
|
|
747
|
+
writeFile(path: string, content: Buffer | string): Promise<void>;
|
|
748
|
+
deleteItem(path: string, isDirectory: boolean): Promise<void>;
|
|
749
|
+
createDirectory(path: string): Promise<void>;
|
|
750
|
+
renameItem(oldPath: string, newPath: string): Promise<void>;
|
|
751
|
+
exists(path: string): Promise<boolean>;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
//#endregion
|
|
755
|
+
//#region src/file-browser/providers/FileSystemTreeProvider.d.ts
|
|
756
|
+
//# sourceMappingURL=FileSystemBridge.d.ts.map
|
|
757
|
+
interface FileSystemTreeProviderOptions {
|
|
758
|
+
showFilesInTree: boolean;
|
|
759
|
+
onSelectionChange: (path: string) => void;
|
|
760
|
+
onRefresh?: () => Promise<void>;
|
|
761
|
+
onRenameRequest?: (itemId: string, currentName: string, path: string, source: 'list' | 'tree') => void;
|
|
762
|
+
onDeleteRequest?: (targets: Array<{
|
|
763
|
+
path: string;
|
|
764
|
+
isDirectory: boolean;
|
|
765
|
+
name: string;
|
|
766
|
+
}>) => void;
|
|
767
|
+
onNewItemRequest?: (parentPath: string, type: 'file' | 'folder') => void;
|
|
768
|
+
}
|
|
769
|
+
declare class FileSystemTreeProvider implements TreeProvider {
|
|
770
|
+
private bridge;
|
|
771
|
+
private options;
|
|
772
|
+
readonly id = "filesystem-tree";
|
|
773
|
+
readonly name = "File System Tree";
|
|
774
|
+
readonly version = "1.0.0";
|
|
775
|
+
isMultiSelectEnabled: boolean;
|
|
776
|
+
readonly isDragDropEnabled = true;
|
|
777
|
+
readonly isVirtualizationEnabled = false;
|
|
778
|
+
readonly useCheckboxSelection = false;
|
|
779
|
+
readonly allowPartialSelection = false;
|
|
780
|
+
readonly isTableViewEnabled = false;
|
|
781
|
+
constructor(bridge: FileSystemBridge, options: FileSystemTreeProviderOptions);
|
|
782
|
+
loadNodes(options?: TreeLoadOptions): Promise<TreeLoadResult>;
|
|
783
|
+
loadChildren(node: TreeNodeData, options?: TreeLoadOptions): Promise<TreeLoadResult>;
|
|
784
|
+
refresh(path?: string): Promise<TreeLoadResult>;
|
|
785
|
+
getNodeContextMenu(node: TreeNodeData): TreeContextMenuItem[];
|
|
786
|
+
getMultiNodeContextMenu(nodes: TreeNodeData[]): TreeContextMenuItem[];
|
|
787
|
+
getEmptySpaceContextMenu(parentNode?: TreeNodeData): TreeContextMenuItem[];
|
|
788
|
+
canExpand(node: TreeNodeData): boolean;
|
|
789
|
+
canSelect(node: TreeNodeData): boolean;
|
|
790
|
+
onSelectionChange: (selectionInfo: TreeSelectionInfo) => void;
|
|
791
|
+
onNodeExpansion?(node: TreeNodeData, expanded: boolean): void;
|
|
792
|
+
onNodeDoubleClick?(node: TreeNodeData): void;
|
|
793
|
+
onNodeFocus?(node: TreeNodeData | null): void;
|
|
794
|
+
onContextMenuAction?(menuItemId: string, nodes: TreeNodeData[]): void;
|
|
795
|
+
private requestRename;
|
|
796
|
+
private requestDelete;
|
|
797
|
+
private requestNewItem;
|
|
798
|
+
executeRename(path: string, newName: string): Promise<void>;
|
|
799
|
+
executeDelete(targets: Array<{
|
|
800
|
+
path: string;
|
|
801
|
+
isDirectory: boolean;
|
|
802
|
+
}>): Promise<void>;
|
|
803
|
+
executeCreate(parentPath: string, name: string, type: 'file' | 'folder'): Promise<void>;
|
|
804
|
+
initialize?(): Promise<void>;
|
|
805
|
+
dispose?(): void;
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
//#endregion
|
|
809
|
+
//#region src/file-browser/providers/FileSystemListProvider.d.ts
|
|
810
|
+
interface FileSystemListProviderOptions {
|
|
811
|
+
showAllItems: boolean;
|
|
812
|
+
/** Service identifier for IndexedDB thumbnail cache key scoping */
|
|
813
|
+
serviceId?: string;
|
|
814
|
+
onSelectionChange: (items: ListItemData[]) => void;
|
|
815
|
+
onNavigation: (path: string) => void;
|
|
816
|
+
onNavigateUp?: () => void;
|
|
817
|
+
onOpenFile?: (path: string, name: string, size?: number) => void;
|
|
818
|
+
onPreviewFile?: (path: string, name: string, size?: number) => void;
|
|
819
|
+
onRefresh?: () => Promise<void>;
|
|
820
|
+
onRenameRequest?: (itemId: string, currentName: string, path: string, source: 'list' | 'tree') => void;
|
|
821
|
+
onDeleteRequest?: (targets: Array<{
|
|
822
|
+
path: string;
|
|
823
|
+
isDirectory: boolean;
|
|
824
|
+
name: string;
|
|
825
|
+
}>) => void;
|
|
826
|
+
onNewItemRequest?: (parentPath: string, type: 'file' | 'folder') => void;
|
|
827
|
+
}
|
|
828
|
+
declare class FileSystemListProvider implements ListItemsProvider {
|
|
829
|
+
private bridge;
|
|
830
|
+
private options;
|
|
831
|
+
readonly id = "filesystem-list";
|
|
832
|
+
readonly name = "File System List";
|
|
833
|
+
readonly supportedViewTypes: ListViewType[];
|
|
834
|
+
readonly isMultiSelectEnabled = true;
|
|
835
|
+
readonly isVirtualizationEnabled = false;
|
|
836
|
+
readonly isDragDropEnabled = true;
|
|
837
|
+
currentPath: string;
|
|
838
|
+
private listeners;
|
|
839
|
+
thumbnailCache: mobx31.ObservableMap<string, string>;
|
|
840
|
+
aspectRatioCache: mobx32.ObservableMap<string, number>;
|
|
841
|
+
private thumbnailLoading;
|
|
842
|
+
constructor(bridge: FileSystemBridge, options: FileSystemListProviderOptions);
|
|
843
|
+
/**
|
|
844
|
+
* Get a cached thumbnail blob URL, or trigger async load if not cached.
|
|
845
|
+
* Returns undefined while loading (MobX will re-render when cache updates).
|
|
846
|
+
*/
|
|
847
|
+
getThumbnailBlobUrl(path: string): string | undefined;
|
|
848
|
+
private loadThumbnail;
|
|
849
|
+
/**
|
|
850
|
+
* Get cached aspect ratio for an image path.
|
|
851
|
+
* Returns undefined if not yet measured.
|
|
852
|
+
*/
|
|
853
|
+
getAspectRatio(path: string): number | undefined;
|
|
854
|
+
/**
|
|
855
|
+
* Revoke all cached blob URLs (call on path change / unmount)
|
|
856
|
+
*/
|
|
857
|
+
clearThumbnailCache(): void;
|
|
858
|
+
setPath(path: string): void;
|
|
859
|
+
loadItems(options?: ListLoadOptions): Promise<ListLoadResult>;
|
|
860
|
+
getItemCount(): Promise<number>;
|
|
861
|
+
loadItemRange(start: number, end: number): Promise<ListLoadResult>;
|
|
862
|
+
refresh(): Promise<ListLoadResult>;
|
|
863
|
+
getItemHeight(viewType: ListViewType): number;
|
|
864
|
+
getItemWidth(viewType: ListViewType): number;
|
|
865
|
+
getVirtualizationConfig(): VirtualizationConfig;
|
|
866
|
+
onSelectionChange: (selectionInfo: ListSelectionInfo) => void;
|
|
867
|
+
onViewTypeChange?(viewType: ListViewType): void;
|
|
868
|
+
loadTreemapData(onProgress?: (progress: TreemapScanProgress) => void): Promise<TreemapNodeData[]>;
|
|
869
|
+
onItemDoubleClick: (item: ListItemData) => void;
|
|
870
|
+
addListener(listener: ListItemsProviderListener): void;
|
|
871
|
+
removeListener(listener: ListItemsProviderListener): void;
|
|
872
|
+
getItemIcon(item: ListItemData): string;
|
|
873
|
+
getItemContextMenu(item: ListItemData): ListContextMenuItem[];
|
|
874
|
+
getEmptySpaceContextMenu(): ListContextMenuItem[];
|
|
875
|
+
getMultiItemContextMenu(items: ListItemData[]): ListContextMenuItem[];
|
|
876
|
+
onContextMenuAction: (menuItemId: string, items: ListItemData[]) => void;
|
|
877
|
+
canDragItem?(item: ListItemData): boolean;
|
|
878
|
+
canDropItems?(draggedItems: ListItemData[], targetItem: ListItemData | null, position: 'before' | 'after' | 'inside'): boolean;
|
|
879
|
+
onDragStart?(draggedItems: ListItemData[], event: DragEvent): void;
|
|
880
|
+
onDrop?(dragDropInfo: ListDragDropInfo): void;
|
|
881
|
+
onDragEnd?(draggedItems: ListItemData[], success: boolean): void;
|
|
882
|
+
resolveThumbnailUrl(item: ListItemData): string | undefined;
|
|
883
|
+
private getThumbnailUrl;
|
|
884
|
+
private getFileIconString;
|
|
885
|
+
private isImageFile;
|
|
886
|
+
private openFileWithViewer;
|
|
887
|
+
private copyPaths;
|
|
888
|
+
private downloadFile;
|
|
889
|
+
private requestRename;
|
|
890
|
+
private requestDelete;
|
|
891
|
+
private requestNewItem;
|
|
892
|
+
executeRename(path: string, newName: string): Promise<void>;
|
|
893
|
+
executeDelete(targets: Array<{
|
|
894
|
+
path: string;
|
|
895
|
+
isDirectory: boolean;
|
|
896
|
+
}>): Promise<void>;
|
|
897
|
+
executeCreate(parentPath: string, name: string, type: 'file' | 'folder'): Promise<void>;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
//#endregion
|
|
901
|
+
//#region src/file-browser/registry/types.d.ts
|
|
902
|
+
/**
|
|
903
|
+
* Plugin interface for file viewers.
|
|
904
|
+
* Extends the simple ViewerConfig with richer matching, lazy loading, and toolbar support.
|
|
905
|
+
*/
|
|
906
|
+
interface FileViewerPlugin {
|
|
907
|
+
/** Unique plugin ID, e.g., 'pdf-viewer', 'monaco-editor' */
|
|
908
|
+
id: string;
|
|
909
|
+
/** Human-readable name shown in "Open with..." menu */
|
|
910
|
+
name: string;
|
|
911
|
+
/** Optional description for UI tooltips */
|
|
912
|
+
description?: string;
|
|
913
|
+
/** Plugin capabilities */
|
|
914
|
+
capabilities: {
|
|
915
|
+
/** Can this plugin edit files (enables save flow)? */
|
|
916
|
+
canEdit?: boolean;
|
|
917
|
+
/** Can this plugin render in the inline preview pane (smaller viewport)? */
|
|
918
|
+
canPreview?: boolean;
|
|
919
|
+
/** Can this plugin render full-screen (the main viewer mode)? */
|
|
920
|
+
canFullscreen?: boolean;
|
|
921
|
+
};
|
|
922
|
+
/** File extensions this plugin handles (without dots), e.g., ['pdf', 'epub'] */
|
|
923
|
+
extensions?: string[];
|
|
924
|
+
/** MIME types this plugin handles, e.g., ['application/pdf'] */
|
|
925
|
+
mimeTypes?: string[];
|
|
926
|
+
/** Glob patterns for filenames, e.g., ['Dockerfile', 'Makefile', '.env*'] */
|
|
927
|
+
filePatterns?: string[];
|
|
928
|
+
/**
|
|
929
|
+
* Advanced match function for content-sniffing or complex logic.
|
|
930
|
+
* Called only if extension/MIME/pattern matching passes or if no
|
|
931
|
+
* static matchers are defined.
|
|
932
|
+
* Return a confidence score 0-100 (0 = cannot handle, 100 = perfect match).
|
|
933
|
+
*/
|
|
934
|
+
canHandle?: (file: FileMatchContext) => number;
|
|
935
|
+
/**
|
|
936
|
+
* Priority (higher = preferred). Default: 0.
|
|
937
|
+
* Built-in viewers use 10-20. Third-party plugins should use 50+
|
|
938
|
+
* to override built-in viewers, or negative to serve as fallbacks.
|
|
939
|
+
*/
|
|
940
|
+
priority?: number;
|
|
941
|
+
/**
|
|
942
|
+
* The viewer React component. Can be a concrete component or a lazy loader.
|
|
943
|
+
* When undefined, `load()` must be provided.
|
|
944
|
+
*/
|
|
945
|
+
component?: React$1.ComponentType<ViewerProps>;
|
|
946
|
+
/**
|
|
947
|
+
* Dynamic loader that returns the viewer component.
|
|
948
|
+
* Used for code-splitting. The registry wraps this in React.lazy().
|
|
949
|
+
*/
|
|
950
|
+
load?: () => Promise<{
|
|
951
|
+
default: React$1.ComponentType<ViewerProps>;
|
|
952
|
+
}>;
|
|
953
|
+
/** If true, this plugin is used as the fallback for unrecognized file types */
|
|
954
|
+
isDefault?: boolean;
|
|
955
|
+
/**
|
|
956
|
+
* Declarative toolbar actions rendered by the ViewerHost.
|
|
957
|
+
* For dynamic toolbar items, plugins should use the `onToolbarExtras`
|
|
958
|
+
* callback on ViewerProps (already supported).
|
|
959
|
+
*/
|
|
960
|
+
toolbarActions?: ToolbarAction$1[];
|
|
961
|
+
/**
|
|
962
|
+
* Keyboard shortcuts the plugin handles.
|
|
963
|
+
* The ViewerHost binds these when the plugin is active.
|
|
964
|
+
*/
|
|
965
|
+
keyboardShortcuts?: KeyboardShortcut[];
|
|
966
|
+
}
|
|
967
|
+
/** Context passed to canHandle() and resolveViewer() for file matching */
|
|
968
|
+
interface FileMatchContext {
|
|
969
|
+
/** Filename including extension */
|
|
970
|
+
name: string;
|
|
971
|
+
/** Full path */
|
|
972
|
+
path: string;
|
|
973
|
+
/** File extension without dot, lowercase */
|
|
974
|
+
extension: string;
|
|
975
|
+
/** MIME type if known */
|
|
976
|
+
mimeType?: string;
|
|
977
|
+
/** File size in bytes */
|
|
978
|
+
size?: number;
|
|
979
|
+
/**
|
|
980
|
+
* First bytes of content (for magic-number sniffing).
|
|
981
|
+
* Only available if the registry is configured to pre-read headers.
|
|
982
|
+
* Typically 512 bytes.
|
|
983
|
+
*/
|
|
984
|
+
headerBytes?: ArrayBuffer;
|
|
985
|
+
}
|
|
986
|
+
/** Declarative toolbar action for ViewerHost */
|
|
987
|
+
interface ToolbarAction$1 {
|
|
988
|
+
id: string;
|
|
989
|
+
label: string;
|
|
990
|
+
icon?: React$1.ComponentType<{
|
|
991
|
+
className?: string;
|
|
992
|
+
}>;
|
|
993
|
+
/** Called when the action is triggered */
|
|
994
|
+
onClick: () => void;
|
|
995
|
+
/** Whether the action is currently enabled */
|
|
996
|
+
enabled?: boolean | (() => boolean);
|
|
997
|
+
/** Keyboard shortcut label for tooltip, e.g., "Ctrl+S" */
|
|
998
|
+
shortcutLabel?: string;
|
|
999
|
+
/** Position: 'left' | 'right'. Default: 'right' */
|
|
1000
|
+
position?: 'left' | 'right';
|
|
1001
|
+
}
|
|
1002
|
+
/** Keyboard shortcut binding for ViewerHost */
|
|
1003
|
+
interface KeyboardShortcut {
|
|
1004
|
+
/** Key combination, e.g., 'ctrl+s', 'escape', 'ctrl+shift+p' */
|
|
1005
|
+
key: string;
|
|
1006
|
+
/** Handler */
|
|
1007
|
+
handler: () => void;
|
|
1008
|
+
/** Only active when the viewer has focus? Default: true */
|
|
1009
|
+
requireFocus?: boolean;
|
|
1010
|
+
}
|
|
1011
|
+
/** Result of resolving a viewer for a file */
|
|
1012
|
+
interface ResolvedViewer {
|
|
1013
|
+
/** The matched plugin */
|
|
1014
|
+
plugin: FileViewerPlugin;
|
|
1015
|
+
/** The React component to render (resolved from component or load via React.lazy) */
|
|
1016
|
+
Component: React$1.ComponentType<ViewerProps>;
|
|
1017
|
+
/** Match confidence score. Extension match = 80, MIME = 70, pattern = 60, canHandle = dynamic */
|
|
1018
|
+
confidence: number;
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
//#endregion
|
|
1022
|
+
//#region src/file-browser/registry/ViewerRegistry.d.ts
|
|
1023
|
+
//# sourceMappingURL=types.d.ts.map
|
|
1024
|
+
interface ViewerConfig {
|
|
1025
|
+
id: string;
|
|
1026
|
+
name: string;
|
|
1027
|
+
description?: string;
|
|
1028
|
+
extensions: string[];
|
|
1029
|
+
component: React$1.ComponentType<ViewerProps>;
|
|
1030
|
+
priority?: number;
|
|
1031
|
+
canEdit?: boolean;
|
|
1032
|
+
isDefault?: boolean;
|
|
1033
|
+
}
|
|
1034
|
+
interface ViewerProps {
|
|
1035
|
+
file: {
|
|
1036
|
+
path: string;
|
|
1037
|
+
name: string;
|
|
1038
|
+
content?: string | ArrayBuffer;
|
|
1039
|
+
size?: number;
|
|
1040
|
+
mimeType?: string;
|
|
1041
|
+
};
|
|
1042
|
+
onClose?: () => void;
|
|
1043
|
+
onSave?: (content: string | ArrayBuffer) => Promise<void>;
|
|
1044
|
+
className?: string;
|
|
1045
|
+
readOnly?: boolean;
|
|
1046
|
+
/** Callback for viewer to register toolbar controls rendered in parent toolbar */
|
|
1047
|
+
onToolbarExtras?: (extras: React$1.ReactNode) => void;
|
|
1048
|
+
/**
|
|
1049
|
+
* Called by the plugin when the content becomes dirty (modified).
|
|
1050
|
+
* The host uses this to show unsaved-changes indicators and
|
|
1051
|
+
* to prompt before closing.
|
|
1052
|
+
*/
|
|
1053
|
+
onDirtyChange?: (isDirty: boolean) => void;
|
|
1054
|
+
/**
|
|
1055
|
+
* Whether to render in compact/preview mode (inside the preview pane)
|
|
1056
|
+
* vs full mode (inside the main viewer area).
|
|
1057
|
+
* Plugins can adjust their layout based on this.
|
|
1058
|
+
*/
|
|
1059
|
+
mode?: 'preview' | 'full';
|
|
1060
|
+
/**
|
|
1061
|
+
* Content fetcher for streaming/on-demand loading.
|
|
1062
|
+
* Plugins that handle large files (PDF, video) can use this
|
|
1063
|
+
* instead of receiving the full content upfront.
|
|
1064
|
+
*/
|
|
1065
|
+
fetchContent?: () => Promise<string | ArrayBuffer>;
|
|
1066
|
+
/**
|
|
1067
|
+
* URL for the file if it can be accessed directly (e.g., S3 presigned URL).
|
|
1068
|
+
* Useful for media players that need a URL, not a buffer.
|
|
1069
|
+
*/
|
|
1070
|
+
contentUrl?: string;
|
|
1071
|
+
}
|
|
1072
|
+
declare function viewerConfigToPlugin(config: ViewerConfig): FileViewerPlugin;
|
|
1073
|
+
declare class ViewerRegistry {
|
|
1074
|
+
private viewers;
|
|
1075
|
+
private extensionMap;
|
|
1076
|
+
private plugins;
|
|
1077
|
+
private extensionIndex;
|
|
1078
|
+
private mimeTypeIndex;
|
|
1079
|
+
private patternPlugins;
|
|
1080
|
+
/**
|
|
1081
|
+
* Register a plugin. Replaces any existing plugin with the same ID.
|
|
1082
|
+
*/
|
|
1083
|
+
registerPlugin(plugin: FileViewerPlugin): void;
|
|
1084
|
+
/**
|
|
1085
|
+
* Unregister a plugin by ID.
|
|
1086
|
+
*/
|
|
1087
|
+
unregisterPlugin(pluginId: string): void;
|
|
1088
|
+
/**
|
|
1089
|
+
* Find the best viewer for a given file.
|
|
1090
|
+
*
|
|
1091
|
+
* Matching order with scoring:
|
|
1092
|
+
* 1. Extension match (bonus: 80)
|
|
1093
|
+
* 2. MIME type match (bonus: 70)
|
|
1094
|
+
* 3. Filename pattern match (bonus: 60)
|
|
1095
|
+
* 4. canHandle() callback (bonus: canHandle return value 0-100)
|
|
1096
|
+
* 5. Default plugin (isDefault: true, bonus: 0)
|
|
1097
|
+
*
|
|
1098
|
+
* Final score = matchTypeBonus + plugin.priority + canHandle score (if applicable)
|
|
1099
|
+
*/
|
|
1100
|
+
resolveViewer(file: FileMatchContext, options?: {
|
|
1101
|
+
preferEditable?: boolean;
|
|
1102
|
+
}): ResolvedViewer | null;
|
|
1103
|
+
/**
|
|
1104
|
+
* Find ALL viewers that can handle a file, sorted by score (descending).
|
|
1105
|
+
* Used for "Open with..." menu.
|
|
1106
|
+
*/
|
|
1107
|
+
resolveAllViewers(file: FileMatchContext): ResolvedViewer[];
|
|
1108
|
+
/**
|
|
1109
|
+
* Get a plugin by ID.
|
|
1110
|
+
*/
|
|
1111
|
+
getPluginById(pluginId: string): FileViewerPlugin | null;
|
|
1112
|
+
/**
|
|
1113
|
+
* Get all registered plugins.
|
|
1114
|
+
*/
|
|
1115
|
+
getAllPlugins(): FileViewerPlugin[];
|
|
1116
|
+
/**
|
|
1117
|
+
* Build a FileMatchContext from a filename (convenience helper).
|
|
1118
|
+
*/
|
|
1119
|
+
buildFileMatchContext(filename: string, opts?: {
|
|
1120
|
+
path?: string;
|
|
1121
|
+
mimeType?: string;
|
|
1122
|
+
size?: number;
|
|
1123
|
+
}): FileMatchContext;
|
|
1124
|
+
registerViewer(config: ViewerConfig): void;
|
|
1125
|
+
unregisterViewer(viewerId: string): void;
|
|
1126
|
+
getViewer(filename: string, preferEditable?: boolean): ViewerConfig | null;
|
|
1127
|
+
getViewers(filename: string): ViewerConfig[];
|
|
1128
|
+
canHandle(filename: string): boolean;
|
|
1129
|
+
getAllViewers(): ViewerConfig[];
|
|
1130
|
+
getViewerById(id: string): ViewerConfig | null;
|
|
1131
|
+
getFileCategory(filename: string): string;
|
|
1132
|
+
private extractExtension;
|
|
1133
|
+
private getDefaultViewer;
|
|
1134
|
+
/**
|
|
1135
|
+
* Find all candidate viewers for a file, scored and sorted descending.
|
|
1136
|
+
*/
|
|
1137
|
+
private findCandidates;
|
|
1138
|
+
/**
|
|
1139
|
+
* Rebuild plugin indexes from the plugin map.
|
|
1140
|
+
*/
|
|
1141
|
+
private rebuildIndexes;
|
|
1142
|
+
/**
|
|
1143
|
+
* Sync a plugin into the legacy viewers/extensionMap storage.
|
|
1144
|
+
*/
|
|
1145
|
+
private syncPluginToLegacy;
|
|
1146
|
+
/**
|
|
1147
|
+
* Remove a plugin from legacy storage.
|
|
1148
|
+
*/
|
|
1149
|
+
private removeLegacy;
|
|
1150
|
+
}
|
|
1151
|
+
declare const globalViewerRegistry: ViewerRegistry;
|
|
1152
|
+
|
|
1153
|
+
//#endregion
|
|
1154
|
+
//#region src/file-browser/models/UploadModel.d.ts
|
|
1155
|
+
//# sourceMappingURL=ViewerRegistry.d.ts.map
|
|
1156
|
+
interface UploadFileEntry {
|
|
1157
|
+
/** Original File object from the browser */
|
|
1158
|
+
file: File;
|
|
1159
|
+
/** Target path on the file system */
|
|
1160
|
+
targetPath: string;
|
|
1161
|
+
/** Upload progress 0-100 */
|
|
1162
|
+
progress: number;
|
|
1163
|
+
/** Status of this individual file */
|
|
1164
|
+
status: 'pending' | 'uploading' | 'done' | 'error';
|
|
1165
|
+
/** Error message if status is 'error' */
|
|
1166
|
+
error?: string;
|
|
1167
|
+
}
|
|
1168
|
+
declare class UploadModel {
|
|
1169
|
+
private bridge;
|
|
1170
|
+
/** Files currently being uploaded or queued */
|
|
1171
|
+
files: UploadFileEntry[];
|
|
1172
|
+
/** Overall upload state */
|
|
1173
|
+
isUploading: boolean;
|
|
1174
|
+
/** Number of completed uploads in the current batch */
|
|
1175
|
+
completedCount: number;
|
|
1176
|
+
/** Whether the upload summary toast is visible */
|
|
1177
|
+
showSummary: boolean;
|
|
1178
|
+
/** Last batch summary */
|
|
1179
|
+
lastSummary: {
|
|
1180
|
+
total: number;
|
|
1181
|
+
succeeded: number;
|
|
1182
|
+
failed: number;
|
|
1183
|
+
} | null;
|
|
1184
|
+
private notify;
|
|
1185
|
+
constructor(bridge: FileSystemBridge, notify?: (type: 'success' | 'error' | 'warning', message: string) => void);
|
|
1186
|
+
/** Total number of files in the current batch */
|
|
1187
|
+
get totalCount(): number;
|
|
1188
|
+
/** Overall progress across all files (0-100) */
|
|
1189
|
+
get overallProgress(): number;
|
|
1190
|
+
/** Number of files that failed */
|
|
1191
|
+
get failedCount(): number;
|
|
1192
|
+
/** Whether there are any active uploads */
|
|
1193
|
+
get hasActiveUploads(): boolean;
|
|
1194
|
+
/**
|
|
1195
|
+
* Upload multiple files to a target directory.
|
|
1196
|
+
* Uses MobX flow for proper async tracking.
|
|
1197
|
+
*/
|
|
1198
|
+
uploadFiles: (fileList: FileList | File[], targetDirectory: string) => mobx_dist_internal26.CancellablePromise<void>;
|
|
1199
|
+
/** Clear the file list and summary */
|
|
1200
|
+
clear(): void;
|
|
1201
|
+
/** Dismiss the summary toast */
|
|
1202
|
+
dismissSummary(): void;
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
//#endregion
|
|
1206
|
+
//#region src/file-browser/models/FileBrowserModel.d.ts
|
|
1207
|
+
//# sourceMappingURL=UploadModel.d.ts.map
|
|
1208
|
+
interface OpenFileState {
|
|
1209
|
+
path: string;
|
|
1210
|
+
name: string;
|
|
1211
|
+
content?: string | ArrayBuffer;
|
|
1212
|
+
size?: number;
|
|
1213
|
+
mimeType?: string;
|
|
1214
|
+
viewer: ViewerConfig;
|
|
1215
|
+
}
|
|
1216
|
+
interface PreviewFileState {
|
|
1217
|
+
path: string;
|
|
1218
|
+
name: string;
|
|
1219
|
+
content?: string | ArrayBuffer;
|
|
1220
|
+
size?: number;
|
|
1221
|
+
mimeType?: string;
|
|
1222
|
+
viewer: ViewerConfig;
|
|
1223
|
+
isLoading: boolean;
|
|
1224
|
+
}
|
|
1225
|
+
declare class FileBrowserModel {
|
|
1226
|
+
fileSystem: IFileSystem;
|
|
1227
|
+
fileSystemBridge: FileSystemBridge;
|
|
1228
|
+
treeProvider: FileSystemTreeProvider;
|
|
1229
|
+
listProvider: FileSystemListProvider;
|
|
1230
|
+
treeModel: TreeModel;
|
|
1231
|
+
listModel: ListItemsModel;
|
|
1232
|
+
uploadModel: UploadModel;
|
|
1233
|
+
currentPath: string;
|
|
1234
|
+
selectedPath: string | null;
|
|
1235
|
+
isLoading: boolean;
|
|
1236
|
+
error: string | null;
|
|
1237
|
+
onPathChange?: (path: string) => void;
|
|
1238
|
+
onNotify?: (type: 'success' | 'error' | 'warning', message: string) => void;
|
|
1239
|
+
/** Structured action callback with undo support */
|
|
1240
|
+
onAction?: (action: {
|
|
1241
|
+
type: 'create' | 'rename' | 'delete' | 'upload';
|
|
1242
|
+
message: string;
|
|
1243
|
+
undo?: () => Promise<void>;
|
|
1244
|
+
}) => void;
|
|
1245
|
+
openFile: OpenFileState | null;
|
|
1246
|
+
isLoadingFile: boolean;
|
|
1247
|
+
previewEnabled: boolean;
|
|
1248
|
+
previewFile: PreviewFileState | null;
|
|
1249
|
+
renameState: {
|
|
1250
|
+
itemId: string;
|
|
1251
|
+
currentName: string;
|
|
1252
|
+
path: string;
|
|
1253
|
+
source: 'list' | 'tree';
|
|
1254
|
+
} | null;
|
|
1255
|
+
deleteState: {
|
|
1256
|
+
targets: Array<{
|
|
1257
|
+
path: string;
|
|
1258
|
+
isDirectory: boolean;
|
|
1259
|
+
name: string;
|
|
1260
|
+
}>;
|
|
1261
|
+
} | null;
|
|
1262
|
+
createState: {
|
|
1263
|
+
parentPath: string;
|
|
1264
|
+
type: 'file' | 'folder';
|
|
1265
|
+
} | null;
|
|
1266
|
+
constructor(fileSystem: IFileSystem);
|
|
1267
|
+
private notify;
|
|
1268
|
+
setInitialPath(path: string): Promise<void>;
|
|
1269
|
+
handleTreeSelection: (path: string) => Promise<void>;
|
|
1270
|
+
handleListNavigation: (path: string) => Promise<void>;
|
|
1271
|
+
handleListSelection: (selectedItems: ListItemData[]) => void;
|
|
1272
|
+
private selectPathInTree;
|
|
1273
|
+
private findNodeByPath;
|
|
1274
|
+
navigateUp(): Promise<void>;
|
|
1275
|
+
navigateToPath(path: string): Promise<void>;
|
|
1276
|
+
refresh(): Promise<void>;
|
|
1277
|
+
navigateToBreadcrumb(path: string): Promise<void>;
|
|
1278
|
+
get canNavigateUp(): boolean;
|
|
1279
|
+
get pathSegments(): Array<{
|
|
1280
|
+
name: string;
|
|
1281
|
+
path: string;
|
|
1282
|
+
}>;
|
|
1283
|
+
get isTreeLoading(): boolean;
|
|
1284
|
+
get isListLoading(): boolean;
|
|
1285
|
+
get hasTreeNodes(): boolean;
|
|
1286
|
+
get hasListItems(): boolean;
|
|
1287
|
+
get hasError(): boolean;
|
|
1288
|
+
get hasItems(): boolean;
|
|
1289
|
+
get itemsArray(): ListItemData[];
|
|
1290
|
+
refreshItems(): Promise<void>;
|
|
1291
|
+
clearError(): void;
|
|
1292
|
+
setCurrentPath(path: string): Promise<void>;
|
|
1293
|
+
private static readonly BINARY_EXTENSIONS;
|
|
1294
|
+
private static readonly MIME_TYPES;
|
|
1295
|
+
openFileViewer(path: string, name: string, size?: number): Promise<void>;
|
|
1296
|
+
get viewableFiles(): Array<{
|
|
1297
|
+
path: string;
|
|
1298
|
+
name: string;
|
|
1299
|
+
size?: number;
|
|
1300
|
+
}>;
|
|
1301
|
+
get currentFileIndex(): number;
|
|
1302
|
+
get canNavigateNext(): boolean;
|
|
1303
|
+
get canNavigatePrev(): boolean;
|
|
1304
|
+
navigateToNextFile(): Promise<void>;
|
|
1305
|
+
navigateToPrevFile(): Promise<void>;
|
|
1306
|
+
closeFileViewer(): void;
|
|
1307
|
+
togglePreview(): void;
|
|
1308
|
+
loadPreviewFile(path: string, name: string, size?: number): Promise<void>;
|
|
1309
|
+
clearPreview(): void;
|
|
1310
|
+
uploadFiles(files: FileList | File[]): Promise<void>;
|
|
1311
|
+
triggerFileUpload(): void;
|
|
1312
|
+
requestRename(itemId: string, currentName: string, path: string, source?: 'list' | 'tree'): void;
|
|
1313
|
+
confirmRename(newName: string): Promise<void>;
|
|
1314
|
+
cancelRename(): void;
|
|
1315
|
+
requestDelete(targets: Array<{
|
|
1316
|
+
path: string;
|
|
1317
|
+
isDirectory: boolean;
|
|
1318
|
+
name: string;
|
|
1319
|
+
}>): void;
|
|
1320
|
+
confirmDelete(): Promise<void>;
|
|
1321
|
+
cancelDelete(): void;
|
|
1322
|
+
requestCreate(parentPath: string, type: 'file' | 'folder'): void;
|
|
1323
|
+
confirmCreate(name: string): Promise<void>;
|
|
1324
|
+
cancelCreate(): void;
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
//#endregion
|
|
1328
|
+
//#region src/file-browser/models/ViewerHostModel.d.ts
|
|
1329
|
+
//# sourceMappingURL=FileBrowserModel.d.ts.map
|
|
1330
|
+
/**
|
|
1331
|
+
* MobX model for ViewerHost component state.
|
|
1332
|
+
* Manages the transient UI state for a specific viewer session:
|
|
1333
|
+
* dirty tracking, toolbar extras from the plugin, and loading state.
|
|
1334
|
+
*/
|
|
1335
|
+
declare class ViewerHostModel {
|
|
1336
|
+
isDirty: boolean;
|
|
1337
|
+
isLoading: boolean;
|
|
1338
|
+
error: string | null;
|
|
1339
|
+
toolbarExtras: React$1.ReactNode;
|
|
1340
|
+
constructor();
|
|
1341
|
+
setDirty(dirty: boolean): void;
|
|
1342
|
+
setToolbarExtras(extras: React$1.ReactNode): void;
|
|
1343
|
+
setLoading(loading: boolean): void;
|
|
1344
|
+
setError(error: string | null): void;
|
|
1345
|
+
reset(): void;
|
|
1346
|
+
}
|
|
1347
|
+
|
|
1348
|
+
//#endregion
|
|
1349
|
+
//#region src/file-browser/models/SelectionManagerModel.d.ts
|
|
1350
|
+
//# sourceMappingURL=ViewerHostModel.d.ts.map
|
|
1351
|
+
interface SelectionOwner {
|
|
1352
|
+
logger?: {
|
|
1353
|
+
info: (message: string) => void;
|
|
1354
|
+
} | null;
|
|
1355
|
+
leftPanel?: any;
|
|
1356
|
+
rightPanel?: any;
|
|
1357
|
+
navigationManager?: any;
|
|
1358
|
+
}
|
|
1359
|
+
declare class SelectionManagerModel {
|
|
1360
|
+
selectedItems: mobx29.ObservableMap<string, boolean>;
|
|
1361
|
+
lastSelectedIndex: number;
|
|
1362
|
+
focusedItem: FileBrowserItem | null;
|
|
1363
|
+
isUpdatingFromPanels: boolean;
|
|
1364
|
+
private owner;
|
|
1365
|
+
private disposers;
|
|
1366
|
+
constructor(owner: SelectionOwner);
|
|
1367
|
+
get selectedItemsArray(): string[];
|
|
1368
|
+
get hasSelection(): boolean;
|
|
1369
|
+
get selectionCount(): number;
|
|
1370
|
+
get isMultipleSelection(): boolean;
|
|
1371
|
+
isSelected: (itemId: string) => boolean;
|
|
1372
|
+
selectItem: (itemId: string, multiSelect?: boolean) => void;
|
|
1373
|
+
deselectItem: (itemId: string) => void;
|
|
1374
|
+
toggleSelection: (itemId: string, multiSelect?: boolean) => void;
|
|
1375
|
+
selectRange: (startItemId: string, endItemId: string, allItems: FileBrowserItem[]) => void;
|
|
1376
|
+
selectAll: (items: FileBrowserItem[]) => void;
|
|
1377
|
+
clearSelection: () => void;
|
|
1378
|
+
invertSelection: (allItems: FileBrowserItem[]) => void;
|
|
1379
|
+
getSelectedItems: (allItems: FileBrowserItem[]) => FileBrowserItem[];
|
|
1380
|
+
setFocusedItem: (item: FileBrowserItem | null) => void;
|
|
1381
|
+
private coordinateSelection;
|
|
1382
|
+
private setupCoordinationReactions;
|
|
1383
|
+
selectFromTreePanel: (item: FileBrowserItem) => void;
|
|
1384
|
+
selectFromRightPanel: (item: FileBrowserItem) => void;
|
|
1385
|
+
selectFromNavigation: (path: string, allItems: FileBrowserItem[]) => void;
|
|
1386
|
+
dispose: () => void;
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
//#endregion
|
|
1390
|
+
//#region src/file-browser/models/NavigationManagerModel.d.ts
|
|
1391
|
+
interface NavigationOwner {
|
|
1392
|
+
logger?: {
|
|
1393
|
+
info: (message: string) => void;
|
|
1394
|
+
} | null;
|
|
1395
|
+
leftPanel?: any;
|
|
1396
|
+
rightPanel?: any;
|
|
1397
|
+
selectionManager?: any;
|
|
1398
|
+
}
|
|
1399
|
+
declare class NavigationManagerModel {
|
|
1400
|
+
history: string[];
|
|
1401
|
+
historyIndex: number;
|
|
1402
|
+
isUpdatingFromPanels: boolean;
|
|
1403
|
+
private owner;
|
|
1404
|
+
private disposers;
|
|
1405
|
+
constructor(owner: NavigationOwner);
|
|
1406
|
+
get canGoBack(): boolean;
|
|
1407
|
+
get canGoForward(): boolean;
|
|
1408
|
+
get currentPath(): string;
|
|
1409
|
+
get previousPath(): string | null;
|
|
1410
|
+
get nextPath(): string | null;
|
|
1411
|
+
addToHistory: (path: string) => void;
|
|
1412
|
+
goBack: () => string | null;
|
|
1413
|
+
goForward: () => string | null;
|
|
1414
|
+
goToParent: (currentPath: string) => string | null;
|
|
1415
|
+
clearHistory: () => void;
|
|
1416
|
+
setCurrentPath: (path: string) => void;
|
|
1417
|
+
navigateTo: (path: string) => void;
|
|
1418
|
+
normalizePath: (path: string) => string;
|
|
1419
|
+
getParentPath: (path: string) => string | null;
|
|
1420
|
+
getPathSegments: (path: string) => string[];
|
|
1421
|
+
joinPaths: (...paths: string[]) => string;
|
|
1422
|
+
private setupCoordinationReactions;
|
|
1423
|
+
private coordinateNavigation;
|
|
1424
|
+
navigateFromTreePanel: (path: string) => void;
|
|
1425
|
+
navigateFromRightPanel: (path: string) => void;
|
|
1426
|
+
navigateFromBreadcrumb: (path: string) => void;
|
|
1427
|
+
navigateToWithCoordination: (path: string, source?: "tree" | "right" | "breadcrumb" | "history") => void;
|
|
1428
|
+
setSelectionManager: (selectionManager: any) => void;
|
|
1429
|
+
dispose: () => void;
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
//#endregion
|
|
1433
|
+
//#region src/file-browser/types/ProviderTypes.d.ts
|
|
1434
|
+
interface IFileBrowserProvider {
|
|
1435
|
+
readonly id: string;
|
|
1436
|
+
readonly name: string;
|
|
1437
|
+
readonly version: string;
|
|
1438
|
+
loadItems(path: string): Promise<FileBrowserItem[]>;
|
|
1439
|
+
loadItemDetails(item: FileBrowserItem): Promise<FileBrowserItemDetails>;
|
|
1440
|
+
refreshItems(path: string): Promise<FileBrowserItem[]>;
|
|
1441
|
+
normalizePath(path: string): string;
|
|
1442
|
+
getParentPath(path: string): string | null;
|
|
1443
|
+
resolvePath(basePath: string, relativePath: string): string;
|
|
1444
|
+
getSupportedViewModes(): ViewModeDefinition$1[];
|
|
1445
|
+
getToolbarActions(): ToolbarAction[];
|
|
1446
|
+
getContextMenuActions(item: FileBrowserItem): ContextAction[];
|
|
1447
|
+
getDefaultViewMode(): string;
|
|
1448
|
+
canPerformAction(action: string, items: FileBrowserItem[]): boolean;
|
|
1449
|
+
performAction(action: string, items: FileBrowserItem[]): Promise<ActionResult>;
|
|
1450
|
+
getItemIcon(item: FileBrowserItem): IconDefinition;
|
|
1451
|
+
getItemPreview(item: FileBrowserItem): Promise<PreviewData | null>;
|
|
1452
|
+
getItemDisplayName(item: FileBrowserItem): string;
|
|
1453
|
+
getItemTooltip(item: FileBrowserItem): string;
|
|
1454
|
+
getAvailableFilters(): FilterDefinition[];
|
|
1455
|
+
getAvailableSortFields(): SortFieldDefinition[];
|
|
1456
|
+
applyFilter(items: FileBrowserItem[], criteria: any): FileBrowserItem[];
|
|
1457
|
+
applySort(items: FileBrowserItem[], field: string, direction: 'asc' | 'desc'): FileBrowserItem[];
|
|
1458
|
+
onItemsChanged(callback: (changes: ItemChange[]) => void): () => void;
|
|
1459
|
+
onError(callback: (error: Error) => void): () => void;
|
|
1460
|
+
initialize?(): Promise<void>;
|
|
1461
|
+
dispose?(): void;
|
|
1462
|
+
}
|
|
1463
|
+
interface ToolbarAction {
|
|
1464
|
+
id: string;
|
|
1465
|
+
label: string;
|
|
1466
|
+
icon: IconDefinition;
|
|
1467
|
+
tooltip?: string;
|
|
1468
|
+
category?: string;
|
|
1469
|
+
priority?: number;
|
|
1470
|
+
shortcut?: string;
|
|
1471
|
+
isVisible?: (context: ActionContext) => boolean;
|
|
1472
|
+
isEnabled?: (context: ActionContext) => boolean;
|
|
1473
|
+
isActive?: (context: ActionContext) => boolean;
|
|
1474
|
+
action: (context: ActionContext) => Promise<void> | void;
|
|
1475
|
+
variant?: 'default' | 'primary' | 'secondary' | 'destructive';
|
|
1476
|
+
size?: 'sm' | 'md' | 'lg';
|
|
1477
|
+
showLabel?: boolean;
|
|
1478
|
+
}
|
|
1479
|
+
interface ContextAction {
|
|
1480
|
+
id: string;
|
|
1481
|
+
label: string;
|
|
1482
|
+
icon?: IconDefinition;
|
|
1483
|
+
shortcut?: string;
|
|
1484
|
+
group?: string;
|
|
1485
|
+
separator?: boolean;
|
|
1486
|
+
isEnabled?: (context: ActionContext) => boolean;
|
|
1487
|
+
isVisible?: (context: ActionContext) => boolean;
|
|
1488
|
+
action: (context: ActionContext) => Promise<void> | void;
|
|
1489
|
+
submenu?: ContextAction[];
|
|
1490
|
+
}
|
|
1491
|
+
interface ActionContext {
|
|
1492
|
+
selectedItems: FileBrowserItem[];
|
|
1493
|
+
currentPath: string;
|
|
1494
|
+
provider: IFileBrowserProvider;
|
|
1495
|
+
viewMode: string;
|
|
1496
|
+
allItems: FileBrowserItem[];
|
|
1497
|
+
}
|
|
1498
|
+
interface ActionResult {
|
|
1499
|
+
success: boolean;
|
|
1500
|
+
message?: string;
|
|
1501
|
+
data?: any;
|
|
1502
|
+
error?: Error;
|
|
1503
|
+
}
|
|
1504
|
+
interface FilterDefinition {
|
|
1505
|
+
id: string;
|
|
1506
|
+
label: string;
|
|
1507
|
+
type: 'text' | 'select' | 'multiselect' | 'date' | 'range' | 'boolean';
|
|
1508
|
+
defaultValue?: any;
|
|
1509
|
+
options?: {
|
|
1510
|
+
value: any;
|
|
1511
|
+
label: string;
|
|
1512
|
+
}[];
|
|
1513
|
+
placeholder?: string;
|
|
1514
|
+
}
|
|
1515
|
+
interface SortFieldDefinition {
|
|
1516
|
+
id: string;
|
|
1517
|
+
label: string;
|
|
1518
|
+
defaultDirection?: 'asc' | 'desc';
|
|
1519
|
+
customSort?: (a: FileBrowserItem, b: FileBrowserItem, direction: 'asc' | 'desc') => number;
|
|
1520
|
+
}
|
|
1521
|
+
interface ProviderConfiguration {
|
|
1522
|
+
enableLogging?: boolean;
|
|
1523
|
+
cacheSize?: number;
|
|
1524
|
+
cacheTTL?: number;
|
|
1525
|
+
batchSize?: number;
|
|
1526
|
+
timeout?: number;
|
|
1527
|
+
retryAttempts?: number;
|
|
1528
|
+
customOptions?: Record<string, any>;
|
|
1529
|
+
}
|
|
1530
|
+
|
|
1531
|
+
//#endregion
|
|
1532
|
+
//#region src/file-browser/models/ToolbarManagerModel.d.ts
|
|
1533
|
+
//# sourceMappingURL=ProviderTypes.d.ts.map
|
|
1534
|
+
interface ToolbarOwner {
|
|
1535
|
+
logger?: {
|
|
1536
|
+
info: (message: string) => void;
|
|
1537
|
+
} | null;
|
|
1538
|
+
}
|
|
1539
|
+
declare class ToolbarManagerModel {
|
|
1540
|
+
toolbarActions: mobx27.ObservableMap<string, ToolbarAction>;
|
|
1541
|
+
contextActions: mobx28.ObservableMap<string, ContextAction>;
|
|
1542
|
+
private owner;
|
|
1543
|
+
constructor(owner: ToolbarOwner);
|
|
1544
|
+
get globalActions(): ToolbarAction[];
|
|
1545
|
+
get selectionActions(): ToolbarAction[];
|
|
1546
|
+
get allToolbarActions(): ToolbarAction[];
|
|
1547
|
+
get allContextActions(): ContextAction[];
|
|
1548
|
+
addAction: (action: ToolbarAction) => void;
|
|
1549
|
+
removeAction: (actionId: string) => void;
|
|
1550
|
+
updateAction: (actionId: string, updates: Partial<ToolbarAction>) => void;
|
|
1551
|
+
addContextAction: (action: ContextAction) => void;
|
|
1552
|
+
removeContextAction: (actionId: string) => void;
|
|
1553
|
+
getAvailableActions: (context: ActionContext) => ToolbarAction[];
|
|
1554
|
+
getContextActionsForItem: (context: ActionContext) => ContextAction[];
|
|
1555
|
+
canExecuteAction: (actionId: string, context: ActionContext) => boolean;
|
|
1556
|
+
getActionById: (actionId: string) => ToolbarAction | undefined;
|
|
1557
|
+
getContextActionById: (actionId: string) => ContextAction | undefined;
|
|
1558
|
+
setActions: (actions: ToolbarAction[]) => void;
|
|
1559
|
+
setContextActions: (actions: ContextAction[]) => void;
|
|
1560
|
+
clearAllActions: () => void;
|
|
1561
|
+
}
|
|
1562
|
+
|
|
1563
|
+
//#endregion
|
|
1564
|
+
//#region src/file-browser/models/ViewModeManagerModel.d.ts
|
|
1565
|
+
declare class ViewModeManagerModel {
|
|
1566
|
+
availableViewModes: mobx30.ObservableMap<string, ViewModeDefinition$1>;
|
|
1567
|
+
currentViewMode: string;
|
|
1568
|
+
currentFilters: FilterCriteria;
|
|
1569
|
+
currentSortCriteria: SortCriteria | null;
|
|
1570
|
+
treeViewUI: TreeViewUIModel;
|
|
1571
|
+
listViewUI: ListViewUIModel;
|
|
1572
|
+
thumbnailViewUI: ThumbnailViewUIModel;
|
|
1573
|
+
treemapViewUI: TreemapViewUIModel;
|
|
1574
|
+
private owner;
|
|
1575
|
+
constructor(owner: any);
|
|
1576
|
+
get logger(): any;
|
|
1577
|
+
get currentViewModeDefinition(): ViewModeDefinition$1 | undefined;
|
|
1578
|
+
get availableViewModesArray(): ViewModeDefinition$1[];
|
|
1579
|
+
get currentViewUI(): TreeViewUIModel | ListViewUIModel | ThumbnailViewUIModel | TreemapViewUIModel;
|
|
1580
|
+
get hasFilters(): boolean;
|
|
1581
|
+
get hasSorting(): boolean;
|
|
1582
|
+
setCurrentViewMode: (viewModeId: string) => void;
|
|
1583
|
+
registerViewMode: (definition: ViewModeDefinition$1) => void;
|
|
1584
|
+
unregisterViewMode: (viewModeId: string) => void;
|
|
1585
|
+
setFilter: (key: keyof FilterCriteria, value: any) => void;
|
|
1586
|
+
clearFilters: () => void;
|
|
1587
|
+
setSortCriteria: (field: string, direction: "asc" | "desc") => void;
|
|
1588
|
+
clearSort: () => void;
|
|
1589
|
+
toggleSortDirection: () => void;
|
|
1590
|
+
supportsCapability: (capability: string) => boolean;
|
|
1591
|
+
private initializeDefaultViewModes;
|
|
1592
|
+
dispose(): void;
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
//#endregion
|
|
1596
|
+
//#region src/file-browser/components/ViewerHost.d.ts
|
|
1597
|
+
//# sourceMappingURL=ViewModeManagerModel.d.ts.map
|
|
1598
|
+
interface ViewerHostProps {
|
|
1599
|
+
/** The resolved viewer from the registry */
|
|
1600
|
+
viewer: ResolvedViewer;
|
|
1601
|
+
/** File metadata and content */
|
|
1602
|
+
file: ViewerProps['file'];
|
|
1603
|
+
/** 'full' for main viewer, 'preview' for inline pane */
|
|
1604
|
+
mode: 'full' | 'preview';
|
|
1605
|
+
/** Called when the viewer wants to close */
|
|
1606
|
+
onClose?: () => void;
|
|
1607
|
+
/** Called to save edits */
|
|
1608
|
+
onSave?: (content: string | ArrayBuffer) => Promise<void>;
|
|
1609
|
+
/** Whether the file is read-only */
|
|
1610
|
+
readOnly?: boolean;
|
|
1611
|
+
/** Optional URL for direct content access */
|
|
1612
|
+
contentUrl?: string;
|
|
1613
|
+
/** Optional lazy content fetcher */
|
|
1614
|
+
fetchContent?: () => Promise<string | ArrayBuffer>;
|
|
1615
|
+
/** Additional toolbar elements from the host (e.g., prev/next nav) */
|
|
1616
|
+
hostToolbar?: React$1.ReactNode;
|
|
1617
|
+
className?: string;
|
|
1618
|
+
}
|
|
1619
|
+
/**
|
|
1620
|
+
* ViewerHost: shared viewer surface component.
|
|
1621
|
+
*
|
|
1622
|
+
* Renders a resolved viewer plugin wrapped in Suspense, with:
|
|
1623
|
+
* - Plugin's declarative toolbarActions (left + right positions)
|
|
1624
|
+
* - Host toolbar slot (e.g., prev/next navigation)
|
|
1625
|
+
* - Dynamic toolbar extras injected by the plugin via onToolbarExtras
|
|
1626
|
+
* - Keyboard shortcut bindings from the plugin
|
|
1627
|
+
* - Dirty state tracking via onDirtyChange
|
|
1628
|
+
*
|
|
1629
|
+
* Used by FileBrowser (full viewer mode), PreviewPane, and
|
|
1630
|
+
* future ObjectStorageBrowser/GitBrowser integration.
|
|
1631
|
+
*/
|
|
1632
|
+
declare const ViewerHost: React$1.FC<ViewerHostProps>;
|
|
1633
|
+
|
|
1634
|
+
//#endregion
|
|
1635
|
+
//#region src/file-browser/components/FileBrowserHeader.d.ts
|
|
1636
|
+
//# sourceMappingURL=ViewerHost.d.ts.map
|
|
1637
|
+
interface FileBrowserHeaderProps {
|
|
1638
|
+
model: FileBrowserModel;
|
|
1639
|
+
toolbarManager?: ToolbarManagerModel;
|
|
1640
|
+
className?: string;
|
|
1641
|
+
showBreadcrumb?: boolean;
|
|
1642
|
+
showToolbar?: boolean;
|
|
1643
|
+
}
|
|
1644
|
+
declare const FileBrowserHeader: React$1.FC<FileBrowserHeaderProps>;
|
|
1645
|
+
|
|
1646
|
+
//#endregion
|
|
1647
|
+
//#region src/file-browser/components/FileBrowserContent.d.ts
|
|
1648
|
+
interface FileBrowserContentProps {
|
|
1649
|
+
model: FileBrowserModel;
|
|
1650
|
+
className?: string;
|
|
1651
|
+
currentViewMode?: string;
|
|
1652
|
+
}
|
|
1653
|
+
declare const FileBrowserContent: React$1.FC<FileBrowserContentProps>;
|
|
1654
|
+
|
|
1655
|
+
//#endregion
|
|
1656
|
+
//#region src/file-browser/components/views/TreeView/TreeView.d.ts
|
|
1657
|
+
interface TreeViewProps {
|
|
1658
|
+
items: FileBrowserItem[];
|
|
1659
|
+
treeModel: TreeViewUIModel;
|
|
1660
|
+
onItemClick?: (item: FileBrowserItem) => void;
|
|
1661
|
+
onItemDoubleClick?: (item: FileBrowserItem) => void;
|
|
1662
|
+
onItemActivate?: (item: FileBrowserItem) => void;
|
|
1663
|
+
onSelectionChange?: (selectedItems: FileBrowserItem[]) => void;
|
|
1664
|
+
onPathChange?: (path: string) => void;
|
|
1665
|
+
selectedItemIds?: Set<string>;
|
|
1666
|
+
focusedItemId?: string;
|
|
1667
|
+
className?: string;
|
|
1668
|
+
getItemIcon?: (item: FileBrowserItem) => any;
|
|
1669
|
+
loadFolder?: (path: string) => Promise<FileBrowserItem[]>;
|
|
1670
|
+
virtualization?: boolean;
|
|
1671
|
+
maxHeight?: number;
|
|
1672
|
+
}
|
|
1673
|
+
declare const TreeView: React$1.FC<TreeViewProps>;
|
|
1674
|
+
|
|
1675
|
+
//#endregion
|
|
1676
|
+
//#region src/file-browser/models/ResponsiveLayoutManagerModel.d.ts
|
|
1677
|
+
interface ResponsiveOwner {
|
|
1678
|
+
logger?: {
|
|
1679
|
+
info: (message: string) => void;
|
|
1680
|
+
warn: (message: string) => void;
|
|
1681
|
+
error: (message: string) => void;
|
|
1682
|
+
} | null;
|
|
1683
|
+
}
|
|
1684
|
+
type ScreenSize = 'mobile' | 'tablet' | 'desktop';
|
|
1685
|
+
type PanelLayout = 'single' | 'dual' | 'overlay';
|
|
1686
|
+
interface ResponsiveBreakpoints {
|
|
1687
|
+
mobile: number;
|
|
1688
|
+
tablet: number;
|
|
1689
|
+
desktop: number;
|
|
1690
|
+
}
|
|
1691
|
+
interface LayoutConfiguration {
|
|
1692
|
+
screenSize: ScreenSize;
|
|
1693
|
+
panelLayout: PanelLayout;
|
|
1694
|
+
showLeftPanel: boolean;
|
|
1695
|
+
showRightPanel: boolean;
|
|
1696
|
+
leftPanelWidth: string;
|
|
1697
|
+
rightPanelWidth: string;
|
|
1698
|
+
isLeftPanelCollapsed: boolean;
|
|
1699
|
+
isRightPanelCollapsed: boolean;
|
|
1700
|
+
}
|
|
1701
|
+
declare class ResponsiveLayoutManagerModel {
|
|
1702
|
+
screenWidth: number;
|
|
1703
|
+
screenHeight: number;
|
|
1704
|
+
breakpoints: ResponsiveBreakpoints;
|
|
1705
|
+
isLeftPanelVisible: boolean;
|
|
1706
|
+
isRightPanelVisible: boolean;
|
|
1707
|
+
isLeftPanelCollapsed: boolean;
|
|
1708
|
+
isRightPanelCollapsed: boolean;
|
|
1709
|
+
isMobileMenuOpen: boolean;
|
|
1710
|
+
activePanel: 'left' | 'right' | null;
|
|
1711
|
+
isAnimating: boolean;
|
|
1712
|
+
animationDuration: number;
|
|
1713
|
+
previousFocusElement: HTMLElement | null;
|
|
1714
|
+
trapFocus: boolean;
|
|
1715
|
+
leftPanelWidth: string;
|
|
1716
|
+
rightPanelWidth: string;
|
|
1717
|
+
minPanelWidth: number;
|
|
1718
|
+
maxPanelWidth: number;
|
|
1719
|
+
adaptiveViewModes: mobx37.ObservableMap<ScreenSize, string[]>;
|
|
1720
|
+
private owner;
|
|
1721
|
+
private resizeObserver;
|
|
1722
|
+
private mediaQueryListeners;
|
|
1723
|
+
constructor(owner: ResponsiveOwner);
|
|
1724
|
+
private setupAdaptiveViewModes;
|
|
1725
|
+
private setupMediaQueryListeners;
|
|
1726
|
+
private handleMediaQueryChange;
|
|
1727
|
+
private updateLayoutForScreenSize;
|
|
1728
|
+
get currentScreenSize(): ScreenSize;
|
|
1729
|
+
get currentPanelLayout(): PanelLayout;
|
|
1730
|
+
get currentLayoutConfiguration(): LayoutConfiguration;
|
|
1731
|
+
get shouldShowLeftPanel(): boolean;
|
|
1732
|
+
get shouldShowRightPanel(): boolean;
|
|
1733
|
+
get availableViewModes(): string[];
|
|
1734
|
+
get isMobile(): boolean;
|
|
1735
|
+
get isTablet(): boolean;
|
|
1736
|
+
get isDesktop(): boolean;
|
|
1737
|
+
get canShowDualPanels(): boolean;
|
|
1738
|
+
get shouldShowHamburgerMenu(): boolean;
|
|
1739
|
+
setScreenDimensions: (width: number, height: number) => void;
|
|
1740
|
+
setBreakpoints: (breakpoints: Partial<ResponsiveBreakpoints>) => void;
|
|
1741
|
+
toggleLeftPanel: () => void;
|
|
1742
|
+
toggleRightPanel: () => void;
|
|
1743
|
+
setLeftPanelVisibility: (visible: boolean) => void;
|
|
1744
|
+
setRightPanelVisibility: (visible: boolean) => void;
|
|
1745
|
+
toggleMobileMenu: () => void;
|
|
1746
|
+
showMobilePanel: (panel: "left" | "right") => void;
|
|
1747
|
+
hideMobilePanel: () => void;
|
|
1748
|
+
toggleMobilePanel: (panel: "left" | "right") => void;
|
|
1749
|
+
setLeftPanelWidth: (width: string) => void;
|
|
1750
|
+
setRightPanelWidth: (width: string) => void;
|
|
1751
|
+
setAdaptiveViewModes: (screenSize: ScreenSize, viewModes: string[]) => void;
|
|
1752
|
+
isViewModeAvailable: (viewMode: string) => boolean;
|
|
1753
|
+
private animatePanel;
|
|
1754
|
+
private storeFocus;
|
|
1755
|
+
private restoreFocus;
|
|
1756
|
+
isTouchFriendlySize: (element: HTMLElement) => boolean;
|
|
1757
|
+
enableGestureNavigation: (element: HTMLElement) => {
|
|
1758
|
+
onSwipeLeft: () => void;
|
|
1759
|
+
onSwipeRight: () => void;
|
|
1760
|
+
onSwipeDown: () => void;
|
|
1761
|
+
};
|
|
1762
|
+
observeElementResize: (element: HTMLElement) => void;
|
|
1763
|
+
dispose: () => void;
|
|
1764
|
+
}
|
|
1765
|
+
|
|
1766
|
+
//#endregion
|
|
1767
|
+
//#region src/file-browser/components/views/ListView/ListView.d.ts
|
|
1768
|
+
interface ListViewProps {
|
|
1769
|
+
items: FileBrowserItem[];
|
|
1770
|
+
listModel: ListViewUIModel;
|
|
1771
|
+
responsiveManager?: ResponsiveLayoutManagerModel;
|
|
1772
|
+
onItemClick?: (item: FileBrowserItem) => void;
|
|
1773
|
+
onItemDoubleClick?: (item: FileBrowserItem) => void;
|
|
1774
|
+
onItemActivate?: (item: FileBrowserItem) => void;
|
|
1775
|
+
onSelectionChange?: (selectedItems: FileBrowserItem[]) => void;
|
|
1776
|
+
selectedItemIds?: Set<string>;
|
|
1777
|
+
focusedItemId?: string;
|
|
1778
|
+
className?: string;
|
|
1779
|
+
getItemIcon?: (item: FileBrowserItem) => any;
|
|
1780
|
+
}
|
|
1781
|
+
declare const ListView: React$1.FC<ListViewProps>;
|
|
1782
|
+
|
|
1783
|
+
//#endregion
|
|
1784
|
+
//#region src/file-browser/components/navigation/NavigationButtons.d.ts
|
|
1785
|
+
interface NavigationButtonsProps {
|
|
1786
|
+
canGoBack?: boolean;
|
|
1787
|
+
canGoForward?: boolean;
|
|
1788
|
+
canGoUp?: boolean;
|
|
1789
|
+
onGoBack?: () => void;
|
|
1790
|
+
onGoForward?: () => void;
|
|
1791
|
+
onGoUp?: () => void;
|
|
1792
|
+
className?: string;
|
|
1793
|
+
variant?: 'default' | 'compact';
|
|
1794
|
+
showLabels?: boolean;
|
|
1795
|
+
disabled?: boolean;
|
|
1796
|
+
}
|
|
1797
|
+
declare const NavigationButtons: React$1.FC<NavigationButtonsProps>;
|
|
1798
|
+
|
|
1799
|
+
//#endregion
|
|
1800
|
+
//#region src/file-browser/components/toolbar/ViewModeToggle.d.ts
|
|
1801
|
+
interface ViewModeToggleProps {
|
|
1802
|
+
currentMode: ViewModeType;
|
|
1803
|
+
availableModes: ViewModeType[];
|
|
1804
|
+
onModeChange?: (mode: ViewModeType) => void;
|
|
1805
|
+
className?: string;
|
|
1806
|
+
variant?: 'tabs' | 'buttons';
|
|
1807
|
+
showLabels?: boolean;
|
|
1808
|
+
disabled?: boolean;
|
|
1809
|
+
}
|
|
1810
|
+
declare const ViewModeToggle: React$1.FC<ViewModeToggleProps>;
|
|
1811
|
+
|
|
1812
|
+
//#endregion
|
|
1813
|
+
//#region src/file-browser/types/UITypes.d.ts
|
|
1814
|
+
interface UIComponentProps {
|
|
1815
|
+
className?: string;
|
|
1816
|
+
style?: React$1.CSSProperties;
|
|
1817
|
+
children?: React$1.ReactNode;
|
|
1818
|
+
}
|
|
1819
|
+
interface FileIconProps extends UIComponentProps {
|
|
1820
|
+
item: FileBrowserItem;
|
|
1821
|
+
size?: number | 'sm' | 'md' | 'lg';
|
|
1822
|
+
variant?: 'outline' | 'filled';
|
|
1823
|
+
}
|
|
1824
|
+
interface BreadcrumbProps extends UIComponentProps {
|
|
1825
|
+
path: string;
|
|
1826
|
+
onNavigate: (path: string) => void;
|
|
1827
|
+
maxItems?: number;
|
|
1828
|
+
separator?: React$1.ReactNode;
|
|
1829
|
+
}
|
|
1830
|
+
interface ToolbarActionConfig {
|
|
1831
|
+
id: string;
|
|
1832
|
+
label: string;
|
|
1833
|
+
icon: IconDefinition;
|
|
1834
|
+
tooltip?: string;
|
|
1835
|
+
shortcut?: string;
|
|
1836
|
+
variant?: 'default' | 'primary' | 'secondary' | 'destructive';
|
|
1837
|
+
size?: 'sm' | 'md' | 'lg';
|
|
1838
|
+
showLabel?: boolean;
|
|
1839
|
+
isVisible?: boolean;
|
|
1840
|
+
isEnabled?: boolean;
|
|
1841
|
+
isActive?: boolean;
|
|
1842
|
+
action: () => void;
|
|
1843
|
+
}
|
|
1844
|
+
|
|
1845
|
+
//#endregion
|
|
1846
|
+
export { ActionContext, ActionResult, BreadcrumbProps, ColumnDefinition, ContextAction, ErrorBoundary as ErrorBoundary$1, ErrorBoundaryProps, ErrorState, FileBrowser as FileBrowser$1, FileBrowserContent, FileBrowserContentProps, FileBrowserEventHandlers, FileBrowserHeader, FileBrowserHeaderProps, FileBrowserItem, FileBrowserItemComponent, FileBrowserItemDetails, FileBrowserModel as FileBrowserModel$1, FileBrowserProps, FileIcon, FileIconProps, FileMatchContext, FileSystemBridge as FileSystemBridge$1, FileSystemListProvider as FileSystemListProvider$1, FileSystemProvider as FileSystemProvider$1, FileSystemTreeProvider as FileSystemTreeProvider$1, FileViewerPlugin, FilterCriteria, FilterDefinition, GitProvider as GitProvider$1, GitRepositoryProvider as GitRepositoryProvider$1, IFileBrowserProvider$1 as IFileBrowserProvider, IconDefinition, ItemChange, KeyboardShortcut, ListView, ListViewProps, ListViewSettings, ListViewUIModel as ListViewUIModel$1, LoadingState, NavigationButtons, NavigationButtonsProps, NavigationManagerModel as NavigationManagerModel$1, NavigationState, PreviewData, ProviderCapabilities, ProviderConfiguration, ResolvedViewer, SelectionManagerModel as SelectionManagerModel$1, SelectionState, SortCriteria$1 as SortCriteria, SortFieldDefinition, ThumbnailViewSettings, ThumbnailViewUIModel as ThumbnailViewUIModel$1, ToolbarAction$1 as ToolbarAction, ToolbarActionConfig, ToolbarManagerModel as ToolbarManagerModel$1, TreeView, TreeViewProps, TreeViewSettings, TreeViewUIModel as TreeViewUIModel$1, UIComponentProps, UploadFileEntry, UploadModel as UploadModel$1, ViewModeCapabilities, ViewModeDefinition$1 as ViewModeDefinition, ViewModeManagerModel as ViewModeManagerModel$1, ViewModeSettings, ViewModeToggle, ViewModeToggleProps, ViewerConfig, ViewerHost as ViewerHost$1, ViewerHostModel as ViewerHostModel$1, ViewerHostProps, ViewerProps, ViewerRegistry as ViewerRegistry$1, cn, globalViewerRegistry as globalViewerRegistry$1, viewerConfigToPlugin as viewerConfigToPlugin$1 };
|
|
1847
|
+
//# sourceMappingURL=index-Ml_SgiKa.d.ts.map
|