@vuu-ui/vuu-table-extras 2.1.18 → 2.1.19-beta.2

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 (434) hide show
  1. package/package.json +15 -18
  2. package/src/calculated-column/CalculatedColumnPanel.js +95 -0
  3. package/src/calculated-column/useCalculatedColumnPanel.js +60 -0
  4. package/src/calculated-column/useEditCalculatedColumn.js +104 -0
  5. package/src/cell-edit-validators/CaseValidator.js +21 -0
  6. package/src/cell-edit-validators/PatternValidator.js +23 -0
  7. package/src/cell-edit-validators/index.js +2 -0
  8. package/src/cell-renderers/background-cell/BackgroundCell.css.js +103 -0
  9. package/src/cell-renderers/background-cell/BackgroundCell.js +76 -0
  10. package/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +9 -0
  11. package/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +71 -0
  12. package/src/cell-renderers/background-cell/BackgroundKeyframes.css.js +187 -0
  13. package/src/cell-renderers/background-cell/index.js +2 -0
  14. package/src/cell-renderers/background-cell/useDirection.js +25 -0
  15. package/src/cell-renderers/button-cell/IconButtonCell.css.js +23 -0
  16. package/src/cell-renderers/button-cell/IconButtonCell.js +33 -0
  17. package/src/cell-renderers/dropdown-cell/DropdownCell.css.js +36 -0
  18. package/src/cell-renderers/dropdown-cell/DropdownCell.js +84 -0
  19. package/src/cell-renderers/dropdown-cell/index.js +1 -0
  20. package/src/cell-renderers/index.js +6 -0
  21. package/src/cell-renderers/lookup-cell/LookupCell.js +15 -0
  22. package/src/cell-renderers/lookup-cell/index.js +1 -0
  23. package/src/cell-renderers/pct-progress-cell/PctProgressCell.css.js +31 -0
  24. package/src/cell-renderers/pct-progress-cell/PctProgressCell.js +49 -0
  25. package/src/cell-renderers/pct-progress-cell/index.js +1 -0
  26. package/src/cell-renderers/progress-cell/ProgressCell.css.js +43 -0
  27. package/src/cell-renderers/progress-cell/ProgressCell.js +74 -0
  28. package/src/cell-renderers/progress-cell/index.js +1 -0
  29. package/src/column-expression-input/ColumnExpressionInput.css.js +94 -0
  30. package/src/column-expression-input/ColumnExpressionInput.js +28 -0
  31. package/src/column-expression-input/column-function-descriptors.js +281 -0
  32. package/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +18 -0
  33. package/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +381 -0
  34. package/src/column-expression-input/column-language-parser/column-expression-parse-utils.js +56 -0
  35. package/src/column-expression-input/column-language-parser/index.js +3 -0
  36. package/src/column-expression-input/functionDocInfo.js +24 -0
  37. package/src/column-expression-input/highlighting.js +18 -0
  38. package/src/column-expression-input/index.js +4 -0
  39. package/src/column-expression-input/theme.js +57 -0
  40. package/src/column-expression-input/useColumnAutoComplete.js +307 -0
  41. package/src/column-expression-input/useColumnExpressionEditor.js +133 -0
  42. package/src/column-expression-input/useColumnExpressionSuggestionProvider.js +211 -0
  43. package/src/column-formatting-settings/BaseNumericFormattingSettings.js +96 -0
  44. package/src/column-formatting-settings/ColumnFormattingPanel.js +112 -0
  45. package/src/column-formatting-settings/DateTimeFormattingSettings.js +116 -0
  46. package/src/column-formatting-settings/LongTypeFormattingSettings.css.js +11 -0
  47. package/src/column-formatting-settings/LongTypeFormattingSettings.js +54 -0
  48. package/src/column-formatting-settings/index.js +3 -0
  49. package/src/column-menu/ColumnMenu.css.js +25 -0
  50. package/src/column-menu/ColumnMenu.js +69 -0
  51. package/src/column-menu/column-action-types.js +0 -0
  52. package/src/column-menu/column-menu-utils.js +318 -0
  53. package/src/column-menu/useColumnActions.js +77 -0
  54. package/src/column-picker/ColumnModel.js +113 -0
  55. package/src/column-picker/ColumnPicker.css.js +96 -0
  56. package/src/column-picker/ColumnPicker.js +204 -0
  57. package/src/column-picker/ColumnPickerAction.js +24 -0
  58. package/src/column-picker/useColumnPicker.js +42 -0
  59. package/src/column-picker/useTableColumnPicker.js +27 -0
  60. package/src/column-picker/useTableColumnPickerDeprecated.js +87 -0
  61. package/src/column-settings-panel/ColumnNameLabel.css.js +18 -0
  62. package/src/column-settings-panel/ColumnNameLabel.js +54 -0
  63. package/src/column-settings-panel/ColumnSettingsPanel.css.js +70 -0
  64. package/src/column-settings-panel/ColumnSettingsPanel.js +173 -0
  65. package/src/column-settings-panel/useColumnSettings.js +205 -0
  66. package/src/csv-upload/CsvUpload.css.js +28 -0
  67. package/src/csv-upload/CsvUpload.js +95 -0
  68. package/src/csv-upload/index.js +7 -0
  69. package/{esm/packages/vuu-table-extras/src → src}/csv-upload/parse/csv-constants.js +0 -2
  70. package/src/csv-upload/parse/csv-errors.js +54 -0
  71. package/src/csv-upload/parse/csv-parse.js +79 -0
  72. package/src/csv-upload/parse/csv-schema-validation.js +45 -0
  73. package/src/csv-upload/parse/csv-upload-utils.js +59 -0
  74. package/src/csv-upload/parse/index.js +5 -0
  75. package/src/csv-upload/useCsvUpload.js +260 -0
  76. package/src/csv-upload/useCsvUploadSessionPreview.js +70 -0
  77. package/src/datasource-stats/DatasourceStats.css.js +56 -0
  78. package/src/datasource-stats/DatasourceStats.js +89 -0
  79. package/src/datasource-stats/useDatasourceStats.js +48 -0
  80. package/src/freeze-control/FreezeControl.css.js +108 -0
  81. package/src/freeze-control/FreezeControl.js +96 -0
  82. package/src/freeze-control/FrozenBanner.css.js +16 -0
  83. package/src/freeze-control/FrozenBanner.js +48 -0
  84. package/src/freeze-control/freezeControlBadge.js +9 -0
  85. package/src/freeze-control/useFreezeControl.js +68 -0
  86. package/src/index.js +22 -0
  87. package/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +23 -0
  88. package/src/tabbed-table-config-panel/TabbedTableConfigPanel.js +99 -0
  89. package/src/tabbed-table-config-panel/TabbedTableSettingsAction.js +28 -0
  90. package/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js +29 -0
  91. package/src/table-footer/TableFooter.css.js +22 -0
  92. package/src/table-footer/TableFooter.js +30 -0
  93. package/src/table-provider/TableProvider.js +33 -0
  94. package/src/table-settings-panel/TableSettingsPanel.css.js +70 -0
  95. package/src/table-settings-panel/TableSettingsPanel.js +128 -0
  96. package/src/table-settings-panel/useTableSettings.js +50 -0
  97. package/types/cell-renderers/background-cell/BackgroundCell.d.ts +1 -1
  98. package/types/cell-renderers/dropdown-cell/DropdownCell.d.ts +1 -1
  99. package/types/cell-renderers/lookup-cell/LookupCell.d.ts +1 -1
  100. package/types/column-expression-input/column-language-parser/generated/column-parser.d.ts +1 -1
  101. package/types/column-expression-input/column-language-parser/generated/column-parser.terms.d.ts +1 -24
  102. package/types/column-expression-input/column-language-parser/test.d.mts +1 -1
  103. package/types/freeze-control/useFreezeControl.d.ts +1 -1
  104. package/cjs/node_modules/csv-parse/dist/esm/sync.js +0 -3978
  105. package/cjs/node_modules/csv-parse/dist/esm/sync.js.map +0 -1
  106. package/cjs/packages/vuu-table-extras/src/calculated-column/CalculatedColumnPanel.js +0 -85
  107. package/cjs/packages/vuu-table-extras/src/calculated-column/CalculatedColumnPanel.js.map +0 -1
  108. package/cjs/packages/vuu-table-extras/src/calculated-column/useCalculatedColumnPanel.js +0 -71
  109. package/cjs/packages/vuu-table-extras/src/calculated-column/useCalculatedColumnPanel.js.map +0 -1
  110. package/cjs/packages/vuu-table-extras/src/calculated-column/useEditCalculatedColumn.js +0 -138
  111. package/cjs/packages/vuu-table-extras/src/calculated-column/useEditCalculatedColumn.js.map +0 -1
  112. package/cjs/packages/vuu-table-extras/src/cell-edit-validators/CaseValidator.js +0 -25
  113. package/cjs/packages/vuu-table-extras/src/cell-edit-validators/CaseValidator.js.map +0 -1
  114. package/cjs/packages/vuu-table-extras/src/cell-edit-validators/PatternValidator.js +0 -31
  115. package/cjs/packages/vuu-table-extras/src/cell-edit-validators/PatternValidator.js.map +0 -1
  116. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css.js +0 -6
  117. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css.js.map +0 -1
  118. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.js +0 -81
  119. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.js.map +0 -1
  120. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +0 -6
  121. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +0 -1
  122. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +0 -67
  123. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +0 -1
  124. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundKeyframes.css.js +0 -6
  125. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +0 -1
  126. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/useDirection.js +0 -20
  127. package/cjs/packages/vuu-table-extras/src/cell-renderers/background-cell/useDirection.js.map +0 -1
  128. package/cjs/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.css.js +0 -6
  129. package/cjs/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.css.js.map +0 -1
  130. package/cjs/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.js +0 -40
  131. package/cjs/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.js.map +0 -1
  132. package/cjs/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.css.js +0 -6
  133. package/cjs/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.css.js.map +0 -1
  134. package/cjs/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.js +0 -103
  135. package/cjs/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.js.map +0 -1
  136. package/cjs/packages/vuu-table-extras/src/cell-renderers/lookup-cell/LookupCell.js +0 -21
  137. package/cjs/packages/vuu-table-extras/src/cell-renderers/lookup-cell/LookupCell.js.map +0 -1
  138. package/cjs/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.css.js +0 -6
  139. package/cjs/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +0 -1
  140. package/cjs/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.js +0 -62
  141. package/cjs/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.js.map +0 -1
  142. package/cjs/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css.js +0 -6
  143. package/cjs/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css.js.map +0 -1
  144. package/cjs/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.js +0 -69
  145. package/cjs/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.js.map +0 -1
  146. package/cjs/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css.js +0 -6
  147. package/cjs/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css.js.map +0 -1
  148. package/cjs/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.js +0 -39
  149. package/cjs/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.js.map +0 -1
  150. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-function-descriptors.js +0 -307
  151. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-function-descriptors.js.map +0 -1
  152. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +0 -28
  153. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +0 -1
  154. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +0 -465
  155. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +0 -1
  156. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/column-expression-parse-utils.js +0 -61
  157. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +0 -1
  158. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/generated/column-parser.js +0 -21
  159. package/cjs/packages/vuu-table-extras/src/column-expression-input/column-language-parser/generated/column-parser.js.map +0 -1
  160. package/cjs/packages/vuu-table-extras/src/column-expression-input/functionDocInfo.js +0 -39
  161. package/cjs/packages/vuu-table-extras/src/column-expression-input/functionDocInfo.js.map +0 -1
  162. package/cjs/packages/vuu-table-extras/src/column-expression-input/highlighting.js +0 -16
  163. package/cjs/packages/vuu-table-extras/src/column-expression-input/highlighting.js.map +0 -1
  164. package/cjs/packages/vuu-table-extras/src/column-expression-input/theme.js +0 -63
  165. package/cjs/packages/vuu-table-extras/src/column-expression-input/theme.js.map +0 -1
  166. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnAutoComplete.js +0 -358
  167. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnAutoComplete.js.map +0 -1
  168. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionEditor.js +0 -131
  169. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionEditor.js.map +0 -1
  170. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionSuggestionProvider.js +0 -213
  171. package/cjs/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionSuggestionProvider.js.map +0 -1
  172. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.js +0 -98
  173. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.js.map +0 -1
  174. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.js +0 -111
  175. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.js.map +0 -1
  176. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/DateTimeFormattingSettings.js +0 -102
  177. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/DateTimeFormattingSettings.js.map +0 -1
  178. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.css.js +0 -6
  179. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.css.js.map +0 -1
  180. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.js +0 -48
  181. package/cjs/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.js.map +0 -1
  182. package/cjs/packages/vuu-table-extras/src/column-menu/ColumnMenu.css.js +0 -6
  183. package/cjs/packages/vuu-table-extras/src/column-menu/ColumnMenu.css.js.map +0 -1
  184. package/cjs/packages/vuu-table-extras/src/column-menu/ColumnMenu.js +0 -107
  185. package/cjs/packages/vuu-table-extras/src/column-menu/ColumnMenu.js.map +0 -1
  186. package/cjs/packages/vuu-table-extras/src/column-menu/column-menu-utils.js +0 -459
  187. package/cjs/packages/vuu-table-extras/src/column-menu/column-menu-utils.js.map +0 -1
  188. package/cjs/packages/vuu-table-extras/src/column-menu/useColumnActions.js +0 -68
  189. package/cjs/packages/vuu-table-extras/src/column-menu/useColumnActions.js.map +0 -1
  190. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnModel.js +0 -177
  191. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnModel.js.map +0 -1
  192. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPicker.css.js +0 -6
  193. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPicker.css.js.map +0 -1
  194. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPicker.js +0 -252
  195. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPicker.js.map +0 -1
  196. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPickerAction.js +0 -34
  197. package/cjs/packages/vuu-table-extras/src/column-picker/ColumnPickerAction.js.map +0 -1
  198. package/cjs/packages/vuu-table-extras/src/column-picker/useColumnPicker.js +0 -55
  199. package/cjs/packages/vuu-table-extras/src/column-picker/useColumnPicker.js.map +0 -1
  200. package/cjs/packages/vuu-table-extras/src/column-picker/useTableColumnPicker.js +0 -35
  201. package/cjs/packages/vuu-table-extras/src/column-picker/useTableColumnPicker.js.map +0 -1
  202. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.css.js +0 -6
  203. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.css.js.map +0 -1
  204. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.js +0 -45
  205. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.js.map +0 -1
  206. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.css.js +0 -6
  207. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.css.js.map +0 -1
  208. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.js +0 -161
  209. package/cjs/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.js.map +0 -1
  210. package/cjs/packages/vuu-table-extras/src/column-settings-panel/useColumnSettings.js +0 -203
  211. package/cjs/packages/vuu-table-extras/src/column-settings-panel/useColumnSettings.js.map +0 -1
  212. package/cjs/packages/vuu-table-extras/src/csv-upload/CsvUpload.css.js +0 -6
  213. package/cjs/packages/vuu-table-extras/src/csv-upload/CsvUpload.css.js.map +0 -1
  214. package/cjs/packages/vuu-table-extras/src/csv-upload/CsvUpload.js +0 -95
  215. package/cjs/packages/vuu-table-extras/src/csv-upload/CsvUpload.js.map +0 -1
  216. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-constants.js +0 -8
  217. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-constants.js.map +0 -1
  218. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-errors.js +0 -64
  219. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-errors.js.map +0 -1
  220. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-parse.js +0 -199
  221. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-parse.js.map +0 -1
  222. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-schema-validation.js +0 -100
  223. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-schema-validation.js.map +0 -1
  224. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-upload-utils.js +0 -86
  225. package/cjs/packages/vuu-table-extras/src/csv-upload/parse/csv-upload-utils.js.map +0 -1
  226. package/cjs/packages/vuu-table-extras/src/csv-upload/useCsvUpload.js +0 -306
  227. package/cjs/packages/vuu-table-extras/src/csv-upload/useCsvUpload.js.map +0 -1
  228. package/cjs/packages/vuu-table-extras/src/csv-upload/useCsvUploadSessionPreview.js +0 -73
  229. package/cjs/packages/vuu-table-extras/src/csv-upload/useCsvUploadSessionPreview.js.map +0 -1
  230. package/cjs/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css.js +0 -6
  231. package/cjs/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css.js.map +0 -1
  232. package/cjs/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.js +0 -76
  233. package/cjs/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.js.map +0 -1
  234. package/cjs/packages/vuu-table-extras/src/datasource-stats/useDatasourceStats.js +0 -61
  235. package/cjs/packages/vuu-table-extras/src/datasource-stats/useDatasourceStats.js.map +0 -1
  236. package/cjs/packages/vuu-table-extras/src/freeze-control/FreezeControl.css.js +0 -6
  237. package/cjs/packages/vuu-table-extras/src/freeze-control/FreezeControl.css.js.map +0 -1
  238. package/cjs/packages/vuu-table-extras/src/freeze-control/FreezeControl.js +0 -106
  239. package/cjs/packages/vuu-table-extras/src/freeze-control/FreezeControl.js.map +0 -1
  240. package/cjs/packages/vuu-table-extras/src/freeze-control/FrozenBanner.css.js +0 -6
  241. package/cjs/packages/vuu-table-extras/src/freeze-control/FrozenBanner.css.js.map +0 -1
  242. package/cjs/packages/vuu-table-extras/src/freeze-control/FrozenBanner.js +0 -55
  243. package/cjs/packages/vuu-table-extras/src/freeze-control/FrozenBanner.js.map +0 -1
  244. package/cjs/packages/vuu-table-extras/src/freeze-control/freezeControlBadge.js +0 -10
  245. package/cjs/packages/vuu-table-extras/src/freeze-control/freezeControlBadge.js.map +0 -1
  246. package/cjs/packages/vuu-table-extras/src/freeze-control/useFreezeControl.js +0 -68
  247. package/cjs/packages/vuu-table-extras/src/freeze-control/useFreezeControl.js.map +0 -1
  248. package/cjs/packages/vuu-table-extras/src/index.js +0 -102
  249. package/cjs/packages/vuu-table-extras/src/index.js.map +0 -1
  250. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +0 -6
  251. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js.map +0 -1
  252. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.js +0 -90
  253. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.js.map +0 -1
  254. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableSettingsAction.js +0 -44
  255. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableSettingsAction.js.map +0 -1
  256. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js +0 -49
  257. package/cjs/packages/vuu-table-extras/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js.map +0 -1
  258. package/cjs/packages/vuu-table-extras/src/table-footer/TableFooter.css.js +0 -6
  259. package/cjs/packages/vuu-table-extras/src/table-footer/TableFooter.css.js.map +0 -1
  260. package/cjs/packages/vuu-table-extras/src/table-footer/TableFooter.js +0 -34
  261. package/cjs/packages/vuu-table-extras/src/table-footer/TableFooter.js.map +0 -1
  262. package/cjs/packages/vuu-table-extras/src/table-provider/TableProvider.js +0 -61
  263. package/cjs/packages/vuu-table-extras/src/table-provider/TableProvider.js.map +0 -1
  264. package/cjs/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.css.js +0 -6
  265. package/cjs/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.css.js.map +0 -1
  266. package/cjs/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.js +0 -116
  267. package/cjs/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.js.map +0 -1
  268. package/cjs/packages/vuu-table-extras/src/table-settings-panel/useTableSettings.js +0 -60
  269. package/cjs/packages/vuu-table-extras/src/table-settings-panel/useTableSettings.js.map +0 -1
  270. package/esm/node_modules/csv-parse/dist/esm/sync.js +0 -3974
  271. package/esm/node_modules/csv-parse/dist/esm/sync.js.map +0 -1
  272. package/esm/packages/vuu-table-extras/src/calculated-column/CalculatedColumnPanel.js +0 -83
  273. package/esm/packages/vuu-table-extras/src/calculated-column/CalculatedColumnPanel.js.map +0 -1
  274. package/esm/packages/vuu-table-extras/src/calculated-column/useCalculatedColumnPanel.js +0 -69
  275. package/esm/packages/vuu-table-extras/src/calculated-column/useCalculatedColumnPanel.js.map +0 -1
  276. package/esm/packages/vuu-table-extras/src/calculated-column/useEditCalculatedColumn.js +0 -136
  277. package/esm/packages/vuu-table-extras/src/calculated-column/useEditCalculatedColumn.js.map +0 -1
  278. package/esm/packages/vuu-table-extras/src/cell-edit-validators/CaseValidator.js +0 -23
  279. package/esm/packages/vuu-table-extras/src/cell-edit-validators/CaseValidator.js.map +0 -1
  280. package/esm/packages/vuu-table-extras/src/cell-edit-validators/PatternValidator.js +0 -29
  281. package/esm/packages/vuu-table-extras/src/cell-edit-validators/PatternValidator.js.map +0 -1
  282. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css.js +0 -4
  283. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.css.js.map +0 -1
  284. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.js +0 -79
  285. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCell.js.map +0 -1
  286. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js +0 -4
  287. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.css.js.map +0 -1
  288. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js +0 -65
  289. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.js.map +0 -1
  290. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundKeyframes.css.js +0 -4
  291. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/BackgroundKeyframes.css.js.map +0 -1
  292. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/useDirection.js +0 -18
  293. package/esm/packages/vuu-table-extras/src/cell-renderers/background-cell/useDirection.js.map +0 -1
  294. package/esm/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.css.js +0 -4
  295. package/esm/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.css.js.map +0 -1
  296. package/esm/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.js +0 -38
  297. package/esm/packages/vuu-table-extras/src/cell-renderers/button-cell/IconButtonCell.js.map +0 -1
  298. package/esm/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.css.js +0 -4
  299. package/esm/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.css.js.map +0 -1
  300. package/esm/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.js +0 -101
  301. package/esm/packages/vuu-table-extras/src/cell-renderers/dropdown-cell/DropdownCell.js.map +0 -1
  302. package/esm/packages/vuu-table-extras/src/cell-renderers/lookup-cell/LookupCell.js +0 -19
  303. package/esm/packages/vuu-table-extras/src/cell-renderers/lookup-cell/LookupCell.js.map +0 -1
  304. package/esm/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.css.js +0 -4
  305. package/esm/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.css.js.map +0 -1
  306. package/esm/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.js +0 -60
  307. package/esm/packages/vuu-table-extras/src/cell-renderers/pct-progress-cell/PctProgressCell.js.map +0 -1
  308. package/esm/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css.js +0 -4
  309. package/esm/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.css.js.map +0 -1
  310. package/esm/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.js +0 -67
  311. package/esm/packages/vuu-table-extras/src/cell-renderers/progress-cell/ProgressCell.js.map +0 -1
  312. package/esm/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css.js +0 -4
  313. package/esm/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.css.js.map +0 -1
  314. package/esm/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.js +0 -37
  315. package/esm/packages/vuu-table-extras/src/column-expression-input/ColumnExpressionInput.js.map +0 -1
  316. package/esm/packages/vuu-table-extras/src/column-expression-input/column-function-descriptors.js +0 -305
  317. package/esm/packages/vuu-table-extras/src/column-expression-input/column-function-descriptors.js.map +0 -1
  318. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.js +0 -26
  319. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.js.map +0 -1
  320. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js +0 -463
  321. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.js.map +0 -1
  322. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/column-expression-parse-utils.js +0 -56
  323. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/column-expression-parse-utils.js.map +0 -1
  324. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/generated/column-parser.js +0 -19
  325. package/esm/packages/vuu-table-extras/src/column-expression-input/column-language-parser/generated/column-parser.js.map +0 -1
  326. package/esm/packages/vuu-table-extras/src/column-expression-input/functionDocInfo.js +0 -37
  327. package/esm/packages/vuu-table-extras/src/column-expression-input/functionDocInfo.js.map +0 -1
  328. package/esm/packages/vuu-table-extras/src/column-expression-input/highlighting.js +0 -14
  329. package/esm/packages/vuu-table-extras/src/column-expression-input/highlighting.js.map +0 -1
  330. package/esm/packages/vuu-table-extras/src/column-expression-input/theme.js +0 -61
  331. package/esm/packages/vuu-table-extras/src/column-expression-input/theme.js.map +0 -1
  332. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnAutoComplete.js +0 -356
  333. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnAutoComplete.js.map +0 -1
  334. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionEditor.js +0 -129
  335. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionEditor.js.map +0 -1
  336. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionSuggestionProvider.js +0 -211
  337. package/esm/packages/vuu-table-extras/src/column-expression-input/useColumnExpressionSuggestionProvider.js.map +0 -1
  338. package/esm/packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.js +0 -96
  339. package/esm/packages/vuu-table-extras/src/column-formatting-settings/BaseNumericFormattingSettings.js.map +0 -1
  340. package/esm/packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.js +0 -109
  341. package/esm/packages/vuu-table-extras/src/column-formatting-settings/ColumnFormattingPanel.js.map +0 -1
  342. package/esm/packages/vuu-table-extras/src/column-formatting-settings/DateTimeFormattingSettings.js +0 -100
  343. package/esm/packages/vuu-table-extras/src/column-formatting-settings/DateTimeFormattingSettings.js.map +0 -1
  344. package/esm/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.css.js +0 -4
  345. package/esm/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.css.js.map +0 -1
  346. package/esm/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.js +0 -46
  347. package/esm/packages/vuu-table-extras/src/column-formatting-settings/LongTypeFormattingSettings.js.map +0 -1
  348. package/esm/packages/vuu-table-extras/src/column-menu/ColumnMenu.css.js +0 -4
  349. package/esm/packages/vuu-table-extras/src/column-menu/ColumnMenu.css.js.map +0 -1
  350. package/esm/packages/vuu-table-extras/src/column-menu/ColumnMenu.js +0 -105
  351. package/esm/packages/vuu-table-extras/src/column-menu/ColumnMenu.js.map +0 -1
  352. package/esm/packages/vuu-table-extras/src/column-menu/column-menu-utils.js +0 -451
  353. package/esm/packages/vuu-table-extras/src/column-menu/column-menu-utils.js.map +0 -1
  354. package/esm/packages/vuu-table-extras/src/column-menu/useColumnActions.js +0 -66
  355. package/esm/packages/vuu-table-extras/src/column-menu/useColumnActions.js.map +0 -1
  356. package/esm/packages/vuu-table-extras/src/column-picker/ColumnModel.js +0 -170
  357. package/esm/packages/vuu-table-extras/src/column-picker/ColumnModel.js.map +0 -1
  358. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPicker.css.js +0 -4
  359. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPicker.css.js.map +0 -1
  360. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPicker.js +0 -249
  361. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPicker.js.map +0 -1
  362. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPickerAction.js +0 -32
  363. package/esm/packages/vuu-table-extras/src/column-picker/ColumnPickerAction.js.map +0 -1
  364. package/esm/packages/vuu-table-extras/src/column-picker/useColumnPicker.js +0 -53
  365. package/esm/packages/vuu-table-extras/src/column-picker/useColumnPicker.js.map +0 -1
  366. package/esm/packages/vuu-table-extras/src/column-picker/useTableColumnPicker.js +0 -33
  367. package/esm/packages/vuu-table-extras/src/column-picker/useTableColumnPicker.js.map +0 -1
  368. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.css.js +0 -4
  369. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.css.js.map +0 -1
  370. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.js +0 -43
  371. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnNameLabel.js.map +0 -1
  372. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.css.js +0 -4
  373. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.css.js.map +0 -1
  374. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.js +0 -159
  375. package/esm/packages/vuu-table-extras/src/column-settings-panel/ColumnSettingsPanel.js.map +0 -1
  376. package/esm/packages/vuu-table-extras/src/column-settings-panel/useColumnSettings.js +0 -201
  377. package/esm/packages/vuu-table-extras/src/column-settings-panel/useColumnSettings.js.map +0 -1
  378. package/esm/packages/vuu-table-extras/src/csv-upload/CsvUpload.css.js +0 -4
  379. package/esm/packages/vuu-table-extras/src/csv-upload/CsvUpload.css.js.map +0 -1
  380. package/esm/packages/vuu-table-extras/src/csv-upload/CsvUpload.js +0 -93
  381. package/esm/packages/vuu-table-extras/src/csv-upload/CsvUpload.js.map +0 -1
  382. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-constants.js.map +0 -1
  383. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-errors.js +0 -57
  384. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-errors.js.map +0 -1
  385. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-parse.js +0 -196
  386. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-parse.js.map +0 -1
  387. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-schema-validation.js +0 -97
  388. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-schema-validation.js.map +0 -1
  389. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-upload-utils.js +0 -76
  390. package/esm/packages/vuu-table-extras/src/csv-upload/parse/csv-upload-utils.js.map +0 -1
  391. package/esm/packages/vuu-table-extras/src/csv-upload/useCsvUpload.js +0 -304
  392. package/esm/packages/vuu-table-extras/src/csv-upload/useCsvUpload.js.map +0 -1
  393. package/esm/packages/vuu-table-extras/src/csv-upload/useCsvUploadSessionPreview.js +0 -71
  394. package/esm/packages/vuu-table-extras/src/csv-upload/useCsvUploadSessionPreview.js.map +0 -1
  395. package/esm/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css.js +0 -4
  396. package/esm/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.css.js.map +0 -1
  397. package/esm/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.js +0 -74
  398. package/esm/packages/vuu-table-extras/src/datasource-stats/DatasourceStats.js.map +0 -1
  399. package/esm/packages/vuu-table-extras/src/datasource-stats/useDatasourceStats.js +0 -59
  400. package/esm/packages/vuu-table-extras/src/datasource-stats/useDatasourceStats.js.map +0 -1
  401. package/esm/packages/vuu-table-extras/src/freeze-control/FreezeControl.css.js +0 -4
  402. package/esm/packages/vuu-table-extras/src/freeze-control/FreezeControl.css.js.map +0 -1
  403. package/esm/packages/vuu-table-extras/src/freeze-control/FreezeControl.js +0 -104
  404. package/esm/packages/vuu-table-extras/src/freeze-control/FreezeControl.js.map +0 -1
  405. package/esm/packages/vuu-table-extras/src/freeze-control/FrozenBanner.css.js +0 -4
  406. package/esm/packages/vuu-table-extras/src/freeze-control/FrozenBanner.css.js.map +0 -1
  407. package/esm/packages/vuu-table-extras/src/freeze-control/FrozenBanner.js +0 -53
  408. package/esm/packages/vuu-table-extras/src/freeze-control/FrozenBanner.js.map +0 -1
  409. package/esm/packages/vuu-table-extras/src/freeze-control/freezeControlBadge.js +0 -8
  410. package/esm/packages/vuu-table-extras/src/freeze-control/freezeControlBadge.js.map +0 -1
  411. package/esm/packages/vuu-table-extras/src/freeze-control/useFreezeControl.js +0 -66
  412. package/esm/packages/vuu-table-extras/src/freeze-control/useFreezeControl.js.map +0 -1
  413. package/esm/packages/vuu-table-extras/src/index.js +0 -43
  414. package/esm/packages/vuu-table-extras/src/index.js.map +0 -1
  415. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +0 -4
  416. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js.map +0 -1
  417. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.js +0 -88
  418. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableConfigPanel.js.map +0 -1
  419. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableSettingsAction.js +0 -42
  420. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/TabbedTableSettingsAction.js.map +0 -1
  421. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js +0 -47
  422. package/esm/packages/vuu-table-extras/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js.map +0 -1
  423. package/esm/packages/vuu-table-extras/src/table-footer/TableFooter.css.js +0 -4
  424. package/esm/packages/vuu-table-extras/src/table-footer/TableFooter.css.js.map +0 -1
  425. package/esm/packages/vuu-table-extras/src/table-footer/TableFooter.js +0 -31
  426. package/esm/packages/vuu-table-extras/src/table-footer/TableFooter.js.map +0 -1
  427. package/esm/packages/vuu-table-extras/src/table-provider/TableProvider.js +0 -56
  428. package/esm/packages/vuu-table-extras/src/table-provider/TableProvider.js.map +0 -1
  429. package/esm/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.css.js +0 -4
  430. package/esm/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.css.js.map +0 -1
  431. package/esm/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.js +0 -112
  432. package/esm/packages/vuu-table-extras/src/table-settings-panel/TableSettingsPanel.js.map +0 -1
  433. package/esm/packages/vuu-table-extras/src/table-settings-panel/useTableSettings.js +0 -58
  434. package/esm/packages/vuu-table-extras/src/table-settings-panel/useTableSettings.js.map +0 -1
@@ -0,0 +1,45 @@
1
+ import { getTypedValue } from "@vuu-ui/vuu-utils";
2
+ import { CsvValidationErrorEnum, addCsvFileError, addCsvRowError, createCsvErrorState } from "./csv-errors.js";
3
+ import { CSV_FIRST_DATA_ROW_NUMBER } from "./csv-constants.js";
4
+ const MAX_ROWS_IN_CSV = 25000;
5
+ const validateCsvAgainstSchema = (parsed, tableSchema, options)=>{
6
+ const schemaColumns = new Map(tableSchema.columns.map((col)=>[
7
+ col.name,
8
+ col.serverDataType
9
+ ]));
10
+ const maxRows = options?.maxRows ?? MAX_ROWS_IN_CSV;
11
+ const errorState = createCsvErrorState();
12
+ if (!parsed.header.includes(tableSchema.key)) addCsvFileError(errorState, tableSchema.key, CsvValidationErrorEnum.MISSING_KEY_COLUMN, `CSV must include key column '${tableSchema.key}'.`);
13
+ parsed.header.forEach((column)=>{
14
+ if (!schemaColumns.has(column)) addCsvFileError(errorState, column, CsvValidationErrorEnum.UNKNOWN_COLUMN, "Column is not present in table schema.", column);
15
+ });
16
+ if (parsed.rows.length > maxRows) addCsvFileError(errorState, "*", CsvValidationErrorEnum.MAX_ROWS_EXCEEDED, `CSV row count ${parsed.rows.length} exceeds maxRows ${maxRows}.`, String(parsed.rows.length));
17
+ const typedRows = [];
18
+ parsed.rows.forEach((rowValues, rowIndex)=>{
19
+ const rowNum = rowIndex + CSV_FIRST_DATA_ROW_NUMBER;
20
+ const typedRow = {};
21
+ parsed.header.forEach((columnName, columnIndex)=>{
22
+ const rawValue = rowValues[columnIndex];
23
+ const schemaType = schemaColumns.get(columnName);
24
+ if (0 === rawValue.length && "string" !== schemaType) return void addCsvRowError(errorState, rowNum, columnName, CsvValidationErrorEnum.EMPTY_NON_STRING_VALUE, "Empty value is not allowed for non-string columns.", rawValue);
25
+ let value;
26
+ const toType = schemaType ?? "string";
27
+ try {
28
+ value = getTypedValue(rawValue, toType);
29
+ } catch (err) {
30
+ addCsvRowError(errorState, rowNum, columnName, CsvValidationErrorEnum.TYPE_MISMATCH, err instanceof Error ? err.message : String(err), rawValue);
31
+ return;
32
+ }
33
+ if (void 0 === value) return void addCsvRowError(errorState, rowNum, columnName, CsvValidationErrorEnum.TYPE_MISMATCH, `Value '${rawValue}' is not a valid ${toType}`, rawValue);
34
+ typedRow[columnName] = value;
35
+ });
36
+ typedRows.push(typedRow);
37
+ });
38
+ return {
39
+ columns: parsed.header,
40
+ errorMap: errorState.errorMap,
41
+ errors: errorState.errors,
42
+ rows: typedRows
43
+ };
44
+ };
45
+ export { CsvValidationErrorEnum, validateCsvAgainstSchema };
@@ -0,0 +1,59 @@
1
+ import { isRpcError } from "@vuu-ui/vuu-utils";
2
+ import { CSV_FIRST_DATA_ROW_NUMBER } from "./csv-constants.js";
3
+ const isRecord = (value)=>"object" == typeof value && null !== value;
4
+ const toErrorMessage = (error)=>error instanceof Error ? error.message : String(error);
5
+ const isCsvParseError = (value)=>isRecord(value) && "message" in value && "string" == typeof value.message && "errors" in value && Array.isArray(value.errors) && "errorMap" in value && isRecord(value.errorMap);
6
+ const hasFileParseErrors = (parseError)=>Object.keys(parseError.errorMap.fileErrors).length > 0;
7
+ const createUploadError = (source, message, parseError, validationError)=>({
8
+ message,
9
+ parseError,
10
+ validationError,
11
+ source
12
+ });
13
+ const mergeValidationWithParseErrors = (schemaValidation, parseError)=>parseError ? {
14
+ ...schemaValidation,
15
+ errors: [
16
+ ...schemaValidation.errors,
17
+ ...toValidationErrorsFromParseRowErrors(parseError)
18
+ ],
19
+ parseRowError: parseError
20
+ } : schemaValidation;
21
+ const buildRowErrorMessage = (prefix, rowErrors)=>{
22
+ const details = rowErrors.slice(0, 8).join("; ");
23
+ const remaining = rowErrors.length - 8;
24
+ const suffix = remaining > 0 ? `; and ${remaining} more` : "";
25
+ return `${prefix} for ${rowErrors.length} row(s): ${details}${suffix}`;
26
+ };
27
+ const toValidationErrorsFromParseRowErrors = (parseError)=>parseError.errors.filter((error)=>error.rowNum >= CSV_FIRST_DATA_ROW_NUMBER);
28
+ const normalizeTableData = (value, fallback)=>{
29
+ const tableData = isRecord(value) && "data" in value ? value.data : value;
30
+ if (!isRecord(tableData)) return fallback;
31
+ const columns = tableData.columns;
32
+ const rows = tableData.rows;
33
+ if (!Array.isArray(columns) || columns.some((column)=>"string" != typeof column) || !Array.isArray(rows)) return fallback;
34
+ return {
35
+ columns,
36
+ rows: rows.map((row)=>{
37
+ if (Array.isArray(row)) return row;
38
+ if (!isRecord(row)) return columns.map(()=>"");
39
+ return columns.map((column)=>row[column] ?? "");
40
+ })
41
+ };
42
+ };
43
+ const executeBatchRpcCalls = async (items, executor, errorFormatter)=>{
44
+ const errors = [];
45
+ const results = [];
46
+ for (const item of items)try {
47
+ const result = await executor(item);
48
+ const rpcResult = result;
49
+ if (isRpcError(rpcResult)) errors.push(errorFormatter(item, rpcResult.errorMessage));
50
+ else results.push(result);
51
+ } catch (err) {
52
+ errors.push(errorFormatter(item, toErrorMessage(err)));
53
+ }
54
+ return {
55
+ errors,
56
+ results
57
+ };
58
+ };
59
+ export { buildRowErrorMessage, createUploadError, executeBatchRpcCalls, hasFileParseErrors, isCsvParseError, mergeValidationWithParseErrors, normalizeTableData, toErrorMessage, toValidationErrorsFromParseRowErrors };
@@ -0,0 +1,5 @@
1
+ export { CSV_FIRST_DATA_ROW_NUMBER, CSV_HEADER_ROW_NUMBER } from "./csv-constants.js";
2
+ export { CsvParseErrorEnum, CsvValidationErrorEnum, addCsvFileError, addCsvRowError, createCsvErrorState, hasCsvErrors } from "./csv-errors.js";
3
+ export { parseCsv } from "./csv-parse.js";
4
+ export { validateCsvAgainstSchema } from "./csv-schema-validation.js";
5
+ export { buildRowErrorMessage, executeBatchRpcCalls, hasFileParseErrors, isCsvParseError, mergeValidationWithParseErrors, normalizeTableData, toErrorMessage, toValidationErrorsFromParseRowErrors } from "./csv-upload-utils.js";
@@ -0,0 +1,260 @@
1
+ import { isRpcSuccess, isSessionTable } from "@vuu-ui/vuu-utils";
2
+ import { useCallback, useMemo, useRef, useState } from "react";
3
+ import { parseCsv } from "./parse/csv-parse.js";
4
+ import { validateCsvAgainstSchema } from "./parse/csv-schema-validation.js";
5
+ import { buildRowErrorMessage, createUploadError, executeBatchRpcCalls, hasFileParseErrors, isCsvParseError, mergeValidationWithParseErrors, normalizeTableData, toErrorMessage } from "./parse/csv-upload-utils.js";
6
+ import { CSV_FIRST_DATA_ROW_NUMBER } from "./parse/csv-constants.js";
7
+ const useCsvUpload = ({ dataSource, onEditSessionEnded, onEditSessionStarted, onError, onImported, onProcessingStarted, maxRows, parseOptions })=>{
8
+ const [validation, setValidation] = useState();
9
+ const [sessionTable, setSessionTable] = useState();
10
+ const [isProcessingFile, setIsProcessingFile] = useState(false);
11
+ const [isImporting, setIsImporting] = useState(false);
12
+ const sessionTableRef = useRef(void 0);
13
+ const setActiveSessionTable = useCallback((table)=>{
14
+ sessionTableRef.current = table;
15
+ if (table) {
16
+ const sessionDs = dataSource.createSessionDataSource?.(table);
17
+ if (sessionDs) onEditSessionStarted?.(sessionDs);
18
+ }
19
+ setSessionTable(table);
20
+ }, [
21
+ dataSource,
22
+ onEditSessionStarted
23
+ ]);
24
+ const endEditSessionAndNotify = useCallback(async (save, reason)=>{
25
+ if (!dataSource.endEditSession) throw Error("CsvUpload requires datasource endEditSession support.");
26
+ const currentSessionTable = sessionTableRef.current;
27
+ const result = await dataSource.endEditSession(save);
28
+ setActiveSessionTable(void 0);
29
+ onEditSessionEnded?.({
30
+ reason,
31
+ sessionTable: currentSessionTable
32
+ });
33
+ return result;
34
+ }, [
35
+ dataSource,
36
+ onEditSessionEnded,
37
+ setActiveSessionTable
38
+ ]);
39
+ const table = dataSource.table;
40
+ const schema = dataSource.tableSchema;
41
+ const addAllRows = useCallback(async (mergedValidation)=>{
42
+ if (void 0 === table) throw Error("CsvUpload requires dataSource.table to be defined.");
43
+ const vuuMsgByRow = new Map();
44
+ for (const { rowNum, column, message } of mergedValidation.errors){
45
+ if (rowNum < CSV_FIRST_DATA_ROW_NUMBER) continue;
46
+ const existing = vuuMsgByRow.get(rowNum);
47
+ const columnError = `${column}: ${message}`;
48
+ vuuMsgByRow.set(rowNum, existing ? `${existing}; ${columnError}` : `Row ${rowNum}: ${columnError}`);
49
+ }
50
+ const parsedRowCount = mergedValidation.rows.length;
51
+ const unparsedErrorRows = [
52
+ ...vuuMsgByRow.keys()
53
+ ].filter((rowNum)=>rowNum - CSV_FIRST_DATA_ROW_NUMBER >= parsedRowCount).map((rowNum)=>({
54
+ rowNum,
55
+ rowData: {},
56
+ vuuMsg: vuuMsgByRow.get(rowNum) ?? ""
57
+ }));
58
+ const allRows = [
59
+ ...mergedValidation.rows.map((rowData, idx)=>({
60
+ rowNum: idx + CSV_FIRST_DATA_ROW_NUMBER,
61
+ rowData: rowData ?? {},
62
+ vuuMsg: vuuMsgByRow.get(idx + CSV_FIRST_DATA_ROW_NUMBER) ?? ""
63
+ })),
64
+ ...unparsedErrorRows
65
+ ];
66
+ const { errors: rpcErrors } = await executeBatchRpcCalls(allRows, async ({ rowNum, rowData, vuuMsg })=>{
67
+ const payload = {
68
+ ...rowData,
69
+ rowNum,
70
+ vuuMsg
71
+ };
72
+ const result = await dataSource.rpcRequest?.({
73
+ type: "RPC_REQUEST",
74
+ rpcName: "addRow",
75
+ params: {
76
+ key: String(rowNum),
77
+ data: payload
78
+ }
79
+ });
80
+ if (!isRpcSuccess(result)) {
81
+ const msg = result && "errorMessage" in result ? String(result.errorMessage) : "addRow RPC failed";
82
+ throw Error(msg);
83
+ }
84
+ return result;
85
+ }, ({ rowNum }, error)=>`Row ${rowNum}: ${error}`);
86
+ if (rpcErrors.length > 0) {
87
+ const errorMessage = buildRowErrorMessage("Import failed", rpcErrors);
88
+ const errors = {
89
+ importError: createUploadError("import", errorMessage)
90
+ };
91
+ onError?.({
92
+ errors
93
+ });
94
+ }
95
+ }, [
96
+ dataSource,
97
+ onError,
98
+ table
99
+ ]);
100
+ const beginEditSession = useCallback(async ()=>{
101
+ if (!dataSource.beginEditSession) throw Error("CsvUpload requires datasource beginEditSession support.");
102
+ const sessionDataSource = await dataSource.beginEditSession("empty-session-table");
103
+ const sessionVuuTable = sessionDataSource?.table;
104
+ if (sessionVuuTable && isSessionTable(sessionVuuTable)) setActiveSessionTable(sessionVuuTable);
105
+ }, [
106
+ dataSource,
107
+ setActiveSessionTable
108
+ ]);
109
+ const closePendingEditSession = useCallback(async (save)=>{
110
+ if (void 0 === sessionTableRef.current) return;
111
+ await endEditSessionAndNotify(save, save ? "saved" : "discarded");
112
+ }, [
113
+ endEditSessionAndNotify
114
+ ]);
115
+ const processFile = useCallback(async (file)=>{
116
+ setValidation(void 0);
117
+ onError?.(void 0);
118
+ await closePendingEditSession(false);
119
+ if (void 0 === schema) throw Error("Table schema is not yet available.");
120
+ if (void 0 === table) throw Error("CsvUpload requires dataSource.table to be defined.");
121
+ const parsedCsv = parseCsv(await file.text(), parseOptions);
122
+ if (parsedCsv.error && hasFileParseErrors(parsedCsv.error)) {
123
+ setValidation(void 0);
124
+ onError?.({
125
+ errors: {
126
+ validationError: createUploadError("validation", `Validation failed: ${parsedCsv.error.message}`, parsedCsv.error)
127
+ }
128
+ });
129
+ return;
130
+ }
131
+ const schemaValidation = validateCsvAgainstSchema(parsedCsv, schema, {
132
+ maxRows
133
+ });
134
+ if (Object.keys(schemaValidation.errorMap.fileErrors).length > 0) {
135
+ setValidation(schemaValidation);
136
+ onError?.({
137
+ errors: {
138
+ schemaError: createUploadError("schema", "CSV validation failed.", parsedCsv.error, {
139
+ errorMap: schemaValidation.errorMap,
140
+ errors: schemaValidation.errors,
141
+ message: "CSV validation failed."
142
+ })
143
+ }
144
+ });
145
+ return;
146
+ }
147
+ const mergedValidation = mergeValidationWithParseErrors(schemaValidation, parsedCsv.error);
148
+ setValidation(mergedValidation);
149
+ if (mergedValidation.rows.length > 0) {
150
+ await beginEditSession();
151
+ try {
152
+ await addAllRows(mergedValidation);
153
+ } catch (error) {
154
+ await endEditSessionAndNotify(false, "failed");
155
+ setValidation(void 0);
156
+ onError?.({
157
+ errors: {
158
+ importError: createUploadError("import", `RPC import failed: ${toErrorMessage(error)}`)
159
+ }
160
+ });
161
+ }
162
+ }
163
+ }, [
164
+ onError,
165
+ addAllRows,
166
+ maxRows,
167
+ parseOptions,
168
+ beginEditSession,
169
+ closePendingEditSession,
170
+ table,
171
+ endEditSessionAndNotify,
172
+ schema
173
+ ]);
174
+ const handleFiles = useCallback(async (files)=>{
175
+ const file = files[0];
176
+ if (void 0 === file) return;
177
+ setIsProcessingFile(true);
178
+ onProcessingStarted?.();
179
+ try {
180
+ await processFile(file);
181
+ } catch (err) {
182
+ setValidation(void 0);
183
+ setActiveSessionTable(void 0);
184
+ const parseError = isCsvParseError(err) ? err : void 0;
185
+ const errorMessage = parseError ? `Validation failed: ${parseError.message}` : `Validation failed: ${toErrorMessage(err)}`;
186
+ const errors = {
187
+ errors: {
188
+ validationError: createUploadError("validation", errorMessage, parseError)
189
+ }
190
+ };
191
+ onError?.(errors);
192
+ } finally{
193
+ setIsProcessingFile(false);
194
+ }
195
+ }, [
196
+ onError,
197
+ onProcessingStarted,
198
+ processFile,
199
+ setActiveSessionTable
200
+ ]);
201
+ const onDrop = useCallback((_event, files)=>{
202
+ handleFiles(files);
203
+ }, [
204
+ handleFiles
205
+ ]);
206
+ const onTriggerChange = useCallback((_event, files)=>{
207
+ handleFiles(files);
208
+ }, [
209
+ handleFiles
210
+ ]);
211
+ const canImport = useMemo(()=>void 0 !== validation && 0 === validation.errors.length && validation.rows.length > 0 && !isProcessingFile && !isImporting, [
212
+ isImporting,
213
+ isProcessingFile,
214
+ validation
215
+ ]);
216
+ const importData = useCallback(async ()=>{
217
+ if (!canImport || void 0 === validation) return;
218
+ setIsImporting(true);
219
+ onError?.(void 0);
220
+ try {
221
+ const rpcResult = await endEditSessionAndNotify(true, "saved");
222
+ const fallbackTableData = {
223
+ columns: validation.columns,
224
+ rows: validation.rows.map((row)=>validation.columns.map((column)=>row[column] ?? ""))
225
+ };
226
+ onImported?.({
227
+ rpcResult,
228
+ tableData: normalizeTableData(rpcResult, fallbackTableData)
229
+ });
230
+ } catch (err) {
231
+ const errorMessage = `RPC import failed: ${String(err)}`;
232
+ const errors = {
233
+ errors: {
234
+ importError: createUploadError("import", errorMessage)
235
+ }
236
+ };
237
+ onError?.(errors);
238
+ } finally{
239
+ setIsImporting(false);
240
+ }
241
+ }, [
242
+ canImport,
243
+ endEditSessionAndNotify,
244
+ onError,
245
+ onImported,
246
+ validation
247
+ ]);
248
+ return {
249
+ canImport,
250
+ importData,
251
+ isImporting,
252
+ isProcessingFile,
253
+ onDrop,
254
+ onTriggerChange,
255
+ sessionTable,
256
+ schema,
257
+ validation
258
+ };
259
+ };
260
+ export { useCsvUpload };
@@ -0,0 +1,70 @@
1
+ import { useData } from "@vuu-ui/vuu-utils";
2
+ import { useEffect, useState } from "react";
3
+ const useCsvUploadSessionPreview = (sessionTable)=>{
4
+ const { VuuDataSource, getServerAPI } = useData();
5
+ const [previewConfig, setPreviewConfig] = useState();
6
+ const [previewDataSource, setPreviewDataSource] = useState();
7
+ const [previewError, setPreviewError] = useState();
8
+ const [isLoadingPreview, setIsLoadingPreview] = useState(false);
9
+ useEffect(()=>{
10
+ let cancelled = false;
11
+ if (!sessionTable) {
12
+ setPreviewDataSource(void 0);
13
+ setPreviewConfig(void 0);
14
+ setPreviewError(void 0);
15
+ setIsLoadingPreview(false);
16
+ return;
17
+ }
18
+ const loadSessionTablePreview = async ()=>{
19
+ setIsLoadingPreview(true);
20
+ setPreviewError(void 0);
21
+ try {
22
+ const server = await getServerAPI();
23
+ const schema = await server.getTableSchema(sessionTable);
24
+ if (cancelled) return;
25
+ const columnDescriptors = schema.columns.map(({ name, serverDataType })=>"vuuMsg" === name ? {
26
+ name,
27
+ serverDataType,
28
+ width: 300,
29
+ label: "Error"
30
+ } : {
31
+ name,
32
+ serverDataType
33
+ });
34
+ setPreviewConfig({
35
+ columns: columnDescriptors,
36
+ zebraStripes: true,
37
+ rowSeparators: true,
38
+ columnSeparators: true
39
+ });
40
+ setPreviewDataSource(new VuuDataSource({
41
+ columns: columnDescriptors.map(({ name })=>name),
42
+ table: sessionTable
43
+ }));
44
+ } catch (error) {
45
+ if (!cancelled) {
46
+ setPreviewDataSource(void 0);
47
+ setPreviewConfig(void 0);
48
+ setPreviewError(`Failed to load session table preview: ${String(error)}`);
49
+ }
50
+ } finally{
51
+ if (!cancelled) setIsLoadingPreview(false);
52
+ }
53
+ };
54
+ loadSessionTablePreview();
55
+ return ()=>{
56
+ cancelled = true;
57
+ };
58
+ }, [
59
+ VuuDataSource,
60
+ getServerAPI,
61
+ sessionTable
62
+ ]);
63
+ return {
64
+ isLoadingPreview,
65
+ previewConfig,
66
+ previewDataSource,
67
+ previewError
68
+ };
69
+ };
70
+ export { useCsvUploadSessionPreview };
@@ -0,0 +1,56 @@
1
+ const css = `
2
+ .vuuDatasourceStats {
3
+ --datasourceStats-background: var(--vuuDatasourceStats-background);
4
+ background: var(--datasourceStats-background, var(--salt-container-secondary-background));
5
+ font-size: var(--vuuDatasourceStats-fontSize, 10px);
6
+ align-items: center;
7
+ gap: var(--vuuDatasourceStats-gap, var(--salt-spacing-100));
8
+ height: var(--vuuDatasourceStats-height, 100%);
9
+ padding: 0 var(--salt-spacing-200);
10
+ grid-template: "panel-start panel-center panel-end"
11
+ / 1fr 1fr 1fr;
12
+ display: grid;
13
+
14
+ &.vuuDatasourceStats-withSelection {
15
+ --datasourceStats-background: var(--vuuDatasourceStats-withSelection-background, var(--vuuDatasourceStats-background));
16
+ }
17
+
18
+ & .vuuDatasourceStats-statsPanel {
19
+ align-items: center;
20
+ gap: var(--salt-spacing-100);
21
+ width: fit-content;
22
+ display: flex;
23
+ }
24
+
25
+ & .vuuDatasourceStats-rowStats {
26
+ grid-area: panel-start;
27
+ justify-self: flex-start;
28
+ }
29
+
30
+ & .vuuDatasourceStats-selected {
31
+ margin-left: var(--salt-spacing-100);
32
+ }
33
+
34
+ & .vuuDatasourceStats-label {
35
+ color: var(--salt-content-secondary-foreground);
36
+ white-space: nowrap;
37
+ }
38
+
39
+ & .vuuDatasourceStats-range {
40
+ white-space: nowrap;
41
+ }
42
+
43
+ & .vuuDatasourceStats-value {
44
+ color: var(--salt-content-primary-foreground);
45
+ }
46
+
47
+ & .vuuDatasourceStats-tooltray {
48
+ margin: 0 var(--salt-spacing-200);
49
+ grid-area: panel-end;
50
+ justify-self: end;
51
+ }
52
+ }
53
+
54
+
55
+ `;
56
+ export default css;
@@ -0,0 +1,89 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import clsx from "clsx";
3
+ import { useComponentCssInjection } from "@salt-ds/styles";
4
+ import { useWindow } from "@salt-ds/window";
5
+ import { useDatasourceStats } from "./useDatasourceStats.js";
6
+ import DatasourceStats from "./DatasourceStats.css";
7
+ const classBase = "vuuDatasourceStats";
8
+ const numberFormatter = new Intl.NumberFormat();
9
+ const DataSourceStats = ({ children, className, dataSource, showRowStats = true, tooltrayActions, ...htmlAttributes })=>{
10
+ const targetWindow = useWindow();
11
+ useComponentCssInjection({
12
+ testId: "vuu-datasource-stats",
13
+ css: DatasourceStats,
14
+ window: targetWindow
15
+ });
16
+ const { range, selectedCount, size } = useDatasourceStats({
17
+ dataSource,
18
+ showRowStats
19
+ });
20
+ const from = numberFormatter.format(range.from + 1);
21
+ const to = numberFormatter.format(Math.min(range.to, size));
22
+ const value = numberFormatter.format(size);
23
+ if (0 === size) return /*#__PURE__*/ jsx("div", {
24
+ ...htmlAttributes,
25
+ className: clsx(classBase, className),
26
+ children: /*#__PURE__*/ jsx("span", {
27
+ className: `${classBase}-label`,
28
+ children: "No Rows to display"
29
+ })
30
+ });
31
+ return /*#__PURE__*/ jsxs("div", {
32
+ ...htmlAttributes,
33
+ className: clsx(classBase, className, {
34
+ [`${classBase}-withSelection`]: selectedCount > 0
35
+ }),
36
+ children: [
37
+ showRowStats ? /*#__PURE__*/ jsxs("div", {
38
+ className: `${classBase}-statsPanel ${classBase}-rowStats`,
39
+ children: [
40
+ /*#__PURE__*/ jsx("span", {
41
+ className: `${classBase}-label`,
42
+ children: "Row count"
43
+ }),
44
+ /*#__PURE__*/ jsxs("span", {
45
+ className: `${classBase}-range`,
46
+ children: [
47
+ /*#__PURE__*/ jsx("span", {
48
+ className: `${classBase}-value`,
49
+ children: from
50
+ }),
51
+ /*#__PURE__*/ jsx("span", {
52
+ className: `${classBase}-label`,
53
+ children: "-"
54
+ }),
55
+ /*#__PURE__*/ jsx("span", {
56
+ className: `${classBase}-value`,
57
+ children: to
58
+ })
59
+ ]
60
+ }),
61
+ /*#__PURE__*/ jsx("span", {
62
+ className: `${classBase}-label`,
63
+ children: "of"
64
+ }),
65
+ /*#__PURE__*/ jsx("span", {
66
+ className: `${classBase}-value`,
67
+ children: value
68
+ }),
69
+ selectedCount > 0 ? /*#__PURE__*/ jsx("span", {
70
+ className: clsx(`${classBase}-label`, `${classBase}-selected`),
71
+ children: `${selectedCount.toLocaleString()} selected`
72
+ }) : null
73
+ ]
74
+ }) : null,
75
+ selectedCount > 0 ? /*#__PURE__*/ jsx("div", {
76
+ className: `${classBase}-statsPanel ${classBase}-selectionActions`,
77
+ children: children
78
+ }) : null,
79
+ tooltrayActions ? /*#__PURE__*/ jsx("div", {
80
+ className: `${classBase}-statsPanel ${classBase}-tooltray`,
81
+ children: /*#__PURE__*/ jsx("span", {
82
+ className: `${classBase}-actions`,
83
+ children: tooltrayActions
84
+ })
85
+ }) : null
86
+ ]
87
+ });
88
+ };
89
+ export { DataSourceStats };
@@ -0,0 +1,48 @@
1
+ import { formatDate } from "@vuu-ui/vuu-utils";
2
+ import { useCallback, useMemo, useState } from "react";
3
+ const timeFormatter = formatDate({
4
+ time: "hh:mm:ss"
5
+ });
6
+ const formatTime = (ts)=>{
7
+ if ("number" == typeof ts) return timeFormatter(new Date(ts));
8
+ };
9
+ const useDatasourceStats = ({ dataSource })=>{
10
+ const [selectedCount, setSelectedCount] = useState(0);
11
+ const [range, setRange] = useState(dataSource.range);
12
+ const [size, setSize] = useState(dataSource.size);
13
+ const [freezeTime, setFreezeTime] = useState(formatTime(dataSource.freezeTimestamp));
14
+ const handleFreeze = useCallback((isFrozen, freezeTimestamp)=>{
15
+ isFrozen ? setFreezeTime(formatTime(freezeTimestamp)) : setFreezeTime(void 0);
16
+ }, []);
17
+ const handleRowSelection = useCallback((count)=>{
18
+ setSelectedCount(count);
19
+ }, []);
20
+ const handleSize = useCallback((size)=>{
21
+ setSize(size);
22
+ }, []);
23
+ useMemo(()=>{
24
+ setSize(dataSource.size);
25
+ dataSource.on("resize", handleSize);
26
+ dataSource.on("range", setRange);
27
+ dataSource.on("freeze", handleFreeze);
28
+ dataSource.on("row-selection", handleRowSelection);
29
+ return ()=>{
30
+ dataSource.removeListener("resize", handleSize);
31
+ dataSource.removeListener("range", setRange);
32
+ dataSource.removeListener("freeze", handleFreeze);
33
+ dataSource.removeListener("row-selection", handleRowSelection);
34
+ };
35
+ }, [
36
+ dataSource,
37
+ handleFreeze,
38
+ handleRowSelection,
39
+ handleSize
40
+ ]);
41
+ return {
42
+ range,
43
+ selectedCount,
44
+ size,
45
+ freezeTime
46
+ };
47
+ };
48
+ export { useDatasourceStats };