@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,1481 @@
1
+ import React$1, { Component, ErrorInfo, ReactNode } from "react";
2
+ import * as mobx15 from "mobx";
3
+ import * as mobx16 from "mobx";
4
+ import * as mobx17 from "mobx";
5
+ import * as mobx18 from "mobx";
6
+ import * as react_jsx_runtime14 from "react/jsx-runtime";
7
+ import * as mobx_dist_internal19 from "mobx/dist/internal";
8
+ import * as mobx_dist_internal20 from "mobx/dist/internal";
9
+ import * as mobx_dist_internal21 from "mobx/dist/internal";
10
+ import * as mobx_dist_internal22 from "mobx/dist/internal";
11
+ import * as mobx_dist_internal23 from "mobx/dist/internal";
12
+ import * as mobx_dist_internal24 from "mobx/dist/internal";
13
+
14
+ //#region src/list/types/ListTypes.d.ts
15
+ /**
16
+ * Core Type Definitions for ListItemsComponent
17
+ *
18
+ * Defines the fundamental interfaces and types used throughout the component.
19
+ * These types support the provider pattern and multiple view types.
20
+ */
21
+ /**
22
+ * Core Type Definitions for ListItemsComponent
23
+ *
24
+ * Defines the fundamental interfaces and types used throughout the component.
25
+ * These types support the provider pattern and multiple view types.
26
+ */
27
+ interface ListItemData {
28
+ /** Unique identifier for the item */
29
+ id: string;
30
+ /** Display name of the item */
31
+ name: string;
32
+ /** Optional type classification (file, folder, etc.) */
33
+ type?: string;
34
+ /** Optional size in bytes */
35
+ size?: number;
36
+ /** Optional modification date */
37
+ modified?: Date;
38
+ /** Optional icon identifier or URL */
39
+ icon?: string;
40
+ /** Optional thumbnail URL */
41
+ thumbnail?: string;
42
+ /** Optional thumbnail URL (alias for image display) */
43
+ thumbnailUrl?: string;
44
+ /** Additional custom properties */
45
+ [key: string]: any;
46
+ isDirectory?: boolean;
47
+ children?: ListItemData[];
48
+ metadata?: Record<string, any>;
49
+ imageUrl?: string;
50
+ aspectRatio?: number;
51
+ getDimensions?(): {
52
+ width: number;
53
+ height: number;
54
+ };
55
+ }
56
+ interface ListLoadOptions {
57
+ /** Number of items to load (for pagination) */
58
+ limit?: number;
59
+ /** Starting offset for pagination */
60
+ offset?: number;
61
+ /** Search query to filter items */
62
+ searchQuery?: string;
63
+ /** Sort field */
64
+ sortBy?: string;
65
+ /** Sort direction */
66
+ sortDirection?: 'asc' | 'desc';
67
+ /** Additional filter criteria */
68
+ filters?: Record<string, any>;
69
+ }
70
+ interface ListLoadResult {
71
+ /** Array of loaded items */
72
+ items: ListItemData[];
73
+ /** Total number of items available (for virtualization) */
74
+ totalCount?: number;
75
+ /** Whether there are more items to load */
76
+ hasMore?: boolean;
77
+ /** Loading cursor for pagination */
78
+ nextCursor?: string;
79
+ }
80
+ interface ListSelectionInfo {
81
+ /** Currently selected items */
82
+ selectedItems: ListItemData[];
83
+ /** Previously selected items */
84
+ previousSelection: ListItemData[];
85
+ /** Type of selection operation */
86
+ selectionType: 'single' | 'multi' | 'range';
87
+ /** What triggered the selection change */
88
+ trigger: 'click' | 'keyboard' | 'api';
89
+ }
90
+ interface ListDragDropInfo {
91
+ /** Items being dragged */
92
+ draggedItems: ListItemData[];
93
+ /** Target item being dropped on */
94
+ targetItem: ListItemData | null;
95
+ /** Drop position relative to target */
96
+ position: 'before' | 'after' | 'inside';
97
+ /** Original drag event */
98
+ event: DragEvent;
99
+ }
100
+ interface VirtualizationConfig {
101
+ /** Fixed item height for current view type */
102
+ itemHeight: number;
103
+ /** Items to render outside visible area */
104
+ overscan?: number;
105
+ /** Minimum items before enabling virtualization */
106
+ threshold?: number;
107
+ /** Dynamic loading range size */
108
+ rangeSize?: number;
109
+ }
110
+ interface ListViewType$1 {
111
+ /** Unique identifier for the view type */
112
+ readonly id: string;
113
+ /** Human-readable name */
114
+ readonly name: string;
115
+ /** Optional icon for the view type */
116
+ readonly icon?: string;
117
+ /** Number of items per row (1 for list, 'auto' for responsive grid) */
118
+ readonly itemsPerRow?: number | 'auto' | 'custom';
119
+ /** Whether to show detailed information */
120
+ readonly showDetails?: boolean;
121
+ /** Whether to show thumbnails */
122
+ readonly showThumbnails?: boolean;
123
+ /** Available thumbnail sizes */
124
+ readonly thumbnailSizes?: ThumbnailSize[];
125
+ /** Column definitions for details view */
126
+ readonly columns?: string[];
127
+ /** Custom renderer for this view type */
128
+ readonly customRenderer?: any;
129
+ }
130
+ type ThumbnailSize = 'small' | 'medium' | 'large' | 'extra-large';
131
+ interface ListContextMenuItem {
132
+ /** Menu item identifier */
133
+ id: string;
134
+ /** Display label */
135
+ label: string;
136
+ /** Optional icon (string or React component) */
137
+ icon?: string | React.ComponentType<any>;
138
+ /** Whether item is disabled */
139
+ disabled?: boolean;
140
+ /** Whether this is a separator */
141
+ type?: 'item' | 'separator';
142
+ /** Whether this is a destructive action */
143
+ destructive?: boolean;
144
+ /** Tooltip text */
145
+ tooltip?: string;
146
+ /** Keyboard shortcut display */
147
+ shortcut?: string;
148
+ /** Submenu items */
149
+ submenu?: ListContextMenuItem[];
150
+ }
151
+ interface ListItemRenderer {
152
+ /** Render item as text (for non-React environments) */
153
+ renderText?(item: ListItemData): string;
154
+ /** Render item icon */
155
+ renderIcon?(item: ListItemData): string;
156
+ /** Render item thumbnail */
157
+ renderThumbnail?(item: ListItemData): string;
158
+ /** Get display properties */
159
+ getDisplayProps?(item: ListItemData): {
160
+ className?: string;
161
+ style?: React.CSSProperties;
162
+ title?: string;
163
+ ariaLabel?: string;
164
+ };
165
+ /** Custom React component for item rendering */
166
+ renderComponent?: React.ComponentType<{
167
+ item: ListItemData;
168
+ [key: string]: any;
169
+ }>;
170
+ }
171
+ interface ListError {
172
+ /** Error message */
173
+ message: string;
174
+ /** Error code */
175
+ code?: string;
176
+ /** Whether error is recoverable */
177
+ recoverable?: boolean;
178
+ /** Retry function */
179
+ retry?: () => void;
180
+ } //#endregion
181
+ //#region src/list/providers/ListItemsProvider.d.ts
182
+
183
+ //# sourceMappingURL=ListTypes.d.ts.map
184
+ interface ListItemsProviderListener {
185
+ onItemsCountChanged(count: number): void;
186
+ onItemChanged(itemIndex: number): void;
187
+ }
188
+ interface ListViewType extends ListViewType$1 {}
189
+ declare const LIST_VIEW_TYPE: ListViewType;
190
+ declare const GRID_VIEW_TYPE: ListViewType;
191
+ declare const DETAILS_VIEW_TYPE: ListViewType;
192
+ declare const MASONRY_HORIZONTAL_VIEW_TYPE: ListViewType;
193
+ declare const MASONRY_VERTICAL_VIEW_TYPE: ListViewType;
194
+ declare const TREEMAP_VIEW_TYPE: ListViewType;
195
+ /** Recursive tree node for treemap view */
196
+ interface TreemapNodeData {
197
+ name: string;
198
+ path: string;
199
+ size?: number;
200
+ isDirectory: boolean;
201
+ children?: TreemapNodeData[];
202
+ }
203
+ /** Progress info reported during recursive directory scan */
204
+ interface TreemapScanProgress {
205
+ directoriesScanned: number;
206
+ filesFound: number;
207
+ totalSize: number;
208
+ }
209
+ interface ListItemsProvider {
210
+ /** Provider identifier */
211
+ readonly id: string;
212
+ /** Human-readable name */
213
+ readonly name: string;
214
+ /** Supported view types for this provider */
215
+ readonly supportedViewTypes: ListViewType[];
216
+ /** Whether multi-selection is enabled */
217
+ readonly isMultiSelectEnabled: boolean;
218
+ /** Whether virtualization is enabled */
219
+ readonly isVirtualizationEnabled: boolean;
220
+ /**
221
+ * Load items from the data source
222
+ * @param options Loading options for filtering, sorting, pagination
223
+ * @returns Promise resolving to loaded items
224
+ */
225
+ loadItems(options?: ListLoadOptions): Promise<ListLoadResult>;
226
+ /**
227
+ * Get total count of items (for virtualization)
228
+ * @returns Promise resolving to total item count
229
+ */
230
+ getItemCount(): Promise<number>;
231
+ /**
232
+ * Load a specific range of items (for virtualization)
233
+ * @param start Starting index
234
+ * @param end Ending index
235
+ * @returns Promise resolving to items in range
236
+ */
237
+ loadItemRange?(start: number, end: number): Promise<ListLoadResult>;
238
+ /**
239
+ * Refresh/reload items
240
+ * @returns Promise resolving to refreshed items
241
+ */
242
+ refresh?(): Promise<ListLoadResult>;
243
+ /**
244
+ * Get item height for a specific view type (for virtualization)
245
+ * @param viewType The view type to get height for
246
+ * @returns Fixed height in pixels
247
+ */
248
+ getItemHeight(viewType: ListViewType): number;
249
+ /**
250
+ * Get item width for grid-based view types
251
+ * @param viewType The view type to get width for
252
+ * @returns Fixed width in pixels
253
+ */
254
+ getItemWidth?(viewType: ListViewType): number;
255
+ /**
256
+ * Get virtualization configuration
257
+ * @returns Virtualization config object
258
+ */
259
+ getVirtualizationConfig?(): VirtualizationConfig;
260
+ /**
261
+ * Called when selection changes
262
+ * @param selectionInfo Information about the selection change
263
+ */
264
+ onSelectionChange?(selectionInfo: ListSelectionInfo): void;
265
+ /**
266
+ * Called when view type changes
267
+ * @param viewType New view type
268
+ */
269
+ onViewTypeChange?(viewType: ListViewType): void;
270
+ /**
271
+ * Called when an item is double-clicked
272
+ * @param item The item that was double-clicked
273
+ */
274
+ onItemDoubleClick?(item: ListItemData): void;
275
+ /**
276
+ * Called when keyboard navigation requests going up one level (Escape key).
277
+ * Providers that support hierarchical navigation should implement this.
278
+ */
279
+ onNavigateUp?(): void;
280
+ addListener(listener: ListItemsProviderListener): void;
281
+ removeListener(listener: ListItemsProviderListener): void;
282
+ /**
283
+ * Get custom icon for an item
284
+ * @param item Target item
285
+ * @returns Icon identifier or React component
286
+ */
287
+ getItemIcon?(item: ListItemData): string | React.ComponentType<any>;
288
+ /**
289
+ * Resolve a thumbnail URL for an item. Providers with async thumbnail
290
+ * loading return blob URLs from an observable cache — MobX observer
291
+ * components re-render when the URL becomes available.
292
+ */
293
+ resolveThumbnailUrl?(item: ListItemData): string | undefined;
294
+ /**
295
+ * Get measured aspect ratio (width/height) for an item by path.
296
+ * Used by masonry layout to size items correctly instead of using
297
+ * deterministic random fallback ratios.
298
+ */
299
+ getAspectRatio?(path: string): number | undefined;
300
+ /**
301
+ * Load recursive directory data for treemap view.
302
+ * Returns a nested tree of items including subfolder contents.
303
+ * @param onProgress Optional callback reporting scan progress
304
+ */
305
+ loadTreemapData?(onProgress?: (progress: TreemapScanProgress) => void): Promise<TreemapNodeData[]>;
306
+ /**
307
+ * Get context menu items for a specific item
308
+ * @param item Target item
309
+ * @returns Array of context menu items
310
+ */
311
+ getItemContextMenu?(item: ListItemData): ListContextMenuItem[];
312
+ /**
313
+ * Get context menu items for multiple selected items
314
+ * @param items Selected items
315
+ * @returns Array of context menu items
316
+ */
317
+ getMultiItemContextMenu?(items: ListItemData[]): ListContextMenuItem[];
318
+ /**
319
+ * Get context menu items for empty space (no item right-clicked)
320
+ * @returns Array of context menu items
321
+ */
322
+ getEmptySpaceContextMenu?(): ListContextMenuItem[];
323
+ /**
324
+ * Called when a context menu action is selected
325
+ * @param menuItemId Menu item identifier
326
+ * @param items Items the action applies to (empty array for empty-space actions)
327
+ */
328
+ onContextMenuAction?(menuItemId: string, items: ListItemData[]): void;
329
+ /**
330
+ * Whether drag and drop is enabled
331
+ */
332
+ readonly isDragDropEnabled?: boolean;
333
+ /**
334
+ * Check if an item can be dragged
335
+ * @param item Item to check
336
+ * @returns Whether the item can be dragged
337
+ */
338
+ canDragItem?(item: ListItemData): boolean;
339
+ /**
340
+ * Check if items can be dropped on a target
341
+ * @param draggedItems Items being dragged
342
+ * @param targetItem Target item (null for empty space)
343
+ * @param position Drop position relative to target
344
+ * @returns Whether the drop is allowed
345
+ */
346
+ canDropItems?(draggedItems: ListItemData[], targetItem: ListItemData | null, position: 'before' | 'after' | 'inside'): boolean;
347
+ /**
348
+ * Called when drag operation starts
349
+ * @param draggedItems Items being dragged
350
+ * @param event Original drag event
351
+ */
352
+ onDragStart?(draggedItems: ListItemData[], event: DragEvent): void;
353
+ /**
354
+ * Called when items are dropped
355
+ * @param dragDropInfo Information about the drag and drop operation
356
+ */
357
+ onDrop?(dragDropInfo: ListDragDropInfo): void;
358
+ /**
359
+ * Called when drag operation ends (whether successful or not)
360
+ * @param draggedItems Items that were being dragged
361
+ * @param success Whether the drop was successful
362
+ */
363
+ onDragEnd?(draggedItems: ListItemData[], success: boolean): void;
364
+ } //#endregion
365
+ //#region src/list/utils/GridLayoutCalculator.d.ts
366
+
367
+ //# sourceMappingURL=ListItemsProvider.d.ts.map
368
+ interface GridLayoutConfig {
369
+ containerWidth: number;
370
+ containerHeight: number;
371
+ itemsPerRow: number | 'auto';
372
+ gap: number;
373
+ padding: number;
374
+ minItemWidth: number;
375
+ maxItemWidth: number;
376
+ aspectRatio: number;
377
+ }
378
+ interface GridItemLayout {
379
+ x: number;
380
+ y: number;
381
+ width: number;
382
+ height: number;
383
+ thumbnailSize: number;
384
+ textHeight: number;
385
+ }
386
+ interface GridLayoutResult {
387
+ itemsPerRow: number;
388
+ itemWidth: number;
389
+ itemHeight: number;
390
+ totalRows: number;
391
+ totalHeight: number;
392
+ items: GridItemLayout[];
393
+ }
394
+ declare class GridLayoutCalculator {
395
+ private config;
396
+ constructor(config: GridLayoutConfig);
397
+ updateConfig(updates: Partial<GridLayoutConfig>): void;
398
+ get currentConfig(): GridLayoutConfig;
399
+ calculateItemsPerRow(): number;
400
+ calculateItemDimensions(itemsPerRow: number): {
401
+ width: number;
402
+ height: number;
403
+ };
404
+ calculateThumbnailSize(itemWidth: number, itemHeight: number): number;
405
+ calculateLayout(totalItems: number): GridLayoutResult;
406
+ calculateVisibleItems(totalItems: number, scrollTop: number, viewportHeight: number, overscan?: number): {
407
+ startIndex: number;
408
+ endIndex: number;
409
+ visibleItems: GridItemLayout[];
410
+ };
411
+ getItemPosition(itemIndex: number, totalItems: number): GridItemLayout | null;
412
+ getItemAtPosition(x: number, y: number, totalItems: number): number | null;
413
+ }
414
+ declare function createGridCalculator(containerWidth: number, containerHeight: number, options?: Partial<GridLayoutConfig>): GridLayoutCalculator;
415
+ declare const GRID_PRESETS: {
416
+ readonly compact: {
417
+ readonly gap: 8;
418
+ readonly padding: 12;
419
+ readonly minItemWidth: 120;
420
+ readonly maxItemWidth: 200;
421
+ readonly aspectRatio: 0.85;
422
+ };
423
+ readonly comfortable: {
424
+ readonly gap: 16;
425
+ readonly padding: 20;
426
+ readonly minItemWidth: 200;
427
+ readonly maxItemWidth: 300;
428
+ readonly aspectRatio: 0.9;
429
+ };
430
+ readonly spacious: {
431
+ readonly gap: 24;
432
+ readonly padding: 32;
433
+ readonly minItemWidth: 280;
434
+ readonly maxItemWidth: 400;
435
+ readonly aspectRatio: 0.95;
436
+ };
437
+ };
438
+
439
+ //#endregion
440
+ //#region src/list/utils/MasonryLayoutEngine.d.ts
441
+ //# sourceMappingURL=GridLayoutCalculator.d.ts.map
442
+ interface MasonryItemPosition {
443
+ id: string;
444
+ x: number;
445
+ y: number;
446
+ width: number;
447
+ height: number;
448
+ }
449
+
450
+ //#endregion
451
+ //#region src/list/models/ListItemsModel.d.ts
452
+ declare class ListItemsModel implements ListItemsProviderListener {
453
+ provider: ListItemsProvider;
454
+ currentViewType: ListViewType;
455
+ _allItems: ListItemData[];
456
+ itemMap: mobx15.ObservableMap<string, ListItemData>;
457
+ totalItemCount: number;
458
+ searchQuery: string;
459
+ selectedItems: mobx16.ObservableMap<string, ListItemData>;
460
+ previousSelection: ListItemData[];
461
+ focusedItem: string | null;
462
+ selectionAnchor: string | null;
463
+ isLoading: boolean;
464
+ loadingRanges: mobx17.ObservableMap<string, boolean>;
465
+ errors: mobx18.ObservableMap<string, Error>;
466
+ viewportRange: {
467
+ start: number;
468
+ end: number;
469
+ };
470
+ scrollPosition: number;
471
+ containerSize: {
472
+ width: number;
473
+ height: number;
474
+ };
475
+ isDragging: boolean;
476
+ draggedItems: ListItemData[];
477
+ dragOverItem: string | null;
478
+ dragOverPosition: 'before' | 'after' | 'inside' | null;
479
+ itemSize: 'small' | 'medium' | 'large' | 'extra-large';
480
+ customItemWidth: number;
481
+ customItemHeight: number;
482
+ itemsPerRow: number | 'auto';
483
+ private gridCalculator;
484
+ private verticalMasonryEngine;
485
+ private horizontalMasonryEngine;
486
+ debugVisualization: boolean;
487
+ compactMode: boolean;
488
+ columnVisibility: {
489
+ type: boolean;
490
+ modified: boolean;
491
+ size: boolean;
492
+ };
493
+ showCheckboxes: boolean;
494
+ scrollToItemId: string | null;
495
+ pageSize: number;
496
+ currentPage: number;
497
+ constructor(provider: ListItemsProvider);
498
+ get items(): ListItemData[];
499
+ get hasSearchQuery(): boolean;
500
+ get allItemsCount(): number;
501
+ setSearchQuery(query: string): void;
502
+ clearSearch(): void;
503
+ clearItems(): void;
504
+ onItemsCountChanged(count: number): void;
505
+ onItemChanged(itemIndex: number): void;
506
+ get selectedItemsArray(): ListItemData[];
507
+ get hasSelection(): boolean;
508
+ get isItemSelected(): (itemId: string) => boolean;
509
+ get itemHeight(): number;
510
+ get isLoaded(): boolean;
511
+ get hasErrors(): boolean;
512
+ get selectedItemIds(): Set<string>;
513
+ get visibleItemsCount(): number;
514
+ get loadedItemsCount(): number;
515
+ get loadingProgress(): number;
516
+ get isFullyLoaded(): boolean;
517
+ get totalPages(): number;
518
+ get hasNextPage(): boolean;
519
+ get hasPreviousPage(): boolean;
520
+ goToPage: (page: number) => mobx_dist_internal19.CancellablePromise<void>;
521
+ nextPage: () => mobx_dist_internal20.CancellablePromise<void>;
522
+ prevPage: () => mobx_dist_internal21.CancellablePromise<void>;
523
+ setPageSize(size: number): void;
524
+ /**
525
+ * Load items from the provider
526
+ * Uses MobX flow for proper async action handling
527
+ */
528
+ loadItems: (options?: ListLoadOptions | undefined) => mobx_dist_internal22.CancellablePromise<void>;
529
+ /**
530
+ * Load a specific range of items for virtualization
531
+ */
532
+ loadItemRange: (start: number, end: number) => mobx_dist_internal23.CancellablePromise<void>;
533
+ /**
534
+ * Refresh items from provider
535
+ */
536
+ refresh: () => mobx_dist_internal24.CancellablePromise<void>;
537
+ /**
538
+ * Select a single item with proper single/multi-selection logic
539
+ */
540
+ selectItem(item: ListItemData, modifiers?: {
541
+ ctrl?: boolean;
542
+ shift?: boolean;
543
+ }): void;
544
+ /**
545
+ * Select a contiguous range of items between two item IDs
546
+ */
547
+ selectRange(fromId: string, toId: string): void;
548
+ /**
549
+ * Clear all selection
550
+ */
551
+ clearSelection(): void;
552
+ /**
553
+ * Select all items (if multi-select enabled)
554
+ */
555
+ selectAll(): void;
556
+ /**
557
+ * Set the current view type
558
+ */
559
+ setViewType(viewType: ListViewType): void;
560
+ /**
561
+ * Set item size for grid and masonry views
562
+ */
563
+ setItemSize(size: 'small' | 'medium' | 'large' | 'extra-large'): void;
564
+ /**
565
+ * Set custom item width and update calculators
566
+ */
567
+ setCustomItemWidth(width: number): void;
568
+ /**
569
+ * Set custom item height and update calculators
570
+ */
571
+ setCustomItemHeight(height: number): void;
572
+ /**
573
+ * Get current item dimensions
574
+ */
575
+ get itemDimensions(): {
576
+ width: number;
577
+ height: number;
578
+ };
579
+ /**
580
+ * Set items per row for grid and masonry views
581
+ */
582
+ setItemsPerRow(itemsPerRow: number | 'auto'): void;
583
+ /**
584
+ * Set debug visualization mode
585
+ */
586
+ setDebugVisualization(enabled: boolean): void;
587
+ setCompactMode(compact: boolean): void;
588
+ toggleCheckboxes(): void;
589
+ setShowCheckboxes(show: boolean): void;
590
+ setColumnVisibility(column: 'type' | 'modified' | 'size', visible: boolean): void;
591
+ get detailsGridTemplateColumns(): string;
592
+ /**
593
+ * Generate random aspect ratio for Pinterest-like variety
594
+ */
595
+ /**
596
+ * Deterministic aspect ratio based on item id (stable across re-renders).
597
+ * Uses a simple hash to pick from predefined ratios.
598
+ */
599
+ private generateDeterministicAspectRatio;
600
+ /**
601
+ * Get effective items per row based on view and container width
602
+ */
603
+ getEffectiveItemsPerRow(containerWidth?: number): number;
604
+ /**
605
+ * Set focused item
606
+ */
607
+ setFocusedItem(itemId: string | null): void;
608
+ /**
609
+ * Focus next item
610
+ */
611
+ focusNext(): boolean;
612
+ /**
613
+ * Focus previous item
614
+ */
615
+ focusPrevious(): boolean;
616
+ /**
617
+ * Focus the first item in the list
618
+ */
619
+ focusFirst(): boolean;
620
+ /**
621
+ * Focus the last item in the list
622
+ */
623
+ focusLast(): boolean;
624
+ /**
625
+ * Handle keyboard events for list navigation.
626
+ * Can be used directly via onKeyDown on a container element,
627
+ * or the useListKeyboard hook can be used for automatic attachment.
628
+ *
629
+ * - ArrowUp/ArrowDown: navigate between items
630
+ * - Home/End: jump to first/last item
631
+ * - Enter: open focused item (navigate into folder or open file)
632
+ * - Space: toggle selection of focused item
633
+ * - Escape: clear selection, or navigate up one directory level if nothing selected
634
+ * - Ctrl+A: select all items
635
+ */
636
+ handleKeyDown(event: KeyboardEvent): void;
637
+ /**
638
+ * Get the index of the currently focused item, defaulting to 0
639
+ */
640
+ private getFocusedIndex;
641
+ /**
642
+ * Navigate to a specific item index, updating focus, selection, and scroll
643
+ */
644
+ private navigateToIndex;
645
+ /**
646
+ * Check if an item can be dragged
647
+ */
648
+ canDragItem(item: ListItemData): boolean;
649
+ /**
650
+ * Check if items can be dropped on a target
651
+ */
652
+ canDropItems(draggedItems: ListItemData[], targetItem: ListItemData | null, position: 'before' | 'after' | 'inside'): boolean;
653
+ /**
654
+ * Start drag operation
655
+ */
656
+ startDrag(items: ListItemData[], event: DragEvent): void;
657
+ /**
658
+ * Handle drag over item
659
+ */
660
+ setDragOver(itemId: string | null, position: 'before' | 'after' | 'inside' | null): void;
661
+ /**
662
+ * Handle drop operation
663
+ */
664
+ handleDrop(targetItem: ListItemData | null, position: 'before' | 'after' | 'inside', event: DragEvent): boolean;
665
+ /**
666
+ * End drag operation
667
+ */
668
+ endDrag(success: boolean): void;
669
+ /**
670
+ * Update viewport range for virtualization and trigger dynamic loading
671
+ */
672
+ updateViewportRange(start: number, end: number): void;
673
+ /**
674
+ * Load items that are visible in the current viewport
675
+ */
676
+ private loadVisibleItems;
677
+ /**
678
+ * Update scroll position
679
+ */
680
+ updateScrollPosition(position: number): void;
681
+ /**
682
+ * Update container size
683
+ */
684
+ updateContainerSize(width: number, height: number): void;
685
+ /**
686
+ * Update layout calculators with current settings
687
+ */
688
+ private updateLayoutCalculators;
689
+ /**
690
+ * Get grid layout for current items
691
+ */
692
+ getGridLayout(): {
693
+ layout: GridItemLayout[];
694
+ totalHeight: number;
695
+ } | null;
696
+ /**
697
+ * Check whether an item is an actual image that should get variable height
698
+ * in masonry layout. Non-image items (folders, docs, code files) get uniform height.
699
+ */
700
+ private isImageItem;
701
+ /**
702
+ * Get vertical masonry layout for current items
703
+ */
704
+ getVerticalMasonryLayout(): {
705
+ layout: MasonryItemPosition[];
706
+ totalHeight: number;
707
+ } | null;
708
+ /**
709
+ * Get horizontal masonry layout for current items
710
+ */
711
+ getHorizontalMasonryLayout(): {
712
+ layout: MasonryItemPosition[];
713
+ totalHeight: number;
714
+ } | null;
715
+ /**
716
+ * Get visible items for virtualization
717
+ */
718
+ getVisibleGridItems(scrollTop: number, viewportHeight: number): GridItemLayout[];
719
+ /**
720
+ * Get visible vertical masonry items for virtualization
721
+ */
722
+ getVisibleVerticalMasonryItems(scrollTop: number, viewportHeight: number): MasonryItemPosition[];
723
+ /**
724
+ * Get visible horizontal masonry items for virtualization
725
+ */
726
+ getVisibleHorizontalMasonryItems(scrollTop: number, viewportHeight: number): MasonryItemPosition[];
727
+ /**
728
+ * Get visible masonry items for virtualization (unified method)
729
+ */
730
+ getVisibleMasonryItems(scrollTop: number, viewportHeight: number, isHorizontal?: boolean, overscan?: number): MasonryItemPosition[];
731
+ /**
732
+ * Ensure item is visible (scroll to item)
733
+ */
734
+ ensureItemVisible(itemId: string): boolean;
735
+ clearScrollToItem(): void;
736
+ /**
737
+ * Get item by ID
738
+ */
739
+ getItem(itemId: string): ListItemData | undefined;
740
+ /**
741
+ * Get item index
742
+ */
743
+ getItemIndex(itemId: string): number;
744
+ /**
745
+ * Resolve thumbnail URL for an item via provider cache.
746
+ * Returns blob URL when ready, undefined while loading.
747
+ * MobX observer components re-render when the URL becomes available.
748
+ */
749
+ resolveThumbnailUrl(item: ListItemData): string | undefined;
750
+ } //#endregion
751
+ //#region src/list/components/ListItem.d.ts
752
+
753
+ //# sourceMappingURL=ListItemsModel.d.ts.map
754
+ interface ListItemProps {
755
+ item: ListItemData;
756
+ index: number;
757
+ totalItems: number;
758
+ viewType: ListViewType$1;
759
+ provider?: ListItemsProvider;
760
+ model?: ListItemsModel;
761
+ itemWidth?: number;
762
+ itemHeight?: number;
763
+ thumbnailSize?: number;
764
+ isSelected?: boolean;
765
+ isFocused?: boolean;
766
+ isDraggedOver?: boolean;
767
+ dragOverPosition?: 'before' | 'after' | 'inside' | null;
768
+ canDrag?: boolean;
769
+ onClick?: (item: ListItemData, event: React$1.MouseEvent) => void;
770
+ onDoubleClick?: (item: ListItemData, event: React$1.MouseEvent) => void;
771
+ onContextMenu?: (item: ListItemData, event: React$1.MouseEvent) => void;
772
+ onDragStart?: (item: ListItemData, event: React$1.DragEvent) => void;
773
+ onDragOver?: (item: ListItemData, event: React$1.DragEvent) => void;
774
+ onDragLeave?: (item: ListItemData, event: React$1.DragEvent) => void;
775
+ onDrop?: (item: ListItemData, event: React$1.DragEvent) => void;
776
+ }
777
+ declare const ListItem: React$1.FunctionComponent<ListItemProps>;
778
+
779
+ //#endregion
780
+ //#region src/list/components/ListItems.d.ts
781
+ //# sourceMappingURL=ListItem.d.ts.map
782
+ interface ListItemsProps {
783
+ model: ListItemsModel;
784
+ className?: string;
785
+ style?: React$1.CSSProperties;
786
+ height?: number;
787
+ width?: number;
788
+ enableVirtualization?: boolean;
789
+ enableKeyboardNavigation?: boolean;
790
+ }
791
+ declare const ListItems: React$1.FunctionComponent<ListItemsProps>;
792
+
793
+ //#endregion
794
+ //#region src/list/components/ListContextMenu.d.ts
795
+ //# sourceMappingURL=ListItems.d.ts.map
796
+ interface ListContextMenuProps {
797
+ isOpen: boolean;
798
+ position: {
799
+ x: number;
800
+ y: number;
801
+ };
802
+ items: ListItemData[];
803
+ provider: ListItemsProvider;
804
+ onClose: () => void;
805
+ /** Extra menu items to prepend before provider items */
806
+ extraMenuItems?: ListContextMenuItem[];
807
+ /** Handler for extra menu item actions (called instead of provider.onContextMenuAction) */
808
+ onExtraMenuAction?: (actionId: string, items: ListItemData[]) => void;
809
+ }
810
+ declare const ListContextMenu: React$1.FunctionComponent<ListContextMenuProps>;
811
+
812
+ //#endregion
813
+ //#region src/list/components/ViewTypeSelector.d.ts
814
+ //# sourceMappingURL=ListContextMenu.d.ts.map
815
+ interface ViewTypeSelectorProps {
816
+ viewTypes: ListViewType$1[];
817
+ currentViewType: ListViewType$1;
818
+ onViewTypeChange: (viewType: ListViewType$1) => void;
819
+ variant?: 'buttons' | 'tabs' | 'dropdown';
820
+ size?: 'sm' | 'md' | 'lg';
821
+ className?: string;
822
+ }
823
+ declare const ViewTypeSelector: React$1.NamedExoticComponent<ViewTypeSelectorProps>;
824
+
825
+ //#endregion
826
+ //#region src/list/components/SearchFilter.d.ts
827
+ //# sourceMappingURL=ViewTypeSelector.d.ts.map
828
+ interface SearchFilterProps {
829
+ model: ListItemsModel;
830
+ placeholder?: string;
831
+ className?: string;
832
+ }
833
+ declare const SearchFilter: React$1.FunctionComponent<SearchFilterProps>;
834
+
835
+ //#endregion
836
+ //#region src/list/components/VirtualizedList.d.ts
837
+ //# sourceMappingURL=SearchFilter.d.ts.map
838
+ interface VirtualizedListProps {
839
+ model: ListItemsModel;
840
+ height: number;
841
+ width?: number;
842
+ className?: string;
843
+ overscanCount?: number;
844
+ }
845
+ declare const VirtualizedList: React$1.FunctionComponent<VirtualizedListProps>;
846
+
847
+ //#endregion
848
+ //#region src/list/components/VirtualizedGrid.d.ts
849
+ //# sourceMappingURL=VirtualizedList.d.ts.map
850
+ interface VirtualizedGridProps {
851
+ model: ListItemsModel;
852
+ height: number;
853
+ width: number;
854
+ className?: string;
855
+ overscanCount?: number;
856
+ }
857
+ declare const VirtualizedGrid: React$1.FunctionComponent<VirtualizedGridProps>;
858
+
859
+ //#endregion
860
+ //#region src/list/components/MasonryView.d.ts
861
+ //# sourceMappingURL=VirtualizedGrid.d.ts.map
862
+ interface MasonryViewProps {
863
+ model: ListItemsModel;
864
+ items: ListItemData[];
865
+ containerWidth: number;
866
+ containerHeight: number;
867
+ isHorizontal?: boolean;
868
+ }
869
+ declare const MasonryView: React$1.FC<MasonryViewProps>;
870
+
871
+ //#endregion
872
+ //#region src/list/components/ViewSizeControls.d.ts
873
+ interface ViewSizeControlsProps {
874
+ model: ListItemsModel;
875
+ className?: string;
876
+ showSizePresets?: boolean;
877
+ showCustomSliders?: boolean;
878
+ showDebugToggle?: boolean;
879
+ }
880
+ declare const ViewSizeControls: React$1.FunctionComponent<ViewSizeControlsProps>;
881
+
882
+ //#endregion
883
+ //#region src/list/models/TreemapModel.d.ts
884
+ //# sourceMappingURL=ViewSizeControls.d.ts.map
885
+ type ColorScheme = 'extension' | 'size' | 'type';
886
+ /**
887
+ * Get the RGBA color for a file extension (used by the cushion treemap renderer).
888
+ */
889
+
890
+ /**
891
+ * Phase 1 TreemapModel — works with items already loaded in ListItemsModel.
892
+ *
893
+ * No worker scanning, no async. Computes layout from the flat items list,
894
+ * using file `size` for proportional rectangles (directories get size=1).
895
+ */
896
+ declare class TreemapModel {
897
+ /** Current zoom path within the treemap */
898
+ zoomPath: string;
899
+ /** Path of the hovered tile (for tooltip) */
900
+ hoveredPath: string | null;
901
+ /** Active color scheme */
902
+ colorScheme: ColorScheme;
903
+ /** Whether to show file name labels on tiles */
904
+ showLabels: boolean;
905
+ /** Whether to show size labels on tiles */
906
+ showSizes: boolean;
907
+ /** Highlighted extension category label (e.g. 'JS/TS') for legend filtering */
908
+ highlightedExtension: string | null;
909
+ constructor();
910
+ zoomIn(path: string): void;
911
+ zoomOut(): void;
912
+ resetZoom(): void;
913
+ setHoveredPath(path: string | null): void;
914
+ setColorScheme(scheme: ColorScheme): void;
915
+ toggleLabels(): void;
916
+ toggleSizes(): void;
917
+ setHighlightedExtension(ext: string | null): void;
918
+ get breadcrumbs(): Array<{
919
+ name: string;
920
+ path: string;
921
+ }>;
922
+ /**
923
+ * Get the RGBA color for a node based on the current color scheme.
924
+ */
925
+ getNodeColor(item: ListItemData): [number, number, number, number];
926
+ }
927
+
928
+ //#endregion
929
+ //#region src/list/components/TreemapView.d.ts
930
+ //# sourceMappingURL=TreemapModel.d.ts.map
931
+ /** Node metadata for overlay tiles */
932
+ interface TileInfo {
933
+ path: string;
934
+ name: string;
935
+ size?: number;
936
+ isDirectory: boolean;
937
+ }
938
+ interface TreemapViewProps {
939
+ model: ListItemsModel;
940
+ treemapModel: TreemapModel;
941
+ width: number;
942
+ height: number;
943
+ className?: string;
944
+ onTileContextMenu?: (info: TileInfo, event: React$1.MouseEvent) => void;
945
+ onEmptyContextMenu?: (event: React$1.MouseEvent) => void;
946
+ }
947
+ /**
948
+ * TreemapView — renders items from ListItemsModel as a cushion-shaded treemap.
949
+ *
950
+ * Uses @cushiontreemap/core to render to a canvas, with transparent overlaid
951
+ * divs for click/hover interactivity.
952
+ *
953
+ * If the provider supports loadTreemapData(), shows recursive subdirectory content.
954
+ */
955
+ declare const TreemapView: React$1.FunctionComponent<TreemapViewProps>;
956
+
957
+ //#endregion
958
+ //#region src/list/components/CalculatedGridView.d.ts
959
+ //# sourceMappingURL=TreemapView.d.ts.map
960
+ interface CalculatedGridViewProps {
961
+ model: ListItemsModel;
962
+ className?: string;
963
+ height?: number;
964
+ width?: number;
965
+ enableVirtualization?: boolean;
966
+ onItemClick?: (item: ListItemData, event: React$1.MouseEvent) => void;
967
+ onItemDoubleClick?: (item: ListItemData, event: React$1.MouseEvent) => void;
968
+ onItemContextMenu?: (item: ListItemData, event: React$1.MouseEvent) => void;
969
+ onItemDragStart?: (item: ListItemData, event: React$1.DragEvent) => void;
970
+ onItemDragOver?: (item: ListItemData, event: React$1.DragEvent) => void;
971
+ onItemDragLeave?: (item: ListItemData, event: React$1.DragEvent) => void;
972
+ onItemDrop?: (item: ListItemData, event: React$1.DragEvent) => void;
973
+ }
974
+ declare const CalculatedGridView: React$1.FunctionComponent<CalculatedGridViewProps>;
975
+
976
+ //#endregion
977
+ //#region src/list/components/shared/ListLoader.d.ts
978
+ //# sourceMappingURL=CalculatedGridView.d.ts.map
979
+ interface ListLoaderProps {
980
+ viewType: ListViewType;
981
+ itemCount?: number;
982
+ itemWidth?: number;
983
+ itemHeight?: number;
984
+ className?: string;
985
+ }
986
+ declare const ListLoader: React$1.FunctionComponent<ListLoaderProps>;
987
+
988
+ //#endregion
989
+ //#region src/list/components/shared/LoadingIndicator.d.ts
990
+ //# sourceMappingURL=ListLoader.d.ts.map
991
+ interface LoadingIndicatorProps {
992
+ size?: 'small' | 'medium' | 'large';
993
+ message?: string;
994
+ className?: string;
995
+ showSpinner?: boolean;
996
+ }
997
+ interface InlineLoadingProps {
998
+ className?: string;
999
+ }
1000
+ interface LoadingProgressProps {
1001
+ progress: number;
1002
+ message?: string;
1003
+ className?: string;
1004
+ }
1005
+ declare const LoadingIndicator: React$1.FunctionComponent<LoadingIndicatorProps>;
1006
+ declare const InlineLoading: React$1.FunctionComponent<InlineLoadingProps>;
1007
+ declare const LoadingProgress: React$1.FunctionComponent<LoadingProgressProps>;
1008
+
1009
+ //#endregion
1010
+ //#region src/list/components/shared/ErrorBoundary.d.ts
1011
+ //# sourceMappingURL=LoadingIndicator.d.ts.map
1012
+ interface ErrorBoundaryProps {
1013
+ children: ReactNode;
1014
+ fallback?: (error: Error, errorInfo: ErrorInfo) => ReactNode;
1015
+ onError?: (error: Error, errorInfo: ErrorInfo) => void;
1016
+ className?: string;
1017
+ }
1018
+ interface ErrorBoundaryState {
1019
+ hasError: boolean;
1020
+ error: Error | null;
1021
+ errorInfo: ErrorInfo | null;
1022
+ }
1023
+ declare class ListErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
1024
+ constructor(props: ErrorBoundaryProps);
1025
+ static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState>;
1026
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
1027
+ handleRetry: () => void;
1028
+ render(): string | number | bigint | boolean | react_jsx_runtime14.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;
1029
+ }
1030
+
1031
+ //#endregion
1032
+ //#region src/list/components/shared/ErrorDisplay.d.ts
1033
+ //# sourceMappingURL=ErrorBoundary.d.ts.map
1034
+ interface ErrorDisplayProps {
1035
+ error: Error | string;
1036
+ title?: string;
1037
+ message?: string;
1038
+ onRetry?: () => void;
1039
+ onDismiss?: () => void;
1040
+ className?: string;
1041
+ size?: 'small' | 'medium' | 'large';
1042
+ variant?: 'default' | 'destructive' | 'warning';
1043
+ }
1044
+ interface NetworkErrorProps {
1045
+ onRetry?: () => void;
1046
+ className?: string;
1047
+ }
1048
+ interface LoadErrorProps {
1049
+ error: Error | string;
1050
+ onRetry?: () => void;
1051
+ className?: string;
1052
+ }
1053
+ declare const ErrorDisplay: React$1.FunctionComponent<ErrorDisplayProps>;
1054
+ declare const NetworkError: React$1.FunctionComponent<NetworkErrorProps>;
1055
+ declare const LoadError: React$1.FunctionComponent<LoadErrorProps>;
1056
+
1057
+ //#endregion
1058
+ //#region src/list/components/shared/EmptyState.d.ts
1059
+ //# sourceMappingURL=ErrorDisplay.d.ts.map
1060
+ interface EmptyStateProps {
1061
+ title?: string;
1062
+ message?: string;
1063
+ icon?: React$1.ReactNode;
1064
+ actions?: React$1.ReactNode;
1065
+ className?: string;
1066
+ size?: 'small' | 'medium' | 'large';
1067
+ }
1068
+ interface NoItemsProps {
1069
+ onRefresh?: () => void;
1070
+ className?: string;
1071
+ }
1072
+ interface NoSearchResultsProps {
1073
+ searchQuery?: string;
1074
+ onClearSearch?: () => void;
1075
+ className?: string;
1076
+ }
1077
+ interface NoSelectionProps {
1078
+ message?: string;
1079
+ className?: string;
1080
+ }
1081
+ declare const EmptyState: React$1.FunctionComponent<EmptyStateProps>;
1082
+ declare const NoItems: React$1.FunctionComponent<NoItemsProps>;
1083
+ declare const NoSearchResults: React$1.FunctionComponent<NoSearchResultsProps>;
1084
+ declare const NoSelection: React$1.FunctionComponent<NoSelectionProps>;
1085
+
1086
+ //#endregion
1087
+ //#region src/list/providers/TestListProvider.d.ts
1088
+ //# sourceMappingURL=EmptyState.d.ts.map
1089
+ declare class TestListProvider implements ListItemsProvider {
1090
+ readonly id = "test-list-provider";
1091
+ readonly name = "Test List Provider";
1092
+ readonly isMultiSelectEnabled = true;
1093
+ readonly isVirtualizationEnabled = true;
1094
+ readonly isDragDropEnabled = true;
1095
+ readonly supportedViewTypes: ListViewType[];
1096
+ private items;
1097
+ private listener?;
1098
+ constructor();
1099
+ private generateLargeDataset;
1100
+ private getIconForType;
1101
+ /**
1102
+ * Get custom icon for an item based on file type and extension
1103
+ */
1104
+ getItemIcon(item: ListItemData): string | React$1.ComponentType<any>;
1105
+ loadItems(options?: ListLoadOptions): Promise<ListLoadResult>;
1106
+ getItemCount(): Promise<number>;
1107
+ loadItemRange(start: number, end: number): Promise<ListLoadResult>;
1108
+ refresh(): Promise<ListLoadResult>;
1109
+ getItemHeight(viewType: ListViewType): number;
1110
+ getItemWidth(viewType: ListViewType): number;
1111
+ getVirtualizationConfig(): VirtualizationConfig;
1112
+ onSelectionChange(selectionInfo: ListSelectionInfo): void;
1113
+ onViewTypeChange(viewType: ListViewType): void;
1114
+ onItemDoubleClick(item: ListItemData): void;
1115
+ getItemContextMenu(item: ListItemData): ListContextMenuItem[];
1116
+ getMultiItemContextMenu(items: ListItemData[]): ListContextMenuItem[];
1117
+ onContextMenuAction(menuItemId: string, items: ListItemData[]): void;
1118
+ canDragItem(item: ListItemData): boolean;
1119
+ canDropItems(draggedItems: ListItemData[], targetItem: ListItemData | null, position: 'before' | 'after' | 'inside'): boolean;
1120
+ onDragStart(draggedItems: ListItemData[], event: DragEvent): void;
1121
+ onDrop(dragDropInfo: ListDragDropInfo): void;
1122
+ onDragEnd(draggedItems: ListItemData[], success: boolean): void;
1123
+ addListener(listener: ListItemsProviderListener): void;
1124
+ removeListener(listener: ListItemsProviderListener): void;
1125
+ /**
1126
+ * Add a new mock item (useful for testing dynamic updates)
1127
+ */
1128
+ addMockItem(item: Partial<ListItemData>): void;
1129
+ /**
1130
+ * Remove an item by ID (useful for testing dynamic updates)
1131
+ */
1132
+ removeMockItem(itemId: string): void;
1133
+ /**
1134
+ * Update an existing item (useful for testing dynamic updates)
1135
+ */
1136
+ updateMockItem(itemId: string, updates: Partial<ListItemData>): void;
1137
+ }
1138
+
1139
+ //#endregion
1140
+ //#region src/list/utils/ListKeyboard.d.ts
1141
+ //# sourceMappingURL=TestListProvider.d.ts.map
1142
+ interface KeyboardNavigationOptions {
1143
+ enableArrowKeys?: boolean;
1144
+ enableHomeEnd?: boolean;
1145
+ enableSpaceEnter?: boolean;
1146
+ enableSelectAll?: boolean;
1147
+ enableEscape?: boolean;
1148
+ enablePageUpDown?: boolean;
1149
+ }
1150
+ declare class ListKeyboardHandler {
1151
+ private model;
1152
+ private options;
1153
+ private isAttached;
1154
+ constructor(model: ListItemsModel, options?: KeyboardNavigationOptions);
1155
+ /**
1156
+ * Attach keyboard event listeners
1157
+ */
1158
+ attach(element?: HTMLElement): void;
1159
+ /**
1160
+ * Detach keyboard event listeners
1161
+ */
1162
+ detach(element?: HTMLElement): void;
1163
+ /**
1164
+ * Main keyboard event handler
1165
+ */
1166
+ private handleKeyDown;
1167
+ /**
1168
+ * Handle arrow up navigation
1169
+ */
1170
+ private handleArrowUp;
1171
+ /**
1172
+ * Handle arrow down navigation
1173
+ */
1174
+ private handleArrowDown;
1175
+ /**
1176
+ * Handle arrow left navigation (grid view)
1177
+ */
1178
+ private handleArrowLeft;
1179
+ /**
1180
+ * Handle arrow right navigation (grid view)
1181
+ */
1182
+ private handleArrowRight;
1183
+ /**
1184
+ * Handle list view arrow up
1185
+ */
1186
+ private handleListArrowUp;
1187
+ /**
1188
+ * Handle list view arrow down
1189
+ */
1190
+ private handleListArrowDown;
1191
+ /**
1192
+ * Handle grid view arrow up (move up by grid columns)
1193
+ */
1194
+ private handleGridArrowUp;
1195
+ /**
1196
+ * Handle grid view arrow down (move down by grid columns)
1197
+ */
1198
+ private handleGridArrowDown;
1199
+ /**
1200
+ * Handle Home key - go to first item
1201
+ */
1202
+ private handleHome;
1203
+ /**
1204
+ * Handle End key - go to last item
1205
+ */
1206
+ private handleEnd;
1207
+ /**
1208
+ * Handle Page Up - move up by visible page size
1209
+ */
1210
+ private handlePageUp;
1211
+ /**
1212
+ * Handle Page Down - move down by visible page size
1213
+ */
1214
+ private handlePageDown;
1215
+ /**
1216
+ * Handle Space key - toggle selection of focused item
1217
+ */
1218
+ private handleSpace;
1219
+ /**
1220
+ * Handle Enter key - activate focused item
1221
+ */
1222
+ private handleEnter;
1223
+ /**
1224
+ * Handle Ctrl+A - select all items
1225
+ */
1226
+ private handleSelectAll;
1227
+ /**
1228
+ * Handle Escape - clear selection first, then navigate up one directory
1229
+ */
1230
+ private handleEscape;
1231
+ /**
1232
+ * Navigate to specific index with optional range selection
1233
+ */
1234
+ private navigateToIndex;
1235
+ /**
1236
+ * Get current focused item index
1237
+ */
1238
+ private getCurrentFocusedIndex;
1239
+ /**
1240
+ * Get currently focused item
1241
+ */
1242
+ private getFocusedItem;
1243
+ /**
1244
+ * Get number of columns per row in grid view
1245
+ */
1246
+ private getGridColumnsPerRow;
1247
+ /**
1248
+ * Get page size for page up/down navigation
1249
+ */
1250
+ private getPageSize;
1251
+ }
1252
+ /**
1253
+ * Hook for using keyboard navigation in React components
1254
+ */
1255
+ declare const useListKeyboard: (model: ListItemsModel, options?: KeyboardNavigationOptions, containerRef?: React$1.RefObject<HTMLElement | HTMLDivElement | null>) => ListKeyboardHandler;
1256
+
1257
+ //#endregion
1258
+ //#region src/list/utils/ListAccessibility.d.ts
1259
+ //# sourceMappingURL=ListKeyboard.d.ts.map
1260
+ interface AccessibilityConfig {
1261
+ role?: string;
1262
+ ariaLabel?: string;
1263
+ ariaLabelledBy?: string;
1264
+ ariaDescribedBy?: string;
1265
+ ariaMultiSelectable?: boolean;
1266
+ ariaOrientation?: 'horizontal' | 'vertical';
1267
+ tabIndex?: number;
1268
+ }
1269
+ interface ItemAccessibilityConfig {
1270
+ role?: string;
1271
+ ariaLabel?: string;
1272
+ ariaSelected?: boolean;
1273
+ ariaExpanded?: boolean;
1274
+ ariaLevel?: number;
1275
+ ariaSetSize?: number;
1276
+ ariaPosInSet?: number;
1277
+ tabIndex?: number;
1278
+ }
1279
+ declare function getListAccessibilityProps(config: {
1280
+ viewType: string;
1281
+ isMultiSelect: boolean;
1282
+ totalItems: number;
1283
+ selectedCount: number;
1284
+ label?: string;
1285
+ labelledBy?: string;
1286
+ describedBy?: string;
1287
+ }): AccessibilityConfig;
1288
+ declare function getItemAccessibilityProps(config: {
1289
+ item: any;
1290
+ index: number;
1291
+ totalItems: number;
1292
+ isSelected: boolean;
1293
+ isFocused: boolean;
1294
+ viewType: string;
1295
+ isExpandable?: boolean;
1296
+ isExpanded?: boolean;
1297
+ level?: number;
1298
+ }): ItemAccessibilityConfig;
1299
+ declare function createLiveRegionAnnouncement(config: {
1300
+ action: 'select' | 'deselect' | 'focus' | 'activate' | 'load' | 'error';
1301
+ itemName?: string;
1302
+ itemCount?: number;
1303
+ selectedCount?: number;
1304
+ totalCount?: number;
1305
+ errorMessage?: string;
1306
+ }): string;
1307
+ interface KeyboardNavigationConfig {
1308
+ currentIndex: number;
1309
+ totalItems: number;
1310
+ itemsPerRow?: number;
1311
+ viewType: string;
1312
+ }
1313
+ declare function getNextFocusIndex(key: string, config: KeyboardNavigationConfig): number | null;
1314
+ declare class FocusManager {
1315
+ private focusedElement;
1316
+ private focusHistory;
1317
+ saveFocus(): void;
1318
+ restoreFocus(): boolean;
1319
+ focusFirst(container: HTMLElement): boolean;
1320
+ focusLast(container: HTMLElement): boolean;
1321
+ private getFocusableElements;
1322
+ }
1323
+ declare function announceToScreenReader(message: string, priority?: 'polite' | 'assertive'): void;
1324
+
1325
+ //#endregion
1326
+ //#region src/list/utils/BenchmarkLogger.d.ts
1327
+ //# sourceMappingURL=ListAccessibility.d.ts.map
1328
+ interface BenchmarkResult {
1329
+ operation: string;
1330
+ duration: number;
1331
+ timestamp: number;
1332
+ metadata?: Record<string, any>;
1333
+ }
1334
+ interface BenchmarkReport {
1335
+ totalOperations: number;
1336
+ totalDuration: number;
1337
+ averageDuration: number;
1338
+ slowestOperation: BenchmarkResult | null;
1339
+ fastestOperation: BenchmarkResult | null;
1340
+ operations: BenchmarkResult[];
1341
+ }
1342
+ declare class BenchmarkLogger {
1343
+ private results;
1344
+ private activeTimers;
1345
+ private enabled;
1346
+ constructor(enabled?: boolean);
1347
+ /**
1348
+ * Start timing an operation
1349
+ */
1350
+ start(operation: string, metadata?: Record<string, any>): void;
1351
+ /**
1352
+ * End timing an operation and log the result
1353
+ */
1354
+ end(operation: string, metadata?: Record<string, any>): number;
1355
+ /**
1356
+ * Time a synchronous operation
1357
+ */
1358
+ time<T>(operation: string, fn: () => T, metadata?: Record<string, any>): T;
1359
+ /**
1360
+ * Time an asynchronous operation
1361
+ */
1362
+ timeAsync<T>(operation: string, fn: () => Promise<T>, metadata?: Record<string, any>): Promise<T>;
1363
+ /**
1364
+ * Get a performance report
1365
+ */
1366
+ getReport(): BenchmarkReport;
1367
+ /**
1368
+ * Log a performance report
1369
+ */
1370
+ logReport(): void;
1371
+ /**
1372
+ * Clear all benchmark results
1373
+ */
1374
+ clear(): void;
1375
+ /**
1376
+ * Enable or disable benchmarking
1377
+ */
1378
+ setEnabled(enabled: boolean): void;
1379
+ /**
1380
+ * Check if benchmarking is enabled
1381
+ */
1382
+ isEnabled(): boolean;
1383
+ private getDurationColor;
1384
+ private formatDuration;
1385
+ private groupOperationsByName;
1386
+ }
1387
+ declare const benchmarkLogger: BenchmarkLogger;
1388
+ declare const benchmark: {
1389
+ start: (operation: string, metadata?: Record<string, any>) => void;
1390
+ end: (operation: string, metadata?: Record<string, any>) => number;
1391
+ time: <T>(operation: string, fn: () => T, metadata?: Record<string, any>) => T;
1392
+ timeAsync: <T>(operation: string, fn: () => Promise<T>, metadata?: Record<string, any>) => Promise<T>;
1393
+ report: () => void;
1394
+ clear: () => void;
1395
+ setEnabled: (enabled: boolean) => void;
1396
+ };
1397
+
1398
+ //#endregion
1399
+ //#region src/list/utils/MasonryLayoutCalculator.d.ts
1400
+ //# sourceMappingURL=BenchmarkLogger.d.ts.map
1401
+ interface MasonryLayoutConfig {
1402
+ containerWidth: number;
1403
+ containerHeight: number;
1404
+ columnCount: number | 'auto';
1405
+ gap: number;
1406
+ padding: number;
1407
+ minColumnWidth: number;
1408
+ maxColumnWidth: number;
1409
+ }
1410
+ interface MasonryItemLayout {
1411
+ x: number;
1412
+ y: number;
1413
+ width: number;
1414
+ height: number;
1415
+ column: number;
1416
+ thumbnailWidth: number;
1417
+ thumbnailHeight: number;
1418
+ textHeight: number;
1419
+ }
1420
+ interface MasonryLayoutResult {
1421
+ columnCount: number;
1422
+ columnWidth: number;
1423
+ totalHeight: number;
1424
+ items: MasonryItemLayout[];
1425
+ columnHeights: number[];
1426
+ }
1427
+ interface MasonryItemData {
1428
+ id: string;
1429
+ aspectRatio?: number;
1430
+ customHeight?: number;
1431
+ textLength?: number;
1432
+ }
1433
+ declare class MasonryLayoutCalculator {
1434
+ private config;
1435
+ constructor(config: MasonryLayoutConfig);
1436
+ updateConfig(updates: Partial<MasonryLayoutConfig>): void;
1437
+ get currentConfig(): MasonryLayoutConfig;
1438
+ calculateColumnCount(): number;
1439
+ calculateColumnWidth(columnCount: number): number;
1440
+ calculateItemHeight(item: MasonryItemData, columnWidth: number, baseHeight?: number): number;
1441
+ private calculateTextHeight;
1442
+ calculateThumbnailDimensions(item: MasonryItemData, columnWidth: number, itemHeight: number): {
1443
+ width: number;
1444
+ height: number;
1445
+ };
1446
+ calculateLayout(items: MasonryItemData[]): MasonryLayoutResult;
1447
+ calculateVisibleItems(items: MasonryItemData[], scrollTop: number, viewportHeight: number, overscan?: number): {
1448
+ startIndex: number;
1449
+ endIndex: number;
1450
+ visibleItems: MasonryItemLayout[];
1451
+ };
1452
+ getItemPosition(itemIndex: number, items: MasonryItemData[]): MasonryItemLayout | null;
1453
+ getItemAtPosition(x: number, y: number, items: MasonryItemData[]): number | null;
1454
+ }
1455
+ declare function createMasonryCalculator(containerWidth: number, containerHeight: number, options?: Partial<MasonryLayoutConfig>): MasonryLayoutCalculator;
1456
+ declare const MASONRY_PRESETS: {
1457
+ readonly compact: {
1458
+ readonly gap: 4;
1459
+ readonly padding: 4;
1460
+ readonly minColumnWidth: 160;
1461
+ readonly maxColumnWidth: 250;
1462
+ };
1463
+ readonly comfortable: {
1464
+ readonly gap: 8;
1465
+ readonly padding: 8;
1466
+ readonly minColumnWidth: 200;
1467
+ readonly maxColumnWidth: 300;
1468
+ };
1469
+ readonly spacious: {
1470
+ readonly gap: 16;
1471
+ readonly padding: 16;
1472
+ readonly minColumnWidth: 250;
1473
+ readonly maxColumnWidth: 400;
1474
+ };
1475
+ };
1476
+
1477
+ //#endregion
1478
+ //# sourceMappingURL=MasonryLayoutCalculator.d.ts.map
1479
+
1480
+ export { AccessibilityConfig, BenchmarkReport, BenchmarkResult, CalculatedGridView as CalculatedGridView$1, DETAILS_VIEW_TYPE as DETAILS_VIEW_TYPE$1, EmptyState as EmptyState$1, ErrorDisplay as ErrorDisplay$1, FocusManager as FocusManager$1, GRID_PRESETS as GRID_PRESETS$1, GRID_VIEW_TYPE as GRID_VIEW_TYPE$1, GridItemLayout, GridLayoutCalculator as GridLayoutCalculator$1, GridLayoutConfig, GridLayoutResult, InlineLoading as InlineLoading$1, ItemAccessibilityConfig, KeyboardNavigationConfig, KeyboardNavigationOptions, LIST_VIEW_TYPE as LIST_VIEW_TYPE$1, ListContextMenu as ListContextMenu$1, ListContextMenuItem, ListDragDropInfo, ListError, ListErrorBoundary as ListErrorBoundary$1, ListItem as ListItem$1, ListItemData, ListItemProps, ListItemRenderer, ListItems as ListItems$1, ListItemsModel as ListItemsModel$1, ListItemsProps, ListItemsProvider, ListItemsProviderListener, ListKeyboardHandler as ListKeyboardHandler$1, ListLoadOptions, ListLoadResult, ListLoader as ListLoader$1, ListSelectionInfo, ListViewType, ListViewType$1, LoadError as LoadError$1, LoadingIndicator as LoadingIndicator$1, LoadingProgress as LoadingProgress$1, MASONRY_HORIZONTAL_VIEW_TYPE as MASONRY_HORIZONTAL_VIEW_TYPE$1, MASONRY_PRESETS as MASONRY_PRESETS$1, MASONRY_VERTICAL_VIEW_TYPE as MASONRY_VERTICAL_VIEW_TYPE$1, MasonryItemData, MasonryItemLayout, MasonryLayoutCalculator as MasonryLayoutCalculator$1, MasonryLayoutConfig, MasonryLayoutResult, MasonryView as MasonryView$1, NetworkError as NetworkError$1, NoItems as NoItems$1, NoSearchResults as NoSearchResults$1, NoSelection as NoSelection$1, SearchFilter as SearchFilter$1, TREEMAP_VIEW_TYPE as TREEMAP_VIEW_TYPE$1, TestListProvider as TestListProvider$1, ThumbnailSize, TreemapModel as TreemapModel$1, TreemapNodeData, TreemapScanProgress, TreemapView as TreemapView$1, ViewSizeControls as ViewSizeControls$1, ViewTypeSelector as ViewTypeSelector$1, ViewTypeSelectorProps, VirtualizationConfig, VirtualizedGrid as VirtualizedGrid$1, VirtualizedGridProps, VirtualizedList as VirtualizedList$1, VirtualizedListProps, announceToScreenReader as announceToScreenReader$1, benchmark as benchmark$1, benchmarkLogger as benchmarkLogger$1, createGridCalculator as createGridCalculator$1, createLiveRegionAnnouncement as createLiveRegionAnnouncement$1, createMasonryCalculator as createMasonryCalculator$1, getItemAccessibilityProps as getItemAccessibilityProps$1, getListAccessibilityProps as getListAccessibilityProps$1, getNextFocusIndex as getNextFocusIndex$1, useListKeyboard as useListKeyboard$1 };
1481
+ //# sourceMappingURL=index-Bryv_GCG.d.ts.map