@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,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TreeProvider Interface
|
|
3
|
+
*
|
|
4
|
+
* Defines the contract for providing tree data to the Tree component.
|
|
5
|
+
* This abstraction allows different data sources (file systems, APIs, static data)
|
|
6
|
+
* to be used with the same tree component. Provider can work without React.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type React from 'react';
|
|
10
|
+
import type { TreeNodeData, TreeLoadResult, TreeLoadOptions, TreeContextMenuItem, TreeTableColumn, TreeTableSort, TreeTableExportOptions, TreeSelectionTheme } from '../types/TreeTypes';
|
|
11
|
+
|
|
12
|
+
export interface TreeNodeRenderer {
|
|
13
|
+
/** Render node as string (for non-React environments) */
|
|
14
|
+
renderText?(node: TreeNodeData): string;
|
|
15
|
+
/** Render node icon as string/identifier */
|
|
16
|
+
renderIcon?(node: TreeNodeData): string;
|
|
17
|
+
/** Get node display properties */
|
|
18
|
+
getDisplayProps?(node: TreeNodeData): {
|
|
19
|
+
className?: string;
|
|
20
|
+
style?: Record<string, string>;
|
|
21
|
+
title?: string;
|
|
22
|
+
ariaLabel?: string;
|
|
23
|
+
};
|
|
24
|
+
/** Custom React component for node (if in React environment) */
|
|
25
|
+
renderComponent?: React.ComponentType<{ node: TreeNodeData; [key: string]: any }>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface TreeDragDropInfo {
|
|
29
|
+
/** Source node being dragged */
|
|
30
|
+
sourceNode: TreeNodeData;
|
|
31
|
+
/** Target node being dropped on */
|
|
32
|
+
targetNode: TreeNodeData;
|
|
33
|
+
/** Drop position relative to target */
|
|
34
|
+
position: 'before' | 'after' | 'inside';
|
|
35
|
+
/** Additional drag data */
|
|
36
|
+
dragData?: any;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface TreeSelectionInfo {
|
|
40
|
+
/** Selected nodes */
|
|
41
|
+
selectedNodes: TreeNodeData[];
|
|
42
|
+
/** Previously selected nodes */
|
|
43
|
+
previousSelection: TreeNodeData[];
|
|
44
|
+
/** Selection type */
|
|
45
|
+
selectionType: 'single' | 'multi' | 'range';
|
|
46
|
+
/** Selection trigger */
|
|
47
|
+
trigger: 'click' | 'keyboard' | 'api';
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface TreeProvider {
|
|
51
|
+
/** Provider identifier */
|
|
52
|
+
readonly id: string;
|
|
53
|
+
/** Human-readable name */
|
|
54
|
+
readonly name: string;
|
|
55
|
+
/** Provider version */
|
|
56
|
+
readonly version: string;
|
|
57
|
+
|
|
58
|
+
// =====================
|
|
59
|
+
// Configuration Methods
|
|
60
|
+
// =====================
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Whether multi-selection is enabled
|
|
64
|
+
*/
|
|
65
|
+
isMultiSelectEnabled: boolean;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Whether drag and drop is enabled
|
|
69
|
+
*/
|
|
70
|
+
readonly isDragDropEnabled: boolean;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Whether virtualization is enabled for large trees
|
|
74
|
+
*/
|
|
75
|
+
readonly isVirtualizationEnabled: boolean;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Whether to use checkbox-based selection instead of highlight selection
|
|
79
|
+
*/
|
|
80
|
+
readonly useCheckboxSelection?: boolean;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Whether to allow partial (indeterminate) checkbox selection for parent nodes
|
|
84
|
+
*/
|
|
85
|
+
readonly allowPartialSelection?: boolean;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Whether table view is enabled for this provider
|
|
89
|
+
*/
|
|
90
|
+
readonly isTableViewEnabled?: boolean;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Get virtualization configuration
|
|
94
|
+
*/
|
|
95
|
+
getVirtualizationConfig?(): {
|
|
96
|
+
itemHeight: number;
|
|
97
|
+
overscan: number;
|
|
98
|
+
threshold: number;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Get table column configuration for table view
|
|
103
|
+
*/
|
|
104
|
+
getTableColumns?(): TreeTableColumn[];
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Get default sort configuration for table view
|
|
108
|
+
*/
|
|
109
|
+
getDefaultTableSort?(): TreeTableSort | null;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Get selection theme configuration
|
|
113
|
+
*/
|
|
114
|
+
getSelectionTheme?(): TreeSelectionTheme;
|
|
115
|
+
|
|
116
|
+
// =====================
|
|
117
|
+
// Data Loading Methods
|
|
118
|
+
// =====================
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Load tree nodes
|
|
122
|
+
* @param options Loading options
|
|
123
|
+
* @returns Promise resolving to loaded nodes
|
|
124
|
+
*/
|
|
125
|
+
loadNodes(options?: TreeLoadOptions): Promise<TreeLoadResult>;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Load children for a specific node
|
|
129
|
+
* @param node Parent node
|
|
130
|
+
* @param options Loading options
|
|
131
|
+
* @returns Promise resolving to child nodes
|
|
132
|
+
*/
|
|
133
|
+
loadChildren(node: TreeNodeData, options?: TreeLoadOptions): Promise<TreeLoadResult>;
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Refresh/reload nodes
|
|
137
|
+
* @param path Specific path to refresh (optional)
|
|
138
|
+
* @returns Promise resolving to refreshed nodes
|
|
139
|
+
*/
|
|
140
|
+
refresh(path?: string): Promise<TreeLoadResult>;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Search nodes
|
|
144
|
+
* @param query Search query
|
|
145
|
+
* @param options Search options
|
|
146
|
+
* @returns Promise resolving to search results
|
|
147
|
+
*/
|
|
148
|
+
search?(query: string, options?: TreeLoadOptions): Promise<TreeLoadResult>;
|
|
149
|
+
|
|
150
|
+
// =====================
|
|
151
|
+
// Node Context Menus
|
|
152
|
+
// =====================
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Get context menu items for a specific node
|
|
156
|
+
* @param node Target node
|
|
157
|
+
* @returns Array of context menu items
|
|
158
|
+
*/
|
|
159
|
+
getNodeContextMenu?(node: TreeNodeData): TreeContextMenuItem[];
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Get context menu items for multiple selected nodes
|
|
163
|
+
* @param nodes Selected nodes
|
|
164
|
+
* @returns Array of context menu items
|
|
165
|
+
*/
|
|
166
|
+
getMultiNodeContextMenu?(nodes: TreeNodeData[]): TreeContextMenuItem[];
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Get context menu items for empty space (no node)
|
|
170
|
+
* @param parentNode Parent node where right-click occurred
|
|
171
|
+
* @returns Array of context menu items
|
|
172
|
+
*/
|
|
173
|
+
getEmptySpaceContextMenu?(parentNode?: TreeNodeData): TreeContextMenuItem[];
|
|
174
|
+
|
|
175
|
+
// =====================
|
|
176
|
+
// Node Rendering
|
|
177
|
+
// =====================
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Get custom renderer for a specific node
|
|
181
|
+
* @param node Target node
|
|
182
|
+
* @returns Node renderer or null for default rendering
|
|
183
|
+
*/
|
|
184
|
+
getNodeRenderer?(node: TreeNodeData): TreeNodeRenderer | null;
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Get default renderer for all nodes of this provider
|
|
188
|
+
* @returns Default node renderer
|
|
189
|
+
*/
|
|
190
|
+
getDefaultRenderer?(): TreeNodeRenderer;
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Get custom icon for a node
|
|
194
|
+
* @param node Target node
|
|
195
|
+
* @returns Icon identifier or component
|
|
196
|
+
*/
|
|
197
|
+
getNodeIcon?(node: TreeNodeData): string | React.ComponentType<any>;
|
|
198
|
+
|
|
199
|
+
// =====================
|
|
200
|
+
// Node Capabilities
|
|
201
|
+
// =====================
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Check if a node can be expanded
|
|
205
|
+
* @param node Target node
|
|
206
|
+
* @returns Whether node can be expanded
|
|
207
|
+
*/
|
|
208
|
+
canExpand?(node: TreeNodeData): boolean;
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Check if a node can be selected
|
|
212
|
+
* @param node Target node
|
|
213
|
+
* @returns Whether node can be selected
|
|
214
|
+
*/
|
|
215
|
+
canSelect?(node: TreeNodeData): boolean;
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Check if nodes can be dragged
|
|
219
|
+
* @param nodes Nodes to check
|
|
220
|
+
* @returns Whether nodes can be dragged
|
|
221
|
+
*/
|
|
222
|
+
canDrag?(nodes: TreeNodeData[]): boolean;
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Check if a drop operation is allowed
|
|
226
|
+
* @param dragInfo Drag and drop information
|
|
227
|
+
* @returns Whether drop is allowed
|
|
228
|
+
*/
|
|
229
|
+
canDrop?(dragInfo: TreeDragDropInfo): boolean;
|
|
230
|
+
|
|
231
|
+
// =====================
|
|
232
|
+
// Event Callbacks
|
|
233
|
+
// =====================
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Called when node selection changes
|
|
237
|
+
* @param selectionInfo Selection information
|
|
238
|
+
*/
|
|
239
|
+
onSelectionChange?(selectionInfo: TreeSelectionInfo): void;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Called when a node is expanded or collapsed
|
|
243
|
+
* @param node Target node
|
|
244
|
+
* @param expanded New expansion state
|
|
245
|
+
*/
|
|
246
|
+
onNodeExpansion?(node: TreeNodeData, expanded: boolean): void;
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Called when a node is double-clicked
|
|
250
|
+
* @param node Target node
|
|
251
|
+
*/
|
|
252
|
+
onNodeDoubleClick?(node: TreeNodeData): void;
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Called when a drag and drop operation completes
|
|
256
|
+
* @param dragInfo Drag and drop information
|
|
257
|
+
* @returns Promise resolving when operation is complete
|
|
258
|
+
*/
|
|
259
|
+
onDragDrop?(dragInfo: TreeDragDropInfo): Promise<void>;
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Called when a context menu item is selected
|
|
263
|
+
* @param menuItemId Menu item identifier
|
|
264
|
+
* @param node Target node (or nodes for multi-selection)
|
|
265
|
+
*/
|
|
266
|
+
onContextMenuAction?(menuItemId: string, nodes: TreeNodeData[]): void;
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Called when a node is focused
|
|
270
|
+
* @param node Target node or null if focus lost
|
|
271
|
+
*/
|
|
272
|
+
onNodeFocus?(node: TreeNodeData | null): void;
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Called when table sort changes
|
|
276
|
+
* @param sort New sort configuration
|
|
277
|
+
*/
|
|
278
|
+
onTableSort?(sort: TreeTableSort | null): void;
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Called when table data export is requested
|
|
282
|
+
* @param options Export configuration
|
|
283
|
+
* @returns Promise resolving to exported data or download trigger
|
|
284
|
+
*/
|
|
285
|
+
onTableExport?(options: TreeTableExportOptions): Promise<string | void>;
|
|
286
|
+
|
|
287
|
+
// =====================
|
|
288
|
+
// Lifecycle Methods
|
|
289
|
+
// =====================
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Initialize the provider
|
|
293
|
+
* @returns Promise resolving when initialization is complete
|
|
294
|
+
*/
|
|
295
|
+
initialize?(): Promise<void>;
|
|
296
|
+
|
|
297
|
+
/**
|
|
298
|
+
* Cleanup provider resources
|
|
299
|
+
*/
|
|
300
|
+
dispose?(): void;
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Provider-specific configuration
|
|
304
|
+
*/
|
|
305
|
+
readonly config?: Record<string, any>;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// NOTE: No factory or registry pattern - providers passed directly to Tree component
|