@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.
Files changed (244) hide show
  1. package/dist/ExplorerLayout-CSIJd7N4.js +105 -0
  2. package/dist/ExplorerLayout-CSIJd7N4.js.map +1 -0
  3. package/dist/FileBrowserContext-B6jixa2j.js +11 -0
  4. package/dist/FileBrowserContext-B6jixa2j.js.map +1 -0
  5. package/dist/calendar-DSlrbHoj.js +761 -0
  6. package/dist/calendar-DSlrbHoj.js.map +1 -0
  7. package/dist/calendar.d.ts +3 -0
  8. package/dist/calendar.js +3 -0
  9. package/dist/contacts-DQXTZzHc.js +539 -0
  10. package/dist/contacts-DQXTZzHc.js.map +1 -0
  11. package/dist/contacts.d.ts +3 -0
  12. package/dist/contacts.js +3 -0
  13. package/dist/file-browser-m5atC3kF.js +6755 -0
  14. package/dist/file-browser-m5atC3kF.js.map +1 -0
  15. package/dist/file-browser.d.ts +11 -0
  16. package/dist/file-browser.js +9 -0
  17. package/dist/git-B55e6LL-.js +561 -0
  18. package/dist/git-B55e6LL-.js.map +1 -0
  19. package/dist/git.d.ts +2 -0
  20. package/dist/git.js +3 -0
  21. package/dist/iconMap-V4B8P-Uh.js +206 -0
  22. package/dist/iconMap-V4B8P-Uh.js.map +1 -0
  23. package/dist/icons-CIsIOZXR.js +0 -0
  24. package/dist/icons.d.ts +2 -0
  25. package/dist/icons.js +4 -0
  26. package/dist/index-BNmNIWBL.d.ts +71 -0
  27. package/dist/index-BNmNIWBL.d.ts.map +1 -0
  28. package/dist/index-Bryv_GCG.d.ts +1481 -0
  29. package/dist/index-Bryv_GCG.d.ts.map +1 -0
  30. package/dist/index-CuQIjSXs.d.ts +134 -0
  31. package/dist/index-CuQIjSXs.d.ts.map +1 -0
  32. package/dist/index-DSu19mq0.d.ts +153 -0
  33. package/dist/index-DSu19mq0.d.ts.map +1 -0
  34. package/dist/index-DmsyeHFr.d.ts +149 -0
  35. package/dist/index-DmsyeHFr.d.ts.map +1 -0
  36. package/dist/index-DxnJ8FYM.d.ts +17 -0
  37. package/dist/index-DxnJ8FYM.d.ts.map +1 -0
  38. package/dist/index-DzfY1Tok.d.ts +32 -0
  39. package/dist/index-DzfY1Tok.d.ts.map +1 -0
  40. package/dist/index-Ml_SgiKa.d.ts +1847 -0
  41. package/dist/index-Ml_SgiKa.d.ts.map +1 -0
  42. package/dist/index-kHr9udZD.d.ts +1025 -0
  43. package/dist/index-kHr9udZD.d.ts.map +1 -0
  44. package/dist/index.d.ts +11 -0
  45. package/dist/index.js +15 -0
  46. package/dist/layout-Ca_4r8ka.js +89 -0
  47. package/dist/layout-Ca_4r8ka.js.map +1 -0
  48. package/dist/layout.d.ts +2 -0
  49. package/dist/layout.js +5 -0
  50. package/dist/list-CxfT6hix.js +6831 -0
  51. package/dist/list-CxfT6hix.js.map +1 -0
  52. package/dist/list.d.ts +2 -0
  53. package/dist/list.js +5 -0
  54. package/dist/media-DZ292aKK.js +557 -0
  55. package/dist/media-DZ292aKK.js.map +1 -0
  56. package/dist/media.d.ts +3 -0
  57. package/dist/media.js +3 -0
  58. package/dist/tree-Dd9Z0Aso.js +3351 -0
  59. package/dist/tree-Dd9Z0Aso.js.map +1 -0
  60. package/dist/tree.d.ts +2 -0
  61. package/dist/tree.js +6 -0
  62. package/dist/types-common-CB3kRek8.d.ts +26 -0
  63. package/dist/types-common-CB3kRek8.d.ts.map +1 -0
  64. package/dist/utils-B4fdKKsy.js +3 -0
  65. package/package.json +109 -0
  66. package/src/calendar/AgendaView.tsx +37 -0
  67. package/src/calendar/CalendarBrowser.tsx +90 -0
  68. package/src/calendar/CalendarModel.ts +142 -0
  69. package/src/calendar/CalendarSidebar.tsx +81 -0
  70. package/src/calendar/DayView.tsx +76 -0
  71. package/src/calendar/EventCard.tsx +51 -0
  72. package/src/calendar/MockCalendarProvider.ts +98 -0
  73. package/src/calendar/MonthView.tsx +77 -0
  74. package/src/calendar/WeekView.tsx +129 -0
  75. package/src/calendar/index.ts +18 -0
  76. package/src/calendar/types.ts +25 -0
  77. package/src/contacts/ContactAvatar.tsx +35 -0
  78. package/src/contacts/ContactBrowser.tsx +56 -0
  79. package/src/contacts/ContactCard.tsx +37 -0
  80. package/src/contacts/ContactDetail.tsx +63 -0
  81. package/src/contacts/ContactGroupSidebar.tsx +40 -0
  82. package/src/contacts/ContactList.tsx +32 -0
  83. package/src/contacts/ContactListModel.ts +120 -0
  84. package/src/contacts/MockContactProvider.ts +77 -0
  85. package/src/contacts/index.ts +17 -0
  86. package/src/contacts/types.ts +26 -0
  87. package/src/demos/CalendarBrowserDemo.tsx +15 -0
  88. package/src/demos/ContactBrowserDemo.tsx +15 -0
  89. package/src/demos/MediaBrowserDemo.tsx +15 -0
  90. package/src/file-browser/adapters/DocumentViewerAdapter.ts +371 -0
  91. package/src/file-browser/adapters/FileSystemBridge.ts +168 -0
  92. package/src/file-browser/adapters/GitBrowserAdapter.ts +546 -0
  93. package/src/file-browser/adapters/README.md +504 -0
  94. package/src/file-browser/adapters/index.ts +27 -0
  95. package/src/file-browser/adapters/types.ts +70 -0
  96. package/src/file-browser/architecture.md +645 -0
  97. package/src/file-browser/components/CreateItemDialog.tsx +71 -0
  98. package/src/file-browser/components/DeleteConfirmDialog.tsx +58 -0
  99. package/src/file-browser/components/FileBrowser.tsx +473 -0
  100. package/src/file-browser/components/FileBrowserContent.tsx +209 -0
  101. package/src/file-browser/components/FileBrowserHeader.tsx +151 -0
  102. package/src/file-browser/components/FileBrowserToolbar.tsx +145 -0
  103. package/src/file-browser/components/LeftPanel/LeftPanel.tsx +103 -0
  104. package/src/file-browser/components/LeftPanel/LeftPanelTabs.tsx +70 -0
  105. package/src/file-browser/components/LeftPanel/TreeNavigationView.tsx +256 -0
  106. package/src/file-browser/components/PreviewPane.tsx +146 -0
  107. package/src/file-browser/components/RightPanel/FilePreview.tsx +219 -0
  108. package/src/file-browser/components/RightPanel/RightPanel.tsx +186 -0
  109. package/src/file-browser/components/RightPanel/RightPanelToolbar.tsx +113 -0
  110. package/src/file-browser/components/UploadProgress.tsx +123 -0
  111. package/src/file-browser/components/ViewerHost.tsx +208 -0
  112. package/src/file-browser/components/mobile/MobileNavigation.tsx +227 -0
  113. package/src/file-browser/components/navigation/NavigationButtons.tsx +171 -0
  114. package/src/file-browser/components/shared/ErrorBoundary.tsx +116 -0
  115. package/src/file-browser/components/shared/FileBrowserItem.tsx +195 -0
  116. package/src/file-browser/components/shared/FileIcon.tsx +169 -0
  117. package/src/file-browser/components/toolbar/ViewModeToggle.tsx +200 -0
  118. package/src/file-browser/components/views/ListView/ListView.tsx +484 -0
  119. package/src/file-browser/components/views/ThumbnailView/ThumbnailView.tsx +323 -0
  120. package/src/file-browser/components/views/TreeView/TreeNode.tsx +186 -0
  121. package/src/file-browser/components/views/TreeView/TreeNodeList.tsx +191 -0
  122. package/src/file-browser/components/views/TreeView/TreeView.tsx +200 -0
  123. package/src/file-browser/components/views/TreemapView/TreemapView.tsx +339 -0
  124. package/src/file-browser/context/FileBrowserContext.tsx +13 -0
  125. package/src/file-browser/examples/BasicUsage.tsx +20 -0
  126. package/src/file-browser/index.ts +98 -0
  127. package/src/file-browser/models/FileBrowserModel.ts +623 -0
  128. package/src/file-browser/models/LeftPanelManagerModel.ts +105 -0
  129. package/src/file-browser/models/NavigationManagerModel.ts +312 -0
  130. package/src/file-browser/models/ResponsiveLayoutManagerModel.ts +437 -0
  131. package/src/file-browser/models/RightPanelManagerModel.ts +190 -0
  132. package/src/file-browser/models/SelectionManagerModel.ts +252 -0
  133. package/src/file-browser/models/ToolbarManagerModel.ts +144 -0
  134. package/src/file-browser/models/UploadModel.ts +147 -0
  135. package/src/file-browser/models/ViewModeManagerModel.ts +185 -0
  136. package/src/file-browser/models/ViewerHostModel.ts +44 -0
  137. package/src/file-browser/models/ui/ListViewUIModel.ts +265 -0
  138. package/src/file-browser/models/ui/PreviewUIModel.ts +297 -0
  139. package/src/file-browser/models/ui/ThumbnailViewUIModel.ts +254 -0
  140. package/src/file-browser/models/ui/TreeViewUIModel.ts +128 -0
  141. package/src/file-browser/models/ui/TreemapViewUIModel.ts +350 -0
  142. package/src/file-browser/providers/FileSystemListProvider.ts +552 -0
  143. package/src/file-browser/providers/FileSystemProvider.ts +401 -0
  144. package/src/file-browser/providers/FileSystemTreeProvider.ts +231 -0
  145. package/src/file-browser/providers/GitProvider.ts +337 -0
  146. package/src/file-browser/providers/GitRepositoryProvider.ts +376 -0
  147. package/src/file-browser/providers/IFileBrowserProvider.ts +56 -0
  148. package/src/file-browser/providers/MemoryProvider.ts +303 -0
  149. package/src/file-browser/providers/index.ts +4 -0
  150. package/src/file-browser/registry/ViewerRegistry.ts +551 -0
  151. package/src/file-browser/registry/types.ts +144 -0
  152. package/src/file-browser/scripts/performanceBenchmark.ts +553 -0
  153. package/src/file-browser/services/ThumbnailCacheService.ts +128 -0
  154. package/src/file-browser/tasks.md +537 -0
  155. package/src/file-browser/types/FileBrowserTypes.ts +126 -0
  156. package/src/file-browser/types/ProviderTypes.ts +155 -0
  157. package/src/file-browser/types/UITypes.ts +235 -0
  158. package/src/file-browser/types/ViewModeTypes.ts +150 -0
  159. package/src/file-browser/utils/gestures.ts +327 -0
  160. package/src/file-browser/utils/performance.ts +563 -0
  161. package/src/file-browser/viewers/ImageViewer.tsx +163 -0
  162. package/src/file-browser/viewers/ImageViewerModel.ts +79 -0
  163. package/src/file-browser/viewers/TextViewer.tsx +95 -0
  164. package/src/file-browser/viewers/UnsupportedFileViewer.tsx +57 -0
  165. package/src/file-browser/viewers/index.ts +61 -0
  166. package/src/git/BranchList.tsx +128 -0
  167. package/src/git/CommitGraph.tsx +239 -0
  168. package/src/git/CommitList.tsx +258 -0
  169. package/src/git/DiffViewer.tsx +219 -0
  170. package/src/git/index.ts +4 -0
  171. package/src/icons/iconMap.ts +146 -0
  172. package/src/icons/index.ts +9 -0
  173. package/src/index.ts +13 -0
  174. package/src/layout/README.md +307 -0
  175. package/src/layout/components/ExplorerLayout/ExplorerLayout.tsx +178 -0
  176. package/src/layout/examples/SimpleExample.tsx +60 -0
  177. package/src/layout/index.ts +6 -0
  178. package/src/lib/utils.ts +1 -0
  179. package/src/list/README.md +303 -0
  180. package/src/list/architecture.md +807 -0
  181. package/src/list/components/CalculatedGridView.tsx +252 -0
  182. package/src/list/components/DragPreview.tsx +102 -0
  183. package/src/list/components/ListContextMenu.tsx +274 -0
  184. package/src/list/components/ListItem.tsx +761 -0
  185. package/src/list/components/ListItems.tsx +919 -0
  186. package/src/list/components/MasonryView.tsx +241 -0
  187. package/src/list/components/SearchFilter.tsx +44 -0
  188. package/src/list/components/TreemapView.tsx +709 -0
  189. package/src/list/components/ViewSizeControls.tsx +205 -0
  190. package/src/list/components/ViewTypeSelector.tsx +312 -0
  191. package/src/list/components/VirtualizedDetailsView.tsx +231 -0
  192. package/src/list/components/VirtualizedGrid.tsx +164 -0
  193. package/src/list/components/VirtualizedList.tsx +154 -0
  194. package/src/list/components/VirtualizedMasonryView.tsx +344 -0
  195. package/src/list/components/shared/EmptyState.tsx +103 -0
  196. package/src/list/components/shared/ErrorBoundary.tsx +123 -0
  197. package/src/list/components/shared/ErrorDisplay.tsx +100 -0
  198. package/src/list/components/shared/ListLoader.tsx +146 -0
  199. package/src/list/components/shared/LoadingIndicator.tsx +80 -0
  200. package/src/list/index.ts +92 -0
  201. package/src/list/models/ListItemsModel.ts +1301 -0
  202. package/src/list/models/TreemapModel.ts +204 -0
  203. package/src/list/providers/ListItemsProvider.ts +313 -0
  204. package/src/list/providers/TestListProvider.ts +604 -0
  205. package/src/list/tasks.md +937 -0
  206. package/src/list/types/ListTypes.ts +178 -0
  207. package/src/list/utils/BenchmarkLogger.ts +243 -0
  208. package/src/list/utils/DragDropManager.ts +320 -0
  209. package/src/list/utils/GridLayoutCalculator.ts +290 -0
  210. package/src/list/utils/ListAccessibility.ts +367 -0
  211. package/src/list/utils/ListKeyboard.ts +414 -0
  212. package/src/list/utils/MasonryLayoutCalculator.ts +302 -0
  213. package/src/list/utils/MasonryLayoutEngine.ts +401 -0
  214. package/src/list/utils/__tests__/MasonryLayoutEngine.test.ts +157 -0
  215. package/src/list/utils/__tests__/VirtualizedMasonryView.test.tsx +251 -0
  216. package/src/media/AlbumSidebar.tsx +48 -0
  217. package/src/media/MediaBrowser.tsx +92 -0
  218. package/src/media/MediaBrowserModel.ts +138 -0
  219. package/src/media/MediaGrid.tsx +50 -0
  220. package/src/media/MediaList.tsx +49 -0
  221. package/src/media/MediaPreview.tsx +63 -0
  222. package/src/media/MediaTimeline.tsx +38 -0
  223. package/src/media/MockMediaProvider.ts +70 -0
  224. package/src/media/index.ts +18 -0
  225. package/src/media/types.ts +21 -0
  226. package/src/styles/variables.css +60 -0
  227. package/src/tree/DEVELOPMENT_SUMMARY.md +170 -0
  228. package/src/tree/__tests__/TreeModel.test.ts +16 -0
  229. package/src/tree/architecture.md +530 -0
  230. package/src/tree/components/Tree.tsx +283 -0
  231. package/src/tree/components/TreeCheckbox.tsx +147 -0
  232. package/src/tree/components/TreeContextMenu.tsx +139 -0
  233. package/src/tree/components/TreeNodeList.tsx +329 -0
  234. package/src/tree/components/TreeTable.tsx +382 -0
  235. package/src/tree/index.ts +58 -0
  236. package/src/tree/models/TreeModel.ts +839 -0
  237. package/src/tree/providers/SimpleTreeProvider.ts +463 -0
  238. package/src/tree/providers/TestTreeProvider.ts +946 -0
  239. package/src/tree/providers/TreeProvider.ts +308 -0
  240. package/src/tree/tasks.md +2046 -0
  241. package/src/tree/types/TreeTypes.ts +279 -0
  242. package/src/tree/utils/SelectionTheme.ts +150 -0
  243. package/src/tree/utils/logger.ts +203 -0
  244. 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