@portnet/ui 6.0.2 → 6.0.3

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 (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +81 -86
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +155 -59
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +37 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +2 -3
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +152 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  Object.defineProperty(exports, "createLocalStorageAdapter", {
7
7
  enumerable: true,
8
- get: function get() {
9
- return _createLocalStorageAdapter["default"];
8
+ get: function () {
9
+ return _createLocalStorageAdapter.default;
10
10
  }
11
11
  });
12
12
  Object.defineProperty(exports, "createMemoryAdapter", {
13
13
  enumerable: true,
14
- get: function get() {
15
- return _createMemoryAdapter["default"];
14
+ get: function () {
15
+ return _createMemoryAdapter.default;
16
16
  }
17
17
  });
18
18
  var _createLocalStorageAdapter = _interopRequireDefault(require("./createLocalStorageAdapter"));
19
19
  var _createMemoryAdapter = _interopRequireDefault(require("./createMemoryAdapter"));
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
20
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_createLocalStorageAdapter","_interopRequireDefault","require","_createMemoryAdapter","obj","__esModule"],"sources":["../../../../src/lib/v2/personalization/adapters/index.ts"],"sourcesContent":["/**\r\n * adapters — Portnet UI v2 · personalization\r\n *\r\n * Built-in storage adapters. A future remote adapter\r\n * (createRestPersonalizationAdapter) drops in here and is swappable with\r\n * zero changes to the store, the slices, the hooks, or the components.\r\n */\r\n\r\nexport { default as createLocalStorageAdapter } from \"./createLocalStorageAdapter\";\r\nexport { default as createMemoryAdapter } from \"./createMemoryAdapter\";\r\n"],"mappings":";;;;;;;;;;;;;;;;;AAQA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAuE,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_createLocalStorageAdapter","_interopRequireDefault","require","_createMemoryAdapter","e","__esModule","default"],"sources":["../../../../src/lib/v2/personalization/adapters/index.ts"],"sourcesContent":["/**\r\n * adapters — Portnet UI v2 · personalization\r\n *\r\n * Built-in storage adapters. A future remote adapter\r\n * (createRestPersonalizationAdapter) drops in here and is swappable with\r\n * zero changes to the store, the slices, the hooks, or the components.\r\n */\r\n\r\nexport { default as createLocalStorageAdapter } from \"./createLocalStorageAdapter\";\r\nexport { default as createMemoryAdapter } from \"./createMemoryAdapter\";\r\n"],"mappings":";;;;;;;;;;;;;;;;;AAQA,IAAAA,0BAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAuE,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
@@ -9,12 +9,8 @@ exports.useIsFavorite = useIsFavorite;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _schema = require("../schema");
11
11
  var _personalizationContext = require("../personalizationContext");
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
15
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
17
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } /**
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ /**
18
14
  * favorites — Portnet UI v2 · personalization capability
19
15
  *
20
16
  * The Favorites framework. Self-registers the "favorites" capability with
@@ -36,12 +32,13 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
36
32
  * boolean per-row selector lets each grid cell re-render only when its own
37
33
  * membership flips.
38
34
  */
35
+
39
36
  /** The favorites capability payload: favorites arrays keyed by resourceKey. */
40
37
 
41
- var FAVORITES_CAPABILITY_ID = exports.FAVORITES_CAPABILITY_ID = "favorites";
42
- var SCHEMA_VERSION = 1;
43
- var EMPTY_LIST = Object.freeze([]);
44
- var EMPTY_MAP = Object.freeze({});
38
+ const FAVORITES_CAPABILITY_ID = exports.FAVORITES_CAPABILITY_ID = "favorites";
39
+ const SCHEMA_VERSION = 1;
40
+ const EMPTY_LIST = Object.freeze([]);
41
+ const EMPTY_MAP = Object.freeze({});
45
42
 
46
43
  /* Register at import time — the foundation reads this at hydration. */
47
44
  (0, _schema.registerCapability)({
@@ -51,50 +48,41 @@ var EMPTY_MAP = Object.freeze({});
51
48
  // { [resourceKey]: FavoriteRef[] }
52
49
  migrate: function migrateFavorites(_fromVersion, payload) {
53
50
  // v1 is the initial schema. Defensive normalisation only.
54
- return payload && _typeof(payload) === "object" ? payload : {};
51
+ return payload && typeof payload === "object" ? payload : {};
55
52
  }
56
53
  });
57
54
 
58
55
  /* ── pure, resourceKey-scoped state helpers (structural sharing) ────── */
59
56
 
60
57
  function listFor(map, resourceKey) {
61
- var list = map ? map[resourceKey] : undefined;
58
+ const list = map ? map[resourceKey] : undefined;
62
59
  return Array.isArray(list) ? list : EMPTY_LIST;
63
60
  }
64
61
  function hasRef(map, resourceKey, id) {
65
- var list = listFor(map, resourceKey);
66
- var _iterator = _createForOfIteratorHelper(list),
67
- _step;
68
- try {
69
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
70
- var ref = _step.value;
71
- if (ref.id === id) return true;
72
- }
73
- } catch (err) {
74
- _iterator.e(err);
75
- } finally {
76
- _iterator.f();
62
+ const list = listFor(map, resourceKey);
63
+ for (const ref of list) {
64
+ if (ref.id === id) return true;
77
65
  }
78
66
  return false;
79
67
  }
80
68
  function addRef(map, resourceKey, id) {
81
- var base = map || EMPTY_MAP;
69
+ const base = map || EMPTY_MAP;
82
70
  if (hasRef(base, resourceKey, id)) return base; // no-op → store short-circuits
83
- var nextList = listFor(base, resourceKey).concat([{
71
+ const nextList = listFor(base, resourceKey).concat([{
84
72
  id: id,
85
73
  addedAt: new Date().toISOString()
86
74
  }]);
87
- var next = Object.assign({}, base);
75
+ const next = Object.assign({}, base);
88
76
  next[resourceKey] = nextList;
89
77
  return next;
90
78
  }
91
79
  function removeRef(map, resourceKey, id) {
92
- var base = map || EMPTY_MAP;
80
+ const base = map || EMPTY_MAP;
93
81
  if (!hasRef(base, resourceKey, id)) return base; // no-op
94
- var nextList = listFor(base, resourceKey).filter(function keep(r) {
82
+ const nextList = listFor(base, resourceKey).filter(function keep(r) {
95
83
  return r.id !== id;
96
84
  });
97
- var next = Object.assign({}, base);
85
+ const next = Object.assign({}, base);
98
86
  if (nextList.length === 0) delete next[resourceKey]; // keep the map tidy
99
87
  else next[resourceKey] = nextList;
100
88
  return next;
@@ -103,9 +91,9 @@ function toggleRef(map, resourceKey, id) {
103
91
  return hasRef(map, resourceKey, id) ? removeRef(map, resourceKey, id) : addRef(map, resourceKey, id);
104
92
  }
105
93
  function clearRefs(map, resourceKey) {
106
- var base = map || EMPTY_MAP;
94
+ const base = map || EMPTY_MAP;
107
95
  if (!base[resourceKey]) return base;
108
- var next = Object.assign({}, base);
96
+ const next = Object.assign({}, base);
109
97
  delete next[resourceKey];
110
98
  return next;
111
99
  }
@@ -121,52 +109,41 @@ function useEnsureFavorites(store) {
121
109
  * useFavorites(resourceKey) — list, membership and actions for one resource.
122
110
  */
123
111
  function useFavorites(resourceKey) {
124
- var store = (0, _personalizationContext.usePersonalizationStore)();
112
+ const store = (0, _personalizationContext.usePersonalizationStore)();
125
113
  useEnsureFavorites(store);
126
- var selectList = React.useCallback(function selectList(snapshot) {
127
- var slice = snapshot[FAVORITES_CAPABILITY_ID];
114
+ const selectList = React.useCallback(function selectList(snapshot) {
115
+ const slice = snapshot[FAVORITES_CAPABILITY_ID];
128
116
  return slice ? listFor(slice, resourceKey) : EMPTY_LIST;
129
117
  }, [resourceKey]);
130
- var items = (0, _personalizationContext.useStoreSelector)(selectList);
118
+ const items = (0, _personalizationContext.useStoreSelector)(selectList);
131
119
 
132
120
  // Stable while `items` is stable (structural sharing) → O(1) membership.
133
- var ids = React.useMemo(function buildIdSet() {
134
- var set = new Set();
135
- var _iterator2 = _createForOfIteratorHelper(items),
136
- _step2;
137
- try {
138
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
139
- var ref = _step2.value;
140
- set.add(ref.id);
141
- }
142
- } catch (err) {
143
- _iterator2.e(err);
144
- } finally {
145
- _iterator2.f();
146
- }
121
+ const ids = React.useMemo(function buildIdSet() {
122
+ const set = new Set();
123
+ for (const ref of items) set.add(ref.id);
147
124
  return set;
148
125
  }, [items]);
149
- var add = React.useCallback(function add(id) {
126
+ const add = React.useCallback(function add(id) {
150
127
  store.write(FAVORITES_CAPABILITY_ID, function (prev) {
151
128
  return addRef(prev, resourceKey, id);
152
129
  });
153
130
  }, [store, resourceKey]);
154
- var remove = React.useCallback(function remove(id) {
131
+ const remove = React.useCallback(function remove(id) {
155
132
  store.write(FAVORITES_CAPABILITY_ID, function (prev) {
156
133
  return removeRef(prev, resourceKey, id);
157
134
  });
158
135
  }, [store, resourceKey]);
159
- var toggle = React.useCallback(function toggle(id) {
136
+ const toggle = React.useCallback(function toggle(id) {
160
137
  store.write(FAVORITES_CAPABILITY_ID, function (prev) {
161
138
  return toggleRef(prev, resourceKey, id);
162
139
  });
163
140
  }, [store, resourceKey]);
164
- var clear = React.useCallback(function clear() {
141
+ const clear = React.useCallback(function clear() {
165
142
  store.write(FAVORITES_CAPABILITY_ID, function (prev) {
166
143
  return clearRefs(prev, resourceKey);
167
144
  });
168
145
  }, [store, resourceKey]);
169
- var isFavorite = React.useCallback(function isFavorite(id) {
146
+ const isFavorite = React.useCallback(function isFavorite(id) {
170
147
  return ids.has(id);
171
148
  }, [ids]);
172
149
  return React.useMemo(function value() {
@@ -189,24 +166,24 @@ function useFavorites(resourceKey) {
189
166
  * favorite column consumes (Batch 5).
190
167
  */
191
168
  function useIsFavorite(resourceKey, id) {
192
- var store = (0, _personalizationContext.usePersonalizationStore)();
169
+ const store = (0, _personalizationContext.usePersonalizationStore)();
193
170
  useEnsureFavorites(store);
194
- var selectIsFavorite = React.useCallback(function selectIsFavorite(snapshot) {
195
- var slice = snapshot[FAVORITES_CAPABILITY_ID];
171
+ const selectIsFavorite = React.useCallback(function selectIsFavorite(snapshot) {
172
+ const slice = snapshot[FAVORITES_CAPABILITY_ID];
196
173
  return slice ? hasRef(slice, resourceKey, id) : false;
197
174
  }, [resourceKey, id]);
198
- var isFavorite = (0, _personalizationContext.useStoreSelector)(selectIsFavorite);
199
- var toggle = React.useCallback(function toggle() {
175
+ const isFavorite = (0, _personalizationContext.useStoreSelector)(selectIsFavorite);
176
+ const toggle = React.useCallback(function toggle() {
200
177
  store.write(FAVORITES_CAPABILITY_ID, function (prev) {
201
178
  return toggleRef(prev, resourceKey, id);
202
179
  });
203
180
  }, [store, resourceKey, id]);
204
- var add = React.useCallback(function add() {
181
+ const add = React.useCallback(function add() {
205
182
  store.write(FAVORITES_CAPABILITY_ID, function (prev) {
206
183
  return addRef(prev, resourceKey, id);
207
184
  });
208
185
  }, [store, resourceKey, id]);
209
- var remove = React.useCallback(function remove() {
186
+ const remove = React.useCallback(function remove() {
210
187
  store.write(FAVORITES_CAPABILITY_ID, function (prev) {
211
188
  return removeRef(prev, resourceKey, id);
212
189
  });
@@ -1 +1 @@
1
- {"version":3,"file":"favorites.js","names":["React","_interopRequireWildcard","require","_schema","_personalizationContext","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","FAVORITES_CAPABILITY_ID","exports","SCHEMA_VERSION","EMPTY_LIST","freeze","EMPTY_MAP","registerCapability","id","schemaVersion","defaultState","migrate","migrateFavorites","_fromVersion","payload","listFor","map","resourceKey","list","undefined","hasRef","_iterator","_step","ref","addRef","base","nextList","concat","addedAt","Date","toISOString","assign","removeRef","filter","keep","r","toggleRef","clearRefs","useEnsureFavorites","store","useEffect","ensure","ensureCapability","useFavorites","usePersonalizationStore","selectList","useCallback","snapshot","items","useStoreSelector","ids","useMemo","buildIdSet","Set","_iterator2","_step2","add","write","prev","remove","toggle","clear","isFavorite","count","useIsFavorite","selectIsFavorite"],"sources":["../../../../src/lib/v2/personalization/capabilities/favorites.ts"],"sourcesContent":["/**\r\n * favorites — Portnet UI v2 · personalization capability\r\n *\r\n * The Favorites framework. Self-registers the \"favorites\" capability with\r\n * the schema registry at import time, so the capability-agnostic\r\n * foundation discovers its schemaVersion / defaultState / migrate without\r\n * any hardcoding.\r\n *\r\n * State model (the capability payload):\r\n * { [resourceKey]: FavoriteRef[] } FavoriteRef = { id, addedAt }\r\n *\r\n * `resourceKey` namespaces favorites per list/entity type (e.g.\r\n * \"ti:list\", \"declarations:list\"), so one user's favorites across\r\n * different screens never collide. `id` is the business row id.\r\n *\r\n * Performance: the pure helpers below rebuild only the touched\r\n * resourceKey's array and shallow-copy the map, so the store's structural\r\n * sharing keeps every OTHER resource's list referentially stable —\r\n * toggling a favorite on screen B does not re-render screen A, and a\r\n * boolean per-row selector lets each grid cell re-render only when its own\r\n * membership flips.\r\n */\r\n\r\nimport * as React from \"react\";\r\n\r\nimport { registerCapability } from \"../schema\";\r\nimport {\r\n usePersonalizationStore,\r\n useStoreSelector,\r\n} from \"../personalizationContext\";\r\nimport type {\r\n PersonalizationSnapshot,\r\n PersonalizationStore,\r\n} from \"../createPersonalizationStore\";\r\nimport type { FavoriteRef } from \"../types\";\r\nimport type { RowId } from \"../../types/common\";\r\n\r\n/** The favorites capability payload: favorites arrays keyed by resourceKey. */\r\ntype FavoritesState = Record<string, FavoriteRef[]>;\r\n\r\nexport const FAVORITES_CAPABILITY_ID = \"favorites\";\r\nconst SCHEMA_VERSION = 1;\r\n\r\nconst EMPTY_LIST: readonly FavoriteRef[] = Object.freeze([]);\r\nconst EMPTY_MAP: FavoritesState = Object.freeze({});\r\n\r\n/* Register at import time — the foundation reads this at hydration. */\r\nregisterCapability({\r\n id: FAVORITES_CAPABILITY_ID,\r\n schemaVersion: SCHEMA_VERSION,\r\n defaultState: EMPTY_MAP, // { [resourceKey]: FavoriteRef[] }\r\n migrate: function migrateFavorites(\r\n _fromVersion: number,\r\n payload: unknown\r\n ): unknown {\r\n // v1 is the initial schema. Defensive normalisation only.\r\n return payload && typeof payload === \"object\" ? payload : {};\r\n },\r\n});\r\n\r\n/* ── pure, resourceKey-scoped state helpers (structural sharing) ────── */\r\n\r\nfunction listFor(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string\r\n): readonly FavoriteRef[] {\r\n const list = map ? map[resourceKey] : undefined;\r\n return Array.isArray(list) ? list : EMPTY_LIST;\r\n}\r\n\r\nfunction hasRef(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string,\r\n id: RowId\r\n): boolean {\r\n const list = listFor(map, resourceKey);\r\n for (const ref of list) {\r\n if (ref.id === id) return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction addRef(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string,\r\n id: RowId\r\n): FavoritesState {\r\n const base = map || EMPTY_MAP;\r\n if (hasRef(base, resourceKey, id)) return base; // no-op → store short-circuits\r\n const nextList = listFor(base, resourceKey).concat([\r\n { id: id, addedAt: new Date().toISOString() },\r\n ]);\r\n const next: FavoritesState = Object.assign({}, base);\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction removeRef(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string,\r\n id: RowId\r\n): FavoritesState {\r\n const base = map || EMPTY_MAP;\r\n if (!hasRef(base, resourceKey, id)) return base; // no-op\r\n const nextList = listFor(base, resourceKey).filter(function keep(r) {\r\n return r.id !== id;\r\n });\r\n const next: FavoritesState = Object.assign({}, base);\r\n if (nextList.length === 0) delete next[resourceKey]; // keep the map tidy\r\n else next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction toggleRef(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string,\r\n id: RowId\r\n): FavoritesState {\r\n return hasRef(map, resourceKey, id)\r\n ? removeRef(map, resourceKey, id)\r\n : addRef(map, resourceKey, id);\r\n}\r\n\r\nfunction clearRefs(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string\r\n): FavoritesState {\r\n const base = map || EMPTY_MAP;\r\n if (!base[resourceKey]) return base;\r\n const next: FavoritesState = Object.assign({}, base);\r\n delete next[resourceKey];\r\n return next;\r\n}\r\n\r\n/* ── hooks ──────────────────────────────────────────────────────────── */\r\n\r\nfunction useEnsureFavorites(store: PersonalizationStore): void {\r\n React.useEffect(\r\n function ensure() {\r\n store.ensureCapability(FAVORITES_CAPABILITY_ID);\r\n },\r\n [store]\r\n );\r\n}\r\n\r\nexport interface UseFavoritesResult {\r\n items: readonly FavoriteRef[];\r\n ids: Set<RowId>;\r\n count: number;\r\n isFavorite: (id: RowId) => boolean;\r\n add: (id: RowId) => void;\r\n remove: (id: RowId) => void;\r\n toggle: (id: RowId) => void;\r\n clear: () => void;\r\n}\r\n\r\n/**\r\n * useFavorites(resourceKey) — list, membership and actions for one resource.\r\n */\r\nexport function useFavorites(resourceKey: string): UseFavoritesResult {\r\n const store = usePersonalizationStore();\r\n useEnsureFavorites(store);\r\n\r\n const selectList = React.useCallback(\r\n function selectList(snapshot: PersonalizationSnapshot): readonly FavoriteRef[] {\r\n const slice = snapshot[FAVORITES_CAPABILITY_ID] as\r\n | FavoritesState\r\n | undefined;\r\n return slice ? listFor(slice, resourceKey) : EMPTY_LIST;\r\n },\r\n [resourceKey]\r\n );\r\n const items = useStoreSelector(selectList);\r\n\r\n // Stable while `items` is stable (structural sharing) → O(1) membership.\r\n const ids = React.useMemo(\r\n function buildIdSet(): Set<RowId> {\r\n const set = new Set<RowId>();\r\n for (const ref of items) set.add(ref.id);\r\n return set;\r\n },\r\n [items]\r\n );\r\n\r\n const add = React.useCallback(\r\n function add(id: RowId): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return addRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey]\r\n );\r\n const remove = React.useCallback(\r\n function remove(id: RowId): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return removeRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey]\r\n );\r\n const toggle = React.useCallback(\r\n function toggle(id: RowId): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return toggleRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey]\r\n );\r\n const clear = React.useCallback(\r\n function clear(): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return clearRefs(prev, resourceKey);\r\n });\r\n },\r\n [store, resourceKey]\r\n );\r\n const isFavorite = React.useCallback(\r\n function isFavorite(id: RowId): boolean {\r\n return ids.has(id);\r\n },\r\n [ids]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseFavoritesResult {\r\n return {\r\n items: items,\r\n ids: ids,\r\n count: items.length,\r\n isFavorite: isFavorite,\r\n add: add,\r\n remove: remove,\r\n toggle: toggle,\r\n clear: clear,\r\n };\r\n },\r\n [items, ids, isFavorite, add, remove, toggle, clear]\r\n );\r\n}\r\n\r\nexport interface UseIsFavoriteResult {\r\n isFavorite: boolean;\r\n toggle: () => void;\r\n add: () => void;\r\n remove: () => void;\r\n}\r\n\r\n/**\r\n * useIsFavorite(resourceKey, id) — focused per-row hook. Returns a boolean\r\n * (Object.is bail-out: a row re-renders only when ITS membership flips)\r\n * plus a bound toggle/add/remove. This is the cell-level hook the DataGrid\r\n * favorite column consumes (Batch 5).\r\n */\r\nexport function useIsFavorite(\r\n resourceKey: string,\r\n id: RowId\r\n): UseIsFavoriteResult {\r\n const store = usePersonalizationStore();\r\n useEnsureFavorites(store);\r\n\r\n const selectIsFavorite = React.useCallback(\r\n function selectIsFavorite(snapshot: PersonalizationSnapshot): boolean {\r\n const slice = snapshot[FAVORITES_CAPABILITY_ID] as\r\n | FavoritesState\r\n | undefined;\r\n return slice ? hasRef(slice, resourceKey, id) : false;\r\n },\r\n [resourceKey, id]\r\n );\r\n const isFavorite = useStoreSelector(selectIsFavorite);\r\n\r\n const toggle = React.useCallback(\r\n function toggle(): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return toggleRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey, id]\r\n );\r\n const add = React.useCallback(\r\n function add(): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return addRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey, id]\r\n );\r\n const remove = React.useCallback(\r\n function remove(): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return removeRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey, id]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseIsFavoriteResult {\r\n return {\r\n isFavorite: isFavorite,\r\n toggle: toggle,\r\n add: add,\r\n remove: remove,\r\n };\r\n },\r\n [isFavorite, toggle, add, remove]\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"favorites.js","names":["React","_interopRequireWildcard","require","_schema","_personalizationContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FAVORITES_CAPABILITY_ID","exports","SCHEMA_VERSION","EMPTY_LIST","freeze","EMPTY_MAP","registerCapability","id","schemaVersion","defaultState","migrate","migrateFavorites","_fromVersion","payload","listFor","map","resourceKey","list","undefined","Array","isArray","hasRef","ref","addRef","base","nextList","concat","addedAt","Date","toISOString","next","assign","removeRef","filter","keep","length","toggleRef","clearRefs","useEnsureFavorites","store","useEffect","ensure","ensureCapability","useFavorites","usePersonalizationStore","selectList","useCallback","snapshot","slice","items","useStoreSelector","ids","useMemo","buildIdSet","Set","add","write","prev","remove","toggle","clear","isFavorite","value","count","useIsFavorite","selectIsFavorite"],"sources":["../../../../src/lib/v2/personalization/capabilities/favorites.ts"],"sourcesContent":["/**\r\n * favorites — Portnet UI v2 · personalization capability\r\n *\r\n * The Favorites framework. Self-registers the \"favorites\" capability with\r\n * the schema registry at import time, so the capability-agnostic\r\n * foundation discovers its schemaVersion / defaultState / migrate without\r\n * any hardcoding.\r\n *\r\n * State model (the capability payload):\r\n * { [resourceKey]: FavoriteRef[] } FavoriteRef = { id, addedAt }\r\n *\r\n * `resourceKey` namespaces favorites per list/entity type (e.g.\r\n * \"ti:list\", \"declarations:list\"), so one user's favorites across\r\n * different screens never collide. `id` is the business row id.\r\n *\r\n * Performance: the pure helpers below rebuild only the touched\r\n * resourceKey's array and shallow-copy the map, so the store's structural\r\n * sharing keeps every OTHER resource's list referentially stable —\r\n * toggling a favorite on screen B does not re-render screen A, and a\r\n * boolean per-row selector lets each grid cell re-render only when its own\r\n * membership flips.\r\n */\r\n\r\nimport * as React from \"react\";\r\n\r\nimport { registerCapability } from \"../schema\";\r\nimport {\r\n usePersonalizationStore,\r\n useStoreSelector,\r\n} from \"../personalizationContext\";\r\nimport type {\r\n PersonalizationSnapshot,\r\n PersonalizationStore,\r\n} from \"../createPersonalizationStore\";\r\nimport type { FavoriteRef } from \"../types\";\r\nimport type { RowId } from \"../../types/common\";\r\n\r\n/** The favorites capability payload: favorites arrays keyed by resourceKey. */\r\ntype FavoritesState = Record<string, FavoriteRef[]>;\r\n\r\nexport const FAVORITES_CAPABILITY_ID = \"favorites\";\r\nconst SCHEMA_VERSION = 1;\r\n\r\nconst EMPTY_LIST: readonly FavoriteRef[] = Object.freeze([]);\r\nconst EMPTY_MAP: FavoritesState = Object.freeze({});\r\n\r\n/* Register at import time — the foundation reads this at hydration. */\r\nregisterCapability({\r\n id: FAVORITES_CAPABILITY_ID,\r\n schemaVersion: SCHEMA_VERSION,\r\n defaultState: EMPTY_MAP, // { [resourceKey]: FavoriteRef[] }\r\n migrate: function migrateFavorites(\r\n _fromVersion: number,\r\n payload: unknown\r\n ): unknown {\r\n // v1 is the initial schema. Defensive normalisation only.\r\n return payload && typeof payload === \"object\" ? payload : {};\r\n },\r\n});\r\n\r\n/* ── pure, resourceKey-scoped state helpers (structural sharing) ────── */\r\n\r\nfunction listFor(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string\r\n): readonly FavoriteRef[] {\r\n const list = map ? map[resourceKey] : undefined;\r\n return Array.isArray(list) ? list : EMPTY_LIST;\r\n}\r\n\r\nfunction hasRef(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string,\r\n id: RowId\r\n): boolean {\r\n const list = listFor(map, resourceKey);\r\n for (const ref of list) {\r\n if (ref.id === id) return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction addRef(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string,\r\n id: RowId\r\n): FavoritesState {\r\n const base = map || EMPTY_MAP;\r\n if (hasRef(base, resourceKey, id)) return base; // no-op → store short-circuits\r\n const nextList = listFor(base, resourceKey).concat([\r\n { id: id, addedAt: new Date().toISOString() },\r\n ]);\r\n const next: FavoritesState = Object.assign({}, base);\r\n next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction removeRef(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string,\r\n id: RowId\r\n): FavoritesState {\r\n const base = map || EMPTY_MAP;\r\n if (!hasRef(base, resourceKey, id)) return base; // no-op\r\n const nextList = listFor(base, resourceKey).filter(function keep(r) {\r\n return r.id !== id;\r\n });\r\n const next: FavoritesState = Object.assign({}, base);\r\n if (nextList.length === 0) delete next[resourceKey]; // keep the map tidy\r\n else next[resourceKey] = nextList;\r\n return next;\r\n}\r\n\r\nfunction toggleRef(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string,\r\n id: RowId\r\n): FavoritesState {\r\n return hasRef(map, resourceKey, id)\r\n ? removeRef(map, resourceKey, id)\r\n : addRef(map, resourceKey, id);\r\n}\r\n\r\nfunction clearRefs(\r\n map: FavoritesState | null | undefined,\r\n resourceKey: string\r\n): FavoritesState {\r\n const base = map || EMPTY_MAP;\r\n if (!base[resourceKey]) return base;\r\n const next: FavoritesState = Object.assign({}, base);\r\n delete next[resourceKey];\r\n return next;\r\n}\r\n\r\n/* ── hooks ──────────────────────────────────────────────────────────── */\r\n\r\nfunction useEnsureFavorites(store: PersonalizationStore): void {\r\n React.useEffect(\r\n function ensure() {\r\n store.ensureCapability(FAVORITES_CAPABILITY_ID);\r\n },\r\n [store]\r\n );\r\n}\r\n\r\nexport interface UseFavoritesResult {\r\n items: readonly FavoriteRef[];\r\n ids: Set<RowId>;\r\n count: number;\r\n isFavorite: (id: RowId) => boolean;\r\n add: (id: RowId) => void;\r\n remove: (id: RowId) => void;\r\n toggle: (id: RowId) => void;\r\n clear: () => void;\r\n}\r\n\r\n/**\r\n * useFavorites(resourceKey) — list, membership and actions for one resource.\r\n */\r\nexport function useFavorites(resourceKey: string): UseFavoritesResult {\r\n const store = usePersonalizationStore();\r\n useEnsureFavorites(store);\r\n\r\n const selectList = React.useCallback(\r\n function selectList(snapshot: PersonalizationSnapshot): readonly FavoriteRef[] {\r\n const slice = snapshot[FAVORITES_CAPABILITY_ID] as\r\n | FavoritesState\r\n | undefined;\r\n return slice ? listFor(slice, resourceKey) : EMPTY_LIST;\r\n },\r\n [resourceKey]\r\n );\r\n const items = useStoreSelector(selectList);\r\n\r\n // Stable while `items` is stable (structural sharing) → O(1) membership.\r\n const ids = React.useMemo(\r\n function buildIdSet(): Set<RowId> {\r\n const set = new Set<RowId>();\r\n for (const ref of items) set.add(ref.id);\r\n return set;\r\n },\r\n [items]\r\n );\r\n\r\n const add = React.useCallback(\r\n function add(id: RowId): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return addRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey]\r\n );\r\n const remove = React.useCallback(\r\n function remove(id: RowId): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return removeRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey]\r\n );\r\n const toggle = React.useCallback(\r\n function toggle(id: RowId): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return toggleRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey]\r\n );\r\n const clear = React.useCallback(\r\n function clear(): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return clearRefs(prev, resourceKey);\r\n });\r\n },\r\n [store, resourceKey]\r\n );\r\n const isFavorite = React.useCallback(\r\n function isFavorite(id: RowId): boolean {\r\n return ids.has(id);\r\n },\r\n [ids]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseFavoritesResult {\r\n return {\r\n items: items,\r\n ids: ids,\r\n count: items.length,\r\n isFavorite: isFavorite,\r\n add: add,\r\n remove: remove,\r\n toggle: toggle,\r\n clear: clear,\r\n };\r\n },\r\n [items, ids, isFavorite, add, remove, toggle, clear]\r\n );\r\n}\r\n\r\nexport interface UseIsFavoriteResult {\r\n isFavorite: boolean;\r\n toggle: () => void;\r\n add: () => void;\r\n remove: () => void;\r\n}\r\n\r\n/**\r\n * useIsFavorite(resourceKey, id) — focused per-row hook. Returns a boolean\r\n * (Object.is bail-out: a row re-renders only when ITS membership flips)\r\n * plus a bound toggle/add/remove. This is the cell-level hook the DataGrid\r\n * favorite column consumes (Batch 5).\r\n */\r\nexport function useIsFavorite(\r\n resourceKey: string,\r\n id: RowId\r\n): UseIsFavoriteResult {\r\n const store = usePersonalizationStore();\r\n useEnsureFavorites(store);\r\n\r\n const selectIsFavorite = React.useCallback(\r\n function selectIsFavorite(snapshot: PersonalizationSnapshot): boolean {\r\n const slice = snapshot[FAVORITES_CAPABILITY_ID] as\r\n | FavoritesState\r\n | undefined;\r\n return slice ? hasRef(slice, resourceKey, id) : false;\r\n },\r\n [resourceKey, id]\r\n );\r\n const isFavorite = useStoreSelector(selectIsFavorite);\r\n\r\n const toggle = React.useCallback(\r\n function toggle(): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return toggleRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey, id]\r\n );\r\n const add = React.useCallback(\r\n function add(): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return addRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey, id]\r\n );\r\n const remove = React.useCallback(\r\n function remove(): void {\r\n store.write<FavoritesState>(FAVORITES_CAPABILITY_ID, function (prev) {\r\n return removeRef(prev, resourceKey, id);\r\n });\r\n },\r\n [store, resourceKey, id]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseIsFavoriteResult {\r\n return {\r\n isFavorite: isFavorite,\r\n toggle: toggle,\r\n add: add,\r\n remove: remove,\r\n };\r\n },\r\n [isFavorite, toggle, add, remove]\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
@@ -10,11 +9,8 @@ exports.sortRowsByFavorites = sortRowsByFavorites;
10
9
  exports.useFavoritesView = useFavoritesView;
11
10
  var React = _interopRequireWildcard(require("react"));
12
11
  var _favorites = require("./favorites");
13
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
16
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } /**
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ /**
18
14
  * favoritesView — Portnet UI v2 · personalization
19
15
  *
20
16
  * Grid-agnostic favorites VIEW logic: filter (all / favorites-only) and
@@ -26,16 +22,17 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
26
22
  * only reorder/subset the rows array the host already has — they never
27
23
  * fetch or mutate.
28
24
  */
29
- var FAVORITES_FILTER = exports.FAVORITES_FILTER = Object.freeze({
25
+
26
+ const FAVORITES_FILTER = exports.FAVORITES_FILTER = Object.freeze({
30
27
  ALL: "all",
31
28
  ONLY: "only"
32
29
  });
33
- var FAVORITES_SORT = exports.FAVORITES_SORT = Object.freeze({
30
+ const FAVORITES_SORT = exports.FAVORITES_SORT = Object.freeze({
34
31
  NONE: "none",
35
32
  FIRST: "first",
36
33
  LAST: "last"
37
34
  });
38
- var EMPTY_ROWS = Object.freeze([]);
35
+ const EMPTY_ROWS = Object.freeze([]);
39
36
  function toIdSet(ids) {
40
37
  return ids instanceof Set ? ids : new Set(ids || []);
41
38
  }
@@ -52,9 +49,9 @@ function resolveGetRowId(getRowId) {
52
49
  function filterRowsByFavorites(rows, favoriteIds, getRowId, mode) {
53
50
  if (mode !== FAVORITES_FILTER.ONLY || !Array.isArray(rows)) return rows;
54
51
  // Array.isArray widened `rows` to any[]; re-establish the element type.
55
- var source = rows;
56
- var ids = toIdSet(favoriteIds);
57
- var getId = resolveGetRowId(getRowId);
52
+ const source = rows;
53
+ const ids = toIdSet(favoriteIds);
54
+ const getId = resolveGetRowId(getRowId);
58
55
  return source.filter(function keepFavorite(r) {
59
56
  return ids.has(getId(r));
60
57
  });
@@ -70,22 +67,13 @@ function sortRowsByFavorites(rows, favoriteIds, getRowId, placement) {
70
67
  return rows;
71
68
  }
72
69
  // Array.isArray widened `rows` to any[]; re-establish the element type.
73
- var source = rows;
74
- var ids = toIdSet(favoriteIds);
75
- var getId = resolveGetRowId(getRowId);
76
- var fav = [];
77
- var rest = [];
78
- var _iterator = _createForOfIteratorHelper(source),
79
- _step;
80
- try {
81
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
82
- var row = _step.value;
83
- if (ids.has(getId(row))) fav.push(row);else rest.push(row);
84
- }
85
- } catch (err) {
86
- _iterator.e(err);
87
- } finally {
88
- _iterator.f();
70
+ const source = rows;
71
+ const ids = toIdSet(favoriteIds);
72
+ const getId = resolveGetRowId(getRowId);
73
+ const fav = [];
74
+ const rest = [];
75
+ for (const row of source) {
76
+ if (ids.has(getId(row))) fav.push(row);else rest.push(row);
89
77
  }
90
78
  if (fav.length === 0 || rest.length === 0) return source; // nothing to reorder
91
79
  return placement === FAVORITES_SORT.FIRST ? fav.concat(rest) : rest.concat(fav);
@@ -98,15 +86,15 @@ function sortRowsByFavorites(rows, favoriteIds, getRowId, placement) {
98
86
  * reference is returned unchanged.
99
87
  */
100
88
  function useFavoritesView(resourceKey, rows, options) {
101
- var opts = options || {};
102
- var getRowId = opts.getRowId;
103
- var filterMode = opts.filterMode || FAVORITES_FILTER.ALL;
104
- var sortPlacement = opts.sortPlacement || FAVORITES_SORT.NONE;
105
- var fav = (0, _favorites.useFavorites)(resourceKey);
106
- var ids = fav.ids;
107
- var processed = React.useMemo(function compute() {
108
- var base = Array.isArray(rows) ? rows : EMPTY_ROWS;
109
- var filtered = filterRowsByFavorites(base, ids, getRowId, filterMode);
89
+ const opts = options || {};
90
+ const getRowId = opts.getRowId;
91
+ const filterMode = opts.filterMode || FAVORITES_FILTER.ALL;
92
+ const sortPlacement = opts.sortPlacement || FAVORITES_SORT.NONE;
93
+ const fav = (0, _favorites.useFavorites)(resourceKey);
94
+ const ids = fav.ids;
95
+ const processed = React.useMemo(function compute() {
96
+ const base = Array.isArray(rows) ? rows : EMPTY_ROWS;
97
+ const filtered = filterRowsByFavorites(base, ids, getRowId, filterMode);
110
98
  return sortRowsByFavorites(filtered, ids, getRowId, sortPlacement);
111
99
  }, [rows, ids, getRowId, filterMode, sortPlacement]);
112
100
  return React.useMemo(function value() {
@@ -1 +1 @@
1
- {"version":3,"file":"favoritesView.js","names":["React","_interopRequireWildcard","require","_favorites","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","FAVORITES_FILTER","exports","freeze","ALL","ONLY","FAVORITES_SORT","NONE","FIRST","LAST","EMPTY_ROWS","toIdSet","ids","Set","resolveGetRowId","getRowId","defaultGetRowId","r","id","filterRowsByFavorites","rows","favoriteIds","mode","source","getId","filter","keepFavorite","sortRowsByFavorites","placement","fav","rest","_iterator","_step","row","push","concat","useFavoritesView","resourceKey","options","opts","filterMode","sortPlacement","useFavorites","processed","useMemo","compute","base","filtered","favoriteCount","count","isFiltering"],"sources":["../../../../src/lib/v2/personalization/capabilities/favoritesView.ts"],"sourcesContent":["/**\r\n * favoritesView — Portnet UI v2 · personalization\r\n *\r\n * Grid-agnostic favorites VIEW logic: filter (all / favorites-only) and\r\n * sort (favorites-first / favorites-last). Pure helpers usable anywhere,\r\n * plus a useFavoritesView hook that wires them to the favorites capability.\r\n *\r\n * The host owns its row id contract and the toggle UI (use FavoritesFilter\r\n * or any control bound to `filterMode` / `sortPlacement`). These helpers\r\n * only reorder/subset the rows array the host already has — they never\r\n * fetch or mutate.\r\n */\r\n\r\nimport * as React from \"react\";\r\n\r\nimport { useFavorites } from \"./favorites\";\r\nimport type { RowId } from \"../../types/common\";\r\n\r\nexport const FAVORITES_FILTER = Object.freeze({\r\n ALL: \"all\",\r\n ONLY: \"only\",\r\n} as const);\r\nexport const FAVORITES_SORT = Object.freeze({\r\n NONE: \"none\",\r\n FIRST: \"first\",\r\n LAST: \"last\",\r\n} as const);\r\n\r\nexport type FavoritesFilterMode =\r\n (typeof FAVORITES_FILTER)[keyof typeof FAVORITES_FILTER];\r\nexport type FavoritesSortPlacement =\r\n (typeof FAVORITES_SORT)[keyof typeof FAVORITES_SORT];\r\n\r\nconst EMPTY_ROWS: readonly never[] = Object.freeze([]);\r\n\r\nfunction toIdSet(\r\n ids: Set<RowId> | readonly RowId[] | null | undefined\r\n): Set<RowId> {\r\n return ids instanceof Set ? ids : new Set(ids || []);\r\n}\r\n\r\nfunction resolveGetRowId<T>(getRowId?: (row: T) => RowId): (row: T) => RowId {\r\n return typeof getRowId === \"function\"\r\n ? getRowId\r\n : function defaultGetRowId(r: T): RowId {\r\n return (r as { id: RowId }).id;\r\n };\r\n}\r\n\r\n/**\r\n * Keep only favorited rows when mode === \"only\"; otherwise return `rows`\r\n * unchanged (same reference).\r\n */\r\nexport function filterRowsByFavorites<T>(\r\n rows: readonly T[],\r\n favoriteIds: Set<RowId> | readonly RowId[] | null | undefined,\r\n getRowId: ((row: T) => RowId) | undefined,\r\n mode: FavoritesFilterMode\r\n): readonly T[] {\r\n if (mode !== FAVORITES_FILTER.ONLY || !Array.isArray(rows)) return rows;\r\n // Array.isArray widened `rows` to any[]; re-establish the element type.\r\n const source: readonly T[] = rows;\r\n const ids = toIdSet(favoriteIds);\r\n const getId = resolveGetRowId(getRowId);\r\n return source.filter(function keepFavorite(r) {\r\n return ids.has(getId(r));\r\n });\r\n}\r\n\r\n/**\r\n * Move favorited rows to the front (\"first\") or back (\"last\"), preserving\r\n * the host's existing order WITHIN each group (stable partition). Returns\r\n * `rows` unchanged when placement is \"none\" or when reordering is a no-op.\r\n */\r\nexport function sortRowsByFavorites<T>(\r\n rows: readonly T[],\r\n favoriteIds: Set<RowId> | readonly RowId[] | null | undefined,\r\n getRowId: ((row: T) => RowId) | undefined,\r\n placement: FavoritesSortPlacement\r\n): readonly T[] {\r\n if (\r\n (placement !== FAVORITES_SORT.FIRST && placement !== FAVORITES_SORT.LAST) ||\r\n !Array.isArray(rows)\r\n ) {\r\n return rows;\r\n }\r\n // Array.isArray widened `rows` to any[]; re-establish the element type.\r\n const source: readonly T[] = rows;\r\n const ids = toIdSet(favoriteIds);\r\n const getId = resolveGetRowId(getRowId);\r\n const fav: T[] = [];\r\n const rest: T[] = [];\r\n for (const row of source) {\r\n if (ids.has(getId(row))) fav.push(row);\r\n else rest.push(row);\r\n }\r\n if (fav.length === 0 || rest.length === 0) return source; // nothing to reorder\r\n return placement === FAVORITES_SORT.FIRST\r\n ? fav.concat(rest)\r\n : rest.concat(fav);\r\n}\r\n\r\nexport interface UseFavoritesViewOptions<T> {\r\n /** Should be stable; MUST match the grid's getRowId. Defaults to (r) => r.id. */\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n /** @default \"all\" */\r\n filterMode?: FavoritesFilterMode | undefined;\r\n /** @default \"none\" */\r\n sortPlacement?: FavoritesSortPlacement | undefined;\r\n}\r\n\r\nexport interface UseFavoritesViewResult<T> {\r\n rows: readonly T[];\r\n favoriteIds: Set<RowId>;\r\n favoriteCount: number;\r\n isFiltering: boolean;\r\n}\r\n\r\n/**\r\n * useFavoritesView(resourceKey, rows, options)\r\n *\r\n * Reads the favorites id Set for `resourceKey` and applies the favorites\r\n * filter + sort to `rows`. In the all/none case the original `rows`\r\n * reference is returned unchanged.\r\n */\r\nexport function useFavoritesView<T>(\r\n resourceKey: string,\r\n rows: readonly T[],\r\n options?: UseFavoritesViewOptions<T>\r\n): UseFavoritesViewResult<T> {\r\n const opts: UseFavoritesViewOptions<T> = options || {};\r\n const getRowId = opts.getRowId;\r\n const filterMode = opts.filterMode || FAVORITES_FILTER.ALL;\r\n const sortPlacement = opts.sortPlacement || FAVORITES_SORT.NONE;\r\n\r\n const fav = useFavorites(resourceKey);\r\n const ids = fav.ids;\r\n\r\n const processed = React.useMemo(\r\n function compute(): readonly T[] {\r\n const base: readonly T[] = Array.isArray(rows) ? rows : EMPTY_ROWS;\r\n const filtered = filterRowsByFavorites(base, ids, getRowId, filterMode);\r\n return sortRowsByFavorites(filtered, ids, getRowId, sortPlacement);\r\n },\r\n [rows, ids, getRowId, filterMode, sortPlacement]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseFavoritesViewResult<T> {\r\n return {\r\n rows: processed,\r\n favoriteIds: ids,\r\n favoriteCount: fav.count,\r\n isFiltering: filterMode === FAVORITES_FILTER.ONLY,\r\n };\r\n },\r\n [processed, ids, fav.count, filterMode]\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"favoritesView.js","names":["React","_interopRequireWildcard","require","_favorites","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FAVORITES_FILTER","exports","freeze","ALL","ONLY","FAVORITES_SORT","NONE","FIRST","LAST","EMPTY_ROWS","toIdSet","ids","Set","resolveGetRowId","getRowId","defaultGetRowId","id","filterRowsByFavorites","rows","favoriteIds","mode","Array","isArray","source","getId","filter","keepFavorite","sortRowsByFavorites","placement","fav","rest","row","push","length","concat","useFavoritesView","resourceKey","options","opts","filterMode","sortPlacement","useFavorites","processed","useMemo","compute","base","filtered","value","favoriteCount","count","isFiltering"],"sources":["../../../../src/lib/v2/personalization/capabilities/favoritesView.ts"],"sourcesContent":["/**\r\n * favoritesView — Portnet UI v2 · personalization\r\n *\r\n * Grid-agnostic favorites VIEW logic: filter (all / favorites-only) and\r\n * sort (favorites-first / favorites-last). Pure helpers usable anywhere,\r\n * plus a useFavoritesView hook that wires them to the favorites capability.\r\n *\r\n * The host owns its row id contract and the toggle UI (use FavoritesFilter\r\n * or any control bound to `filterMode` / `sortPlacement`). These helpers\r\n * only reorder/subset the rows array the host already has — they never\r\n * fetch or mutate.\r\n */\r\n\r\nimport * as React from \"react\";\r\n\r\nimport { useFavorites } from \"./favorites\";\r\nimport type { RowId } from \"../../types/common\";\r\n\r\nexport const FAVORITES_FILTER = Object.freeze({\r\n ALL: \"all\",\r\n ONLY: \"only\",\r\n} as const);\r\nexport const FAVORITES_SORT = Object.freeze({\r\n NONE: \"none\",\r\n FIRST: \"first\",\r\n LAST: \"last\",\r\n} as const);\r\n\r\nexport type FavoritesFilterMode =\r\n (typeof FAVORITES_FILTER)[keyof typeof FAVORITES_FILTER];\r\nexport type FavoritesSortPlacement =\r\n (typeof FAVORITES_SORT)[keyof typeof FAVORITES_SORT];\r\n\r\nconst EMPTY_ROWS: readonly never[] = Object.freeze([]);\r\n\r\nfunction toIdSet(\r\n ids: Set<RowId> | readonly RowId[] | null | undefined\r\n): Set<RowId> {\r\n return ids instanceof Set ? ids : new Set(ids || []);\r\n}\r\n\r\nfunction resolveGetRowId<T>(getRowId?: (row: T) => RowId): (row: T) => RowId {\r\n return typeof getRowId === \"function\"\r\n ? getRowId\r\n : function defaultGetRowId(r: T): RowId {\r\n return (r as { id: RowId }).id;\r\n };\r\n}\r\n\r\n/**\r\n * Keep only favorited rows when mode === \"only\"; otherwise return `rows`\r\n * unchanged (same reference).\r\n */\r\nexport function filterRowsByFavorites<T>(\r\n rows: readonly T[],\r\n favoriteIds: Set<RowId> | readonly RowId[] | null | undefined,\r\n getRowId: ((row: T) => RowId) | undefined,\r\n mode: FavoritesFilterMode\r\n): readonly T[] {\r\n if (mode !== FAVORITES_FILTER.ONLY || !Array.isArray(rows)) return rows;\r\n // Array.isArray widened `rows` to any[]; re-establish the element type.\r\n const source: readonly T[] = rows;\r\n const ids = toIdSet(favoriteIds);\r\n const getId = resolveGetRowId(getRowId);\r\n return source.filter(function keepFavorite(r) {\r\n return ids.has(getId(r));\r\n });\r\n}\r\n\r\n/**\r\n * Move favorited rows to the front (\"first\") or back (\"last\"), preserving\r\n * the host's existing order WITHIN each group (stable partition). Returns\r\n * `rows` unchanged when placement is \"none\" or when reordering is a no-op.\r\n */\r\nexport function sortRowsByFavorites<T>(\r\n rows: readonly T[],\r\n favoriteIds: Set<RowId> | readonly RowId[] | null | undefined,\r\n getRowId: ((row: T) => RowId) | undefined,\r\n placement: FavoritesSortPlacement\r\n): readonly T[] {\r\n if (\r\n (placement !== FAVORITES_SORT.FIRST && placement !== FAVORITES_SORT.LAST) ||\r\n !Array.isArray(rows)\r\n ) {\r\n return rows;\r\n }\r\n // Array.isArray widened `rows` to any[]; re-establish the element type.\r\n const source: readonly T[] = rows;\r\n const ids = toIdSet(favoriteIds);\r\n const getId = resolveGetRowId(getRowId);\r\n const fav: T[] = [];\r\n const rest: T[] = [];\r\n for (const row of source) {\r\n if (ids.has(getId(row))) fav.push(row);\r\n else rest.push(row);\r\n }\r\n if (fav.length === 0 || rest.length === 0) return source; // nothing to reorder\r\n return placement === FAVORITES_SORT.FIRST\r\n ? fav.concat(rest)\r\n : rest.concat(fav);\r\n}\r\n\r\nexport interface UseFavoritesViewOptions<T> {\r\n /** Should be stable; MUST match the grid's getRowId. Defaults to (r) => r.id. */\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n /** @default \"all\" */\r\n filterMode?: FavoritesFilterMode | undefined;\r\n /** @default \"none\" */\r\n sortPlacement?: FavoritesSortPlacement | undefined;\r\n}\r\n\r\nexport interface UseFavoritesViewResult<T> {\r\n rows: readonly T[];\r\n favoriteIds: Set<RowId>;\r\n favoriteCount: number;\r\n isFiltering: boolean;\r\n}\r\n\r\n/**\r\n * useFavoritesView(resourceKey, rows, options)\r\n *\r\n * Reads the favorites id Set for `resourceKey` and applies the favorites\r\n * filter + sort to `rows`. In the all/none case the original `rows`\r\n * reference is returned unchanged.\r\n */\r\nexport function useFavoritesView<T>(\r\n resourceKey: string,\r\n rows: readonly T[],\r\n options?: UseFavoritesViewOptions<T>\r\n): UseFavoritesViewResult<T> {\r\n const opts: UseFavoritesViewOptions<T> = options || {};\r\n const getRowId = opts.getRowId;\r\n const filterMode = opts.filterMode || FAVORITES_FILTER.ALL;\r\n const sortPlacement = opts.sortPlacement || FAVORITES_SORT.NONE;\r\n\r\n const fav = useFavorites(resourceKey);\r\n const ids = fav.ids;\r\n\r\n const processed = React.useMemo(\r\n function compute(): readonly T[] {\r\n const base: readonly T[] = Array.isArray(rows) ? rows : EMPTY_ROWS;\r\n const filtered = filterRowsByFavorites(base, ids, getRowId, filterMode);\r\n return sortRowsByFavorites(filtered, ids, getRowId, sortPlacement);\r\n },\r\n [rows, ids, getRowId, filterMode, sortPlacement]\r\n );\r\n\r\n return React.useMemo(\r\n function value(): UseFavoritesViewResult<T> {\r\n return {\r\n rows: processed,\r\n favoriteIds: ids,\r\n favoriteCount: fav.count,\r\n isFiltering: filterMode === FAVORITES_FILTER.ONLY,\r\n };\r\n },\r\n [processed, ids, fav.count, filterMode]\r\n );\r\n}\r\n"],"mappings":"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","ignoreList":[]}