@jmruthers/pace-core 0.5.27 → 0.5.29

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 (115) hide show
  1. package/dist/{DataTable-XBVIX3TJ.js → DataTable-B3QAKJN2.js} +2 -2
  2. package/dist/{chunk-2HNC463D.js → chunk-4MGZ5E3J.js} +78 -17
  3. package/dist/chunk-4MGZ5E3J.js.map +1 -0
  4. package/dist/{chunk-O2VJ5KRZ.js → chunk-ONTSSIGM.js} +10 -23
  5. package/dist/chunk-ONTSSIGM.js.map +1 -0
  6. package/dist/chunk-TYHR5X4W.js +33 -0
  7. package/dist/chunk-TYHR5X4W.js.map +1 -0
  8. package/dist/{chunk-H6ZSHTG7.js → chunk-VLWG2SIU.js} +2 -2
  9. package/dist/components.js +2 -2
  10. package/dist/eventContext-BBA42P6G.js +14 -0
  11. package/dist/eventContext-BBA42P6G.js.map +1 -0
  12. package/dist/index.js +4 -3
  13. package/dist/index.js.map +1 -1
  14. package/dist/rbac/index.js +2 -1
  15. package/dist/utils.js +1 -1
  16. package/docs/api/classes/ErrorBoundary.md +1 -1
  17. package/docs/api/classes/InvalidScopeError.md +1 -1
  18. package/docs/api/classes/MissingUserContextError.md +1 -1
  19. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  20. package/docs/api/classes/PermissionDeniedError.md +1 -1
  21. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  22. package/docs/api/classes/RBACAuditManager.md +1 -1
  23. package/docs/api/classes/RBACCache.md +1 -1
  24. package/docs/api/classes/RBACEngine.md +1 -1
  25. package/docs/api/classes/RBACError.md +1 -1
  26. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  27. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  28. package/docs/api/interfaces/AggregateConfig.md +1 -1
  29. package/docs/api/interfaces/ButtonProps.md +1 -1
  30. package/docs/api/interfaces/CardProps.md +1 -1
  31. package/docs/api/interfaces/ColorPalette.md +1 -1
  32. package/docs/api/interfaces/ColorShade.md +1 -1
  33. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  34. package/docs/api/interfaces/DataTableAction.md +1 -1
  35. package/docs/api/interfaces/DataTableColumn.md +1 -1
  36. package/docs/api/interfaces/DataTableProps.md +1 -1
  37. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  38. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  39. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  40. package/docs/api/interfaces/EventContextType.md +1 -1
  41. package/docs/api/interfaces/EventLogoProps.md +1 -1
  42. package/docs/api/interfaces/EventProviderProps.md +1 -1
  43. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  44. package/docs/api/interfaces/FileUploadProps.md +1 -1
  45. package/docs/api/interfaces/FooterProps.md +1 -1
  46. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  47. package/docs/api/interfaces/InputProps.md +1 -1
  48. package/docs/api/interfaces/LabelProps.md +1 -1
  49. package/docs/api/interfaces/LoginFormProps.md +1 -1
  50. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  51. package/docs/api/interfaces/NavigationContextType.md +1 -1
  52. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  53. package/docs/api/interfaces/NavigationItem.md +1 -1
  54. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  55. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  56. package/docs/api/interfaces/Organisation.md +1 -1
  57. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  58. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  59. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  60. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  61. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  62. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  63. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  64. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  65. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  66. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  67. package/docs/api/interfaces/PaletteData.md +1 -1
  68. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  69. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  70. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  71. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  72. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  73. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  74. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  75. package/docs/api/interfaces/RBACConfig.md +1 -1
  76. package/docs/api/interfaces/RBACContextType.md +1 -1
  77. package/docs/api/interfaces/RBACLogger.md +1 -1
  78. package/docs/api/interfaces/RBACProviderProps.md +1 -1
  79. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  80. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  81. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  82. package/docs/api/interfaces/RouteConfig.md +1 -1
  83. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  84. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  85. package/docs/api/interfaces/StorageConfig.md +1 -1
  86. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  87. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  88. package/docs/api/interfaces/StorageListOptions.md +1 -1
  89. package/docs/api/interfaces/StorageListResult.md +1 -1
  90. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  91. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  92. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  93. package/docs/api/interfaces/StyleImport.md +1 -1
  94. package/docs/api/interfaces/ToastActionElement.md +1 -1
  95. package/docs/api/interfaces/ToastProps.md +1 -1
  96. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  97. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  98. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  99. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  100. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  101. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  102. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  103. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  104. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  105. package/docs/api/interfaces/UserEventAccess.md +1 -1
  106. package/docs/api/interfaces/UserMenuProps.md +1 -1
  107. package/docs/api/interfaces/UserProfile.md +1 -1
  108. package/docs/api/modules.md +3 -3
  109. package/package.json +1 -1
  110. package/src/components/DataTable/components/DataTableCore.tsx +101 -19
  111. package/src/rbac/components/PagePermissionGuard.tsx +8 -0
  112. package/dist/chunk-2HNC463D.js.map +0 -1
  113. package/dist/chunk-O2VJ5KRZ.js.map +0 -1
  114. /package/dist/{DataTable-XBVIX3TJ.js.map → DataTable-B3QAKJN2.js.map} +0 -0
  115. /package/dist/{chunk-H6ZSHTG7.js.map → chunk-VLWG2SIU.js.map} +0 -0
@@ -32,7 +32,7 @@ import {
32
32
  useDataTableContext,
33
33
  usePluginRegistry,
34
34
  useStateManager
35
- } from "./chunk-2HNC463D.js";
35
+ } from "./chunk-4MGZ5E3J.js";
36
36
  import "./chunk-YA77BOZM.js";
37
37
  import "./chunk-GWSBHC4J.js";
38
38
  import "./chunk-7BNPOCLL.js";
@@ -96,4 +96,4 @@ export {
96
96
  usePluginRegistry,
97
97
  useStateManager
98
98
  };
99
- //# sourceMappingURL=DataTable-XBVIX3TJ.js.map
99
+ //# sourceMappingURL=DataTable-B3QAKJN2.js.map
@@ -3354,22 +3354,82 @@ function DataTableInternal({
3354
3354
  }
3355
3355
  const effectivePageId = pageId || pageName;
3356
3356
  const { selectedOrganisationId, selectedEventId, supabase } = useUnifiedAuth();
3357
- const resolvedScope = useMemo6(() => {
3358
- if (!selectedOrganisationId) return null;
3359
- return {
3360
- organisationId: selectedOrganisationId,
3361
- eventId: selectedEventId || void 0,
3362
- appId: void 0
3357
+ console.log("[DataTable] useUnifiedAuth values:", {
3358
+ selectedOrganisationId,
3359
+ selectedEventId,
3360
+ hasUser: !!user,
3361
+ userId: user?.id
3362
+ });
3363
+ const [resolvedScope, setResolvedScope] = useState6(null);
3364
+ const stableScopeRef = useRef4({
3365
+ organisationId: "",
3366
+ appId: "",
3367
+ eventId: void 0
3368
+ });
3369
+ if (resolvedScope && resolvedScope.organisationId) {
3370
+ const newScope = {
3371
+ organisationId: resolvedScope.organisationId,
3372
+ appId: resolvedScope.appId,
3373
+ eventId: resolvedScope.eventId
3374
+ };
3375
+ if (stableScopeRef.current.organisationId !== newScope.organisationId || stableScopeRef.current.eventId !== newScope.eventId || stableScopeRef.current.appId !== newScope.appId) {
3376
+ stableScopeRef.current = {
3377
+ organisationId: newScope.organisationId,
3378
+ appId: newScope.appId || "",
3379
+ eventId: newScope.eventId
3380
+ };
3381
+ }
3382
+ } else if (!resolvedScope) {
3383
+ stableScopeRef.current = { organisationId: "", appId: "", eventId: void 0 };
3384
+ }
3385
+ const stableScope = stableScopeRef.current;
3386
+ useEffect5(() => {
3387
+ const resolveScope = async () => {
3388
+ if (selectedOrganisationId && selectedEventId) {
3389
+ setResolvedScope({
3390
+ organisationId: selectedOrganisationId,
3391
+ eventId: selectedEventId,
3392
+ appId: void 0
3393
+ });
3394
+ return;
3395
+ }
3396
+ if (selectedOrganisationId) {
3397
+ setResolvedScope({
3398
+ organisationId: selectedOrganisationId,
3399
+ eventId: selectedEventId || void 0,
3400
+ appId: void 0
3401
+ });
3402
+ return;
3403
+ }
3404
+ if (selectedEventId && supabase) {
3405
+ try {
3406
+ const { createScopeFromEvent } = await import("./eventContext-BBA42P6G.js");
3407
+ const eventScope = await createScopeFromEvent(supabase, selectedEventId);
3408
+ if (!eventScope) {
3409
+ console.error("[DataTable] Could not resolve organization from event context");
3410
+ setResolvedScope(null);
3411
+ return;
3412
+ }
3413
+ setResolvedScope(eventScope);
3414
+ } catch (error) {
3415
+ console.error("[DataTable] Error resolving scope from event:", error);
3416
+ setResolvedScope(null);
3417
+ }
3418
+ return;
3419
+ }
3420
+ console.error("[DataTable] No organisation or event context available");
3421
+ setResolvedScope(null);
3363
3422
  };
3364
- }, [selectedOrganisationId, selectedEventId]);
3423
+ resolveScope();
3424
+ }, [selectedOrganisationId, selectedEventId, supabase]);
3365
3425
  const permissions = {
3366
- canRead: useCan(user?.id || "", resolvedScope || { organisationId: "", eventId: void 0, appId: void 0 }, `read:page.${effectivePageId}`, effectivePageId),
3367
- canCreate: useCan(user?.id || "", resolvedScope || { organisationId: "", eventId: void 0, appId: void 0 }, `create:page.${effectivePageId}`, effectivePageId),
3368
- canUpdate: useCan(user?.id || "", resolvedScope || { organisationId: "", eventId: void 0, appId: void 0 }, `update:page.${effectivePageId}`, effectivePageId),
3369
- canDelete: useCan(user?.id || "", resolvedScope || { organisationId: "", eventId: void 0, appId: void 0 }, `delete:page.${effectivePageId}`, effectivePageId),
3370
- canExport: useCan(user?.id || "", resolvedScope || { organisationId: "", eventId: void 0, appId: void 0 }, `manage:page.${effectivePageId}`, effectivePageId),
3426
+ canRead: useCan(user?.id || "", stableScope, `read:page.${effectivePageId}`, effectivePageId),
3427
+ canCreate: useCan(user?.id || "", stableScope, `create:page.${effectivePageId}`, effectivePageId),
3428
+ canUpdate: useCan(user?.id || "", stableScope, `update:page.${effectivePageId}`, effectivePageId),
3429
+ canDelete: useCan(user?.id || "", stableScope, `delete:page.${effectivePageId}`, effectivePageId),
3430
+ canExport: useCan(user?.id || "", stableScope, `manage:page.${effectivePageId}`, effectivePageId),
3371
3431
  // Using manage for export/import
3372
- canImport: useCan(user?.id || "", resolvedScope || { organisationId: "", eventId: void 0, appId: void 0 }, `manage:page.${effectivePageId}`, effectivePageId)
3432
+ canImport: useCan(user?.id || "", stableScope, `manage:page.${effectivePageId}`, effectivePageId)
3373
3433
  // Using manage for export/import
3374
3434
  };
3375
3435
  const finalPaginationMode = paginationMode || detectedMode;
@@ -3698,9 +3758,10 @@ function DataTableInternal({
3698
3758
  console.log(" refetch type:", typeof permissions.canRead.refetch);
3699
3759
  console.log("[DataTable] RBAC DEBUG - Scope (FIXED):");
3700
3760
  console.log(" resolvedScope:", resolvedScope);
3701
- console.log(" organisationId:", resolvedScope?.organisationId);
3702
- console.log(" eventId:", resolvedScope?.eventId);
3703
- console.log(" appId:", resolvedScope?.appId);
3761
+ console.log(" stableScope:", stableScope);
3762
+ console.log(" organisationId:", stableScope?.organisationId);
3763
+ console.log(" eventId:", stableScope?.eventId);
3764
+ console.log(" appId:", stableScope?.appId);
3704
3765
  if (!permissions.canRead.can) {
3705
3766
  console.error("[DataTable] ACCESS DENIED - DataTable RBAC failing!");
3706
3767
  console.error(" effectivePageId:", effectivePageId);
@@ -5479,4 +5540,4 @@ export {
5479
5540
  GroupHeader,
5480
5541
  EditableRow
5481
5542
  };
5482
- //# sourceMappingURL=chunk-2HNC463D.js.map
5543
+ //# sourceMappingURL=chunk-4MGZ5E3J.js.map