@jmruthers/pace-core 0.5.47 → 0.5.49

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 (116) hide show
  1. package/dist/{DataTable-ZR3ZR6HZ.js → DataTable-RGMG3WMB.js} +4 -4
  2. package/dist/{chunk-5VISREHF.js → chunk-BB7GLAJB.js} +2 -2
  3. package/dist/{chunk-UVFDU5JT.js → chunk-DD64JVFD.js} +3 -3
  4. package/dist/{chunk-VSWL652U.js → chunk-DDRXAZVJ.js} +42 -7
  5. package/dist/chunk-DDRXAZVJ.js.map +1 -0
  6. package/dist/{chunk-FT2CYYHF.js → chunk-RHGZEJRT.js} +2 -2
  7. package/dist/{chunk-BN5XALQT.js → chunk-T5TUPLHI.js} +2 -2
  8. package/dist/{chunk-IWJD4ZNM.js → chunk-WK3OVRHR.js} +2 -2
  9. package/dist/components.js +5 -5
  10. package/dist/index.js +6 -6
  11. package/dist/providers.js +2 -2
  12. package/dist/rbac/index.js +3 -3
  13. package/dist/utils.js +1 -1
  14. package/docs/api/classes/ErrorBoundary.md +1 -1
  15. package/docs/api/classes/InvalidScopeError.md +1 -1
  16. package/docs/api/classes/MissingUserContextError.md +1 -1
  17. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  18. package/docs/api/classes/PermissionDeniedError.md +1 -1
  19. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  20. package/docs/api/classes/RBACAuditManager.md +1 -1
  21. package/docs/api/classes/RBACCache.md +1 -1
  22. package/docs/api/classes/RBACEngine.md +1 -1
  23. package/docs/api/classes/RBACError.md +1 -1
  24. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  25. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  26. package/docs/api/interfaces/AggregateConfig.md +1 -1
  27. package/docs/api/interfaces/ButtonProps.md +1 -1
  28. package/docs/api/interfaces/CardProps.md +1 -1
  29. package/docs/api/interfaces/ColorPalette.md +1 -1
  30. package/docs/api/interfaces/ColorShade.md +1 -1
  31. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  32. package/docs/api/interfaces/DataTableAction.md +1 -1
  33. package/docs/api/interfaces/DataTableColumn.md +1 -1
  34. package/docs/api/interfaces/DataTableProps.md +1 -1
  35. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  36. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  37. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  38. package/docs/api/interfaces/EventContextType.md +1 -1
  39. package/docs/api/interfaces/EventLogoProps.md +1 -1
  40. package/docs/api/interfaces/EventProviderProps.md +1 -1
  41. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  42. package/docs/api/interfaces/FileUploadProps.md +1 -1
  43. package/docs/api/interfaces/FooterProps.md +1 -1
  44. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  45. package/docs/api/interfaces/InputProps.md +1 -1
  46. package/docs/api/interfaces/LabelProps.md +1 -1
  47. package/docs/api/interfaces/LoginFormProps.md +1 -1
  48. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  49. package/docs/api/interfaces/NavigationContextType.md +1 -1
  50. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  51. package/docs/api/interfaces/NavigationItem.md +1 -1
  52. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  53. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  54. package/docs/api/interfaces/Organisation.md +1 -1
  55. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  56. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  57. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  58. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  59. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  60. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  61. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  62. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  63. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  64. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  65. package/docs/api/interfaces/PaletteData.md +1 -1
  66. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  67. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  68. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  69. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  70. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  71. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  72. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  73. package/docs/api/interfaces/RBACConfig.md +1 -1
  74. package/docs/api/interfaces/RBACContextType.md +1 -1
  75. package/docs/api/interfaces/RBACLogger.md +1 -1
  76. package/docs/api/interfaces/RBACProviderProps.md +1 -1
  77. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  78. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  79. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  80. package/docs/api/interfaces/RouteConfig.md +1 -1
  81. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  82. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  83. package/docs/api/interfaces/StorageConfig.md +1 -1
  84. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  85. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  86. package/docs/api/interfaces/StorageListOptions.md +1 -1
  87. package/docs/api/interfaces/StorageListResult.md +1 -1
  88. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  89. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  90. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  91. package/docs/api/interfaces/StyleImport.md +1 -1
  92. package/docs/api/interfaces/ToastActionElement.md +1 -1
  93. package/docs/api/interfaces/ToastProps.md +1 -1
  94. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  95. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  96. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  97. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  98. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  99. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  100. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  101. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  102. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  103. package/docs/api/interfaces/UserEventAccess.md +1 -1
  104. package/docs/api/interfaces/UserMenuProps.md +1 -1
  105. package/docs/api/interfaces/UserProfile.md +1 -1
  106. package/docs/api/modules.md +2 -2
  107. package/docs/implementation-guides/permission-enforcement.md +1 -1
  108. package/package.json +1 -1
  109. package/src/providers/EventProvider.tsx +45 -7
  110. package/dist/chunk-VSWL652U.js.map +0 -1
  111. /package/dist/{DataTable-ZR3ZR6HZ.js.map → DataTable-RGMG3WMB.js.map} +0 -0
  112. /package/dist/{chunk-5VISREHF.js.map → chunk-BB7GLAJB.js.map} +0 -0
  113. /package/dist/{chunk-UVFDU5JT.js.map → chunk-DD64JVFD.js.map} +0 -0
  114. /package/dist/{chunk-FT2CYYHF.js.map → chunk-RHGZEJRT.js.map} +0 -0
  115. /package/dist/{chunk-BN5XALQT.js.map → chunk-T5TUPLHI.js.map} +0 -0
  116. /package/dist/{chunk-IWJD4ZNM.js.map → chunk-WK3OVRHR.js.map} +0 -0
@@ -32,11 +32,11 @@ import {
32
32
  useDataTableContext,
33
33
  usePluginRegistry,
34
34
  useStateManager
35
- } from "./chunk-5VISREHF.js";
36
- import "./chunk-IWJD4ZNM.js";
35
+ } from "./chunk-BB7GLAJB.js";
36
+ import "./chunk-WK3OVRHR.js";
37
37
  import "./chunk-GWSBHC4J.js";
38
38
  import "./chunk-7BNPOCLL.js";
39
- import "./chunk-VSWL652U.js";
39
+ import "./chunk-DDRXAZVJ.js";
40
40
  import {
41
41
  DataChunkManager,
42
42
  SearchIndex,
@@ -97,4 +97,4 @@ export {
97
97
  usePluginRegistry,
98
98
  useStateManager
99
99
  };
100
- //# sourceMappingURL=DataTable-ZR3ZR6HZ.js.map
100
+ //# sourceMappingURL=DataTable-RGMG3WMB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useCan
3
- } from "./chunk-IWJD4ZNM.js";
3
+ } from "./chunk-WK3OVRHR.js";
4
4
  import {
5
5
  useDataTablePerformance
6
6
  } from "./chunk-SS3E6QLB.js";
@@ -5584,4 +5584,4 @@ export {
5584
5584
  GroupHeader,
5585
5585
  EditableRow
5586
5586
  };
5587
- //# sourceMappingURL=chunk-5VISREHF.js.map
5587
+ //# sourceMappingURL=chunk-BB7GLAJB.js.map
@@ -15,7 +15,7 @@ import {
15
15
  SelectSeparator,
16
16
  SelectTrigger,
17
17
  SelectValue
18
- } from "./chunk-5VISREHF.js";
18
+ } from "./chunk-BB7GLAJB.js";
19
19
  import {
20
20
  isPermitted
21
21
  } from "./chunk-GWSBHC4J.js";
@@ -23,7 +23,7 @@ import {
23
23
  EventProvider_exports,
24
24
  init_EventProvider,
25
25
  useEvents
26
- } from "./chunk-VSWL652U.js";
26
+ } from "./chunk-DDRXAZVJ.js";
27
27
  import {
28
28
  PublicErrorBoundary,
29
29
  useAppConfig,
@@ -3290,4 +3290,4 @@ export {
3290
3290
  PublicPageDiagnostic,
3291
3291
  PublicPageContextChecker
3292
3292
  };
3293
- //# sourceMappingURL=chunk-UVFDU5JT.js.map
3293
+ //# sourceMappingURL=chunk-DD64JVFD.js.map
@@ -88,6 +88,10 @@ function EventProvider({ children }) {
88
88
  setSelectedEventState(persistedEvent);
89
89
  setSelectedEventId(persistedEventId);
90
90
  return true;
91
+ } else {
92
+ DebugLogger.log("EventProvider", "Persisted event not found in current events, clearing storage");
93
+ sessionStorage.removeItem("pace-core-selected-event");
94
+ localStorage.removeItem("pace-core-selected-event");
91
95
  }
92
96
  }
93
97
  } catch (error2) {
@@ -136,12 +140,14 @@ function EventProvider({ children }) {
136
140
  await setOrganisationContext(supabase, selectedOrganisation.id);
137
141
  }
138
142
  DebugLogger.log("EventProvider", "Calling get_pace_user_events RPC with:", {
139
- user_id: user.id,
140
- org_id: selectedOrganisation.id
143
+ user_uuid: user.id,
144
+ app_name: appName,
145
+ p_organisation_id: selectedOrganisation.id
141
146
  });
142
147
  const response = await supabase.rpc("get_pace_user_events", {
143
- user_id: user.id,
144
- org_id: selectedOrganisation.id
148
+ user_uuid: user.id,
149
+ app_name: appName,
150
+ p_organisation_id: selectedOrganisation.id
145
151
  });
146
152
  const { data, error: rpcError } = response || {};
147
153
  DebugLogger.log("EventProvider", "RPC response:", {
@@ -155,10 +161,26 @@ function EventProvider({ children }) {
155
161
  }
156
162
  if (isMounted) {
157
163
  const eventsData = data || [];
164
+ console.log("[EventProvider] Loaded events:", eventsData.map((event) => ({
165
+ eventId: event.event_id,
166
+ eventName: event.event_name,
167
+ organisationId: event.organisation_id,
168
+ selectedOrganisationId: selectedOrganisation?.id
169
+ })));
158
170
  setEvents(eventsData);
159
171
  setError(null);
160
172
  hasAutoSelectedRef.current = false;
161
- await loadPersistedEvent(eventsData);
173
+ const persistedEventLoaded = await loadPersistedEvent(eventsData);
174
+ if (!persistedEventLoaded) {
175
+ const nextEvent = getNextEventByDate(eventsData);
176
+ if (nextEvent) {
177
+ DebugLogger.log("EventProvider", "Auto-selecting next event after no persisted event found:", nextEvent.event_name);
178
+ hasAutoSelectedRef.current = true;
179
+ setSelectedEventState(nextEvent);
180
+ setSelectedEventIdRef.current(nextEvent.event_id);
181
+ persistEventSelection(nextEvent.event_id);
182
+ }
183
+ }
162
184
  }
163
185
  } catch (err) {
164
186
  console.error("[EventProvider] Error fetching events:", err);
@@ -201,11 +223,24 @@ function EventProvider({ children }) {
201
223
  const setSelectedEvent = useCallback((event) => {
202
224
  if (event) {
203
225
  try {
226
+ console.log("[EventProvider] Event selection validation:", {
227
+ eventId: event.event_id,
228
+ eventName: event.event_name,
229
+ eventOrganisationId: event.organisation_id,
230
+ selectedOrganisationId: selectedOrganisation?.id,
231
+ selectedOrganisationName: selectedOrganisation?.display_name,
232
+ match: event.organisation_id === selectedOrganisation?.id
233
+ });
204
234
  if (selectedOrganisation && event.organisation_id !== selectedOrganisation.id) {
205
- console.error("[EventProvider] Event organisation_id does not match selected organisation");
235
+ console.error("[EventProvider] Event organisation_id does not match selected organisation", {
236
+ eventOrganisationId: event.organisation_id,
237
+ selectedOrganisationId: selectedOrganisation.id,
238
+ eventName: event.event_name
239
+ });
206
240
  return;
207
241
  }
208
242
  } catch (error2) {
243
+ console.error("[EventProvider] Error during event validation:", error2);
209
244
  }
210
245
  setSelectedEventState(event);
211
246
  setSelectedEventId(event.event_id);
@@ -261,4 +296,4 @@ export {
261
296
  EventProvider_exports,
262
297
  init_EventProvider
263
298
  };
264
- //# sourceMappingURL=chunk-VSWL652U.js.map
299
+ //# sourceMappingURL=chunk-DDRXAZVJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/EventProvider.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useLayoutEffect,\n useCallback,\n useRef,\n useMemo,\n} from 'react';\nimport { useUnifiedAuth } from './UnifiedAuthProvider';\nimport { useOrganisations } from './OrganisationProvider';\nimport { setOrganisationContext } from '../utils/organisationContext';\nimport { DebugLogger } from '../utils/debugLogger';\n\nimport { Event } from '../types/unified';\n\nexport interface EventContextType {\n events: Event[];\n selectedEvent: Event | null;\n isLoading: boolean;\n error: Error | null;\n setSelectedEvent: (event: Event | null) => void;\n refreshEvents: () => Promise<void>;\n}\n\nconst EventContext = createContext<EventContextType | undefined>(undefined);\n\nexport const useEvents = () => {\n const context = useContext(EventContext);\n if (context === undefined) {\n throw new Error('useEvents must be used within an EventProvider');\n }\n return context;\n};\n\nexport interface EventProviderProps {\n children: React.ReactNode;\n}\n\n// Helper function to get the next event by date\nfunction getNextEventByDate(events: Event[]): Event | null {\n if (!events || events.length === 0) {\n return null;\n }\n\n const now = new Date();\n const futureEvents = events.filter(event => {\n if (!event.event_date) return false;\n const eventDate = new Date(event.event_date);\n return eventDate >= now;\n });\n\n if (futureEvents.length === 0) {\n return null;\n }\n\n // Sort by date (ascending) to get the next event\n const sortedFutureEvents = futureEvents.sort((a, b) => {\n const dateA = new Date(a.event_date!);\n const dateB = new Date(b.event_date!);\n return dateA.getTime() - dateB.getTime();\n });\n\n return sortedFutureEvents[0];\n}\n\nexport function EventProvider({ children }: EventProviderProps) {\n const [events, setEvents] = useState<Event[]>([]);\n const [selectedEvent, setSelectedEventState] = useState<Event | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const { user, session, supabase, appName, setSelectedEventId } = useUnifiedAuth();\n \n // Refs to prevent infinite loops\n const isInitializedRef = useRef(false);\n const isFetchingRef = useRef(false);\n const hasAutoSelectedRef = useRef(false);\n const userClearedEventRef = useRef(false);\n const setSelectedEventIdRef = useRef(setSelectedEventId);\n \n // Try to get organisation context, but don't fail if not available\n let selectedOrganisation = null;\n let ensureOrganisationContext = null;\n \n try {\n const orgContext = useOrganisations();\n selectedOrganisation = orgContext.selectedOrganisation;\n ensureOrganisationContext = orgContext.ensureOrganisationContext;\n } catch (error) {\n console.warn('[EventProvider] Organisation context not available:', error);\n }\n\n // Load persisted event selection with tab-scoped storage\n const loadPersistedEvent = useCallback(async (events: Event[]) => {\n try {\n // Try sessionStorage first (tab-specific)\n let persistedEventId = sessionStorage.getItem('pace-core-selected-event');\n \n // Fallback to localStorage if no sessionStorage value (for new tabs)\n if (!persistedEventId) {\n persistedEventId = localStorage.getItem('pace-core-selected-event');\n // If we found a value in localStorage, also store it in sessionStorage for this tab\n if (persistedEventId) {\n sessionStorage.setItem('pace-core-selected-event', persistedEventId);\n }\n }\n \n if (persistedEventId && events.length > 0) {\n const persistedEvent = events.find(event => event.event_id === persistedEventId);\n if (persistedEvent) {\n DebugLogger.log('EventProvider', 'Restoring persisted event:', persistedEvent.event_name);\n setSelectedEventState(persistedEvent);\n setSelectedEventId(persistedEventId);\n return true;\n } else {\n DebugLogger.log('EventProvider', 'Persisted event not found in current events, clearing storage');\n // Clear invalid persisted event\n sessionStorage.removeItem('pace-core-selected-event');\n localStorage.removeItem('pace-core-selected-event');\n }\n }\n } catch (error) {\n console.warn('[EventProvider] Failed to load persisted event:', error);\n }\n return false;\n }, [setSelectedEventId]);\n\n // Persist event selection with tab-scoped storage\n const persistEventSelection = useCallback((eventId: string) => {\n try {\n // Store in sessionStorage for tab-specific persistence\n sessionStorage.setItem('pace-core-selected-event', eventId);\n // Also store in localStorage as fallback for new tabs\n localStorage.setItem('pace-core-selected-event', eventId);\n } catch (error) {\n console.warn('[EventProvider] Failed to persist event selection:', error);\n }\n }, []);\n\n // Auto-select next event\n const autoSelectNextEvent = useCallback((events: Event[]) => {\n const nextEvent = getNextEventByDate(events);\n if (nextEvent) {\n DebugLogger.log('EventProvider', 'Auto-selecting next event:', nextEvent.event_name);\n setSelectedEventState(nextEvent);\n setSelectedEventId(nextEvent.event_id);\n persistEventSelection(nextEvent.event_id);\n }\n }, [setSelectedEventId, persistEventSelection]);\n\n // Main fetch function\n const fetchEvents = useCallback(async () => {\n if (!user || !session || !supabase || !appName || !selectedOrganisation) {\n DebugLogger.log('EventProvider', 'Missing required dependencies, skipping fetch');\n setIsLoading(false);\n return;\n }\n\n // Prevent multiple simultaneous fetches\n if (isFetchingRef.current) {\n DebugLogger.log('EventProvider', 'Already fetching events, skipping');\n return;\n }\n\n DebugLogger.log('EventProvider', 'User and organisation found, fetching events for:', {\n userId: user.id,\n appName: appName,\n organisationId: selectedOrganisation.id,\n organisationName: selectedOrganisation.display_name\n });\n\n isFetchingRef.current = true;\n let isMounted = true;\n\n try {\n // Ensure organisation context is set\n if (ensureOrganisationContext) {\n await ensureOrganisationContext();\n await setOrganisationContext(supabase, selectedOrganisation.id);\n }\n\n // Resolve app name to app ID\n // Call the RPC function\n DebugLogger.log('EventProvider', 'Calling get_pace_user_events RPC with:', {\n user_uuid: user.id,\n app_name: appName,\n p_organisation_id: selectedOrganisation.id\n });\n\n const response = await supabase.rpc('get_pace_user_events', {\n user_uuid: user.id,\n app_name: appName,\n p_organisation_id: selectedOrganisation.id,\n });\n \n const { data, error: rpcError } = response || {};\n\n DebugLogger.log('EventProvider', 'RPC response:', {\n data,\n error: rpcError,\n dataLength: data?.length || 0,\n organisationId: selectedOrganisation.id\n });\n\n if (rpcError) {\n throw new Error(rpcError.message || 'Failed to fetch events');\n }\n\n if (isMounted) {\n const eventsData = data || [];\n console.log('[EventProvider] Loaded events:', eventsData.map((event: any) => ({\n eventId: event.event_id,\n eventName: event.event_name,\n organisationId: event.organisation_id,\n selectedOrganisationId: selectedOrganisation?.id\n })));\n setEvents(eventsData);\n setError(null);\n\n // Note: Event colors are now managed by useEventTheme hook based on route and selected event\n // This prevents unwanted color cycling on non-event pages\n\n // Reset auto-selection ref for new events\n hasAutoSelectedRef.current = false;\n\n // Try to restore persisted event first\n const persistedEventLoaded = await loadPersistedEvent(eventsData);\n \n // If no persisted event was loaded, auto-select the next event\n if (!persistedEventLoaded) {\n const nextEvent = getNextEventByDate(eventsData);\n if (nextEvent) {\n DebugLogger.log('EventProvider', 'Auto-selecting next event after no persisted event found:', nextEvent.event_name);\n hasAutoSelectedRef.current = true;\n setSelectedEventState(nextEvent);\n setSelectedEventIdRef.current(nextEvent.event_id);\n persistEventSelection(nextEvent.event_id);\n }\n }\n }\n } catch (err) {\n console.error('[EventProvider] Error fetching events:', err);\n const _error = err instanceof Error ? err : new Error('Unknown error occurred');\n \n if (isMounted) {\n setError(_error);\n setEvents([]);\n }\n } finally {\n if (isMounted) {\n setIsLoading(false);\n }\n isFetchingRef.current = false;\n }\n\n return () => {\n isMounted = false;\n };\n }, [user, session, supabase, appName, selectedOrganisation, ensureOrganisationContext, loadPersistedEvent, autoSelectNextEvent]);\n\n // Initialize events only once\n useEffect(() => {\n if (!isInitializedRef.current) {\n isInitializedRef.current = true;\n fetchEvents();\n }\n }, [fetchEvents]);\n\n // Update ref when setSelectedEventId changes\n useEffect(() => {\n setSelectedEventIdRef.current = setSelectedEventId;\n }, [setSelectedEventId]);\n\n // Auto-select next event when events are loaded and no event is selected\n useLayoutEffect(() => {\n if (events.length > 0 && !selectedEvent && !hasAutoSelectedRef.current && !userClearedEventRef.current) {\n const nextEvent = getNextEventByDate(events);\n if (nextEvent) {\n DebugLogger.log('EventProvider', 'Auto-selecting next event:', nextEvent.event_name);\n hasAutoSelectedRef.current = true;\n setSelectedEventState(nextEvent);\n setSelectedEventIdRef.current(nextEvent.event_id);\n persistEventSelection(nextEvent.event_id);\n }\n }\n }, [events, selectedEvent]);\n\n const setSelectedEvent = useCallback((event: Event | null) => {\n if (event) {\n // SECURITY: Validate event belongs to current organisation\n try {\n console.log('[EventProvider] Event selection validation:', {\n eventId: event.event_id,\n eventName: event.event_name,\n eventOrganisationId: event.organisation_id,\n selectedOrganisationId: selectedOrganisation?.id,\n selectedOrganisationName: selectedOrganisation?.display_name,\n match: event.organisation_id === selectedOrganisation?.id\n });\n \n if (selectedOrganisation && event.organisation_id !== selectedOrganisation.id) {\n console.error('[EventProvider] Event organisation_id does not match selected organisation', {\n eventOrganisationId: event.organisation_id,\n selectedOrganisationId: selectedOrganisation.id,\n eventName: event.event_name\n });\n return;\n }\n } catch (error) {\n console.error('[EventProvider] Error during event validation:', error);\n }\n\n setSelectedEventState(event);\n setSelectedEventId(event.event_id);\n persistEventSelection(event.event_id);\n // Reset the user cleared flag when selecting an event\n userClearedEventRef.current = false;\n } else {\n setSelectedEventState(null);\n setSelectedEventId(null);\n // Clear both sessionStorage and localStorage\n sessionStorage.removeItem('pace-core-selected-event');\n localStorage.removeItem('pace-core-selected-event');\n // Reset the auto-selection flag when clearing the event\n hasAutoSelectedRef.current = false;\n // Mark that user explicitly cleared the event to prevent auto-selection\n userClearedEventRef.current = true;\n }\n }, [selectedOrganisation, setSelectedEventId, persistEventSelection]);\n\n const refreshEvents = useCallback(async () => {\n isInitializedRef.current = false;\n isFetchingRef.current = false;\n // Reset the user cleared flag when refreshing events\n userClearedEventRef.current = false;\n await fetchEvents();\n }, [fetchEvents]);\n\n // Memoize the context value to prevent unnecessary re-renders\n const contextValue: EventContextType = useMemo(() => ({\n events,\n selectedEvent,\n isLoading,\n error,\n setSelectedEvent,\n refreshEvents,\n }), [events, selectedEvent, isLoading, error, setSelectedEvent, refreshEvents]);\n\n return (\n <EventContext.Provider value={contextValue}>\n {children}\n </EventContext.Provider>\n );\n}"],"mappings":"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","names":["error","events"]}
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  useAccessLevel,
6
6
  useCan
7
- } from "./chunk-IWJD4ZNM.js";
7
+ } from "./chunk-WK3OVRHR.js";
8
8
  import {
9
9
  OrganisationContextRequiredError,
10
10
  RBACCache,
@@ -1929,4 +1929,4 @@ export {
1929
1929
  getPermissionsForRole,
1930
1930
  ALL_PERMISSIONS
1931
1931
  };
1932
- //# sourceMappingURL=chunk-FT2CYYHF.js.map
1932
+ //# sourceMappingURL=chunk-RHGZEJRT.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_EventProvider
3
- } from "./chunk-VSWL652U.js";
3
+ } from "./chunk-DDRXAZVJ.js";
4
4
  import {
5
5
  init_AuthProvider,
6
6
  init_InactivityProvider,
@@ -14,4 +14,4 @@ init_OrganisationProvider();
14
14
  init_UnifiedAuthProvider();
15
15
  init_AuthProvider();
16
16
  init_InactivityProvider();
17
- //# sourceMappingURL=chunk-BN5XALQT.js.map
17
+ //# sourceMappingURL=chunk-T5TUPLHI.js.map
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  init_EventProvider,
9
9
  useEvents
10
- } from "./chunk-VSWL652U.js";
10
+ } from "./chunk-DDRXAZVJ.js";
11
11
  import {
12
12
  init_OrganisationProvider,
13
13
  init_UnifiedAuthProvider,
@@ -506,4 +506,4 @@ export {
506
506
  useHasAllPermissions,
507
507
  useCachedPermissions
508
508
  };
509
- //# sourceMappingURL=chunk-IWJD4ZNM.js.map
509
+ //# sourceMappingURL=chunk-WK3OVRHR.js.map
@@ -49,7 +49,7 @@ import {
49
49
  usePublicPageContext as usePublicPageContext2,
50
50
  useStorage,
51
51
  useToast
52
- } from "./chunk-UVFDU5JT.js";
52
+ } from "./chunk-DD64JVFD.js";
53
53
  import {
54
54
  Alert,
55
55
  AlertDescription,
@@ -72,14 +72,14 @@ import {
72
72
  SelectSeparator,
73
73
  SelectTrigger,
74
74
  SelectValue
75
- } from "./chunk-5VISREHF.js";
75
+ } from "./chunk-BB7GLAJB.js";
76
76
  import {
77
77
  useRBAC
78
- } from "./chunk-IWJD4ZNM.js";
78
+ } from "./chunk-WK3OVRHR.js";
79
79
  import "./chunk-GWSBHC4J.js";
80
80
  import "./chunk-7BNPOCLL.js";
81
- import "./chunk-BN5XALQT.js";
82
- import "./chunk-VSWL652U.js";
81
+ import "./chunk-T5TUPLHI.js";
82
+ import "./chunk-DDRXAZVJ.js";
83
83
  import {
84
84
  DefaultPublicErrorFallback,
85
85
  PublicErrorBoundary,
package/dist/index.js CHANGED
@@ -31,7 +31,7 @@ import {
31
31
  withAccessLevelGuard,
32
32
  withPermissionGuard,
33
33
  withRoleGuard
34
- } from "./chunk-FT2CYYHF.js";
34
+ } from "./chunk-RHGZEJRT.js";
35
35
  import "./chunk-TYHR5X4W.js";
36
36
  import {
37
37
  APP_PATH_MAPPING,
@@ -101,7 +101,7 @@ import {
101
101
  useStorage,
102
102
  useToast,
103
103
  validateFileSize
104
- } from "./chunk-UVFDU5JT.js";
104
+ } from "./chunk-DD64JVFD.js";
105
105
  import {
106
106
  Alert,
107
107
  AlertDescription,
@@ -124,7 +124,7 @@ import {
124
124
  SelectSeparator,
125
125
  SelectTrigger,
126
126
  SelectValue
127
- } from "./chunk-5VISREHF.js";
127
+ } from "./chunk-BB7GLAJB.js";
128
128
  import {
129
129
  useAccessLevel,
130
130
  useCachedPermissions,
@@ -134,7 +134,7 @@ import {
134
134
  useMultiplePermissions,
135
135
  usePermissions,
136
136
  useRBAC as useRBAC2
137
- } from "./chunk-IWJD4ZNM.js";
137
+ } from "./chunk-WK3OVRHR.js";
138
138
  import {
139
139
  CACHE_PATTERNS,
140
140
  RBACCache,
@@ -162,12 +162,12 @@ import {
162
162
  getGlobalAuditManager,
163
163
  setGlobalAuditManager
164
164
  } from "./chunk-7BNPOCLL.js";
165
- import "./chunk-BN5XALQT.js";
165
+ import "./chunk-T5TUPLHI.js";
166
166
  import {
167
167
  EventProvider,
168
168
  init_EventProvider,
169
169
  useEvents
170
- } from "./chunk-VSWL652U.js";
170
+ } from "./chunk-DDRXAZVJ.js";
171
171
  import {
172
172
  clearPublicEventCache,
173
173
  extractEventCodeFromPath,
package/dist/providers.js CHANGED
@@ -1,8 +1,8 @@
1
- import "./chunk-BN5XALQT.js";
1
+ import "./chunk-T5TUPLHI.js";
2
2
  import {
3
3
  EventProvider,
4
4
  useEvents
5
- } from "./chunk-VSWL652U.js";
5
+ } from "./chunk-DDRXAZVJ.js";
6
6
  import {
7
7
  AuthProvider,
8
8
  InactivityProvider,
@@ -31,7 +31,7 @@ import {
31
31
  withAccessLevelGuard,
32
32
  withPermissionGuard,
33
33
  withRoleGuard
34
- } from "../chunk-FT2CYYHF.js";
34
+ } from "../chunk-RHGZEJRT.js";
35
35
  import "../chunk-TYHR5X4W.js";
36
36
  import {
37
37
  useAccessLevel,
@@ -42,7 +42,7 @@ import {
42
42
  useMultiplePermissions,
43
43
  usePermissions,
44
44
  useRBAC as useRBAC2
45
- } from "../chunk-IWJD4ZNM.js";
45
+ } from "../chunk-WK3OVRHR.js";
46
46
  import {
47
47
  CACHE_PATTERNS,
48
48
  RBACCache,
@@ -70,7 +70,7 @@ import {
70
70
  getGlobalAuditManager,
71
71
  setGlobalAuditManager
72
72
  } from "../chunk-7BNPOCLL.js";
73
- import "../chunk-VSWL652U.js";
73
+ import "../chunk-DDRXAZVJ.js";
74
74
  import "../chunk-B7SEFA3N.js";
75
75
  import {
76
76
  RBACProvider,
package/dist/utils.js CHANGED
@@ -545,7 +545,7 @@ function createLazyComponent(importFn, componentName, options = {}) {
545
545
  return WrappedComponent;
546
546
  }
547
547
  var LazyDataTable = createLazyComponent(
548
- () => import("./DataTable-ZR3ZR6HZ.js").then((module) => ({ default: module.DataTable })),
548
+ () => import("./DataTable-RGMG3WMB.js").then((module) => ({ default: module.DataTable })),
549
549
  "DataTable"
550
550
  );
551
551
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / ErrorBoundary
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / ErrorBoundary
2
2
 
3
3
  # Class: ErrorBoundary
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / InvalidScopeError
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / InvalidScopeError
2
2
 
3
3
  # Class: InvalidScopeError
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / MissingUserContextError
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / MissingUserContextError
2
2
 
3
3
  # Class: MissingUserContextError
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / OrganisationContextRequiredError
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / OrganisationContextRequiredError
2
2
 
3
3
  # Class: OrganisationContextRequiredError
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / PermissionDeniedError
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / PermissionDeniedError
2
2
 
3
3
  # Class: PermissionDeniedError
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / PublicErrorBoundary
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / PublicErrorBoundary
2
2
 
3
3
  # Class: PublicErrorBoundary
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / RBACAuditManager
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / RBACAuditManager
2
2
 
3
3
  # Class: RBACAuditManager
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / RBACCache
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / RBACCache
2
2
 
3
3
  # Class: RBACCache
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / RBACEngine
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / RBACEngine
2
2
 
3
3
  # Class: RBACEngine
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / RBACError
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / RBACError
2
2
 
3
3
  # Class: RBACError
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / RBACNotInitializedError
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / RBACNotInitializedError
2
2
 
3
3
  # Class: RBACNotInitializedError
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / SecureSupabaseClient
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / SecureSupabaseClient
2
2
 
3
3
  # Class: SecureSupabaseClient
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / AggregateConfig
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / AggregateConfig
2
2
 
3
3
  # Interface: AggregateConfig
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / ButtonProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / ButtonProps
2
2
 
3
3
  # Interface: ButtonProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / CardProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / CardProps
2
2
 
3
3
  # Interface: CardProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / ColorPalette
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / ColorPalette
2
2
 
3
3
  # Interface: ColorPalette
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / ColorShade
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / ColorShade
2
2
 
3
3
  # Interface: ColorShade
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / DataAccessRecord
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / DataAccessRecord
2
2
 
3
3
  # Interface: DataAccessRecord
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / DataTableAction
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / DataTableAction
2
2
 
3
3
  # Interface: DataTableAction\<TData\>
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / DataTableColumn
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / DataTableColumn
2
2
 
3
3
  # Interface: DataTableColumn\<TData\>
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / DataTableProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / DataTableProps
2
2
 
3
3
  # Interface: DataTableProps\<TData\>
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / DataTableToolbarButton
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / DataTableToolbarButton
2
2
 
3
3
  # Interface: DataTableToolbarButton
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / EmptyStateConfig
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / EmptyStateConfig
2
2
 
3
3
  # Interface: EmptyStateConfig
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / EnhancedNavigationMenuProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / EnhancedNavigationMenuProps
2
2
 
3
3
  # Interface: EnhancedNavigationMenuProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / EventContextType
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / EventContextType
2
2
 
3
3
  # Interface: EventContextType
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / EventLogoProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / EventLogoProps
2
2
 
3
3
  # Interface: EventLogoProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / EventProviderProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / EventProviderProps
2
2
 
3
3
  # Interface: EventProviderProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / FileSizeLimits
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / FileSizeLimits
2
2
 
3
3
  # Interface: FileSizeLimits
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / FileUploadProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / FileUploadProps
2
2
 
3
3
  # Interface: FileUploadProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / FooterProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / FooterProps
2
2
 
3
3
  # Interface: FooterProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / InactivityWarningModalProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / InactivityWarningModalProps
2
2
 
3
3
  # Interface: InactivityWarningModalProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / InputProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / InputProps
2
2
 
3
3
  # Interface: InputProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / LabelProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / LabelProps
2
2
 
3
3
  # Interface: LabelProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / LoginFormProps
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / LoginFormProps
2
2
 
3
3
  # Interface: LoginFormProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / NavigationAccessRecord
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / NavigationAccessRecord
2
2
 
3
3
  # Interface: NavigationAccessRecord
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.47](../README.md) / [Exports](../modules.md) / NavigationContextType
1
+ [@jmruthers/pace-core - v0.5.49](../README.md) / [Exports](../modules.md) / NavigationContextType
2
2
 
3
3
  # Interface: NavigationContextType
4
4