@jmruthers/pace-core 0.5.190 → 0.5.193

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 (334) hide show
  1. package/dist/{AuthService-CbP_utw2.d.ts → AuthService-DjnJHDtC.d.ts} +1 -0
  2. package/dist/{DataTable-ON3IXISJ.js → DataTable-5FU7IESH.js} +7 -6
  3. package/dist/{DataTable-IVYljGJ6.d.ts → DataTable-Be6dH_dR.d.ts} +1 -1
  4. package/dist/{PublicPageProvider-C4uxosp6.d.ts → PublicPageProvider-C0Sm_e5k.d.ts} +4 -2
  5. package/dist/{UnifiedAuthProvider-BYA9qB-o.d.ts → UnifiedAuthProvider-185Ih4dj.d.ts} +2 -0
  6. package/dist/{UnifiedAuthProvider-X5NXANVI.js → UnifiedAuthProvider-RGJTDE2C.js} +3 -3
  7. package/dist/{api-I6UCQ5S6.js → api-N774RPUA.js} +2 -2
  8. package/dist/chunk-6C4YBBJM 5.js +628 -0
  9. package/dist/chunk-7D4SUZUM.js 2.map +1 -0
  10. package/dist/{chunk-73HSNNOQ.js → chunk-7EQTDTTJ.js} +47 -74
  11. package/dist/chunk-7EQTDTTJ.js 2.map +1 -0
  12. package/dist/chunk-7EQTDTTJ.js.map +1 -0
  13. package/dist/{chunk-J2XXC7R5.js → chunk-7FLMSG37.js} +409 -244
  14. package/dist/chunk-7FLMSG37.js 2.map +1 -0
  15. package/dist/chunk-7FLMSG37.js.map +1 -0
  16. package/dist/{chunk-NIU6J6OX.js → chunk-BC4IJKSL.js} +23 -32
  17. package/dist/chunk-BC4IJKSL.js.map +1 -0
  18. package/dist/{chunk-SDMHPX3X.js → chunk-E3SPN4VZ 5.js } +198 -53
  19. package/dist/chunk-E3SPN4VZ.js +12917 -0
  20. package/dist/{chunk-SDMHPX3X.js.map → chunk-E3SPN4VZ.js.map} +1 -1
  21. package/dist/chunk-E66EQZE6 5.js +37 -0
  22. package/dist/chunk-E66EQZE6.js 2.map +1 -0
  23. package/dist/{chunk-DZWK57KZ.js → chunk-G37KK66H.js} +1 -1
  24. package/dist/{chunk-DZWK57KZ.js.map → chunk-G37KK66H.js.map} +1 -1
  25. package/dist/{chunk-STYK4OH2.js → chunk-HWIIPPNI.js} +44 -225
  26. package/dist/chunk-HWIIPPNI.js.map +1 -0
  27. package/dist/chunk-I7PSE6JW 5.js +191 -0
  28. package/dist/chunk-I7PSE6JW.js 2.map +1 -0
  29. package/dist/{chunk-Y4BUBBHD.js → chunk-IIELH4DL.js} +211 -136
  30. package/dist/chunk-IIELH4DL.js.map +1 -0
  31. package/dist/{chunk-RUYZKXOD.js → chunk-KNC55RTG.js} +17 -5
  32. package/dist/chunk-KNC55RTG.js 5.map +1 -0
  33. package/dist/chunk-KNC55RTG.js.map +1 -0
  34. package/dist/chunk-KQCRWDSA.js 5.map +1 -0
  35. package/dist/{chunk-4QYC5L4K.js → chunk-LFNCN2SP.js} +26 -30
  36. package/dist/chunk-LFNCN2SP.js 2.map +1 -0
  37. package/dist/chunk-LFNCN2SP.js.map +1 -0
  38. package/dist/chunk-LMC26NLJ 2.js +84 -0
  39. package/dist/{chunk-VVBAW5A5.js → chunk-NOAYCWCX 5.js } +118 -110
  40. package/dist/chunk-NOAYCWCX.js +4993 -0
  41. package/dist/chunk-NOAYCWCX.js.map +1 -0
  42. package/dist/chunk-QWWZ5CAQ.js 3.map +1 -0
  43. package/dist/chunk-QXHPKYJV 3.js +113 -0
  44. package/dist/chunk-R77UEZ4E 3.js +68 -0
  45. package/dist/chunk-VBXEHIUJ.js 6.map +1 -0
  46. package/dist/{chunk-HQVPB5MZ.js → chunk-XNXXZ43G.js} +77 -33
  47. package/dist/chunk-XNXXZ43G.js.map +1 -0
  48. package/dist/chunk-ZSAAAMVR 6.js +25 -0
  49. package/dist/components.d.ts +4 -4
  50. package/dist/components.js +8 -8
  51. package/dist/components.js 5.map +1 -0
  52. package/dist/{database.generated-DI89OQeI.d.ts → database.generated-CzIvgcPu.d.ts} +165 -201
  53. package/dist/hooks.d.ts +12 -12
  54. package/dist/hooks.js +9 -9
  55. package/dist/index.d.ts +11 -11
  56. package/dist/index.js +20 -27
  57. package/dist/index.js.map +1 -1
  58. package/dist/providers.d.ts +3 -3
  59. package/dist/providers.js +2 -2
  60. package/dist/rbac/index.d.ts +2 -20
  61. package/dist/rbac/index.js +7 -9
  62. package/dist/styles/index 2.js +12 -0
  63. package/dist/styles/index.js 5.map +1 -0
  64. package/dist/theming/runtime 5.js +19 -0
  65. package/dist/theming/runtime.js 5.map +1 -0
  66. package/dist/{types-Bwgl--Xo.d.ts → types-CEpcvwwF.d.ts} +1 -1
  67. package/dist/types.d.ts +2 -2
  68. package/dist/{usePublicRouteParams-DxIDS4bC.d.ts → usePublicRouteParams-TZe0gy-4.d.ts} +1 -1
  69. package/dist/utils.d.ts +8 -8
  70. package/dist/utils.js +2 -2
  71. package/docs/api/classes/ColumnFactory.md +1 -1
  72. package/docs/api/classes/ErrorBoundary.md +1 -1
  73. package/docs/api/classes/InvalidScopeError.md +1 -1
  74. package/docs/api/classes/Logger.md +1 -1
  75. package/docs/api/classes/MissingUserContextError.md +1 -1
  76. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  77. package/docs/api/classes/PermissionDeniedError.md +2 -2
  78. package/docs/api/classes/RBACAuditManager.md +2 -2
  79. package/docs/api/classes/RBACCache.md +1 -1
  80. package/docs/api/classes/RBACEngine.md +2 -2
  81. package/docs/api/classes/RBACError.md +1 -1
  82. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  83. package/docs/api/classes/SecureSupabaseClient.md +10 -10
  84. package/docs/api/classes/StorageUtils.md +1 -1
  85. package/docs/api/enums/FileCategory.md +1 -1
  86. package/docs/api/enums/LogLevel.md +1 -1
  87. package/docs/api/enums/RBACErrorCode.md +1 -1
  88. package/docs/api/enums/RPCFunction.md +1 -1
  89. package/docs/api/interfaces/AddressFieldProps.md +1 -1
  90. package/docs/api/interfaces/AddressFieldRef.md +1 -1
  91. package/docs/api/interfaces/AggregateConfig.md +1 -1
  92. package/docs/api/interfaces/AutocompleteOptions.md +1 -1
  93. package/docs/api/interfaces/AvatarProps.md +1 -1
  94. package/docs/api/interfaces/BadgeProps.md +1 -1
  95. package/docs/api/interfaces/ButtonProps.md +1 -1
  96. package/docs/api/interfaces/CalendarProps.md +1 -1
  97. package/docs/api/interfaces/CardProps.md +1 -1
  98. package/docs/api/interfaces/ColorPalette.md +1 -1
  99. package/docs/api/interfaces/ColorShade.md +1 -1
  100. package/docs/api/interfaces/ComplianceResult.md +1 -1
  101. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  102. package/docs/api/interfaces/DataRecord.md +1 -1
  103. package/docs/api/interfaces/DataTableAction.md +1 -1
  104. package/docs/api/interfaces/DataTableColumn.md +1 -1
  105. package/docs/api/interfaces/DataTableProps.md +1 -1
  106. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  107. package/docs/api/interfaces/DatabaseComplianceResult.md +1 -1
  108. package/docs/api/interfaces/DatabaseIssue.md +1 -1
  109. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  110. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  111. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  112. package/docs/api/interfaces/ExportColumn.md +1 -1
  113. package/docs/api/interfaces/ExportOptions.md +1 -1
  114. package/docs/api/interfaces/FileDisplayProps.md +24 -11
  115. package/docs/api/interfaces/FileMetadata.md +1 -1
  116. package/docs/api/interfaces/FileReference.md +1 -1
  117. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  118. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  119. package/docs/api/interfaces/FileUploadProps.md +1 -1
  120. package/docs/api/interfaces/FooterProps.md +1 -1
  121. package/docs/api/interfaces/FormFieldProps.md +1 -1
  122. package/docs/api/interfaces/FormProps.md +1 -1
  123. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  124. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  125. package/docs/api/interfaces/InputProps.md +1 -1
  126. package/docs/api/interfaces/LabelProps.md +1 -1
  127. package/docs/api/interfaces/LoggerConfig.md +1 -1
  128. package/docs/api/interfaces/LoginFormProps.md +1 -1
  129. package/docs/api/interfaces/NavigationAccessRecord.md +2 -2
  130. package/docs/api/interfaces/NavigationContextType.md +1 -1
  131. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  132. package/docs/api/interfaces/NavigationItem.md +1 -1
  133. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  134. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  135. package/docs/api/interfaces/Organisation.md +1 -1
  136. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  137. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  138. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  139. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  140. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  141. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  142. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  143. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  144. package/docs/api/interfaces/PagePermissionGuardProps.md +2 -2
  145. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  146. package/docs/api/interfaces/PaletteData.md +1 -1
  147. package/docs/api/interfaces/ParsedAddress.md +2 -2
  148. package/docs/api/interfaces/PermissionEnforcerProps.md +4 -4
  149. package/docs/api/interfaces/ProgressProps.md +1 -1
  150. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  151. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  152. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  153. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  154. package/docs/api/interfaces/QuickFix.md +1 -1
  155. package/docs/api/interfaces/RBACAccessValidateParams.md +1 -1
  156. package/docs/api/interfaces/RBACAccessValidateResult.md +1 -1
  157. package/docs/api/interfaces/RBACAuditLogParams.md +1 -1
  158. package/docs/api/interfaces/RBACAuditLogResult.md +1 -1
  159. package/docs/api/interfaces/RBACConfig.md +2 -2
  160. package/docs/api/interfaces/RBACContext.md +1 -1
  161. package/docs/api/interfaces/RBACLogger.md +1 -1
  162. package/docs/api/interfaces/RBACPageAccessCheckParams.md +1 -1
  163. package/docs/api/interfaces/RBACPerformanceMetrics.md +1 -1
  164. package/docs/api/interfaces/RBACPermissionCheckParams.md +1 -1
  165. package/docs/api/interfaces/RBACPermissionCheckResult.md +2 -2
  166. package/docs/api/interfaces/RBACPermissionsGetParams.md +1 -1
  167. package/docs/api/interfaces/RBACPermissionsGetResult.md +1 -1
  168. package/docs/api/interfaces/RBACResult.md +1 -1
  169. package/docs/api/interfaces/RBACRoleGrantParams.md +2 -2
  170. package/docs/api/interfaces/RBACRoleGrantResult.md +1 -1
  171. package/docs/api/interfaces/RBACRoleRevokeParams.md +2 -2
  172. package/docs/api/interfaces/RBACRoleRevokeResult.md +1 -1
  173. package/docs/api/interfaces/RBACRoleValidateParams.md +2 -2
  174. package/docs/api/interfaces/RBACRoleValidateResult.md +1 -1
  175. package/docs/api/interfaces/RBACRolesListParams.md +1 -1
  176. package/docs/api/interfaces/RBACRolesListResult.md +2 -2
  177. package/docs/api/interfaces/RBACSessionTrackParams.md +1 -1
  178. package/docs/api/interfaces/RBACSessionTrackResult.md +1 -1
  179. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  180. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  181. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  182. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  183. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  184. package/docs/api/interfaces/RouteAccessRecord.md +2 -2
  185. package/docs/api/interfaces/RouteConfig.md +2 -2
  186. package/docs/api/interfaces/RuntimeComplianceResult.md +1 -1
  187. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  188. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  189. package/docs/api/interfaces/SessionRestorationLoaderProps.md +1 -1
  190. package/docs/api/interfaces/SetupIssue.md +1 -1
  191. package/docs/api/interfaces/StorageConfig.md +1 -1
  192. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  193. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  194. package/docs/api/interfaces/StorageListOptions.md +1 -1
  195. package/docs/api/interfaces/StorageListResult.md +1 -1
  196. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  197. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  198. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  199. package/docs/api/interfaces/StyleImport.md +1 -1
  200. package/docs/api/interfaces/SwitchProps.md +1 -1
  201. package/docs/api/interfaces/TabsContentProps.md +1 -1
  202. package/docs/api/interfaces/TabsListProps.md +1 -1
  203. package/docs/api/interfaces/TabsProps.md +1 -1
  204. package/docs/api/interfaces/TabsTriggerProps.md +1 -1
  205. package/docs/api/interfaces/TextareaProps.md +1 -1
  206. package/docs/api/interfaces/ToastActionElement.md +1 -1
  207. package/docs/api/interfaces/ToastProps.md +1 -1
  208. package/docs/api/interfaces/UnifiedAuthContextType.md +60 -38
  209. package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
  210. package/docs/api/interfaces/UseFormDialogOptions.md +1 -1
  211. package/docs/api/interfaces/UseFormDialogReturn.md +1 -1
  212. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  213. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  214. package/docs/api/interfaces/UsePublicEventLogoOptions.md +2 -2
  215. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  216. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  217. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  218. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +2 -2
  219. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  220. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  221. package/docs/api/interfaces/UseResolvedScopeOptions.md +2 -2
  222. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  223. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  224. package/docs/api/interfaces/UserEventAccess.md +1 -1
  225. package/docs/api/interfaces/UserMenuProps.md +1 -1
  226. package/docs/api/interfaces/UserProfile.md +1 -1
  227. package/docs/api/modules.md +202 -217
  228. package/docs/migration/README.md +18 -0
  229. package/docs/migration/database-changes-december-2025.md +768 -0
  230. package/docs/migration/person-scoped-profiles-migration-guide.md +472 -0
  231. package/docs/rbac/event-based-apps.md +124 -6
  232. package/package.json +1 -1
  233. package/scripts/check-pace-core-compliance.cjs +292 -57
  234. package/src/__tests__/public-recipe-view.test.ts +10 -10
  235. package/src/__tests__/rls-policies.test.ts +16 -14
  236. package/src/components/AddressField/README.md +6 -6
  237. package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +172 -45
  238. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +121 -28
  239. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +9 -8
  240. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +20 -52
  241. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +170 -34
  242. package/src/components/DataTable/__tests__/keyboard.test.tsx +75 -12
  243. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +75 -11
  244. package/src/components/DataTable/components/UnifiedTableBody.tsx +85 -14
  245. package/src/components/DataTable/hooks/useDataTablePermissions.ts +75 -10
  246. package/src/components/FileDisplay/FileDisplay.test.tsx +2 -1
  247. package/src/components/FileDisplay/FileDisplay.tsx +16 -4
  248. package/src/components/NavigationMenu/NavigationMenu.test.tsx +6 -4
  249. package/src/components/NavigationMenu/NavigationMenu.tsx +1 -10
  250. package/src/components/OrganisationSelector/OrganisationSelector.tsx +35 -16
  251. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +25 -2
  252. package/src/components/PaceAppLayout/PaceAppLayout.tsx +97 -68
  253. package/src/components/PaceLoginPage/PaceLoginPage.tsx +0 -7
  254. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +5 -9
  255. package/src/components/ProtectedRoute/ProtectedRoute.tsx +0 -1
  256. package/src/components/PublicLayout/PublicPageProvider.tsx +0 -1
  257. package/src/components/Select/Select.test.tsx +4 -1
  258. package/src/components/Select/Select.tsx +60 -15
  259. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +192 -0
  260. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +741 -0
  261. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +703 -0
  262. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +581 -0
  263. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +23 -15
  264. package/src/hooks/public/usePublicEvent.ts +8 -8
  265. package/src/hooks/public/usePublicFileDisplay.ts +2 -2
  266. package/src/hooks/services/useAuthService.ts +21 -3
  267. package/src/hooks/services/useEventService.ts +21 -3
  268. package/src/hooks/services/useInactivityService.ts +21 -3
  269. package/src/hooks/services/useOrganisationService.ts +21 -3
  270. package/src/hooks/useFileDisplay.ts +18 -26
  271. package/src/hooks/useQueryCache.ts +6 -6
  272. package/src/hooks/useSecureDataAccess.test.ts +24 -17
  273. package/src/hooks/useSecureDataAccess.ts +18 -13
  274. package/src/providers/__tests__/OrganisationProvider.test.tsx +27 -21
  275. package/src/providers/services/EventServiceProvider.tsx +0 -8
  276. package/src/providers/services/UnifiedAuthProvider.tsx +174 -24
  277. package/src/rbac/__tests__/adapters.comprehensive.test.tsx +10 -16
  278. package/src/rbac/__tests__/isSuperAdmin.real.test.ts +82 -0
  279. package/src/rbac/adapters.tsx +3 -22
  280. package/src/rbac/api.test.ts +2 -2
  281. package/src/rbac/api.ts +7 -1
  282. package/src/rbac/components/EnhancedNavigationMenu.tsx +2 -15
  283. package/src/rbac/components/NavigationGuard.tsx +1 -10
  284. package/src/rbac/components/NavigationProvider.tsx +0 -1
  285. package/src/rbac/components/PermissionEnforcer.tsx +45 -12
  286. package/src/rbac/components/SecureDataProvider.tsx +0 -1
  287. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +7 -43
  288. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +4 -11
  289. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +3 -3
  290. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +1 -1
  291. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +1 -1
  292. package/src/rbac/engine.ts +14 -2
  293. package/src/rbac/hooks/index.ts +0 -3
  294. package/src/rbac/hooks/usePermissions.ts +51 -11
  295. package/src/rbac/hooks/useRBAC.simple.test.ts +95 -0
  296. package/src/rbac/hooks/useRBAC.ts +3 -13
  297. package/src/rbac/hooks/useResolvedScope.test.ts +75 -54
  298. package/src/rbac/hooks/useResolvedScope.ts +58 -33
  299. package/src/rbac/hooks/useSecureSupabase.ts +4 -9
  300. package/src/rbac/secureClient.ts +31 -0
  301. package/src/rbac/utils/__tests__/eventContext.test.ts +2 -2
  302. package/src/rbac/utils/__tests__/eventContext.unit.test.ts +490 -0
  303. package/src/rbac/utils/eventContext.ts +5 -2
  304. package/src/services/AuthService.ts +37 -8
  305. package/src/services/EventService.ts +4 -57
  306. package/src/services/InactivityService.ts +127 -34
  307. package/src/services/OrganisationService.ts +160 -149
  308. package/src/services/__tests__/OrganisationService.pagination.test.ts +34 -8
  309. package/src/services/__tests__/OrganisationService.test.ts +218 -86
  310. package/src/types/database.generated.ts +166 -201
  311. package/src/types/supabase.ts +2 -2
  312. package/src/utils/__tests__/secureDataAccess.unit.test.ts +3 -2
  313. package/src/utils/file-reference/index.ts +4 -4
  314. package/src/utils/google-places/googlePlacesUtils.ts +1 -1
  315. package/src/utils/google-places/types.ts +1 -1
  316. package/src/utils/request-deduplication.ts +4 -4
  317. package/src/utils/security/secureDataAccess.test.ts +1 -1
  318. package/src/utils/security/secureDataAccess.ts +7 -4
  319. package/src/utils/storage/README.md +1 -1
  320. package/dist/chunk-4QYC5L4K.js.map +0 -1
  321. package/dist/chunk-73HSNNOQ.js.map +0 -1
  322. package/dist/chunk-HQVPB5MZ.js.map +0 -1
  323. package/dist/chunk-J2XXC7R5.js.map +0 -1
  324. package/dist/chunk-NIU6J6OX.js.map +0 -1
  325. package/dist/chunk-RUYZKXOD.js.map +0 -1
  326. package/dist/chunk-STYK4OH2.js.map +0 -1
  327. package/dist/chunk-VVBAW5A5.js.map +0 -1
  328. package/dist/chunk-Y4BUBBHD.js.map +0 -1
  329. package/scripts/check-pace-core-compliance.js +0 -512
  330. package/src/rbac/hooks/useSuperAdminBypass.ts +0 -126
  331. package/src/utils/context/superAdminOverride.ts +0 -58
  332. /package/dist/{DataTable-ON3IXISJ.js.map → DataTable-5FU7IESH.js.map} +0 -0
  333. /package/dist/{UnifiedAuthProvider-X5NXANVI.js.map → UnifiedAuthProvider-RGJTDE2C.js.map} +0 -0
  334. /package/dist/{api-I6UCQ5S6.js.map → api-N774RPUA.js.map} +0 -0
@@ -1,16 +1,19 @@
1
1
  import {
2
2
  useCan
3
- } from "./chunk-HQVPB5MZ.js";
3
+ } from "./chunk-XNXXZ43G.js";
4
4
  import {
5
5
  toast,
6
6
  useDataTablePerformance
7
7
  } from "./chunk-6C4YBBJM.js";
8
8
  import {
9
9
  useResolvedScope
10
- } from "./chunk-Y4BUBBHD.js";
10
+ } from "./chunk-IIELH4DL.js";
11
11
  import {
12
12
  useUnifiedAuth
13
- } from "./chunk-J2XXC7R5.js";
13
+ } from "./chunk-7FLMSG37.js";
14
+ import {
15
+ isSuperAdmin
16
+ } from "./chunk-KNC55RTG.js";
14
17
  import {
15
18
  cn,
16
19
  renderSafeHtml
@@ -5508,7 +5511,7 @@ var require_lodash = __commonJS({
5508
5511
  import React21 from "react";
5509
5512
 
5510
5513
  // src/components/DataTable/components/DataTableCore.tsx
5511
- import React20, { useMemo as useMemo14, useCallback as useCallback10, useEffect as useEffect11, useRef as useRef6 } from "react";
5514
+ import React20, { useMemo as useMemo14, useCallback as useCallback10, useEffect as useEffect12, useRef as useRef6 } from "react";
5512
5515
  import { useReactTable } from "@tanstack/react-table";
5513
5516
  import { Edit, Trash, ChevronUp as ChevronUp2, ChevronDown as ChevronDown3, ChevronsUpDown } from "lucide-react";
5514
5517
 
@@ -5647,6 +5650,21 @@ var getTableCellClasses = (options = {}) => {
5647
5650
  className
5648
5651
  );
5649
5652
  };
5653
+ var getTableRowClasses = (options = {}) => {
5654
+ const { isSelected = false, isVirtualized = false, className } = options;
5655
+ if (isVirtualized) {
5656
+ return cn(
5657
+ tableStyles.rowHover,
5658
+ isSelected && tableStyles.rowSelected,
5659
+ className
5660
+ );
5661
+ }
5662
+ return cn(
5663
+ tableStyles.row,
5664
+ isSelected && tableStyles.rowSelected,
5665
+ className
5666
+ );
5667
+ };
5650
5668
  var getTableClasses = (options = {}) => {
5651
5669
  const { isFixed = false, variant = "default", className } = options;
5652
5670
  if (isFixed) {
@@ -5761,7 +5779,9 @@ var useSelectState = ({
5761
5779
  onOpenChange?.(false);
5762
5780
  }, [controlledValue, onValueChange, controlledOpen, onOpenChange]);
5763
5781
  const setOpen = React4.useCallback((newOpen) => {
5764
- if (disabled) return;
5782
+ if (disabled) {
5783
+ return;
5784
+ }
5765
5785
  if (newOpen) {
5766
5786
  const allTriggers = document.querySelectorAll('[data-testid="select-trigger"]');
5767
5787
  allTriggers.forEach((trigger) => {
@@ -5812,22 +5832,22 @@ var useSelectEvents = ({ state, actions, selectRef }) => {
5812
5832
  }
5813
5833
  }, [actions, selectRef]);
5814
5834
  React4.useEffect(() => {
5835
+ if (!state.open) return;
5815
5836
  const handleClickOutside = (event) => {
5816
5837
  const selectElement = selectRef.current;
5817
- const clickedElement = event.target;
5818
- const isSelectItem = clickedElement?.closest('[data-testid="select-item"]');
5819
- const isSearchInput = clickedElement?.closest('[data-testid="select-search-input"]');
5820
- const isSelectContent = clickedElement?.closest('[data-testid="select-content"]');
5821
- if (state.open && selectElement && !selectElement.contains(event.target) && !isSelectItem && !isSearchInput && !isSelectContent && !isSelecting) {
5838
+ if (!selectElement) return;
5839
+ const target = event.target;
5840
+ if (!selectElement.contains(target) && !isSelecting) {
5822
5841
  actions.setOpen(false);
5823
5842
  }
5824
5843
  };
5825
- if (state.open) {
5826
- document.addEventListener("mousedown", handleClickOutside);
5827
- return () => {
5828
- document.removeEventListener("mousedown", handleClickOutside);
5829
- };
5830
- }
5844
+ const timeoutId = setTimeout(() => {
5845
+ document.addEventListener("click", handleClickOutside, true);
5846
+ }, 100);
5847
+ return () => {
5848
+ clearTimeout(timeoutId);
5849
+ document.removeEventListener("click", handleClickOutside, true);
5850
+ };
5831
5851
  }, [state.open, actions, selectRef, isSelecting]);
5832
5852
  React4.useEffect(() => {
5833
5853
  let timeoutId = null;
@@ -6026,6 +6046,10 @@ var Select = React4.forwardRef(
6026
6046
  className: cn("relative", className),
6027
6047
  "data-value": state.value,
6028
6048
  "data-testid": "select-root",
6049
+ onSubmit: (e) => {
6050
+ e.preventDefault();
6051
+ e.stopPropagation();
6052
+ },
6029
6053
  children: /* @__PURE__ */ jsx4(SelectContext.Provider, { value: contextValue, children })
6030
6054
  }
6031
6055
  );
@@ -6036,9 +6060,20 @@ var SelectTrigger = React4.forwardRef(
6036
6060
  ({ children, className, variant = "outline", size = "default", asChild = false, ...props }, ref) => {
6037
6061
  const { open, disabled, value, actions, direction = "down" } = useSelectContext();
6038
6062
  const opensUpward = direction === "up";
6039
- const handleClick = () => {
6063
+ const handleClickRef = React4.useRef();
6064
+ const handleClick = React4.useCallback((e) => {
6065
+ if (disabled) {
6066
+ e.preventDefault();
6067
+ e.stopPropagation();
6068
+ return;
6069
+ }
6070
+ e.preventDefault();
6071
+ e.stopPropagation();
6040
6072
  actions.setOpen(!open);
6041
- };
6073
+ }, [disabled, open, actions]);
6074
+ React4.useEffect(() => {
6075
+ handleClickRef.current = handleClick;
6076
+ }, [handleClick]);
6042
6077
  const handleKeyDown = (e) => {
6043
6078
  if (disabled) return;
6044
6079
  switch (e.key) {
@@ -6111,10 +6146,17 @@ var SelectTrigger = React4.forwardRef(
6111
6146
  ]
6112
6147
  });
6113
6148
  }
6149
+ const handleRef = React4.useCallback((node) => {
6150
+ if (typeof ref === "function") {
6151
+ ref(node);
6152
+ } else if (ref) {
6153
+ ref.current = node;
6154
+ }
6155
+ }, [ref]);
6114
6156
  return /* @__PURE__ */ jsxs2(
6115
6157
  Button,
6116
6158
  {
6117
- ref,
6159
+ ref: handleRef,
6118
6160
  type: "button",
6119
6161
  role: "combobox",
6120
6162
  "aria-expanded": open,
@@ -6135,7 +6177,9 @@ var SelectTrigger = React4.forwardRef(
6135
6177
  textOverflow: "ellipsis",
6136
6178
  whiteSpace: "nowrap"
6137
6179
  },
6138
- onClick: handleClick,
6180
+ onClick: (e) => {
6181
+ handleClick(e);
6182
+ },
6139
6183
  onKeyDown: handleKeyDown,
6140
6184
  "data-testid": "select-trigger",
6141
6185
  "data-value": value,
@@ -6160,7 +6204,16 @@ SelectTrigger.displayName = "SelectTrigger";
6160
6204
  var SelectValue = React4.forwardRef(
6161
6205
  ({ placeholder = "Select an option...", children }, ref) => {
6162
6206
  const { selectedText } = useSelectContext();
6163
- return /* @__PURE__ */ jsx4("span", { ref, "data-testid": "select-value", children: children || (selectedText ? selectedText : placeholder) });
6207
+ return /* @__PURE__ */ jsx4(
6208
+ "span",
6209
+ {
6210
+ ref,
6211
+ "data-testid": "select-value",
6212
+ style: { pointerEvents: "none" },
6213
+ className: "pointer-events-none",
6214
+ children: children || (selectedText ? selectedText : placeholder)
6215
+ }
6216
+ );
6164
6217
  }
6165
6218
  );
6166
6219
  SelectValue.displayName = "SelectValue";
@@ -7828,6 +7881,10 @@ var RowComponent = React10.memo(({
7828
7881
  const isHierarchical = hierarchical?.enabled && hierarchicalRow?.isParent !== void 0;
7829
7882
  const isParent = isHierarchical && hierarchicalRow.isParent;
7830
7883
  const isChild = isHierarchical && !hierarchicalRow.isParent;
7884
+ const visibleCells = React10.useMemo(() => row.getVisibleCells(), [row]);
7885
+ const isSelected = React10.useMemo(() => {
7886
+ return typeof row.getIsSelected === "function" ? row.getIsSelected() : false;
7887
+ }, [row]);
7831
7888
  useEffect2(() => {
7832
7889
  if (isEditing && firstInputRef.current) {
7833
7890
  firstInputRef.current.focus();
@@ -7860,9 +7917,8 @@ var RowComponent = React10.memo(({
7860
7917
  const groupValue = row.getValue(grouping[0]);
7861
7918
  const subRowsCount = row.subRows?.length || 0;
7862
7919
  const isExpanded = row.getIsExpanded();
7863
- const visibleCells2 = row.getVisibleCells();
7864
7920
  const childRows = row.subRows?.map((subRow) => subRow.original) || [];
7865
- return /* @__PURE__ */ jsx14("tr", { className: "bg-sec-50 hover:bg-sec-100", style, children: visibleCells2.map((cell, cellIndex) => {
7921
+ return /* @__PURE__ */ jsx14("tr", { className: "bg-sec-50 hover:bg-sec-100", style, children: visibleCells.map((cell, cellIndex) => {
7866
7922
  const columnDef = cell.column.columnDef;
7867
7923
  const isGroupingColumn = cellIndex === 0 || grouping.includes(cell.column.id || "");
7868
7924
  if (isGroupingColumn && cellIndex === 0) {
@@ -7971,11 +8027,20 @@ var RowComponent = React10.memo(({
7971
8027
  }
7972
8028
  );
7973
8029
  }
7974
- const visibleCells = row.getVisibleCells();
7975
- const allCells = row.getAllCells ? row.getAllCells() : [];
7976
8030
  const indentSize = hierarchical?.indentSize || 24;
7977
- const indentation = isChild && hierarchical?.state ? calculateIndentation(hierarchicalRow, [], indentSize) : 0;
7978
- const rowClassName = isHierarchical ? isParent ? hierarchical?.parentRowClassName || "bg-main-50 hover:bg-main-100 font-medium" : hierarchical?.childRowClassName || "bg-sec-25 hover:bg-sec-50" : "";
8031
+ const indentation = React10.useMemo(() => {
8032
+ return isChild && hierarchical?.state ? calculateIndentation(hierarchicalRow, [], indentSize) : 0;
8033
+ }, [isChild, hierarchical?.state, hierarchicalRow, indentSize]);
8034
+ const rowClassName = React10.useMemo(() => {
8035
+ if (isHierarchical) {
8036
+ const hierarchicalClass = isParent ? hierarchical?.parentRowClassName || "bg-main-50 hover:bg-main-100 font-medium" : hierarchical?.childRowClassName || "bg-sec-25 hover:bg-sec-50";
8037
+ return cn(
8038
+ getTableRowClasses({ isSelected, isVirtualized: false }),
8039
+ hierarchicalClass
8040
+ );
8041
+ }
8042
+ return getTableRowClasses({ isSelected, isVirtualized: false });
8043
+ }, [isHierarchical, isParent, isSelected, hierarchical]);
7979
8044
  return /* @__PURE__ */ jsx14(
7980
8045
  "tr",
7981
8046
  {
@@ -7986,7 +8051,7 @@ var RowComponent = React10.memo(({
7986
8051
  ...isChild && indentation > 0 ? { paddingLeft: `${indentation}px` } : {}
7987
8052
  },
7988
8053
  className: rowClassName,
7989
- "aria-selected": typeof row.getIsSelected === "function" ? row.getIsSelected() ? "true" : "false" : "false",
8054
+ "aria-selected": isSelected ? "true" : "false",
7990
8055
  children: visibleCells.map((cell, cellIndex) => {
7991
8056
  const isFirstCell = cellIndex === 0;
7992
8057
  const shouldShowExpansionButton = isHierarchical && isParent && isFirstCell && hierarchical?.state;
@@ -8043,7 +8108,43 @@ var RowComponent = React10.memo(({
8043
8108
  );
8044
8109
  });
8045
8110
  RowComponent.displayName = "RowComponent";
8046
- var MemoizedRow = RowComponent;
8111
+ var areRowPropsEqual = (prevProps, nextProps) => {
8112
+ if (prevProps.row.id !== nextProps.row.id || prevProps.row.index !== nextProps.row.index) {
8113
+ return false;
8114
+ }
8115
+ if (prevProps.isEditing !== nextProps.isEditing) {
8116
+ return false;
8117
+ }
8118
+ if (prevProps.editingRowId !== nextProps.editingRowId) {
8119
+ return false;
8120
+ }
8121
+ if (prevProps.style !== nextProps.style) {
8122
+ if (!prevProps.style || !nextProps.style) {
8123
+ return false;
8124
+ }
8125
+ const prevStyle = prevProps.style;
8126
+ const nextStyle = nextProps.style;
8127
+ const styleKeys = /* @__PURE__ */ new Set([...Object.keys(prevStyle), ...Object.keys(nextStyle)]);
8128
+ for (const key of styleKeys) {
8129
+ if (prevStyle[key] !== nextStyle[key]) {
8130
+ return false;
8131
+ }
8132
+ }
8133
+ }
8134
+ if (prevProps.grouping.length !== nextProps.grouping.length || prevProps.grouping.some((id, i) => id !== nextProps.grouping[i])) {
8135
+ return false;
8136
+ }
8137
+ if (prevProps.hierarchical?.enabled !== nextProps.hierarchical?.enabled) {
8138
+ return false;
8139
+ }
8140
+ const prevSelected = typeof prevProps.row.getIsSelected === "function" ? prevProps.row.getIsSelected() : false;
8141
+ const nextSelected = typeof nextProps.row.getIsSelected === "function" ? nextProps.row.getIsSelected() : false;
8142
+ if (prevSelected !== nextSelected) {
8143
+ return false;
8144
+ }
8145
+ return true;
8146
+ };
8147
+ var MemoizedRow = React10.memo(RowComponent, areRowPropsEqual);
8047
8148
  function UnifiedTableBody({
8048
8149
  table,
8049
8150
  isCreating,
@@ -10863,7 +10964,7 @@ function exportToCSV(data, columns, filename = "download.csv", options = {}) {
10863
10964
  }
10864
10965
 
10865
10966
  // src/components/DataTable/hooks/useDataTablePermissions.ts
10866
- import { useMemo as useMemo12, useRef as useRef4 } from "react";
10967
+ import { useMemo as useMemo12, useRef as useRef4, useState as useState8, useEffect as useEffect10 } from "react";
10867
10968
 
10868
10969
  // src/components/DataTable/types.ts
10869
10970
  var defaultDataTableFeatures = {
@@ -10895,6 +10996,28 @@ function useDataTablePermissions(rbac, features = {}) {
10895
10996
  const logger2 = createLogger("DataTablePermissions");
10896
10997
  const authResult = useUnifiedAuth();
10897
10998
  const user = authResult.user;
10999
+ const [isSuperAdminUser, setIsSuperAdminUser] = useState8(false);
11000
+ const [isCheckingSuperAdmin, setIsCheckingSuperAdmin] = useState8(false);
11001
+ useEffect10(() => {
11002
+ const checkSuperAdminStatus = async () => {
11003
+ if (!user?.id) {
11004
+ setIsSuperAdminUser(false);
11005
+ setIsCheckingSuperAdmin(false);
11006
+ return;
11007
+ }
11008
+ setIsCheckingSuperAdmin(true);
11009
+ try {
11010
+ const superAdminStatus = await isSuperAdmin(user.id);
11011
+ setIsSuperAdminUser(superAdminStatus);
11012
+ } catch (error) {
11013
+ logger2.error("useDataTablePermissions", "Error checking super admin status", { userId: user?.id, error });
11014
+ setIsSuperAdminUser(false);
11015
+ } finally {
11016
+ setIsCheckingSuperAdmin(false);
11017
+ }
11018
+ };
11019
+ checkSuperAdminStatus();
11020
+ }, [user?.id, logger2]);
10898
11021
  const pageId = rbac?.pageId;
10899
11022
  const pageName = rbac?.pageName;
10900
11023
  if (!pageId && !pageName) {
@@ -10939,16 +11062,38 @@ function useDataTablePermissions(rbac, features = {}) {
10939
11062
  const updatePermission = `update:page.${effectivePageId}`;
10940
11063
  const deletePermission = `delete:page.${effectivePageId}`;
10941
11064
  const consistentScope = effectiveScope || { organisationId: void 0, eventId: void 0, appId: void 0 };
10942
- const permissions = {
10943
- canRead: useCan(userId, consistentScope, readPermission, effectivePageId, true),
10944
- canCreate: useCan(userId, consistentScope, createPermission, effectivePageId, true),
10945
- canUpdate: useCan(userId, consistentScope, updatePermission, effectivePageId, true),
10946
- canDelete: useCan(userId, consistentScope, deletePermission, effectivePageId, true),
10947
- canExport: useCan(userId, consistentScope, readPermission, effectivePageId, true),
10948
- // Use read permission for export
10949
- canImport: useCan(userId, consistentScope, createPermission, effectivePageId, true)
10950
- // Use create permission for import
10951
- };
11065
+ const canReadResult = useCan(userId, consistentScope, readPermission, effectivePageId, true);
11066
+ const canCreateResult = useCan(userId, consistentScope, createPermission, effectivePageId, true);
11067
+ const canUpdateResult = useCan(userId, consistentScope, updatePermission, effectivePageId, true);
11068
+ const canDeleteResult = useCan(userId, consistentScope, deletePermission, effectivePageId, true);
11069
+ const canExportResult = useCan(userId, consistentScope, readPermission, effectivePageId, true);
11070
+ const canImportResult = useCan(userId, consistentScope, createPermission, effectivePageId, true);
11071
+ const permissions = useMemo12(() => {
11072
+ const createSuperAdminAwarePermission = (result) => ({
11073
+ can: isSuperAdminUser ? true : result.can,
11074
+ // Show loading if super admin check is in progress OR if the underlying permission check is loading
11075
+ isLoading: isCheckingSuperAdmin || result.isLoading,
11076
+ error: result.error,
11077
+ refetch: result.refetch
11078
+ });
11079
+ return {
11080
+ canRead: createSuperAdminAwarePermission(canReadResult),
11081
+ canCreate: createSuperAdminAwarePermission(canCreateResult),
11082
+ canUpdate: createSuperAdminAwarePermission(canUpdateResult),
11083
+ canDelete: createSuperAdminAwarePermission(canDeleteResult),
11084
+ canExport: createSuperAdminAwarePermission(canExportResult),
11085
+ canImport: createSuperAdminAwarePermission(canImportResult)
11086
+ };
11087
+ }, [
11088
+ isSuperAdminUser,
11089
+ isCheckingSuperAdmin,
11090
+ canReadResult,
11091
+ canCreateResult,
11092
+ canUpdateResult,
11093
+ canDeleteResult,
11094
+ canExportResult,
11095
+ canImportResult
11096
+ ]);
10952
11097
  const normalizedFeatures = useMemo12(
10953
11098
  () => normalizeDataTableFeatures(features),
10954
11099
  [features]
@@ -11372,7 +11517,7 @@ function getRowDescription(rowIndex, totalRows, isSelected = false, isEditing =
11372
11517
  }
11373
11518
 
11374
11519
  // src/components/DataTable/hooks/useKeyboardNavigation.ts
11375
- import { useCallback as useCallback9, useEffect as useEffect10, useRef as useRef5, useState as useState8 } from "react";
11520
+ import { useCallback as useCallback9, useEffect as useEffect11, useRef as useRef5, useState as useState9 } from "react";
11376
11521
  function useKeyboardNavigation(rowCount, columnCount, options = {}) {
11377
11522
  const {
11378
11523
  enabled = true,
@@ -11382,7 +11527,7 @@ function useKeyboardNavigation(rowCount, columnCount, options = {}) {
11382
11527
  onFocusChange,
11383
11528
  tableRef: externalTableRef
11384
11529
  } = options;
11385
- const [state, setState] = useState8({
11530
+ const [state, setState] = useState9({
11386
11531
  focusedRowIndex: 0,
11387
11532
  focusedColumnIndex: 0,
11388
11533
  isNavigating: false
@@ -11633,7 +11778,7 @@ function useKeyboardNavigation(rowCount, columnCount, options = {}) {
11633
11778
  storedFocusRef.current = null;
11634
11779
  }
11635
11780
  }, [focusCell]);
11636
- useEffect10(() => {
11781
+ useEffect11(() => {
11637
11782
  return () => {
11638
11783
  if (navigationTimeoutRef.current) {
11639
11784
  clearTimeout(navigationTimeoutRef.current);
@@ -11766,12 +11911,12 @@ function DataTableInternal(props) {
11766
11911
  defaultSorting: defaultSorting || [],
11767
11912
  defaultGrouping: defaultGrouping || []
11768
11913
  });
11769
- useEffect11(() => {
11914
+ useEffect12(() => {
11770
11915
  if (secureFeatures.columnVisibility && isColumnVisibilityLoaded && Object.keys(initialColumnVisibility).length > 0) {
11771
11916
  stateActions.setColumnVisibility(initialColumnVisibility);
11772
11917
  }
11773
11918
  }, [secureFeatures.columnVisibility, isColumnVisibilityLoaded, initialColumnVisibility, stateActions]);
11774
- useEffect11(() => {
11919
+ useEffect12(() => {
11775
11920
  initializeLiveRegion();
11776
11921
  }, []);
11777
11922
  const rowSelection = selection !== void 0 ? selection : state.rowSelection;
@@ -11780,7 +11925,7 @@ function DataTableInternal(props) {
11780
11925
  [getRowId]
11781
11926
  );
11782
11927
  const hasInitializedExpansion = useRef6(false);
11783
- useEffect11(() => {
11928
+ useEffect12(() => {
11784
11929
  if (!hasInitializedExpansion.current && defaultGrouping && defaultGrouping.length > 0) {
11785
11930
  stateActions.setExpanded(true);
11786
11931
  hasInitializedExpansion.current = true;
@@ -11833,7 +11978,7 @@ function DataTableInternal(props) {
11833
11978
  );
11834
11979
  const lastFocusedElementRef = useRef6(null);
11835
11980
  const wasImportModalOpenRef = useRef6(false);
11836
- useEffect11(() => {
11981
+ useEffect12(() => {
11837
11982
  if (state.showImportModal) {
11838
11983
  wasImportModalOpenRef.current = true;
11839
11984
  keyboardNavigation.storeFocus();
@@ -11842,7 +11987,7 @@ function DataTableInternal(props) {
11842
11987
  }
11843
11988
  }
11844
11989
  }, [state.showImportModal, keyboardNavigation]);
11845
- useEffect11(() => {
11990
+ useEffect12(() => {
11846
11991
  if (!state.showImportModal) {
11847
11992
  if (!wasImportModalOpenRef.current) {
11848
11993
  return;
@@ -11873,7 +12018,7 @@ function DataTableInternal(props) {
11873
12018
  finalPaginationMode,
11874
12019
  serverData
11875
12020
  });
11876
- useEffect11(() => {
12021
+ useEffect12(() => {
11877
12022
  if (!hierarchicalValidation.isValid) {
11878
12023
  logger2.error("Hierarchical data validation failed:", hierarchicalValidation.errors);
11879
12024
  }
@@ -11888,13 +12033,13 @@ function DataTableInternal(props) {
11888
12033
  enablePersistence: secureFeatures.columnReordering,
11889
12034
  storageKey
11890
12035
  });
11891
- useEffect11(() => {
12036
+ useEffect12(() => {
11892
12037
  if (secureFeatures.columnReordering && isColumnOrderLoaded && savedColumnOrder && savedColumnOrder.length > 0) {
11893
12038
  const normalizedOrder = secureFeatures.selection && savedColumnOrder.includes("select") ? ["select", ...savedColumnOrder.filter((id) => id !== "select")] : savedColumnOrder;
11894
12039
  stateActions.setColumnOrder(normalizedOrder);
11895
12040
  }
11896
12041
  }, [secureFeatures.columnReordering, secureFeatures.selection, isColumnOrderLoaded, savedColumnOrder, stateActions]);
11897
- useEffect11(() => {
12042
+ useEffect12(() => {
11898
12043
  if (secureFeatures.selection && state.columnOrder.includes("select") && state.columnOrder[0] !== "select") {
11899
12044
  const normalizedOrder = ["select", ...state.columnOrder.filter((id) => id !== "select")];
11900
12045
  stateActions.setColumnOrder(normalizedOrder);
@@ -11929,7 +12074,7 @@ function DataTableInternal(props) {
11929
12074
  }
11930
12075
  return state.pagination.pageSize;
11931
12076
  }, [state.pagination.pageSize, validatedInitialPageSize, secureFeatures.pagination, finalPageSizeOptions]);
11932
- useEffect11(() => {
12077
+ useEffect12(() => {
11933
12078
  if (secureFeatures.pagination && finalPageSizeOptions.length > 0) {
11934
12079
  const needsFix = !finalPageSizeOptions.includes(state.pagination.pageSize);
11935
12080
  const currentPageSize = effectivePageSize || validatedInitialPageSize;
@@ -12769,4 +12914,4 @@ lodash/lodash.js:
12769
12914
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
12770
12915
  *)
12771
12916
  */
12772
- //# sourceMappingURL=chunk-SDMHPX3X.js.map
12917
+ //# sourceMappingURL=chunk-E3SPN4VZ.js.map