@umodeapporg/ui 0.0.0-canary.ca10e69

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 (845) hide show
  1. package/README.md +78 -0
  2. package/dist/assets/images/common-pngs/sparkles.png.js +5 -0
  3. package/dist/assets/images/common-pngs/sparkles.png.js.map +1 -0
  4. package/dist/assets/umode-ui.css +467 -0
  5. package/dist/components/DateTime/DatePicker.d.ts +21 -0
  6. package/dist/components/DateTime/DatePicker.js +124 -0
  7. package/dist/components/DateTime/DatePicker.js.map +1 -0
  8. package/dist/components/DateTime/DateRangePicker.d.ts +21 -0
  9. package/dist/components/DateTime/DateRangePicker.js +208 -0
  10. package/dist/components/DateTime/DateRangePicker.js.map +1 -0
  11. package/dist/components/Form/ControlledButton.d.ts +25 -0
  12. package/dist/components/Form/ControlledButton.js +73 -0
  13. package/dist/components/Form/ControlledButton.js.map +1 -0
  14. package/dist/components/Form/ControlledCheckbox.d.ts +16 -0
  15. package/dist/components/Form/ControlledCheckbox.js +115 -0
  16. package/dist/components/Form/ControlledCheckbox.js.map +1 -0
  17. package/dist/components/Form/ControlledDialog.d.ts +51 -0
  18. package/dist/components/Form/ControlledDialog.js +191 -0
  19. package/dist/components/Form/ControlledDialog.js.map +1 -0
  20. package/dist/components/Form/ControlledDialogPrimitives.d.ts +53 -0
  21. package/dist/components/Form/ControlledDialogPrimitives.js +245 -0
  22. package/dist/components/Form/ControlledDialogPrimitives.js.map +1 -0
  23. package/dist/components/Form/ControlledDrawer.d.ts +37 -0
  24. package/dist/components/Form/ControlledDrawer.js +241 -0
  25. package/dist/components/Form/ControlledDrawer.js.map +1 -0
  26. package/dist/components/Form/ControlledForm/InputField.d.ts +11 -0
  27. package/dist/components/Form/ControlledForm/InputField.js +75 -0
  28. package/dist/components/Form/ControlledForm/InputField.js.map +1 -0
  29. package/dist/components/Form/ControlledForm/index.d.ts +27 -0
  30. package/dist/components/Form/ControlledForm/index.js +113 -0
  31. package/dist/components/Form/ControlledForm/index.js.map +1 -0
  32. package/dist/components/Form/ControlledImage/Img.d.ts +11 -0
  33. package/dist/components/Form/ControlledImage/Img.js +29 -0
  34. package/dist/components/Form/ControlledImage/Img.js.map +1 -0
  35. package/dist/components/Form/ControlledImage/index.d.ts +33 -0
  36. package/dist/components/Form/ControlledImage/index.js +110 -0
  37. package/dist/components/Form/ControlledImage/index.js.map +1 -0
  38. package/dist/components/Form/ControlledImage/useImage.d.ts +9 -0
  39. package/dist/components/Form/ControlledImage/useImage.js +110 -0
  40. package/dist/components/Form/ControlledImage/useImage.js.map +1 -0
  41. package/dist/components/Form/ControlledInput.d.ts +23 -0
  42. package/dist/components/Form/ControlledInput.js +52 -0
  43. package/dist/components/Form/ControlledInput.js.map +1 -0
  44. package/dist/components/Form/ControlledRadio.d.ts +15 -0
  45. package/dist/components/Form/ControlledRadio.js +91 -0
  46. package/dist/components/Form/ControlledRadio.js.map +1 -0
  47. package/dist/components/Form/ControlledSelect.d.ts +53 -0
  48. package/dist/components/Form/ControlledSelect.js +797 -0
  49. package/dist/components/Form/ControlledSelect.js.map +1 -0
  50. package/dist/components/Form/ControlledSwitch.d.ts +21 -0
  51. package/dist/components/Form/ControlledSwitch.js +107 -0
  52. package/dist/components/Form/ControlledSwitch.js.map +1 -0
  53. package/dist/components/Form/ControlledTabs.d.ts +75 -0
  54. package/dist/components/Form/ControlledTabs.js +515 -0
  55. package/dist/components/Form/ControlledTabs.js.map +1 -0
  56. package/dist/components/Form/ControlledTabsPrimitives.d.ts +43 -0
  57. package/dist/components/Form/ControlledTabsPrimitives.js +48 -0
  58. package/dist/components/Form/ControlledTabsPrimitives.js.map +1 -0
  59. package/dist/components/Form/ControlledTextarea.d.ts +22 -0
  60. package/dist/components/Form/ControlledTextarea.js +46 -0
  61. package/dist/components/Form/ControlledTextarea.js.map +1 -0
  62. package/dist/components/Form/ControlledTimeline.d.ts +26 -0
  63. package/dist/components/Form/ControlledTimeline.js +60 -0
  64. package/dist/components/Form/ControlledTimeline.js.map +1 -0
  65. package/dist/components/Form/ControlledViewToggle.d.ts +74 -0
  66. package/dist/components/Form/ControlledViewToggle.js +157 -0
  67. package/dist/components/Form/ControlledViewToggle.js.map +1 -0
  68. package/dist/components/Form/ControlledVoiceTextarea.d.ts +13 -0
  69. package/dist/components/Form/ControlledVoiceTextarea.js +99 -0
  70. package/dist/components/Form/ControlledVoiceTextarea.js.map +1 -0
  71. package/dist/components/Form/CurrencyInput.d.ts +8 -0
  72. package/dist/components/Form/CurrencyInput.js +17 -0
  73. package/dist/components/Form/CurrencyInput.js.map +1 -0
  74. package/dist/components/Form/FieldLabel.d.ts +16 -0
  75. package/dist/components/Form/FieldLabel.js +7 -0
  76. package/dist/components/Form/FieldLabel.js.map +1 -0
  77. package/dist/components/Form/RichTextEditor.d.ts +86 -0
  78. package/dist/components/Form/RichTextEditor.js +581 -0
  79. package/dist/components/Form/RichTextEditor.js.map +1 -0
  80. package/dist/components/Form/attachments/AttachmentPreviewList.d.ts +22 -0
  81. package/dist/components/Form/attachments/AttachmentPreviewList.js +95 -0
  82. package/dist/components/Form/attachments/AttachmentPreviewList.js.map +1 -0
  83. package/dist/components/Form/attachments/FileDropzone.d.ts +12 -0
  84. package/dist/components/Form/attachments/FileDropzone.js +84 -0
  85. package/dist/components/Form/attachments/FileDropzone.js.map +1 -0
  86. package/dist/components/Navigation/ControlledBreadcrumb.d.ts +13 -0
  87. package/dist/components/Navigation/ControlledBreadcrumb.js +24 -0
  88. package/dist/components/Navigation/ControlledBreadcrumb.js.map +1 -0
  89. package/dist/components/Navigation/ErrorPage.d.ts +2 -0
  90. package/dist/components/Navigation/ErrorPage.js +27 -0
  91. package/dist/components/Navigation/ErrorPage.js.map +1 -0
  92. package/dist/components/Navigation/LinkButton.d.ts +26 -0
  93. package/dist/components/Navigation/LinkButton.js +82 -0
  94. package/dist/components/Navigation/LinkButton.js.map +1 -0
  95. package/dist/components/Navigation/PageTitle.d.ts +95 -0
  96. package/dist/components/Navigation/PageTitle.js +241 -0
  97. package/dist/components/Navigation/PageTitle.js.map +1 -0
  98. package/dist/components/Navigation/PageTitleCollapseContext.d.ts +13 -0
  99. package/dist/components/Navigation/PageTitleCollapseContext.js +9 -0
  100. package/dist/components/Navigation/PageTitleCollapseContext.js.map +1 -0
  101. package/dist/components/Navigation/PageTitleNavigationContext.d.ts +21 -0
  102. package/dist/components/Navigation/PageTitleNavigationContext.js +17 -0
  103. package/dist/components/Navigation/PageTitleNavigationContext.js.map +1 -0
  104. package/dist/components/Navigation/ReactRouterNavigationAdapter.d.ts +7 -0
  105. package/dist/components/Navigation/ReactRouterNavigationAdapter.js +27 -0
  106. package/dist/components/Navigation/ReactRouterNavigationAdapter.js.map +1 -0
  107. package/dist/components/Navigation/UiNavigationContext.d.ts +38 -0
  108. package/dist/components/Navigation/UiNavigationContext.js +44 -0
  109. package/dist/components/Navigation/UiNavigationContext.js.map +1 -0
  110. package/dist/components/Search/UnifiedSearchBar.d.ts +31 -0
  111. package/dist/components/Search/UnifiedSearchBar.js +167 -0
  112. package/dist/components/Search/UnifiedSearchBar.js.map +1 -0
  113. package/dist/components/Search/filters/ActiveFiltersBar.d.ts +15 -0
  114. package/dist/components/Search/filters/ActiveFiltersBar.js +48 -0
  115. package/dist/components/Search/filters/ActiveFiltersBar.js.map +1 -0
  116. package/dist/components/Search/filters/FilterChipsRow.d.ts +17 -0
  117. package/dist/components/Search/filters/FilterChipsRow.js +113 -0
  118. package/dist/components/Search/filters/FilterChipsRow.js.map +1 -0
  119. package/dist/components/Search/filters/FilterFieldControl.d.ts +19 -0
  120. package/dist/components/Search/filters/FilterFieldControl.js +390 -0
  121. package/dist/components/Search/filters/FilterFieldControl.js.map +1 -0
  122. package/dist/components/Search/filters/FiltersButton.d.ts +24 -0
  123. package/dist/components/Search/filters/FiltersButton.js +52 -0
  124. package/dist/components/Search/filters/FiltersButton.js.map +1 -0
  125. package/dist/components/Search/filters/FiltersForm.d.ts +18 -0
  126. package/dist/components/Search/filters/FiltersForm.js +112 -0
  127. package/dist/components/Search/filters/FiltersForm.js.map +1 -0
  128. package/dist/components/Search/filters/FiltersPanel.d.ts +32 -0
  129. package/dist/components/Search/filters/FiltersPanel.js +266 -0
  130. package/dist/components/Search/filters/FiltersPanel.js.map +1 -0
  131. package/dist/components/Search/filters/FiltersSummaryTooltip.d.ts +20 -0
  132. package/dist/components/Search/filters/FiltersSummaryTooltip.js +26 -0
  133. package/dist/components/Search/filters/FiltersSummaryTooltip.js.map +1 -0
  134. package/dist/components/Search/filters/filterTypes.d.ts +162 -0
  135. package/dist/components/Search/filters/filterTypes.js +2 -0
  136. package/dist/components/Search/filters/filterTypes.js.map +1 -0
  137. package/dist/components/Search/filters/filterValues.d.ts +22 -0
  138. package/dist/components/Search/filters/filterValues.js +91 -0
  139. package/dist/components/Search/filters/filterValues.js.map +1 -0
  140. package/dist/components/Search/filters/filtersLayout.d.ts +4 -0
  141. package/dist/components/Search/filters/filtersLayout.js +18 -0
  142. package/dist/components/Search/filters/filtersLayout.js.map +1 -0
  143. package/dist/components/Search/filters/index.d.ts +11 -0
  144. package/dist/components/Search/filters/index.js +32 -0
  145. package/dist/components/Search/filters/index.js.map +1 -0
  146. package/dist/components/Search/filters/useFilters.d.ts +33 -0
  147. package/dist/components/Search/filters/useFilters.js +162 -0
  148. package/dist/components/Search/filters/useFilters.js.map +1 -0
  149. package/dist/components/Search/index.d.ts +2 -0
  150. package/dist/components/Search/index.js +34 -0
  151. package/dist/components/Search/index.js.map +1 -0
  152. package/dist/components/Shell/AppHeader.d.ts +25 -0
  153. package/dist/components/Shell/AppHeader.js +69 -0
  154. package/dist/components/Shell/AppHeader.js.map +1 -0
  155. package/dist/components/Shell/AppShell.d.ts +22 -0
  156. package/dist/components/Shell/AppShell.js +146 -0
  157. package/dist/components/Shell/AppShell.js.map +1 -0
  158. package/dist/components/Shell/AppSidebar.d.ts +20 -0
  159. package/dist/components/Shell/AppSidebar.js +93 -0
  160. package/dist/components/Shell/AppSidebar.js.map +1 -0
  161. package/dist/components/Shell/LanguageToggle.d.ts +8 -0
  162. package/dist/components/Shell/LanguageToggle.js +59 -0
  163. package/dist/components/Shell/LanguageToggle.js.map +1 -0
  164. package/dist/components/Shell/PumpkinGlyph.d.ts +13 -0
  165. package/dist/components/Shell/PumpkinGlyph.js +29 -0
  166. package/dist/components/Shell/PumpkinGlyph.js.map +1 -0
  167. package/dist/components/Shell/SidebarMenu.d.ts +29 -0
  168. package/dist/components/Shell/SidebarMenu.js +254 -0
  169. package/dist/components/Shell/SidebarMenu.js.map +1 -0
  170. package/dist/components/Shell/ThemeToggle.d.ts +18 -0
  171. package/dist/components/Shell/ThemeToggle.js +68 -0
  172. package/dist/components/Shell/ThemeToggle.js.map +1 -0
  173. package/dist/components/Shell/headerControlStyles.d.ts +10 -0
  174. package/dist/components/Shell/headerControlStyles.js +11 -0
  175. package/dist/components/Shell/headerControlStyles.js.map +1 -0
  176. package/dist/components/Shell/sidebarFavorites.d.ts +21 -0
  177. package/dist/components/Shell/sidebarFavorites.js +69 -0
  178. package/dist/components/Shell/sidebarFavorites.js.map +1 -0
  179. package/dist/components/Shell/useSidebarState.d.ts +14 -0
  180. package/dist/components/Shell/useSidebarState.js +106 -0
  181. package/dist/components/Shell/useSidebarState.js.map +1 -0
  182. package/dist/components/UI/AccordionIcon.d.ts +10 -0
  183. package/dist/components/UI/AccordionIcon.js +22 -0
  184. package/dist/components/UI/AccordionIcon.js.map +1 -0
  185. package/dist/components/UI/AlertInfo/dismissedAlertsStore.d.ts +2 -0
  186. package/dist/components/UI/AlertInfo/dismissedAlertsStore.js +22 -0
  187. package/dist/components/UI/AlertInfo/dismissedAlertsStore.js.map +1 -0
  188. package/dist/components/UI/AlertInfo/index.d.ts +30 -0
  189. package/dist/components/UI/AlertInfo/index.js +78 -0
  190. package/dist/components/UI/AlertInfo/index.js.map +1 -0
  191. package/dist/components/UI/BaseDataCard.d.ts +27 -0
  192. package/dist/components/UI/BaseDataCard.js +170 -0
  193. package/dist/components/UI/BaseDataCard.js.map +1 -0
  194. package/dist/components/UI/BulkActionBar.d.ts +35 -0
  195. package/dist/components/UI/BulkActionBar.js +127 -0
  196. package/dist/components/UI/BulkActionBar.js.map +1 -0
  197. package/dist/components/UI/Chips/OutlinedChip.d.ts +42 -0
  198. package/dist/components/UI/Chips/OutlinedChip.js +190 -0
  199. package/dist/components/UI/Chips/OutlinedChip.js.map +1 -0
  200. package/dist/components/UI/Chips/StatusChip.d.ts +8 -0
  201. package/dist/components/UI/Chips/StatusChip.js +33 -0
  202. package/dist/components/UI/Chips/StatusChip.js.map +1 -0
  203. package/dist/components/UI/Chips/chipTones.d.ts +6 -0
  204. package/dist/components/UI/Chips/chipTones.js +53 -0
  205. package/dist/components/UI/Chips/chipTones.js.map +1 -0
  206. package/dist/components/UI/ColorSwatch.d.ts +30 -0
  207. package/dist/components/UI/ColorSwatch.js +53 -0
  208. package/dist/components/UI/ColorSwatch.js.map +1 -0
  209. package/dist/components/UI/Colors.d.ts +10 -0
  210. package/dist/components/UI/Colors.js +41 -0
  211. package/dist/components/UI/Colors.js.map +1 -0
  212. package/dist/components/UI/ControlledAccordion.d.ts +38 -0
  213. package/dist/components/UI/ControlledAccordion.js +95 -0
  214. package/dist/components/UI/ControlledAccordion.js.map +1 -0
  215. package/dist/components/UI/ControlledCollapse.d.ts +18 -0
  216. package/dist/components/UI/ControlledCollapse.js +40 -0
  217. package/dist/components/UI/ControlledCollapse.js.map +1 -0
  218. package/dist/components/UI/ControlledMenu.d.ts +79 -0
  219. package/dist/components/UI/ControlledMenu.js +234 -0
  220. package/dist/components/UI/ControlledMenu.js.map +1 -0
  221. package/dist/components/UI/ControlledPopover.d.ts +59 -0
  222. package/dist/components/UI/ControlledPopover.js +189 -0
  223. package/dist/components/UI/ControlledPopover.js.map +1 -0
  224. package/dist/components/UI/ControlledProgress.d.ts +13 -0
  225. package/dist/components/UI/ControlledProgress.js +46 -0
  226. package/dist/components/UI/ControlledProgress.js.map +1 -0
  227. package/dist/components/UI/ControlledSlider.d.ts +15 -0
  228. package/dist/components/UI/ControlledSlider.js +34 -0
  229. package/dist/components/UI/ControlledSlider.js.map +1 -0
  230. package/dist/components/UI/ControlledTooltip.d.ts +21 -0
  231. package/dist/components/UI/ControlledTooltip.js +146 -0
  232. package/dist/components/UI/ControlledTooltip.js.map +1 -0
  233. package/dist/components/UI/CustomBadge.d.ts +15 -0
  234. package/dist/components/UI/CustomBadge.js +34 -0
  235. package/dist/components/UI/CustomBadge.js.map +1 -0
  236. package/dist/components/UI/CustomCard.d.ts +13 -0
  237. package/dist/components/UI/CustomCard.js +36 -0
  238. package/dist/components/UI/CustomCard.js.map +1 -0
  239. package/dist/components/UI/CustomChart.d.ts +21 -0
  240. package/dist/components/UI/CustomChart.js +108 -0
  241. package/dist/components/UI/CustomChart.js.map +1 -0
  242. package/dist/components/UI/DataTable/DataTable.d.ts +108 -0
  243. package/dist/components/UI/DataTable/DataTable.js +606 -0
  244. package/dist/components/UI/DataTable/DataTable.js.map +1 -0
  245. package/dist/components/UI/DataTable/DataTableAutoCard.d.ts +20 -0
  246. package/dist/components/UI/DataTable/DataTableAutoCard.js +39 -0
  247. package/dist/components/UI/DataTable/DataTableAutoCard.js.map +1 -0
  248. package/dist/components/UI/DataTable/DataTableBody.d.ts +33 -0
  249. package/dist/components/UI/DataTable/DataTableBody.js +260 -0
  250. package/dist/components/UI/DataTable/DataTableBody.js.map +1 -0
  251. package/dist/components/UI/DataTable/DataTableBodyCell.d.ts +21 -0
  252. package/dist/components/UI/DataTable/DataTableBodyCell.js +88 -0
  253. package/dist/components/UI/DataTable/DataTableBodyCell.js.map +1 -0
  254. package/dist/components/UI/DataTable/DataTableBulkEditButton.d.ts +11 -0
  255. package/dist/components/UI/DataTable/DataTableBulkEditButton.js +24 -0
  256. package/dist/components/UI/DataTable/DataTableBulkEditButton.js.map +1 -0
  257. package/dist/components/UI/DataTable/DataTableBulkEditDialog.d.ts +25 -0
  258. package/dist/components/UI/DataTable/DataTableBulkEditDialog.js +282 -0
  259. package/dist/components/UI/DataTable/DataTableBulkEditDialog.js.map +1 -0
  260. package/dist/components/UI/DataTable/DataTableBulkEditRowsPicker.d.ts +13 -0
  261. package/dist/components/UI/DataTable/DataTableBulkEditRowsPicker.js +95 -0
  262. package/dist/components/UI/DataTable/DataTableBulkEditRowsPicker.js.map +1 -0
  263. package/dist/components/UI/DataTable/DataTableBulkEditValueEditor.d.ts +20 -0
  264. package/dist/components/UI/DataTable/DataTableBulkEditValueEditor.js +94 -0
  265. package/dist/components/UI/DataTable/DataTableBulkEditValueEditor.js.map +1 -0
  266. package/dist/components/UI/DataTable/DataTableColumnToggle.d.ts +34 -0
  267. package/dist/components/UI/DataTable/DataTableColumnToggle.js +170 -0
  268. package/dist/components/UI/DataTable/DataTableColumnToggle.js.map +1 -0
  269. package/dist/components/UI/DataTable/DataTableDetailModal.d.ts +17 -0
  270. package/dist/components/UI/DataTable/DataTableDetailModal.js +109 -0
  271. package/dist/components/UI/DataTable/DataTableDetailModal.js.map +1 -0
  272. package/dist/components/UI/DataTable/DataTableDetailPanel.d.ts +21 -0
  273. package/dist/components/UI/DataTable/DataTableDetailPanel.js +51 -0
  274. package/dist/components/UI/DataTable/DataTableDetailPanel.js.map +1 -0
  275. package/dist/components/UI/DataTable/DataTableDetailTable.d.ts +35 -0
  276. package/dist/components/UI/DataTable/DataTableDetailTable.js +129 -0
  277. package/dist/components/UI/DataTable/DataTableDetailTable.js.map +1 -0
  278. package/dist/components/UI/DataTable/DataTableEditModeButton.d.ts +12 -0
  279. package/dist/components/UI/DataTable/DataTableEditModeButton.js +29 -0
  280. package/dist/components/UI/DataTable/DataTableEditModeButton.js.map +1 -0
  281. package/dist/components/UI/DataTable/DataTableFilters.d.ts +20 -0
  282. package/dist/components/UI/DataTable/DataTableFilters.js +65 -0
  283. package/dist/components/UI/DataTable/DataTableFilters.js.map +1 -0
  284. package/dist/components/UI/DataTable/DataTableHead.d.ts +27 -0
  285. package/dist/components/UI/DataTable/DataTableHead.js +198 -0
  286. package/dist/components/UI/DataTable/DataTableHead.js.map +1 -0
  287. package/dist/components/UI/DataTable/DataTablePagination.d.ts +15 -0
  288. package/dist/components/UI/DataTable/DataTablePagination.js +149 -0
  289. package/dist/components/UI/DataTable/DataTablePagination.js.map +1 -0
  290. package/dist/components/UI/DataTable/DataTableSaveButton.d.ts +13 -0
  291. package/dist/components/UI/DataTable/DataTableSaveButton.js +21 -0
  292. package/dist/components/UI/DataTable/DataTableSaveButton.js.map +1 -0
  293. package/dist/components/UI/DataTable/DataTableSegmentedTabs.d.ts +8 -0
  294. package/dist/components/UI/DataTable/DataTableSegmentedTabs.js +35 -0
  295. package/dist/components/UI/DataTable/DataTableSegmentedTabs.js.map +1 -0
  296. package/dist/components/UI/DataTable/DataTableStates.d.ts +17 -0
  297. package/dist/components/UI/DataTable/DataTableStates.js +59 -0
  298. package/dist/components/UI/DataTable/DataTableStates.js.map +1 -0
  299. package/dist/components/UI/DataTable/DataTableToolbar.d.ts +28 -0
  300. package/dist/components/UI/DataTable/DataTableToolbar.js +110 -0
  301. package/dist/components/UI/DataTable/DataTableToolbar.js.map +1 -0
  302. package/dist/components/UI/DataTable/applyDataTableFilters.d.ts +16 -0
  303. package/dist/components/UI/DataTable/applyDataTableFilters.js +54 -0
  304. package/dist/components/UI/DataTable/applyDataTableFilters.js.map +1 -0
  305. package/dist/components/UI/DataTable/bulkEditValues.d.ts +8 -0
  306. package/dist/components/UI/DataTable/bulkEditValues.js +13 -0
  307. package/dist/components/UI/DataTable/bulkEditValues.js.map +1 -0
  308. package/dist/components/UI/DataTable/cells/DataTableActionsCell.d.ts +7 -0
  309. package/dist/components/UI/DataTable/cells/DataTableActionsCell.js +55 -0
  310. package/dist/components/UI/DataTable/cells/DataTableActionsCell.js.map +1 -0
  311. package/dist/components/UI/DataTable/cells/DataTableCell.d.ts +15 -0
  312. package/dist/components/UI/DataTable/cells/DataTableCell.js +63 -0
  313. package/dist/components/UI/DataTable/cells/DataTableCell.js.map +1 -0
  314. package/dist/components/UI/DataTable/cells/DataTableCodeCell.d.ts +6 -0
  315. package/dist/components/UI/DataTable/cells/DataTableCodeCell.js +7 -0
  316. package/dist/components/UI/DataTable/cells/DataTableCodeCell.js.map +1 -0
  317. package/dist/components/UI/DataTable/cells/DataTableColorCell.d.ts +7 -0
  318. package/dist/components/UI/DataTable/cells/DataTableColorCell.js +10 -0
  319. package/dist/components/UI/DataTable/cells/DataTableColorCell.js.map +1 -0
  320. package/dist/components/UI/DataTable/cells/DataTableCountCell.d.ts +5 -0
  321. package/dist/components/UI/DataTable/cells/DataTableCountCell.js +7 -0
  322. package/dist/components/UI/DataTable/cells/DataTableCountCell.js.map +1 -0
  323. package/dist/components/UI/DataTable/cells/DataTableDateCell.d.ts +5 -0
  324. package/dist/components/UI/DataTable/cells/DataTableDateCell.js +12 -0
  325. package/dist/components/UI/DataTable/cells/DataTableDateCell.js.map +1 -0
  326. package/dist/components/UI/DataTable/cells/DataTableEditableCell.d.ts +23 -0
  327. package/dist/components/UI/DataTable/cells/DataTableEditableCell.js +242 -0
  328. package/dist/components/UI/DataTable/cells/DataTableEditableCell.js.map +1 -0
  329. package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.d.ts +10 -0
  330. package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js +7 -0
  331. package/dist/components/UI/DataTable/cells/DataTableEmpenhoCell.js.map +1 -0
  332. package/dist/components/UI/DataTable/cells/DataTableOriginCell.d.ts +6 -0
  333. package/dist/components/UI/DataTable/cells/DataTableOriginCell.js +25 -0
  334. package/dist/components/UI/DataTable/cells/DataTableOriginCell.js.map +1 -0
  335. package/dist/components/UI/DataTable/cells/DataTableStatusCell.d.ts +6 -0
  336. package/dist/components/UI/DataTable/cells/DataTableStatusCell.js +24 -0
  337. package/dist/components/UI/DataTable/cells/DataTableStatusCell.js.map +1 -0
  338. package/dist/components/UI/DataTable/cells/DataTableTagCell.d.ts +6 -0
  339. package/dist/components/UI/DataTable/cells/DataTableTagCell.js +25 -0
  340. package/dist/components/UI/DataTable/cells/DataTableTagCell.js.map +1 -0
  341. package/dist/components/UI/DataTable/cells/DataTableTextCell.d.ts +6 -0
  342. package/dist/components/UI/DataTable/cells/DataTableTextCell.js +7 -0
  343. package/dist/components/UI/DataTable/cells/DataTableTextCell.js.map +1 -0
  344. package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.d.ts +6 -0
  345. package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js +10 -0
  346. package/dist/components/UI/DataTable/cells/DataTableThumbnailCell.js.map +1 -0
  347. package/dist/components/UI/DataTable/dataTableClasses.d.ts +12 -0
  348. package/dist/components/UI/DataTable/dataTableClasses.js +29 -0
  349. package/dist/components/UI/DataTable/dataTableClasses.js.map +1 -0
  350. package/dist/components/UI/DataTable/dataTableColumnWidths.d.ts +15 -0
  351. package/dist/components/UI/DataTable/dataTableColumnWidths.js +153 -0
  352. package/dist/components/UI/DataTable/dataTableColumnWidths.js.map +1 -0
  353. package/dist/components/UI/DataTable/dataTableColumnsStore.d.ts +12 -0
  354. package/dist/components/UI/DataTable/dataTableColumnsStore.js +68 -0
  355. package/dist/components/UI/DataTable/dataTableColumnsStore.js.map +1 -0
  356. package/dist/components/UI/DataTable/dataTableMotion.d.ts +6 -0
  357. package/dist/components/UI/DataTable/dataTableMotion.js +15 -0
  358. package/dist/components/UI/DataTable/dataTableMotion.js.map +1 -0
  359. package/dist/components/UI/DataTable/grid/GridFillHandle.d.ts +8 -0
  360. package/dist/components/UI/DataTable/grid/GridFillHandle.js +70 -0
  361. package/dist/components/UI/DataTable/grid/GridFillHandle.js.map +1 -0
  362. package/dist/components/UI/DataTable/grid/GridProvider.d.ts +36 -0
  363. package/dist/components/UI/DataTable/grid/GridProvider.js +128 -0
  364. package/dist/components/UI/DataTable/grid/GridProvider.js.map +1 -0
  365. package/dist/components/UI/DataTable/grid/fill/fillStrategies.d.ts +19 -0
  366. package/dist/components/UI/DataTable/grid/fill/fillStrategies.js +73 -0
  367. package/dist/components/UI/DataTable/grid/fill/fillStrategies.js.map +1 -0
  368. package/dist/components/UI/DataTable/grid/gridStore.d.ts +82 -0
  369. package/dist/components/UI/DataTable/grid/gridStore.js +259 -0
  370. package/dist/components/UI/DataTable/grid/gridStore.js.map +1 -0
  371. package/dist/components/UI/DataTable/grid/gridTypes.d.ts +59 -0
  372. package/dist/components/UI/DataTable/grid/gridTypes.js +27 -0
  373. package/dist/components/UI/DataTable/grid/gridTypes.js.map +1 -0
  374. package/dist/components/UI/DataTable/grid/useGridFillApply.d.ts +18 -0
  375. package/dist/components/UI/DataTable/grid/useGridFillApply.js +74 -0
  376. package/dist/components/UI/DataTable/grid/useGridFillApply.js.map +1 -0
  377. package/dist/components/UI/DataTable/grid/useGridInstance.d.ts +27 -0
  378. package/dist/components/UI/DataTable/grid/useGridInstance.js +41 -0
  379. package/dist/components/UI/DataTable/grid/useGridInstance.js.map +1 -0
  380. package/dist/components/UI/DataTable/grid/useGridKeyboard.d.ts +25 -0
  381. package/dist/components/UI/DataTable/grid/useGridKeyboard.js +135 -0
  382. package/dist/components/UI/DataTable/grid/useGridKeyboard.js.map +1 -0
  383. package/dist/components/UI/DataTable/index.d.ts +19 -0
  384. package/dist/components/UI/DataTable/index.js +34 -0
  385. package/dist/components/UI/DataTable/index.js.map +1 -0
  386. package/dist/components/UI/DataTable/types.d.ts +535 -0
  387. package/dist/components/UI/DataTable/types.js +13 -0
  388. package/dist/components/UI/DataTable/types.js.map +1 -0
  389. package/dist/components/UI/DataTable/useCellEditingState.d.ts +20 -0
  390. package/dist/components/UI/DataTable/useCellEditingState.js +33 -0
  391. package/dist/components/UI/DataTable/useCellEditingState.js.map +1 -0
  392. package/dist/components/UI/DataTable/useColumnOrder.d.ts +25 -0
  393. package/dist/components/UI/DataTable/useColumnOrder.js +94 -0
  394. package/dist/components/UI/DataTable/useColumnOrder.js.map +1 -0
  395. package/dist/components/UI/DataTable/useColumnSizing.d.ts +9 -0
  396. package/dist/components/UI/DataTable/useColumnSizing.js +21 -0
  397. package/dist/components/UI/DataTable/useColumnSizing.js.map +1 -0
  398. package/dist/components/UI/DataTable/useColumnVisibility.d.ts +19 -0
  399. package/dist/components/UI/DataTable/useColumnVisibility.js +47 -0
  400. package/dist/components/UI/DataTable/useColumnVisibility.js.map +1 -0
  401. package/dist/components/UI/DataTable/useDataTableCommitQueue.d.ts +69 -0
  402. package/dist/components/UI/DataTable/useDataTableCommitQueue.js +220 -0
  403. package/dist/components/UI/DataTable/useDataTableCommitQueue.js.map +1 -0
  404. package/dist/components/UI/DataTable/useDataTableEditBuffer.d.ts +36 -0
  405. package/dist/components/UI/DataTable/useDataTableEditBuffer.js +29 -0
  406. package/dist/components/UI/DataTable/useDataTableEditBuffer.js.map +1 -0
  407. package/dist/components/UI/DataTable/useDataTableInstance.d.ts +65 -0
  408. package/dist/components/UI/DataTable/useDataTableInstance.js +336 -0
  409. package/dist/components/UI/DataTable/useDataTableInstance.js.map +1 -0
  410. package/dist/components/UI/DataTable/useDataTableSource.d.ts +85 -0
  411. package/dist/components/UI/DataTable/useDataTableSource.js +199 -0
  412. package/dist/components/UI/DataTable/useDataTableSource.js.map +1 -0
  413. package/dist/components/UI/DataTable/useDataTableUndoHistory.d.ts +30 -0
  414. package/dist/components/UI/DataTable/useDataTableUndoHistory.js +130 -0
  415. package/dist/components/UI/DataTable/useDataTableUndoHistory.js.map +1 -0
  416. package/dist/components/UI/DataTable/useFlipRows.d.ts +22 -0
  417. package/dist/components/UI/DataTable/useFlipRows.js +90 -0
  418. package/dist/components/UI/DataTable/useFlipRows.js.map +1 -0
  419. package/dist/components/UI/ErrorBoundary.d.ts +20 -0
  420. package/dist/components/UI/ErrorBoundary.js +36 -0
  421. package/dist/components/UI/ErrorBoundary.js.map +1 -0
  422. package/dist/components/UI/Flow/FlowAnnotationDraftPreview.d.ts +6 -0
  423. package/dist/components/UI/Flow/FlowAnnotationDraftPreview.js +65 -0
  424. package/dist/components/UI/Flow/FlowAnnotationDraftPreview.js.map +1 -0
  425. package/dist/components/UI/Flow/FlowAnnotationNode.d.ts +34 -0
  426. package/dist/components/UI/Flow/FlowAnnotationNode.js +231 -0
  427. package/dist/components/UI/Flow/FlowAnnotationNode.js.map +1 -0
  428. package/dist/components/UI/Flow/FlowAnnotationToolbar.d.ts +32 -0
  429. package/dist/components/UI/Flow/FlowAnnotationToolbar.js +298 -0
  430. package/dist/components/UI/Flow/FlowAnnotationToolbar.js.map +1 -0
  431. package/dist/components/UI/Flow/FlowBlockNode.d.ts +35 -0
  432. package/dist/components/UI/Flow/FlowBlockNode.js +91 -0
  433. package/dist/components/UI/Flow/FlowBlockNode.js.map +1 -0
  434. package/dist/components/UI/Flow/FlowCanvas.d.ts +23 -0
  435. package/dist/components/UI/Flow/FlowCanvas.js +559 -0
  436. package/dist/components/UI/Flow/FlowCanvas.js.map +1 -0
  437. package/dist/components/UI/Flow/FlowConnectionEdge.d.ts +18 -0
  438. package/dist/components/UI/Flow/FlowConnectionEdge.js +116 -0
  439. package/dist/components/UI/Flow/FlowConnectionEdge.js.map +1 -0
  440. package/dist/components/UI/Flow/FlowEditorProvider.d.ts +17 -0
  441. package/dist/components/UI/Flow/FlowEditorProvider.js +27 -0
  442. package/dist/components/UI/Flow/FlowEditorProvider.js.map +1 -0
  443. package/dist/components/UI/Flow/FlowInspector.d.ts +11 -0
  444. package/dist/components/UI/Flow/FlowInspector.js +131 -0
  445. package/dist/components/UI/Flow/FlowInspector.js.map +1 -0
  446. package/dist/components/UI/Flow/FlowIssueList.d.ts +8 -0
  447. package/dist/components/UI/Flow/FlowIssueList.js +55 -0
  448. package/dist/components/UI/Flow/FlowIssueList.js.map +1 -0
  449. package/dist/components/UI/Flow/FlowLaneMap.d.ts +30 -0
  450. package/dist/components/UI/Flow/FlowLaneMap.js +206 -0
  451. package/dist/components/UI/Flow/FlowLaneMap.js.map +1 -0
  452. package/dist/components/UI/Flow/FlowNodeShell.d.ts +20 -0
  453. package/dist/components/UI/Flow/FlowNodeShell.js +81 -0
  454. package/dist/components/UI/Flow/FlowNodeShell.js.map +1 -0
  455. package/dist/components/UI/Flow/FlowResizablePanel.d.ts +20 -0
  456. package/dist/components/UI/Flow/FlowResizablePanel.js +118 -0
  457. package/dist/components/UI/Flow/FlowResizablePanel.js.map +1 -0
  458. package/dist/components/UI/Flow/FlowSelectionBar.d.ts +10 -0
  459. package/dist/components/UI/Flow/FlowSelectionBar.js +56 -0
  460. package/dist/components/UI/Flow/FlowSelectionBar.js.map +1 -0
  461. package/dist/components/UI/Flow/FlowZoomControls.d.ts +12 -0
  462. package/dist/components/UI/Flow/FlowZoomControls.js +54 -0
  463. package/dist/components/UI/Flow/FlowZoomControls.js.map +1 -0
  464. package/dist/components/UI/Flow/flowAnnotations.d.ts +38 -0
  465. package/dist/components/UI/Flow/flowAnnotations.js +123 -0
  466. package/dist/components/UI/Flow/flowAnnotations.js.map +1 -0
  467. package/dist/components/UI/Flow/flowBlockRegistry.d.ts +12 -0
  468. package/dist/components/UI/Flow/flowBlockRegistry.js +20 -0
  469. package/dist/components/UI/Flow/flowBlockRegistry.js.map +1 -0
  470. package/dist/components/UI/Flow/flowEditorStore.d.ts +73 -0
  471. package/dist/components/UI/Flow/flowEditorStore.js +402 -0
  472. package/dist/components/UI/Flow/flowEditorStore.js.map +1 -0
  473. package/dist/components/UI/Flow/flowGraph.d.ts +32 -0
  474. package/dist/components/UI/Flow/flowGraph.js +157 -0
  475. package/dist/components/UI/Flow/flowGraph.js.map +1 -0
  476. package/dist/components/UI/Flow/flowTypes.d.ts +104 -0
  477. package/dist/components/UI/Flow/flowTypes.js +2 -0
  478. package/dist/components/UI/Flow/flowTypes.js.map +1 -0
  479. package/dist/components/UI/Flow/flowViewport.d.ts +25 -0
  480. package/dist/components/UI/Flow/flowViewport.js +31 -0
  481. package/dist/components/UI/Flow/flowViewport.js.map +1 -0
  482. package/dist/components/UI/Flow/index.d.ts +13 -0
  483. package/dist/components/UI/Flow/index.js +44 -0
  484. package/dist/components/UI/Flow/index.js.map +1 -0
  485. package/dist/components/UI/Flow/useFlowAnnotationDrawing.d.ts +25 -0
  486. package/dist/components/UI/Flow/useFlowAnnotationDrawing.js +117 -0
  487. package/dist/components/UI/Flow/useFlowAnnotationDrawing.js.map +1 -0
  488. package/dist/components/UI/Flow/useFlowLabels.d.ts +10 -0
  489. package/dist/components/UI/Flow/useFlowLabels.js +51 -0
  490. package/dist/components/UI/Flow/useFlowLabels.js.map +1 -0
  491. package/dist/components/UI/GeneratedByAI.d.ts +2 -0
  492. package/dist/components/UI/GeneratedByAI.js +12 -0
  493. package/dist/components/UI/GeneratedByAI.js.map +1 -0
  494. package/dist/components/UI/HorizontalScrollArea.d.ts +22 -0
  495. package/dist/components/UI/HorizontalScrollArea.js +74 -0
  496. package/dist/components/UI/HorizontalScrollArea.js.map +1 -0
  497. package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.d.ts +21 -0
  498. package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js +235 -0
  499. package/dist/components/UI/ImageAiAdjust/ImageAiAdjustDialog.js.map +1 -0
  500. package/dist/components/UI/ImageAiAdjust/ImageAiDiscardReasonDialog.d.ts +8 -0
  501. package/dist/components/UI/ImageAiAdjust/ImageAiDiscardReasonDialog.js +67 -0
  502. package/dist/components/UI/ImageAiAdjust/ImageAiDiscardReasonDialog.js.map +1 -0
  503. package/dist/components/UI/ImageAiAdjust/ImageAiVerificationNotice.d.ts +8 -0
  504. package/dist/components/UI/ImageAiAdjust/ImageAiVerificationNotice.js +39 -0
  505. package/dist/components/UI/ImageAiAdjust/ImageAiVerificationNotice.js.map +1 -0
  506. package/dist/components/UI/ImageAiAdjust/imageAiReview.d.ts +22 -0
  507. package/dist/components/UI/ImageAiAdjust/imageAiReview.js +37 -0
  508. package/dist/components/UI/ImageAiAdjust/imageAiReview.js.map +1 -0
  509. package/dist/components/UI/ImageAiAdjust/imageAiVerification.d.ts +19 -0
  510. package/dist/components/UI/ImageAiAdjust/imageAiVerification.js +25 -0
  511. package/dist/components/UI/ImageAiAdjust/imageAiVerification.js.map +1 -0
  512. package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.d.ts +52 -0
  513. package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js +109 -0
  514. package/dist/components/UI/ImageAiAdjust/useImageAiAdjust.js.map +1 -0
  515. package/dist/components/UI/ImageAnnotator/AnnotationEditor.d.ts +13 -0
  516. package/dist/components/UI/ImageAnnotator/AnnotationEditor.js +362 -0
  517. package/dist/components/UI/ImageAnnotator/AnnotationEditor.js.map +1 -0
  518. package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.d.ts +15 -0
  519. package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js +61 -0
  520. package/dist/components/UI/ImageAnnotator/ImageAnnotationDialog.js.map +1 -0
  521. package/dist/components/UI/ImageAnnotator/annotationStyle.d.ts +28 -0
  522. package/dist/components/UI/ImageAnnotator/annotationStyle.js +56 -0
  523. package/dist/components/UI/ImageAnnotator/annotationStyle.js.map +1 -0
  524. package/dist/components/UI/ImageAnnotator/canvas/AnnotationCropFrame.d.ts +16 -0
  525. package/dist/components/UI/ImageAnnotator/canvas/AnnotationCropFrame.js +156 -0
  526. package/dist/components/UI/ImageAnnotator/canvas/AnnotationCropFrame.js.map +1 -0
  527. package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.d.ts +17 -0
  528. package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js +329 -0
  529. package/dist/components/UI/ImageAnnotator/canvas/AnnotationElementNode.js.map +1 -0
  530. package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.d.ts +10 -0
  531. package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js +127 -0
  532. package/dist/components/UI/ImageAnnotator/canvas/AnnotationSelection.js.map +1 -0
  533. package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.d.ts +26 -0
  534. package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js +241 -0
  535. package/dist/components/UI/ImageAnnotator/canvas/AnnotationStage.js.map +1 -0
  536. package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.d.ts +15 -0
  537. package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js +77 -0
  538. package/dist/components/UI/ImageAnnotator/components/AnnotationActionBar.js.map +1 -0
  539. package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.d.ts +11 -0
  540. package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js +70 -0
  541. package/dist/components/UI/ImageAnnotator/components/AnnotationColorPopover.js.map +1 -0
  542. package/dist/components/UI/ImageAnnotator/components/AnnotationCropBar.d.ts +12 -0
  543. package/dist/components/UI/ImageAnnotator/components/AnnotationCropBar.js +89 -0
  544. package/dist/components/UI/ImageAnnotator/components/AnnotationCropBar.js.map +1 -0
  545. package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.d.ts +8 -0
  546. package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js +58 -0
  547. package/dist/components/UI/ImageAnnotator/components/AnnotationElementActions.js.map +1 -0
  548. package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.d.ts +13 -0
  549. package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js +183 -0
  550. package/dist/components/UI/ImageAnnotator/components/AnnotationStyleBar.js.map +1 -0
  551. package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.d.ts +17 -0
  552. package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js +79 -0
  553. package/dist/components/UI/ImageAnnotator/components/AnnotationTextOverlay.js.map +1 -0
  554. package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.d.ts +15 -0
  555. package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js +46 -0
  556. package/dist/components/UI/ImageAnnotator/components/AnnotationToolButton.js.map +1 -0
  557. package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.d.ts +10 -0
  558. package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js +91 -0
  559. package/dist/components/UI/ImageAnnotator/components/AnnotationToolbar.js.map +1 -0
  560. package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.d.ts +21 -0
  561. package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js +45 -0
  562. package/dist/components/UI/ImageAnnotator/helpers/annotationCanvas.js.map +1 -0
  563. package/dist/components/UI/ImageAnnotator/helpers/annotationCrop.d.ts +12 -0
  564. package/dist/components/UI/ImageAnnotator/helpers/annotationCrop.js +64 -0
  565. package/dist/components/UI/ImageAnnotator/helpers/annotationCrop.js.map +1 -0
  566. package/dist/components/UI/ImageAnnotator/helpers/annotationElements.d.ts +15 -0
  567. package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js +165 -0
  568. package/dist/components/UI/ImageAnnotator/helpers/annotationElements.js.map +1 -0
  569. package/dist/components/UI/ImageAnnotator/helpers/annotationExport.d.ts +15 -0
  570. package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js +23 -0
  571. package/dist/components/UI/ImageAnnotator/helpers/annotationExport.js.map +1 -0
  572. package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.d.ts +8 -0
  573. package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js +10 -0
  574. package/dist/components/UI/ImageAnnotator/helpers/konvaFullBuild.js.map +1 -0
  575. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.d.ts +9 -0
  576. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js +56 -0
  577. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationBaseImage.js.map +1 -0
  578. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.d.ts +29 -0
  579. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js +160 -0
  580. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationDocument.js.map +1 -0
  581. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.d.ts +14 -0
  582. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js +80 -0
  583. package/dist/components/UI/ImageAnnotator/hooks/useAnnotationShortcuts.js.map +1 -0
  584. package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.d.ts +5 -0
  585. package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js +23 -0
  586. package/dist/components/UI/ImageAnnotator/hooks/useCoarsePointer.js.map +1 -0
  587. package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.d.ts +2 -0
  588. package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js +27 -0
  589. package/dist/components/UI/ImageAnnotator/hooks/useHtmlImage.js.map +1 -0
  590. package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.d.ts +98 -0
  591. package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js +13 -0
  592. package/dist/components/UI/ImageAnnotator/interfaces/annotationDocument.js.map +1 -0
  593. package/dist/components/UI/ImageMaskPainter/index.d.ts +24 -0
  594. package/dist/components/UI/ImageMaskPainter/index.js +284 -0
  595. package/dist/components/UI/ImageMaskPainter/index.js.map +1 -0
  596. package/dist/components/UI/ImageMaskPainter/maskStrokes.d.ts +19 -0
  597. package/dist/components/UI/ImageMaskPainter/maskStrokes.js +71 -0
  598. package/dist/components/UI/ImageMaskPainter/maskStrokes.js.map +1 -0
  599. package/dist/components/UI/ImagePlaceholder.d.ts +24 -0
  600. package/dist/components/UI/ImagePlaceholder.js +29 -0
  601. package/dist/components/UI/ImagePlaceholder.js.map +1 -0
  602. package/dist/components/UI/ImageZoomOverlay.d.ts +7 -0
  603. package/dist/components/UI/ImageZoomOverlay.js +53 -0
  604. package/dist/components/UI/ImageZoomOverlay.js.map +1 -0
  605. package/dist/components/UI/InformationCard.d.ts +26 -0
  606. package/dist/components/UI/InformationCard.js +89 -0
  607. package/dist/components/UI/InformationCard.js.map +1 -0
  608. package/dist/components/UI/Kanban/KanbanBoard.d.ts +26 -0
  609. package/dist/components/UI/Kanban/KanbanBoard.js +91 -0
  610. package/dist/components/UI/Kanban/KanbanBoard.js.map +1 -0
  611. package/dist/components/UI/Kanban/KanbanCard.d.ts +22 -0
  612. package/dist/components/UI/Kanban/KanbanCard.js +47 -0
  613. package/dist/components/UI/Kanban/KanbanCard.js.map +1 -0
  614. package/dist/components/UI/Kanban/KanbanLane.d.ts +37 -0
  615. package/dist/components/UI/Kanban/KanbanLane.js +77 -0
  616. package/dist/components/UI/Kanban/KanbanLane.js.map +1 -0
  617. package/dist/components/UI/Kanban/index.d.ts +4 -0
  618. package/dist/components/UI/Kanban/index.js +11 -0
  619. package/dist/components/UI/Kanban/index.js.map +1 -0
  620. package/dist/components/UI/Kanban/kanbanBoardContext.d.ts +13 -0
  621. package/dist/components/UI/Kanban/kanbanBoardContext.js +13 -0
  622. package/dist/components/UI/Kanban/kanbanBoardContext.js.map +1 -0
  623. package/dist/components/UI/LazyMarkdown.d.ts +5 -0
  624. package/dist/components/UI/LazyMarkdown.js +8 -0
  625. package/dist/components/UI/LazyMarkdown.js.map +1 -0
  626. package/dist/components/UI/LoadingPage.d.ts +2 -0
  627. package/dist/components/UI/LoadingPage.js +13 -0
  628. package/dist/components/UI/LoadingPage.js.map +1 -0
  629. package/dist/components/UI/LoadingSpinner.d.ts +14 -0
  630. package/dist/components/UI/LoadingSpinner.js +32 -0
  631. package/dist/components/UI/LoadingSpinner.js.map +1 -0
  632. package/dist/components/UI/MaterialSymbol/consts.d.ts +2 -0
  633. package/dist/components/UI/MaterialSymbol/consts.js +3472 -0
  634. package/dist/components/UI/MaterialSymbol/consts.js.map +1 -0
  635. package/dist/components/UI/MaterialSymbol/index.d.ts +18 -0
  636. package/dist/components/UI/MaterialSymbol/index.js +51 -0
  637. package/dist/components/UI/MaterialSymbol/index.js.map +1 -0
  638. package/dist/components/UI/MaterialSymbol/types.d.ts +37 -0
  639. package/dist/components/UI/MaterialSymbol/types.js +2 -0
  640. package/dist/components/UI/MaterialSymbol/types.js.map +1 -0
  641. package/dist/components/UI/NoDataFound/index.d.ts +31 -0
  642. package/dist/components/UI/NoDataFound/index.js +215 -0
  643. package/dist/components/UI/NoDataFound/index.js.map +1 -0
  644. package/dist/components/UI/NoDataFound/noDataFoundPresets.d.ts +31 -0
  645. package/dist/components/UI/NoDataFound/noDataFoundPresets.js +99 -0
  646. package/dist/components/UI/NoDataFound/noDataFoundPresets.js.map +1 -0
  647. package/dist/components/UI/ReferenceCard.d.ts +16 -0
  648. package/dist/components/UI/ReferenceCard.js +59 -0
  649. package/dist/components/UI/ReferenceCard.js.map +1 -0
  650. package/dist/components/UI/RichTextContent.d.ts +14 -0
  651. package/dist/components/UI/RichTextContent.js +30 -0
  652. package/dist/components/UI/RichTextContent.js.map +1 -0
  653. package/dist/components/UI/SkeletonLoading.d.ts +9 -0
  654. package/dist/components/UI/SkeletonLoading.js +20 -0
  655. package/dist/components/UI/SkeletonLoading.js.map +1 -0
  656. package/dist/components/UI/ThreeDots.d.ts +11 -0
  657. package/dist/components/UI/ThreeDots.js +22 -0
  658. package/dist/components/UI/ThreeDots.js.map +1 -0
  659. package/dist/components/UI/Toast.d.ts +16 -0
  660. package/dist/components/UI/Toast.js +81 -0
  661. package/dist/components/UI/Toast.js.map +1 -0
  662. package/dist/components/UI/ToastHost.d.ts +2 -0
  663. package/dist/components/UI/ToastHost.js +25 -0
  664. package/dist/components/UI/ToastHost.js.map +1 -0
  665. package/dist/components/UI/TypingEffect.d.ts +10 -0
  666. package/dist/components/UI/TypingEffect.js +31 -0
  667. package/dist/components/UI/TypingEffect.js.map +1 -0
  668. package/dist/components/UI/UmodeLogo.d.ts +10 -0
  669. package/dist/components/UI/UmodeLogo.js +128 -0
  670. package/dist/components/UI/UmodeLogo.js.map +1 -0
  671. package/dist/components/UI/UserMenu.d.ts +50 -0
  672. package/dist/components/UI/UserMenu.js +212 -0
  673. package/dist/components/UI/UserMenu.js.map +1 -0
  674. package/dist/components/UI/UsersAvatar.d.ts +7 -0
  675. package/dist/components/UI/UsersAvatar.js +29 -0
  676. package/dist/components/UI/UsersAvatar.js.map +1 -0
  677. package/dist/components/UI/access/UiAccessContext.d.ts +21 -0
  678. package/dist/components/UI/access/UiAccessContext.js +14 -0
  679. package/dist/components/UI/access/UiAccessContext.js.map +1 -0
  680. package/dist/components/UI/cells/ArrayCell.d.ts +5 -0
  681. package/dist/components/UI/cells/ArrayCell.js +25 -0
  682. package/dist/components/UI/cells/ArrayCell.js.map +1 -0
  683. package/dist/components/UI/cells/BooleanCell.d.ts +5 -0
  684. package/dist/components/UI/cells/BooleanCell.js +22 -0
  685. package/dist/components/UI/cells/BooleanCell.js.map +1 -0
  686. package/dist/components/UI/cells/DetailsTableCell.d.ts +7 -0
  687. package/dist/components/UI/cells/DetailsTableCell.js +30 -0
  688. package/dist/components/UI/cells/DetailsTableCell.js.map +1 -0
  689. package/dist/components/UI/cells/ProductImageCell.d.ts +5 -0
  690. package/dist/components/UI/cells/ProductImageCell.js +21 -0
  691. package/dist/components/UI/cells/ProductImageCell.js.map +1 -0
  692. package/dist/components/UI/cells/UrlLinkCell.d.ts +6 -0
  693. package/dist/components/UI/cells/UrlLinkCell.js +19 -0
  694. package/dist/components/UI/cells/UrlLinkCell.js.map +1 -0
  695. package/dist/components/Upload/SimpleUploaderComponent.d.ts +9 -0
  696. package/dist/components/Upload/SimpleUploaderComponent.js +72 -0
  697. package/dist/components/Upload/SimpleUploaderComponent.js.map +1 -0
  698. package/dist/components/Upload/UploaderComponent.d.ts +29 -0
  699. package/dist/components/Upload/UploaderComponent.js +241 -0
  700. package/dist/components/Upload/UploaderComponent.js.map +1 -0
  701. package/dist/components/Upload/XlsExportButton.d.ts +13 -0
  702. package/dist/components/Upload/XlsExportButton.js +47 -0
  703. package/dist/components/Upload/XlsExportButton.js.map +1 -0
  704. package/dist/helpers/composeRefs.d.ts +7 -0
  705. package/dist/helpers/composeRefs.js +14 -0
  706. package/dist/helpers/composeRefs.js.map +1 -0
  707. package/dist/helpers/dateHelpers.d.ts +47 -0
  708. package/dist/helpers/dateHelpers.js +69 -0
  709. package/dist/helpers/dateHelpers.js.map +1 -0
  710. package/dist/helpers/fileAttachments.d.ts +3 -0
  711. package/dist/helpers/fileAttachments.js +17 -0
  712. package/dist/helpers/fileAttachments.js.map +1 -0
  713. package/dist/helpers/formatHelpers.d.ts +36 -0
  714. package/dist/helpers/formatHelpers.js +65 -0
  715. package/dist/helpers/formatHelpers.js.map +1 -0
  716. package/dist/helpers/iconFont.d.ts +9 -0
  717. package/dist/helpers/iconFont.js +37 -0
  718. package/dist/helpers/iconFont.js.map +1 -0
  719. package/dist/helpers/imageCompression.d.ts +5 -0
  720. package/dist/helpers/imageCompression.js +49 -0
  721. package/dist/helpers/imageCompression.js.map +1 -0
  722. package/dist/helpers/imageFile.d.ts +32 -0
  723. package/dist/helpers/imageFile.js +108 -0
  724. package/dist/helpers/imageFile.js.map +1 -0
  725. package/dist/helpers/layeredSurfaces.d.ts +28 -0
  726. package/dist/helpers/layeredSurfaces.js +19 -0
  727. package/dist/helpers/layeredSurfaces.js.map +1 -0
  728. package/dist/helpers/mathHelpers.d.ts +14 -0
  729. package/dist/helpers/mathHelpers.js +13 -0
  730. package/dist/helpers/mathHelpers.js.map +1 -0
  731. package/dist/helpers/mergeClasses.d.ts +10 -0
  732. package/dist/helpers/mergeClasses.js +34 -0
  733. package/dist/helpers/mergeClasses.js.map +1 -0
  734. package/dist/helpers/moduleLoadErrorHelpers.d.ts +1 -0
  735. package/dist/helpers/moduleLoadErrorHelpers.js +25 -0
  736. package/dist/helpers/moduleLoadErrorHelpers.js.map +1 -0
  737. package/dist/helpers/objectHelpers.d.ts +13 -0
  738. package/dist/helpers/objectHelpers.js +59 -0
  739. package/dist/helpers/objectHelpers.js.map +1 -0
  740. package/dist/helpers/portalHost.d.ts +10 -0
  741. package/dist/helpers/portalHost.js +7 -0
  742. package/dist/helpers/portalHost.js.map +1 -0
  743. package/dist/helpers/richText.d.ts +46 -0
  744. package/dist/helpers/richText.js +197 -0
  745. package/dist/helpers/richText.js.map +1 -0
  746. package/dist/helpers/stringHelpers.d.ts +45 -0
  747. package/dist/helpers/stringHelpers.js +57 -0
  748. package/dist/helpers/stringHelpers.js.map +1 -0
  749. package/dist/helpers/themeSkins.d.ts +12 -0
  750. package/dist/helpers/themeSkins.js +13 -0
  751. package/dist/helpers/themeSkins.js.map +1 -0
  752. package/dist/helpers/themeTokens.d.ts +28 -0
  753. package/dist/helpers/themeTokens.js +35 -0
  754. package/dist/helpers/themeTokens.js.map +1 -0
  755. package/dist/helpers/uiErrorPresenter.d.ts +21 -0
  756. package/dist/helpers/uiErrorPresenter.js +10 -0
  757. package/dist/helpers/uiErrorPresenter.js.map +1 -0
  758. package/dist/helpers/uiLogger.d.ts +8 -0
  759. package/dist/helpers/uiLogger.js +16 -0
  760. package/dist/helpers/uiLogger.js.map +1 -0
  761. package/dist/helpers/uiPreferences.d.ts +13 -0
  762. package/dist/helpers/uiPreferences.js +35 -0
  763. package/dist/helpers/uiPreferences.js.map +1 -0
  764. package/dist/helpers/urlParamSync.d.ts +19 -0
  765. package/dist/helpers/urlParamSync.js +54 -0
  766. package/dist/helpers/urlParamSync.js.map +1 -0
  767. package/dist/helpers/utilityHelpers.d.ts +81 -0
  768. package/dist/helpers/utilityHelpers.js +133 -0
  769. package/dist/helpers/utilityHelpers.js.map +1 -0
  770. package/dist/helpers/validationHelpers.d.ts +36 -0
  771. package/dist/helpers/validationHelpers.js +44 -0
  772. package/dist/helpers/validationHelpers.js.map +1 -0
  773. package/dist/hooks/useAnchoredFloating.d.ts +22 -0
  774. package/dist/hooks/useAnchoredFloating.js +59 -0
  775. package/dist/hooks/useAnchoredFloating.js.map +1 -0
  776. package/dist/hooks/useBreakpoint.d.ts +16 -0
  777. package/dist/hooks/useBreakpoint.js +47 -0
  778. package/dist/hooks/useBreakpoint.js.map +1 -0
  779. package/dist/hooks/useDebounce.d.ts +8 -0
  780. package/dist/hooks/useDebounce.js +36 -0
  781. package/dist/hooks/useDebounce.js.map +1 -0
  782. package/dist/hooks/useFileAttachments.d.ts +43 -0
  783. package/dist/hooks/useFileAttachments.js +158 -0
  784. package/dist/hooks/useFileAttachments.js.map +1 -0
  785. package/dist/hooks/useHoverCapable.d.ts +6 -0
  786. package/dist/hooks/useHoverCapable.js +28 -0
  787. package/dist/hooks/useHoverCapable.js.map +1 -0
  788. package/dist/hooks/useInlineEditor.d.ts +5 -0
  789. package/dist/hooks/useInlineEditor.js +42 -0
  790. package/dist/hooks/useInlineEditor.js.map +1 -0
  791. package/dist/hooks/useMobile.d.ts +7 -0
  792. package/dist/hooks/useMobile.js +8 -0
  793. package/dist/hooks/useMobile.js.map +1 -0
  794. package/dist/hooks/useNotification.d.ts +38 -0
  795. package/dist/hooks/useNotification.js +39 -0
  796. package/dist/hooks/useNotification.js.map +1 -0
  797. package/dist/hooks/useResolvedTheme.d.ts +7 -0
  798. package/dist/hooks/useResolvedTheme.js +15 -0
  799. package/dist/hooks/useResolvedTheme.js.map +1 -0
  800. package/dist/hooks/useThemeSkin.d.ts +7 -0
  801. package/dist/hooks/useThemeSkin.js +19 -0
  802. package/dist/hooks/useThemeSkin.js.map +1 -0
  803. package/dist/hooks/useVoiceTranscription.d.ts +29 -0
  804. package/dist/hooks/useVoiceTranscription.js +208 -0
  805. package/dist/hooks/useVoiceTranscription.js.map +1 -0
  806. package/dist/index.d.ts +63 -0
  807. package/dist/index.js +157 -0
  808. package/dist/index.js.map +1 -0
  809. package/dist/interfaces/IFileAttachment.d.ts +18 -0
  810. package/dist/interfaces/IFileAttachment.js +2 -0
  811. package/dist/interfaces/IFileAttachment.js.map +1 -0
  812. package/dist/interfaces/IFilterOption.d.ts +12 -0
  813. package/dist/interfaces/IFilterOption.js +2 -0
  814. package/dist/interfaces/IFilterOption.js.map +1 -0
  815. package/dist/locales/en/ui.json.d.ts +682 -0
  816. package/dist/locales/en/ui.json.js +120 -0
  817. package/dist/locales/en/ui.json.js.map +1 -0
  818. package/dist/locales/index.d.ts +1362 -0
  819. package/dist/locales/index.js +7 -0
  820. package/dist/locales/index.js.map +1 -0
  821. package/dist/locales/pt/ui.json.d.ts +682 -0
  822. package/dist/locales/pt/ui.json.js +120 -0
  823. package/dist/locales/pt/ui.json.js.map +1 -0
  824. package/dist/motion/index.d.ts +2 -0
  825. package/dist/motion/index.js +17 -0
  826. package/dist/motion/index.js.map +1 -0
  827. package/dist/motion/motionPresets.d.ts +44 -0
  828. package/dist/motion/motionPresets.js +67 -0
  829. package/dist/motion/motionPresets.js.map +1 -0
  830. package/dist/motion/motionTokens.d.ts +40 -0
  831. package/dist/motion/motionTokens.js +29 -0
  832. package/dist/motion/motionTokens.js.map +1 -0
  833. package/package.json +245 -0
  834. package/src/assets/fonts/LICENSE-Inter.txt +92 -0
  835. package/src/assets/fonts/LICENSE-MaterialSymbols.txt +202 -0
  836. package/src/assets/fonts/LICENSE-Virgil.txt +45 -0
  837. package/src/assets/fonts/inter-latin-ext.woff2 +0 -0
  838. package/src/assets/fonts/inter-latin.woff2 +0 -0
  839. package/src/assets/fonts/material-symbols-outlined.woff2 +0 -0
  840. package/src/assets/fonts/virgil.woff2 +0 -0
  841. package/src/assets/styles/base.css +585 -0
  842. package/src/assets/styles/index.css +1 -0
  843. package/src/assets/styles/theme.css +453 -0
  844. package/tailwind-plugins/glass.js +162 -0
  845. package/tailwind.preset.js +392 -0
@@ -0,0 +1,33 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createContext, useState, useCallback, useMemo, useContext } from "react";
3
+ const EDITABLE_CELL_ATTR = "data-datatable-editable-cell";
4
+ const buildEditableCellKey = (rowId, columnId) => `${rowId}::${columnId}`;
5
+ const DataTableCellEditingContext = createContext(null);
6
+ const useDataTableCellEditing = () => useContext(DataTableCellEditingContext);
7
+ const DataTableCellEditingProvider = ({ children }) => {
8
+ const [editingCellKey, setEditingCellKey] = useState(null);
9
+ const startEditing = useCallback((cellKey) => setEditingCellKey(cellKey), []);
10
+ const stopEditing = useCallback(() => setEditingCellKey(null), []);
11
+ const navigate = useCallback((currentCellKey, direction) => {
12
+ const cells = Array.from(document.querySelectorAll(`[${EDITABLE_CELL_ATTR}]`)).map((node) => node.getAttribute(EDITABLE_CELL_ATTR) ?? "").filter((key) => key !== "");
13
+ const index = cells.indexOf(currentCellKey);
14
+ if (index === -1) {
15
+ setEditingCellKey(null);
16
+ return;
17
+ }
18
+ const next = cells[(index + direction + cells.length) % cells.length];
19
+ setEditingCellKey(next === currentCellKey ? null : next);
20
+ }, []);
21
+ const value = useMemo(
22
+ () => ({ editingCellKey, startEditing, stopEditing, navigate }),
23
+ [editingCellKey, startEditing, stopEditing, navigate]
24
+ );
25
+ return /* @__PURE__ */ jsx(DataTableCellEditingContext.Provider, { value, children });
26
+ };
27
+ export {
28
+ EDITABLE_CELL_ATTR,
29
+ buildEditableCellKey,
30
+ DataTableCellEditingProvider as default,
31
+ useDataTableCellEditing
32
+ };
33
+ //# sourceMappingURL=useCellEditingState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCellEditingState.js","sources":["../../../../src/components/UI/DataTable/useCellEditingState.tsx"],"sourcesContent":["import React, { createContext, useCallback, useContext, useMemo, useState } from 'react';\n\n/** Marca a célula editável no DOM para que a navegação por Tab siga a ordem visual da tabela. */\nexport const EDITABLE_CELL_ATTR = 'data-datatable-editable-cell';\n\nexport const buildEditableCellKey = (rowId: string, columnId: string): string => `${rowId}::${columnId}`;\n\ninterface IDataTableCellEditing {\n editingCellKey: string | null;\n startEditing: (cellKey: string) => void;\n stopEditing: () => void;\n navigate: (currentCellKey: string, direction: 1 | -1) => void;\n}\n\nconst DataTableCellEditingContext = createContext<IDataTableCellEditing | null>(null);\n\n/** Estado da célula em edição no modo `editing.clickToEdit`; `null` fora dele. */\nexport const useDataTableCellEditing = (): IDataTableCellEditing | null => useContext(DataTableCellEditingContext);\n\n/**\n * Guarda qual célula está aberta para edição. Vive em um provider próprio para que abrir ou fechar\n * uma célula re-renderize apenas as células, nunca a tabela inteira.\n */\nconst DataTableCellEditingProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const [editingCellKey, setEditingCellKey] = useState<string | null>(null);\n\n const startEditing = useCallback((cellKey: string) => setEditingCellKey(cellKey), []);\n const stopEditing = useCallback(() => setEditingCellKey(null), []);\n\n // A ordem vem do DOM: as células editáveis se marcam com `EDITABLE_CELL_ATTR`, então Tab anda na\n // mesma sequência que o usuário lê, sem a tabela precisar manter um índice paralelo.\n const navigate = useCallback((currentCellKey: string, direction: 1 | -1) => {\n const cells = Array.from(document.querySelectorAll<HTMLElement>(`[${EDITABLE_CELL_ATTR}]`))\n .map((node) => node.getAttribute(EDITABLE_CELL_ATTR) ?? '')\n .filter((key) => key !== '');\n const index = cells.indexOf(currentCellKey);\n if (index === -1) {\n setEditingCellKey(null);\n return;\n }\n const next = cells[(index + direction + cells.length) % cells.length];\n setEditingCellKey(next === currentCellKey ? null : next);\n }, []);\n\n const value = useMemo<IDataTableCellEditing>(\n () => ({ editingCellKey, startEditing, stopEditing, navigate }),\n [editingCellKey, startEditing, stopEditing, navigate],\n );\n\n return <DataTableCellEditingContext.Provider value={value}>{children}</DataTableCellEditingContext.Provider>;\n};\n\nexport default DataTableCellEditingProvider;\n"],"names":[],"mappings":";;AAGO,MAAM,qBAAqB;AAE3B,MAAM,uBAAuB,CAAC,OAAe,aAA6B,GAAG,KAAK,KAAK,QAAQ;AAStG,MAAM,8BAA8B,cAA4C,IAAI;AAG7E,MAAM,0BAA0B,MAAoC,WAAW,2BAA2B;AAMjH,MAAM,+BAAwE,CAAC,EAAE,eAAe;AAC9F,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAwB,IAAI;AAExE,QAAM,eAAe,YAAY,CAAC,YAAoB,kBAAkB,OAAO,GAAG,EAAE;AACpF,QAAM,cAAc,YAAY,MAAM,kBAAkB,IAAI,GAAG,CAAA,CAAE;AAIjE,QAAM,WAAW,YAAY,CAAC,gBAAwB,cAAsB;AAC1E,UAAM,QAAQ,MAAM,KAAK,SAAS,iBAA8B,IAAI,kBAAkB,GAAG,CAAC,EACvF,IAAI,CAAC,SAAS,KAAK,aAAa,kBAAkB,KAAK,EAAE,EACzD,OAAO,CAAC,QAAQ,QAAQ,EAAE;AAC7B,UAAM,QAAQ,MAAM,QAAQ,cAAc;AAC1C,QAAI,UAAU,IAAI;AAChB,wBAAkB,IAAI;AACtB;AAAA,IACF;AACA,UAAM,OAAO,OAAO,QAAQ,YAAY,MAAM,UAAU,MAAM,MAAM;AACpE,sBAAkB,SAAS,iBAAiB,OAAO,IAAI;AAAA,EACzD,GAAG,CAAA,CAAE;AAEL,QAAM,QAAQ;AAAA,IACZ,OAAO,EAAE,gBAAgB,cAAc,aAAa,SAAA;AAAA,IACpD,CAAC,gBAAgB,cAAc,aAAa,QAAQ;AAAA,EAAA;AAGtD,SAAO,oBAAC,4BAA4B,UAA5B,EAAqC,OAAe,SAAA,CAAS;AACvE;"}
@@ -0,0 +1,25 @@
1
+ import { Updater } from '@tanstack/react-table';
2
+ import { IDataTableColumnConfig, IDataTableConfig, IDataTableRow } from './types';
3
+ export declare const getFixedEndColumns: <T extends IDataTableRow>(columns: Array<IDataTableColumnConfig<T>>) => Array<IDataTableColumnConfig<T>>;
4
+ export declare const getFixedStartColumns: <T extends IDataTableRow>(columns: Array<IDataTableColumnConfig<T>>) => Array<IDataTableColumnConfig<T>>;
5
+ export declare const getReorderableColumns: <T extends IDataTableRow>(columns: Array<IDataTableColumnConfig<T>>) => Array<IDataTableColumnConfig<T>>;
6
+ export declare const resolveColumnOrder: <R extends IDataTableRow>(storageKey: string, columns: Array<IDataTableColumnConfig<R>>) => Array<string>;
7
+ interface IUseColumnOrderResult {
8
+ columnOrder: Array<string>;
9
+ onColumnOrderChange: (updater: Updater<Array<string>>) => void;
10
+ resetColumnOrder: () => void;
11
+ }
12
+ export declare const useColumnOrder: <T extends IDataTableRow, C extends IDataTableRow = IDataTableRow>(config: IDataTableConfig<T, C>) => IUseColumnOrderResult;
13
+ interface IUseDetailColumnOrderResult {
14
+ detailColumnOrder: Array<string>;
15
+ onDetailColumnOrderChange: (updater: Updater<Array<string>>) => void;
16
+ resetDetailColumnOrder: () => void;
17
+ }
18
+ /**
19
+ * Column order for the nested detail table of a `detailTable` expansion.
20
+ * Same reconcile/persist semantics as the parent order, stored under the
21
+ * detail entry (`${entityKey}:detail`). Pass `null` columns for tables without
22
+ * a detailTable expansion: the hook is inert then.
23
+ */
24
+ export declare const useDetailColumnOrder: <C extends IDataTableRow>(entityKey: string, columns: Array<IDataTableColumnConfig<C>> | null) => IUseDetailColumnOrderResult;
25
+ export {};
@@ -0,0 +1,94 @@
1
+ import { useState, useEffect } from "react";
2
+ import { readColumnsEntry, writeColumnsEntry, detailColumnsEntryKey } from "./dataTableColumnsStore.js";
3
+ const getFixedEndColumns = (columns) => (columns ?? []).filter((column) => column.type === "actions");
4
+ const getFixedStartColumns = (columns) => (columns ?? []).filter((column) => column.type !== "actions" && column.hideable === false);
5
+ const getReorderableColumns = (columns) => (columns ?? []).filter((column) => column.type !== "actions" && column.hideable !== false);
6
+ const mergeReorderableOrder = (reorderableIds, persistedIds) => {
7
+ const defaultIndexById = new Map(reorderableIds.map((id, index) => [id, index]));
8
+ const result = persistedIds.filter((id) => defaultIndexById.has(id));
9
+ const persistedSet = new Set(result);
10
+ for (const id of reorderableIds) {
11
+ if (persistedSet.has(id)) continue;
12
+ const defaultIndex = defaultIndexById.get(id) ?? 0;
13
+ const insertAt = result.findIndex((existingId) => (defaultIndexById.get(existingId) ?? 0) > defaultIndex);
14
+ if (insertAt === -1) result.push(id);
15
+ else result.splice(insertAt, 0, id);
16
+ }
17
+ return result;
18
+ };
19
+ const buildDefaultColumnOrder = (columns) => [
20
+ ...getFixedStartColumns(columns).map((column) => column.id),
21
+ ...getReorderableColumns(columns).map((column) => column.id),
22
+ ...getFixedEndColumns(columns).map((column) => column.id)
23
+ ];
24
+ const resolveColumnOrder = (storageKey, columns) => {
25
+ const reorderableIds = getReorderableColumns(columns).map((column) => column.id);
26
+ const persisted = readColumnsEntry(storageKey).order;
27
+ const mergedReorderable = persisted ? mergeReorderableOrder(reorderableIds, persisted) : reorderableIds;
28
+ return [
29
+ ...getFixedStartColumns(columns).map((column) => column.id),
30
+ ...mergedReorderable,
31
+ ...getFixedEndColumns(columns).map((column) => column.id)
32
+ ];
33
+ };
34
+ const reconcileColumnOrder = (previous, columns) => {
35
+ const reorderableIds = getReorderableColumns(columns).map((column) => column.id);
36
+ const reorderableIdSet = new Set(reorderableIds);
37
+ const previousReorderable = previous.filter((id) => reorderableIdSet.has(id));
38
+ const next = [
39
+ ...getFixedStartColumns(columns).map((column) => column.id),
40
+ ...mergeReorderableOrder(reorderableIds, previousReorderable),
41
+ ...getFixedEndColumns(columns).map((column) => column.id)
42
+ ];
43
+ return next.length === previous.length && next.every((id, index) => id === previous[index]) ? previous : next;
44
+ };
45
+ const useColumnOrder = (config) => {
46
+ const [columnOrder, setColumnOrder] = useState(
47
+ () => resolveColumnOrder(config.entityKey, config.columns)
48
+ );
49
+ const onColumnOrderChange = (updater) => {
50
+ setColumnOrder((previous) => typeof updater === "function" ? updater(previous) : updater);
51
+ };
52
+ const resetColumnOrder = () => {
53
+ setColumnOrder(buildDefaultColumnOrder(config.columns));
54
+ };
55
+ const columnIdsSignature = config.columns.map((column) => column.id).join("|");
56
+ useEffect(() => {
57
+ setColumnOrder((previous) => reconcileColumnOrder(previous, config.columns));
58
+ }, [columnIdsSignature]);
59
+ useEffect(() => {
60
+ writeColumnsEntry(config.entityKey, { order: columnOrder });
61
+ }, [config.entityKey, columnOrder]);
62
+ return { columnOrder, onColumnOrderChange, resetColumnOrder };
63
+ };
64
+ const useDetailColumnOrder = (entityKey, columns) => {
65
+ const [detailColumnOrder, setDetailColumnOrder] = useState(
66
+ () => columns ? resolveColumnOrder(detailColumnsEntryKey(entityKey), columns) : []
67
+ );
68
+ const onDetailColumnOrderChange = (updater) => {
69
+ setDetailColumnOrder((previous) => typeof updater === "function" ? updater(previous) : updater);
70
+ };
71
+ const resetDetailColumnOrder = () => {
72
+ if (columns) setDetailColumnOrder(buildDefaultColumnOrder(columns));
73
+ };
74
+ const hasDetailColumns = !!columns;
75
+ const detailColumnIdsSignature = (columns ?? []).map((column) => column.id).join("|");
76
+ useEffect(() => {
77
+ if (!columns) return;
78
+ setDetailColumnOrder((previous) => reconcileColumnOrder(previous, columns));
79
+ }, [detailColumnIdsSignature, hasDetailColumns]);
80
+ useEffect(() => {
81
+ if (!hasDetailColumns) return;
82
+ writeColumnsEntry(detailColumnsEntryKey(entityKey), { order: detailColumnOrder });
83
+ }, [entityKey, hasDetailColumns, detailColumnOrder]);
84
+ return { detailColumnOrder, onDetailColumnOrderChange, resetDetailColumnOrder };
85
+ };
86
+ export {
87
+ getFixedEndColumns,
88
+ getFixedStartColumns,
89
+ getReorderableColumns,
90
+ resolveColumnOrder,
91
+ useColumnOrder,
92
+ useDetailColumnOrder
93
+ };
94
+ //# sourceMappingURL=useColumnOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnOrder.js","sources":["../../../../src/components/UI/DataTable/useColumnOrder.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Updater } from '@tanstack/react-table';\n\nimport { detailColumnsEntryKey, readColumnsEntry, writeColumnsEntry } from './dataTableColumnsStore';\nimport type { IDataTableColumnConfig, IDataTableConfig, IDataTableRow } from './types';\n\n// Fixed columns never enter the drag list. Identity/first columns (`hideable:\n// false`) stay pinned to the start; the `actions` column stays pinned to the\n// end. Only the middle columns are reorderable. `actions` is checked first so a\n// column that is both non-hideable and `actions` lands at the end, not the start.\nexport const getFixedEndColumns = <T extends IDataTableRow>(\n columns: Array<IDataTableColumnConfig<T>>,\n): Array<IDataTableColumnConfig<T>> => (columns ?? []).filter((column) => column.type === 'actions');\n\nexport const getFixedStartColumns = <T extends IDataTableRow>(\n columns: Array<IDataTableColumnConfig<T>>,\n): Array<IDataTableColumnConfig<T>> =>\n (columns ?? []).filter((column) => column.type !== 'actions' && column.hideable === false);\n\nexport const getReorderableColumns = <T extends IDataTableRow>(\n columns: Array<IDataTableColumnConfig<T>>,\n): Array<IDataTableColumnConfig<T>> =>\n (columns ?? []).filter((column) => column.type !== 'actions' && column.hideable !== false);\n\n// Reconcile the persisted reorderable ids with the current config:\n// - keep saved ids that are still reorderable, in the saved order;\n// - drop obsolete ids silently (they are absent from the current config);\n// - insert reorderable ids missing from persistence at their default config\n// position (relative to the other reorderable columns).\nconst mergeReorderableOrder = (reorderableIds: Array<string>, persistedIds: Array<string>): Array<string> => {\n const defaultIndexById = new Map(reorderableIds.map((id, index) => [id, index]));\n\n const result = persistedIds.filter((id) => defaultIndexById.has(id));\n const persistedSet = new Set(result);\n\n for (const id of reorderableIds) {\n if (persistedSet.has(id)) continue;\n\n const defaultIndex = defaultIndexById.get(id) ?? 0;\n const insertAt = result.findIndex((existingId) => (defaultIndexById.get(existingId) ?? 0) > defaultIndex);\n\n if (insertAt === -1) result.push(id);\n else result.splice(insertAt, 0, id);\n }\n\n return result;\n};\n\nconst buildDefaultColumnOrder = <R extends IDataTableRow>(columns: Array<IDataTableColumnConfig<R>>): Array<string> => [\n ...getFixedStartColumns(columns).map((column) => column.id),\n ...getReorderableColumns(columns).map((column) => column.id),\n ...getFixedEndColumns(columns).map((column) => column.id),\n];\n\n// Full column order = fixed start + (persisted-merged) reorderable + fixed end.\n// Fixed columns are always re-anchored from the current config, so a column that\n// changed to fixed since the order was saved lands in the right bucket.\nexport const resolveColumnOrder = <R extends IDataTableRow>(\n storageKey: string,\n columns: Array<IDataTableColumnConfig<R>>,\n): Array<string> => {\n const reorderableIds = getReorderableColumns(columns).map((column) => column.id);\n const persisted = readColumnsEntry(storageKey).order;\n const mergedReorderable = persisted ? mergeReorderableOrder(reorderableIds, persisted) : reorderableIds;\n\n return [\n ...getFixedStartColumns(columns).map((column) => column.id),\n ...mergedReorderable,\n ...getFixedEndColumns(columns).map((column) => column.id),\n ];\n};\n\ninterface IUseColumnOrderResult {\n columnOrder: Array<string>;\n onColumnOrderChange: (updater: Updater<Array<string>>) => void;\n resetColumnOrder: () => void;\n}\n\n// Reconcile a stateful order with the CURRENT config columns. Columns that\n// appeared since the state was built (async/dynamic columns) land at their\n// config position instead of being appended by TanStack; columns that left are\n// dropped; the user's order of surviving reorderable columns is preserved.\n// Returns the previous array identity when nothing changed, so the sync effect\n// below never loops.\nconst reconcileColumnOrder = <R extends IDataTableRow>(\n previous: Array<string>,\n columns: Array<IDataTableColumnConfig<R>>,\n): Array<string> => {\n const reorderableIds = getReorderableColumns(columns).map((column) => column.id);\n const reorderableIdSet = new Set(reorderableIds);\n const previousReorderable = previous.filter((id) => reorderableIdSet.has(id));\n\n const next = [\n ...getFixedStartColumns(columns).map((column) => column.id),\n ...mergeReorderableOrder(reorderableIds, previousReorderable),\n ...getFixedEndColumns(columns).map((column) => column.id),\n ];\n\n return next.length === previous.length && next.every((id, index) => id === previous[index]) ? previous : next;\n};\n\nexport const useColumnOrder = <T extends IDataTableRow, C extends IDataTableRow = IDataTableRow>(\n config: IDataTableConfig<T, C>,\n): IUseColumnOrderResult => {\n const [columnOrder, setColumnOrder] = useState<Array<string>>(() =>\n resolveColumnOrder(config.entityKey, config.columns),\n );\n\n const onColumnOrderChange = (updater: Updater<Array<string>>) => {\n setColumnOrder((previous) => (typeof updater === 'function' ? updater(previous) : updater));\n };\n\n const resetColumnOrder = () => {\n setColumnOrder(buildDefaultColumnOrder(config.columns));\n };\n\n // Config columns can change while mounted (columns fetched async, dynamic\n // catalogs). Re-anchor the order so new ids take their config position.\n const columnIdsSignature = config.columns.map((column) => column.id).join('|');\n useEffect(() => {\n setColumnOrder((previous) => reconcileColumnOrder(previous, config.columns));\n }, [columnIdsSignature]);\n\n useEffect(() => {\n writeColumnsEntry(config.entityKey, { order: columnOrder });\n }, [config.entityKey, columnOrder]);\n\n return { columnOrder, onColumnOrderChange, resetColumnOrder };\n};\n\ninterface IUseDetailColumnOrderResult {\n detailColumnOrder: Array<string>;\n onDetailColumnOrderChange: (updater: Updater<Array<string>>) => void;\n resetDetailColumnOrder: () => void;\n}\n\n/**\n * Column order for the nested detail table of a `detailTable` expansion.\n * Same reconcile/persist semantics as the parent order, stored under the\n * detail entry (`${entityKey}:detail`). Pass `null` columns for tables without\n * a detailTable expansion: the hook is inert then.\n */\nexport const useDetailColumnOrder = <C extends IDataTableRow>(\n entityKey: string,\n columns: Array<IDataTableColumnConfig<C>> | null,\n): IUseDetailColumnOrderResult => {\n const [detailColumnOrder, setDetailColumnOrder] = useState<Array<string>>(() =>\n columns ? resolveColumnOrder(detailColumnsEntryKey(entityKey), columns) : [],\n );\n\n const onDetailColumnOrderChange = (updater: Updater<Array<string>>) => {\n setDetailColumnOrder((previous) => (typeof updater === 'function' ? updater(previous) : updater));\n };\n\n const resetDetailColumnOrder = () => {\n if (columns) setDetailColumnOrder(buildDefaultColumnOrder(columns));\n };\n\n const hasDetailColumns = !!columns;\n\n // Same re-anchoring as the parent order when the detail columns change while mounted.\n const detailColumnIdsSignature = (columns ?? []).map((column) => column.id).join('|');\n useEffect(() => {\n if (!columns) return;\n setDetailColumnOrder((previous) => reconcileColumnOrder(previous, columns));\n }, [detailColumnIdsSignature, hasDetailColumns]);\n\n useEffect(() => {\n if (!hasDetailColumns) return;\n writeColumnsEntry(detailColumnsEntryKey(entityKey), { order: detailColumnOrder });\n }, [entityKey, hasDetailColumns, detailColumnOrder]);\n\n return { detailColumnOrder, onDetailColumnOrderChange, resetDetailColumnOrder };\n};\n"],"names":[],"mappings":";;AAWO,MAAM,qBAAqB,CAChC,aACsC,WAAW,CAAA,GAAI,OAAO,CAAC,WAAW,OAAO,SAAS,SAAS;AAE5F,MAAM,uBAAuB,CAClC,aAEC,WAAW,CAAA,GAAI,OAAO,CAAC,WAAW,OAAO,SAAS,aAAa,OAAO,aAAa,KAAK;AAEpF,MAAM,wBAAwB,CACnC,aAEC,WAAW,CAAA,GAAI,OAAO,CAAC,WAAW,OAAO,SAAS,aAAa,OAAO,aAAa,KAAK;AAO3F,MAAM,wBAAwB,CAAC,gBAA+B,iBAA+C;AAC3G,QAAM,mBAAmB,IAAI,IAAI,eAAe,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC;AAE/E,QAAM,SAAS,aAAa,OAAO,CAAC,OAAO,iBAAiB,IAAI,EAAE,CAAC;AACnE,QAAM,eAAe,IAAI,IAAI,MAAM;AAEnC,aAAW,MAAM,gBAAgB;AAC/B,QAAI,aAAa,IAAI,EAAE,EAAG;AAE1B,UAAM,eAAe,iBAAiB,IAAI,EAAE,KAAK;AACjD,UAAM,WAAW,OAAO,UAAU,CAAC,gBAAgB,iBAAiB,IAAI,UAAU,KAAK,KAAK,YAAY;AAExG,QAAI,aAAa,GAAI,QAAO,KAAK,EAAE;AAAA,QAC9B,QAAO,OAAO,UAAU,GAAG,EAAE;AAAA,EACpC;AAEA,SAAO;AACT;AAEA,MAAM,0BAA0B,CAA0B,YAA6D;AAAA,EACrH,GAAG,qBAAqB,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,EAAE;AAAA,EAC1D,GAAG,sBAAsB,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,EAAE;AAAA,EAC3D,GAAG,mBAAmB,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,EAAE;AAC1D;AAKO,MAAM,qBAAqB,CAChC,YACA,YACkB;AAClB,QAAM,iBAAiB,sBAAsB,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,EAAE;AAC/E,QAAM,YAAY,iBAAiB,UAAU,EAAE;AAC/C,QAAM,oBAAoB,YAAY,sBAAsB,gBAAgB,SAAS,IAAI;AAEzF,SAAO;AAAA,IACL,GAAG,qBAAqB,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,EAAE;AAAA,IAC1D,GAAG;AAAA,IACH,GAAG,mBAAmB,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,EAAE;AAAA,EAAA;AAE5D;AAcA,MAAM,uBAAuB,CAC3B,UACA,YACkB;AAClB,QAAM,iBAAiB,sBAAsB,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,EAAE;AAC/E,QAAM,mBAAmB,IAAI,IAAI,cAAc;AAC/C,QAAM,sBAAsB,SAAS,OAAO,CAAC,OAAO,iBAAiB,IAAI,EAAE,CAAC;AAE5E,QAAM,OAAO;AAAA,IACX,GAAG,qBAAqB,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,EAAE;AAAA,IAC1D,GAAG,sBAAsB,gBAAgB,mBAAmB;AAAA,IAC5D,GAAG,mBAAmB,OAAO,EAAE,IAAI,CAAC,WAAW,OAAO,EAAE;AAAA,EAAA;AAG1D,SAAO,KAAK,WAAW,SAAS,UAAU,KAAK,MAAM,CAAC,IAAI,UAAU,OAAO,SAAS,KAAK,CAAC,IAAI,WAAW;AAC3G;AAEO,MAAM,iBAAiB,CAC5B,WAC0B;AAC1B,QAAM,CAAC,aAAa,cAAc,IAAI;AAAA,IAAwB,MAC5D,mBAAmB,OAAO,WAAW,OAAO,OAAO;AAAA,EAAA;AAGrD,QAAM,sBAAsB,CAAC,YAAoC;AAC/D,mBAAe,CAAC,aAAc,OAAO,YAAY,aAAa,QAAQ,QAAQ,IAAI,OAAQ;AAAA,EAC5F;AAEA,QAAM,mBAAmB,MAAM;AAC7B,mBAAe,wBAAwB,OAAO,OAAO,CAAC;AAAA,EACxD;AAIA,QAAM,qBAAqB,OAAO,QAAQ,IAAI,CAAC,WAAW,OAAO,EAAE,EAAE,KAAK,GAAG;AAC7E,YAAU,MAAM;AACd,mBAAe,CAAC,aAAa,qBAAqB,UAAU,OAAO,OAAO,CAAC;AAAA,EAC7E,GAAG,CAAC,kBAAkB,CAAC;AAEvB,YAAU,MAAM;AACd,sBAAkB,OAAO,WAAW,EAAE,OAAO,aAAa;AAAA,EAC5D,GAAG,CAAC,OAAO,WAAW,WAAW,CAAC;AAElC,SAAO,EAAE,aAAa,qBAAqB,iBAAA;AAC7C;AAcO,MAAM,uBAAuB,CAClC,WACA,YACgC;AAChC,QAAM,CAAC,mBAAmB,oBAAoB,IAAI;AAAA,IAAwB,MACxE,UAAU,mBAAmB,sBAAsB,SAAS,GAAG,OAAO,IAAI,CAAA;AAAA,EAAC;AAG7E,QAAM,4BAA4B,CAAC,YAAoC;AACrE,yBAAqB,CAAC,aAAc,OAAO,YAAY,aAAa,QAAQ,QAAQ,IAAI,OAAQ;AAAA,EAClG;AAEA,QAAM,yBAAyB,MAAM;AACnC,QAAI,QAAS,sBAAqB,wBAAwB,OAAO,CAAC;AAAA,EACpE;AAEA,QAAM,mBAAmB,CAAC,CAAC;AAG3B,QAAM,4BAA4B,WAAW,CAAA,GAAI,IAAI,CAAC,WAAW,OAAO,EAAE,EAAE,KAAK,GAAG;AACpF,YAAU,MAAM;AACd,QAAI,CAAC,QAAS;AACd,yBAAqB,CAAC,aAAa,qBAAqB,UAAU,OAAO,CAAC;AAAA,EAC5E,GAAG,CAAC,0BAA0B,gBAAgB,CAAC;AAE/C,YAAU,MAAM;AACd,QAAI,CAAC,iBAAkB;AACvB,sBAAkB,sBAAsB,SAAS,GAAG,EAAE,OAAO,mBAAmB;AAAA,EAClF,GAAG,CAAC,WAAW,kBAAkB,iBAAiB,CAAC;AAEnD,SAAO,EAAE,mBAAmB,2BAA2B,uBAAA;AACzD;"}
@@ -0,0 +1,9 @@
1
+ import { ColumnSizingState, Updater } from '@tanstack/react-table';
2
+ import { IDataTableConfig, IDataTableRow } from './types';
3
+ interface IUseColumnSizingResult {
4
+ columnSizing: ColumnSizingState;
5
+ onColumnSizingChange: (updater: Updater<ColumnSizingState>) => void;
6
+ resetColumnSizing: () => void;
7
+ }
8
+ export declare const useColumnSizing: <T extends IDataTableRow, C extends IDataTableRow = IDataTableRow>(config: IDataTableConfig<T, C>) => IUseColumnSizingResult;
9
+ export {};
@@ -0,0 +1,21 @@
1
+ import { useState, useEffect } from "react";
2
+ import { readColumnsEntry, writeColumnsEntry } from "./dataTableColumnsStore.js";
3
+ const useColumnSizing = (config) => {
4
+ const [columnSizing, setColumnSizing] = useState(
5
+ () => readColumnsEntry(config.entityKey).sizing ?? {}
6
+ );
7
+ const onColumnSizingChange = (updater) => {
8
+ setColumnSizing((previous) => typeof updater === "function" ? updater(previous) : updater);
9
+ };
10
+ const resetColumnSizing = () => {
11
+ setColumnSizing({});
12
+ };
13
+ useEffect(() => {
14
+ writeColumnsEntry(config.entityKey, { sizing: columnSizing });
15
+ }, [config.entityKey, columnSizing]);
16
+ return { columnSizing, onColumnSizingChange, resetColumnSizing };
17
+ };
18
+ export {
19
+ useColumnSizing
20
+ };
21
+ //# sourceMappingURL=useColumnSizing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnSizing.js","sources":["../../../../src/components/UI/DataTable/useColumnSizing.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { ColumnSizingState, Updater } from '@tanstack/react-table';\n\nimport { readColumnsEntry, writeColumnsEntry } from './dataTableColumnsStore';\nimport type { IDataTableConfig, IDataTableRow } from './types';\n\ninterface IUseColumnSizingResult {\n columnSizing: ColumnSizingState;\n onColumnSizingChange: (updater: Updater<ColumnSizingState>) => void;\n resetColumnSizing: () => void;\n}\n\n// An empty sizing map means \"use the seeded default widths\", so appearance is\n// preserved until the user drags a column edge. Persisted widths (per column id)\n// override the seed. Mirrors useColumnVisibility/useColumnOrder: state seeded\n// from the shared columns entry and written back on every change.\nexport const useColumnSizing = <T extends IDataTableRow, C extends IDataTableRow = IDataTableRow>(\n config: IDataTableConfig<T, C>,\n): IUseColumnSizingResult => {\n const [columnSizing, setColumnSizing] = useState<ColumnSizingState>(\n () => readColumnsEntry(config.entityKey).sizing ?? {},\n );\n\n const onColumnSizingChange = (updater: Updater<ColumnSizingState>) => {\n setColumnSizing((previous) => (typeof updater === 'function' ? updater(previous) : updater));\n };\n\n const resetColumnSizing = () => {\n setColumnSizing({});\n };\n\n useEffect(() => {\n writeColumnsEntry(config.entityKey, { sizing: columnSizing });\n }, [config.entityKey, columnSizing]);\n\n return { columnSizing, onColumnSizingChange, resetColumnSizing };\n};\n"],"names":[],"mappings":";;AAiBO,MAAM,kBAAkB,CAC7B,WAC2B;AAC3B,QAAM,CAAC,cAAc,eAAe,IAAI;AAAA,IACtC,MAAM,iBAAiB,OAAO,SAAS,EAAE,UAAU,CAAA;AAAA,EAAC;AAGtD,QAAM,uBAAuB,CAAC,YAAwC;AACpE,oBAAgB,CAAC,aAAc,OAAO,YAAY,aAAa,QAAQ,QAAQ,IAAI,OAAQ;AAAA,EAC7F;AAEA,QAAM,oBAAoB,MAAM;AAC9B,oBAAgB,CAAA,CAAE;AAAA,EACpB;AAEA,YAAU,MAAM;AACd,sBAAkB,OAAO,WAAW,EAAE,QAAQ,cAAc;AAAA,EAC9D,GAAG,CAAC,OAAO,WAAW,YAAY,CAAC;AAEnC,SAAO,EAAE,cAAc,sBAAsB,kBAAA;AAC/C;"}
@@ -0,0 +1,19 @@
1
+ import { Updater, VisibilityState } from '@tanstack/react-table';
2
+ import { IDataTableColumnConfig, IDataTableConfig, IDataTableRow } from './types';
3
+ interface IUseColumnVisibilityResult {
4
+ columnVisibility: VisibilityState;
5
+ onColumnVisibilityChange: (updater: Updater<VisibilityState>) => void;
6
+ }
7
+ export declare const useColumnVisibility: <T extends IDataTableRow, C extends IDataTableRow = IDataTableRow>(config: IDataTableConfig<T, C>) => IUseColumnVisibilityResult;
8
+ interface IUseDetailColumnVisibilityResult {
9
+ detailColumnVisibility: VisibilityState;
10
+ toggleDetailColumn: (columnId: string) => void;
11
+ }
12
+ /**
13
+ * Visibility state for the nested detail table of a `detailTable` expansion.
14
+ * Lives at the DataTable level (not per expanded row) so every open detail
15
+ * table shares one state and one persisted entry. Pass `null` columns for
16
+ * tables without a detailTable expansion: the hook is inert then.
17
+ */
18
+ export declare const useDetailColumnVisibility: <C extends IDataTableRow>(entityKey: string, columns: Array<IDataTableColumnConfig<C>> | null) => IUseDetailColumnVisibilityResult;
19
+ export {};
@@ -0,0 +1,47 @@
1
+ import { useState, useEffect } from "react";
2
+ import { writeColumnsEntry, detailColumnsEntryKey, readColumnsEntry } from "./dataTableColumnsStore.js";
3
+ const resolveInitialColumnVisibility = (storageKey, columns) => {
4
+ const visibility = {};
5
+ for (const column of columns) {
6
+ if (column.hideable === false) continue;
7
+ if (column.defaultHidden) visibility[column.id] = false;
8
+ }
9
+ const persisted = readColumnsEntry(storageKey).visibility;
10
+ if (!persisted) return visibility;
11
+ for (const column of columns) {
12
+ if (column.hideable === false) continue;
13
+ if (typeof persisted[column.id] === "boolean") visibility[column.id] = persisted[column.id];
14
+ }
15
+ return visibility;
16
+ };
17
+ const useColumnVisibility = (config) => {
18
+ const [columnVisibility, setColumnVisibility] = useState(
19
+ () => resolveInitialColumnVisibility(config.entityKey, config.columns)
20
+ );
21
+ const onColumnVisibilityChange = (updater) => {
22
+ setColumnVisibility((previous) => typeof updater === "function" ? updater(previous) : updater);
23
+ };
24
+ useEffect(() => {
25
+ writeColumnsEntry(config.entityKey, { visibility: columnVisibility });
26
+ }, [config.entityKey, columnVisibility]);
27
+ return { columnVisibility, onColumnVisibilityChange };
28
+ };
29
+ const useDetailColumnVisibility = (entityKey, columns) => {
30
+ const [detailColumnVisibility, setDetailColumnVisibility] = useState(
31
+ () => columns ? resolveInitialColumnVisibility(detailColumnsEntryKey(entityKey), columns) : {}
32
+ );
33
+ const toggleDetailColumn = (columnId) => {
34
+ setDetailColumnVisibility((previous) => ({ ...previous, [columnId]: !(previous[columnId] ?? true) }));
35
+ };
36
+ const hasDetailColumns = !!columns;
37
+ useEffect(() => {
38
+ if (!hasDetailColumns) return;
39
+ writeColumnsEntry(detailColumnsEntryKey(entityKey), { visibility: detailColumnVisibility });
40
+ }, [entityKey, hasDetailColumns, detailColumnVisibility]);
41
+ return { detailColumnVisibility, toggleDetailColumn };
42
+ };
43
+ export {
44
+ useColumnVisibility,
45
+ useDetailColumnVisibility
46
+ };
47
+ //# sourceMappingURL=useColumnVisibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColumnVisibility.js","sources":["../../../../src/components/UI/DataTable/useColumnVisibility.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { Updater, VisibilityState } from '@tanstack/react-table';\n\nimport { detailColumnsEntryKey, readColumnsEntry, writeColumnsEntry } from './dataTableColumnsStore';\nimport type { IDataTableColumnConfig, IDataTableConfig, IDataTableRow } from './types';\n\n// Non-hideable columns are always forced visible. The persisted map only ever\n// stores the state of hideable columns, so it can never blank out the table.\nconst resolveInitialColumnVisibility = <R extends IDataTableRow>(\n storageKey: string,\n columns: Array<IDataTableColumnConfig<R>>,\n): VisibilityState => {\n const visibility: VisibilityState = {};\n\n for (const column of columns) {\n if (column.hideable === false) continue;\n if (column.defaultHidden) visibility[column.id] = false;\n }\n\n const persisted = readColumnsEntry(storageKey).visibility;\n if (!persisted) return visibility;\n\n for (const column of columns) {\n if (column.hideable === false) continue;\n if (typeof persisted[column.id] === 'boolean') visibility[column.id] = persisted[column.id];\n }\n\n return visibility;\n};\n\ninterface IUseColumnVisibilityResult {\n columnVisibility: VisibilityState;\n onColumnVisibilityChange: (updater: Updater<VisibilityState>) => void;\n}\n\nexport const useColumnVisibility = <T extends IDataTableRow, C extends IDataTableRow = IDataTableRow>(\n config: IDataTableConfig<T, C>,\n): IUseColumnVisibilityResult => {\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>(() =>\n resolveInitialColumnVisibility(config.entityKey, config.columns),\n );\n\n const onColumnVisibilityChange = (updater: Updater<VisibilityState>) => {\n setColumnVisibility((previous) => (typeof updater === 'function' ? updater(previous) : updater));\n };\n\n useEffect(() => {\n writeColumnsEntry(config.entityKey, { visibility: columnVisibility });\n }, [config.entityKey, columnVisibility]);\n\n return { columnVisibility, onColumnVisibilityChange };\n};\n\ninterface IUseDetailColumnVisibilityResult {\n detailColumnVisibility: VisibilityState;\n toggleDetailColumn: (columnId: string) => void;\n}\n\n/**\n * Visibility state for the nested detail table of a `detailTable` expansion.\n * Lives at the DataTable level (not per expanded row) so every open detail\n * table shares one state and one persisted entry. Pass `null` columns for\n * tables without a detailTable expansion: the hook is inert then.\n */\nexport const useDetailColumnVisibility = <C extends IDataTableRow>(\n entityKey: string,\n columns: Array<IDataTableColumnConfig<C>> | null,\n): IUseDetailColumnVisibilityResult => {\n const [detailColumnVisibility, setDetailColumnVisibility] = useState<VisibilityState>(() =>\n columns ? resolveInitialColumnVisibility(detailColumnsEntryKey(entityKey), columns) : {},\n );\n\n const toggleDetailColumn = (columnId: string) => {\n setDetailColumnVisibility((previous) => ({ ...previous, [columnId]: !(previous[columnId] ?? true) }));\n };\n\n const hasDetailColumns = !!columns;\n\n useEffect(() => {\n if (!hasDetailColumns) return;\n writeColumnsEntry(detailColumnsEntryKey(entityKey), { visibility: detailColumnVisibility });\n }, [entityKey, hasDetailColumns, detailColumnVisibility]);\n\n return { detailColumnVisibility, toggleDetailColumn };\n};\n"],"names":[],"mappings":";;AASA,MAAM,iCAAiC,CACrC,YACA,YACoB;AACpB,QAAM,aAA8B,CAAA;AAEpC,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,aAAa,MAAO;AAC/B,QAAI,OAAO,cAAe,YAAW,OAAO,EAAE,IAAI;AAAA,EACpD;AAEA,QAAM,YAAY,iBAAiB,UAAU,EAAE;AAC/C,MAAI,CAAC,UAAW,QAAO;AAEvB,aAAW,UAAU,SAAS;AAC5B,QAAI,OAAO,aAAa,MAAO;AAC/B,QAAI,OAAO,UAAU,OAAO,EAAE,MAAM,UAAW,YAAW,OAAO,EAAE,IAAI,UAAU,OAAO,EAAE;AAAA,EAC5F;AAEA,SAAO;AACT;AAOO,MAAM,sBAAsB,CACjC,WAC+B;AAC/B,QAAM,CAAC,kBAAkB,mBAAmB,IAAI;AAAA,IAA0B,MACxE,+BAA+B,OAAO,WAAW,OAAO,OAAO;AAAA,EAAA;AAGjE,QAAM,2BAA2B,CAAC,YAAsC;AACtE,wBAAoB,CAAC,aAAc,OAAO,YAAY,aAAa,QAAQ,QAAQ,IAAI,OAAQ;AAAA,EACjG;AAEA,YAAU,MAAM;AACd,sBAAkB,OAAO,WAAW,EAAE,YAAY,kBAAkB;AAAA,EACtE,GAAG,CAAC,OAAO,WAAW,gBAAgB,CAAC;AAEvC,SAAO,EAAE,kBAAkB,yBAAA;AAC7B;AAaO,MAAM,4BAA4B,CACvC,WACA,YACqC;AACrC,QAAM,CAAC,wBAAwB,yBAAyB,IAAI;AAAA,IAA0B,MACpF,UAAU,+BAA+B,sBAAsB,SAAS,GAAG,OAAO,IAAI,CAAA;AAAA,EAAC;AAGzF,QAAM,qBAAqB,CAAC,aAAqB;AAC/C,8BAA0B,CAAC,cAAc,EAAE,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE,SAAS,QAAQ,KAAK,QAAQ;AAAA,EACtG;AAEA,QAAM,mBAAmB,CAAC,CAAC;AAE3B,YAAU,MAAM;AACd,QAAI,CAAC,iBAAkB;AACvB,sBAAkB,sBAAsB,SAAS,GAAG,EAAE,YAAY,wBAAwB;AAAA,EAC5F,GAAG,CAAC,WAAW,kBAAkB,sBAAsB,CAAC;AAExD,SAAO,EAAE,wBAAwB,mBAAA;AACnC;"}
@@ -0,0 +1,69 @@
1
+ import { IDataTableFillChange, IDataTableRow } from './types';
2
+ export type TDataTableCommitStatus = 'pending' | 'saving' | 'saved' | 'error';
3
+ export interface IDataTableCommitItem<T extends IDataTableRow> {
4
+ row: T;
5
+ /** Accumulated values for that row, keyed by column id. */
6
+ changes: Record<string, unknown>;
7
+ }
8
+ /**
9
+ * Per-row outcome of a batch save. Returning it lets an endpoint with partial
10
+ * success mark only the rows that actually failed, instead of the whole batch.
11
+ */
12
+ export interface IDataTableCommitRowResult {
13
+ rowId: string;
14
+ ok: boolean;
15
+ message?: string;
16
+ }
17
+ interface IUseDataTableCommitQueueParams<T extends IDataTableRow> {
18
+ rows: Array<T>;
19
+ /** One call per row, run with limited concurrency. The common case. */
20
+ saveRow?: (item: IDataTableCommitItem<T>) => Promise<void>;
21
+ /**
22
+ * One call for everything, for hosts that own a bulk endpoint. Wins over
23
+ * `saveRow`. Return per-row results to report partial success; returning
24
+ * nothing means every row saved.
25
+ */
26
+ saveBatch?: (items: Array<IDataTableCommitItem<T>>) => Promise<void | Array<IDataTableCommitRowResult>>;
27
+ /**
28
+ * Writes an edited value onto the row for the optimistic overlay. The default
29
+ * assigns the column id as a top-level key, which only holds when the column id
30
+ * IS the row field: a column reading `row.productReferenceId` (or a dotted path)
31
+ * must provide this, or the save succeeds and the screen never changes.
32
+ */
33
+ applyChange?: (row: T, columnId: string, value: unknown) => T;
34
+ debounceMs?: number;
35
+ concurrency?: number;
36
+ /** `false` keeps every change pending until `flush()` (an explicit save button). */
37
+ autoFlush?: boolean;
38
+ }
39
+ export interface IUseDataTableCommitQueueResult<T extends IDataTableRow> {
40
+ /** `rows` with every applied edit merged in, so the cells show what was typed. */
41
+ mergedRows: Array<T>;
42
+ onCellChange: (row: T, columnId: string, value: unknown) => void;
43
+ /** Whole fill range in one update: one render, one flush, one request per row. */
44
+ onFillCells: (changes: Array<IDataTableFillChange<T>>) => void;
45
+ flush: () => Promise<void>;
46
+ retryFailed: () => Promise<void>;
47
+ statuses: ReadonlyMap<string, TDataTableCommitStatus>;
48
+ isDirty: boolean;
49
+ isSaving: boolean;
50
+ pendingCount: number;
51
+ errorCount: number;
52
+ }
53
+ /**
54
+ * The single persistence path for inline editing. It replaces the fire-and-forget
55
+ * buffer with a queue that:
56
+ *
57
+ * - deduplicates by (row, column), so typing three times in a cell sends one value;
58
+ * - stamps every change with a sequence number, so a slow response can never mark
59
+ * a newer value as saved (and never overwrites it);
60
+ * - runs one request per row with a concurrency cap, instead of `Promise.all` over
61
+ * everything (a 40-row fill would otherwise open 40 sockets at once);
62
+ * - keeps the optimistic overlay until the cell is actually saved, so a refetch
63
+ * arriving mid-flight no longer wipes what the user typed;
64
+ * - flushes on unmount and warns on tab close, so leaving the page does not
65
+ * silently discard pending edits;
66
+ * - exposes a per-cell status the table paints (saving / saved / error).
67
+ */
68
+ export declare function useDataTableCommitQueue<T extends IDataTableRow>({ rows, saveRow, saveBatch, applyChange, debounceMs, concurrency, autoFlush, }: IUseDataTableCommitQueueParams<T>): IUseDataTableCommitQueueResult<T>;
69
+ export {};
@@ -0,0 +1,220 @@
1
+ import { useRef, useState, useCallback, useEffect, useMemo } from "react";
2
+ import { uiLogger } from "../../../helpers/uiLogger.js";
3
+ import { buildGridCellKey } from "./grid/gridTypes.js";
4
+ const DEFAULT_DEBOUNCE_MS = 800;
5
+ const DEFAULT_CONCURRENCY = 4;
6
+ const runWithConcurrency = async (items, limit, worker) => {
7
+ let nextIndex = 0;
8
+ const runners = Array.from({ length: Math.max(1, Math.min(limit, items.length)) }, async () => {
9
+ while (nextIndex < items.length) {
10
+ const item = items[nextIndex];
11
+ nextIndex += 1;
12
+ if (item !== void 0) await worker(item);
13
+ }
14
+ });
15
+ await Promise.all(runners);
16
+ };
17
+ function useDataTableCommitQueue({
18
+ rows,
19
+ saveRow,
20
+ saveBatch,
21
+ applyChange,
22
+ debounceMs = DEFAULT_DEBOUNCE_MS,
23
+ concurrency = DEFAULT_CONCURRENCY,
24
+ autoFlush = true
25
+ }) {
26
+ const overlayRef = useRef(/* @__PURE__ */ new Map());
27
+ const pendingRef = useRef(/* @__PURE__ */ new Map());
28
+ const inFlightRef = useRef(/* @__PURE__ */ new Map());
29
+ const statusesRef = useRef(/* @__PURE__ */ new Map());
30
+ const sequenceRef = useRef(0);
31
+ const timeoutRef = useRef(null);
32
+ const isSavingRef = useRef(false);
33
+ const rowsRef = useRef(rows);
34
+ rowsRef.current = rows;
35
+ const saveRowRef = useRef(saveRow);
36
+ saveRowRef.current = saveRow;
37
+ const saveBatchRef = useRef(saveBatch);
38
+ saveBatchRef.current = saveBatch;
39
+ const applyChangeRef = useRef(applyChange);
40
+ applyChangeRef.current = applyChange;
41
+ const [version, setVersion] = useState(0);
42
+ const publish = useCallback(() => setVersion((current) => current + 1), []);
43
+ const flushRef = useRef(async () => void 0);
44
+ const flush = useCallback(async () => {
45
+ if (timeoutRef.current) {
46
+ clearTimeout(timeoutRef.current);
47
+ timeoutRef.current = null;
48
+ }
49
+ if (pendingRef.current.size === 0) return;
50
+ const outgoing = Array.from(pendingRef.current.values());
51
+ pendingRef.current.clear();
52
+ const rowById = new Map(rowsRef.current.map((row) => [row.id, row]));
53
+ const itemsByRowId = /* @__PURE__ */ new Map();
54
+ outgoing.forEach((change) => {
55
+ const cellKey = buildGridCellKey(change.rowId, change.columnId);
56
+ inFlightRef.current.set(cellKey, change.sequence);
57
+ statusesRef.current.set(cellKey, "saving");
58
+ const row = rowById.get(change.rowId);
59
+ if (!row) return;
60
+ const item = itemsByRowId.get(change.rowId) ?? { row, changes: {} };
61
+ item.changes[change.columnId] = change.value;
62
+ itemsByRowId.set(change.rowId, item);
63
+ });
64
+ isSavingRef.current = true;
65
+ publish();
66
+ const settleRow = (rowChanges, succeeded) => {
67
+ rowChanges.forEach((change) => {
68
+ const cellKey = buildGridCellKey(change.rowId, change.columnId);
69
+ if (inFlightRef.current.get(cellKey) !== change.sequence) return;
70
+ inFlightRef.current.delete(cellKey);
71
+ statusesRef.current.set(cellKey, succeeded ? "saved" : "error");
72
+ if (!succeeded) pendingRef.current.set(cellKey, change);
73
+ });
74
+ };
75
+ const changesByRowId = /* @__PURE__ */ new Map();
76
+ outgoing.forEach((change) => {
77
+ const list = changesByRowId.get(change.rowId) ?? [];
78
+ list.push(change);
79
+ changesByRowId.set(change.rowId, list);
80
+ });
81
+ const items = Array.from(itemsByRowId.values());
82
+ try {
83
+ if (saveBatchRef.current) {
84
+ try {
85
+ const rowResults = await saveBatchRef.current(items);
86
+ const failedRowIds = new Set(
87
+ (Array.isArray(rowResults) ? rowResults : []).filter((result) => !result.ok).map((result) => result.rowId)
88
+ );
89
+ changesByRowId.forEach((rowChanges, rowId) => settleRow(rowChanges, !failedRowIds.has(rowId)));
90
+ } catch (error) {
91
+ uiLogger.error("DataTable batch save failed", error);
92
+ changesByRowId.forEach((rowChanges) => settleRow(rowChanges, false));
93
+ }
94
+ } else if (saveRowRef.current) {
95
+ await runWithConcurrency(items, concurrency, async (item) => {
96
+ const rowChanges = changesByRowId.get(item.row.id) ?? [];
97
+ try {
98
+ await saveRowRef.current?.(item);
99
+ settleRow(rowChanges, true);
100
+ } catch (error) {
101
+ uiLogger.error("DataTable row save failed", error);
102
+ settleRow(rowChanges, false);
103
+ }
104
+ });
105
+ }
106
+ } finally {
107
+ isSavingRef.current = false;
108
+ publish();
109
+ }
110
+ }, [concurrency, publish]);
111
+ flushRef.current = flush;
112
+ const scheduleFlush = useCallback(() => {
113
+ if (!autoFlush) return;
114
+ if (timeoutRef.current) clearTimeout(timeoutRef.current);
115
+ timeoutRef.current = setTimeout(() => {
116
+ void flushRef.current();
117
+ }, debounceMs);
118
+ }, [autoFlush, debounceMs]);
119
+ const applyChanges = useCallback(
120
+ (changes) => {
121
+ changes.forEach(({ rowId, columnId, value }) => {
122
+ sequenceRef.current += 1;
123
+ const rowOverlay = { ...overlayRef.current.get(rowId) ?? {}, [columnId]: value };
124
+ overlayRef.current.set(rowId, rowOverlay);
125
+ const cellKey = buildGridCellKey(rowId, columnId);
126
+ pendingRef.current.set(cellKey, { rowId, columnId, value, sequence: sequenceRef.current });
127
+ statusesRef.current.set(cellKey, "pending");
128
+ });
129
+ publish();
130
+ scheduleFlush();
131
+ },
132
+ [publish, scheduleFlush]
133
+ );
134
+ const onCellChange = useCallback(
135
+ (row, columnId, value) => applyChanges([{ rowId: row.id, columnId, value }]),
136
+ [applyChanges]
137
+ );
138
+ const onFillCells = useCallback(
139
+ (changes) => applyChanges(
140
+ (changes ?? []).map((change) => ({ rowId: change.row.id, columnId: change.columnId, value: change.value }))
141
+ ),
142
+ [applyChanges]
143
+ );
144
+ const retryFailed = useCallback(async () => {
145
+ const failedKeys = Array.from(statusesRef.current.entries()).filter(([, status]) => status === "error").map(([cellKey]) => cellKey);
146
+ if (failedKeys.length === 0) return;
147
+ failedKeys.forEach((cellKey) => statusesRef.current.set(cellKey, "pending"));
148
+ await flush();
149
+ }, [flush]);
150
+ const previousRowsRef = useRef(rows);
151
+ useEffect(() => {
152
+ if (previousRowsRef.current === rows) return;
153
+ previousRowsRef.current = rows;
154
+ let changed = false;
155
+ overlayRef.current.forEach((rowOverlay, rowId) => {
156
+ Object.keys(rowOverlay).forEach((columnId) => {
157
+ const cellKey = buildGridCellKey(rowId, columnId);
158
+ if (statusesRef.current.get(cellKey) !== "saved") return;
159
+ delete rowOverlay[columnId];
160
+ statusesRef.current.delete(cellKey);
161
+ changed = true;
162
+ });
163
+ if (Object.keys(rowOverlay).length === 0) overlayRef.current.delete(rowId);
164
+ });
165
+ if (changed) publish();
166
+ }, [rows, publish]);
167
+ useEffect(
168
+ () => () => {
169
+ if (timeoutRef.current) clearTimeout(timeoutRef.current);
170
+ void flushRef.current();
171
+ },
172
+ []
173
+ );
174
+ const hasUnsavedWork = pendingRef.current.size > 0 || inFlightRef.current.size > 0;
175
+ useEffect(() => {
176
+ if (!hasUnsavedWork) return void 0;
177
+ const handleBeforeUnload = (event) => {
178
+ void flushRef.current();
179
+ event.preventDefault();
180
+ event.returnValue = "";
181
+ };
182
+ window.addEventListener("beforeunload", handleBeforeUnload);
183
+ return () => window.removeEventListener("beforeunload", handleBeforeUnload);
184
+ }, [hasUnsavedWork]);
185
+ const mergedRows = useMemo(() => {
186
+ const safeRows = rows ?? [];
187
+ if (overlayRef.current.size === 0) return safeRows;
188
+ const applyToRow = applyChangeRef.current ?? ((row, columnId, value) => ({
189
+ ...row,
190
+ [columnId]: value
191
+ }));
192
+ return safeRows.map((row) => {
193
+ const rowOverlay = overlayRef.current.get(row.id);
194
+ if (!rowOverlay || Object.keys(rowOverlay).length === 0) return row;
195
+ return Object.entries(rowOverlay).reduce(
196
+ (current, [columnId, value]) => applyToRow(current, columnId, value),
197
+ row
198
+ );
199
+ });
200
+ }, [rows, version]);
201
+ const statuses = useMemo(() => new Map(statusesRef.current), [version]);
202
+ const pendingCount = pendingRef.current.size + inFlightRef.current.size;
203
+ const errorCount = Array.from(statusesRef.current.values()).filter((status) => status === "error").length;
204
+ return {
205
+ mergedRows,
206
+ onCellChange,
207
+ onFillCells,
208
+ flush,
209
+ retryFailed,
210
+ statuses,
211
+ isDirty: pendingCount > 0,
212
+ isSaving: isSavingRef.current,
213
+ pendingCount,
214
+ errorCount
215
+ };
216
+ }
217
+ export {
218
+ useDataTableCommitQueue
219
+ };
220
+ //# sourceMappingURL=useDataTableCommitQueue.js.map