@openedx/frontend-base 1.0.0-alpha.12 → 1.0.0-alpha.13
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.
- package/{index.ts → dist/index.d.ts} +0 -3
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/analytics/MockAnalyticsService.d.ts +50 -0
- package/dist/runtime/analytics/MockAnalyticsService.js +64 -0
- package/dist/runtime/analytics/MockAnalyticsService.js.map +1 -0
- package/dist/runtime/analytics/SegmentAnalyticsService.d.ts +64 -0
- package/dist/runtime/analytics/SegmentAnalyticsService.js +218 -0
- package/dist/runtime/analytics/SegmentAnalyticsService.js.map +1 -0
- package/dist/runtime/analytics/index.d.ts +3 -0
- package/dist/runtime/analytics/index.js +4 -0
- package/dist/runtime/analytics/index.js.map +1 -0
- package/dist/runtime/analytics/interface.d.ts +53 -0
- package/{runtime → dist/runtime}/analytics/interface.js +26 -38
- package/dist/runtime/analytics/interface.js.map +1 -0
- package/dist/runtime/auth/AxiosCsrfTokenService.d.ts +10 -0
- package/dist/runtime/auth/AxiosCsrfTokenService.js +64 -0
- package/dist/runtime/auth/AxiosCsrfTokenService.js.map +1 -0
- package/dist/runtime/auth/AxiosJwtAuthService.d.ts +182 -0
- package/dist/runtime/auth/AxiosJwtAuthService.js +339 -0
- package/dist/runtime/auth/AxiosJwtAuthService.js.map +1 -0
- package/dist/runtime/auth/AxiosJwtTokenService.d.ts +16 -0
- package/dist/runtime/auth/AxiosJwtTokenService.js +130 -0
- package/dist/runtime/auth/AxiosJwtTokenService.js.map +1 -0
- package/dist/runtime/auth/LocalForageCache.d.ts +7 -0
- package/dist/runtime/auth/LocalForageCache.js +78 -0
- package/dist/runtime/auth/LocalForageCache.js.map +1 -0
- package/dist/runtime/auth/MockAuthService.d.ts +209 -0
- package/dist/runtime/auth/MockAuthService.js +256 -0
- package/dist/runtime/auth/MockAuthService.js.map +1 -0
- package/dist/runtime/auth/index.d.ts +3 -0
- package/dist/runtime/auth/index.js +4 -0
- package/dist/runtime/auth/index.js.map +1 -0
- package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.d.ts +2 -0
- package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +42 -0
- package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js.map +1 -0
- package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.d.ts +2 -0
- package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +40 -0
- package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js.map +1 -0
- package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.d.ts +2 -0
- package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +26 -0
- package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js.map +1 -0
- package/dist/runtime/auth/interceptors/createRetryInterceptor.d.ts +3 -0
- package/dist/runtime/auth/interceptors/createRetryInterceptor.js +67 -0
- package/dist/runtime/auth/interceptors/createRetryInterceptor.js.map +1 -0
- package/dist/runtime/auth/interface.d.ts +133 -0
- package/{runtime → dist/runtime}/auth/interface.js +65 -72
- package/dist/runtime/auth/interface.js.map +1 -0
- package/dist/runtime/auth/utils.d.ts +13 -0
- package/dist/runtime/auth/utils.js +66 -0
- package/dist/runtime/auth/utils.js.map +1 -0
- package/dist/runtime/babel.config.d.ts +2 -0
- package/{shell → dist/runtime}/babel.config.js +2 -1
- package/dist/runtime/babel.config.js.map +1 -0
- package/{runtime/config/index.ts → dist/runtime/config/index.d.ts} +28 -123
- package/dist/runtime/config/index.js +323 -0
- package/dist/runtime/config/index.js.map +1 -0
- package/dist/runtime/constants.d.ts +57 -0
- package/{runtime/constants.ts → dist/runtime/constants.js} +1 -11
- package/dist/runtime/constants.js.map +1 -0
- package/dist/runtime/i18n/index.d.ts +3 -0
- package/{runtime → dist/runtime}/i18n/index.js +4 -44
- package/dist/runtime/i18n/index.js.map +1 -0
- package/dist/runtime/i18n/injectIntlWithShim.d.ts +11 -0
- package/dist/runtime/i18n/injectIntlWithShim.js +45 -0
- package/dist/runtime/i18n/injectIntlWithShim.js.map +1 -0
- package/dist/runtime/i18n/lib.d.ts +119 -0
- package/dist/runtime/i18n/lib.js +236 -0
- package/dist/runtime/i18n/lib.js.map +1 -0
- package/dist/runtime/index.d.ts +13 -0
- package/dist/runtime/index.js +14 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/initialize.d.ts +91 -0
- package/dist/runtime/initialize.js +312 -0
- package/dist/runtime/initialize.js.map +1 -0
- package/dist/runtime/jest.config.d.ts +17 -0
- package/dist/runtime/jest.config.js +35 -0
- package/dist/runtime/jest.config.js.map +1 -0
- package/dist/runtime/logging/MockLoggingService.d.ts +28 -0
- package/dist/runtime/logging/MockLoggingService.js +31 -0
- package/dist/runtime/logging/MockLoggingService.js.map +1 -0
- package/dist/runtime/logging/NewRelicLoggingService.d.ts +67 -0
- package/dist/runtime/logging/NewRelicLoggingService.js +175 -0
- package/dist/runtime/logging/NewRelicLoggingService.js.map +1 -0
- package/{runtime/logging/index.ts → dist/runtime/logging/index.d.ts} +1 -7
- package/dist/runtime/logging/index.js +4 -0
- package/dist/runtime/logging/index.js.map +1 -0
- package/dist/runtime/logging/interface.d.ts +38 -0
- package/{runtime → dist/runtime}/logging/interface.js +16 -26
- package/dist/runtime/logging/interface.js.map +1 -0
- package/dist/runtime/logging/types.d.ts +4 -0
- package/dist/runtime/logging/types.js +2 -0
- package/dist/runtime/logging/types.js.map +1 -0
- package/dist/runtime/react/AuthenticatedPageRoute.d.ts +28 -0
- package/{runtime/react/AuthenticatedPageRoute.jsx → dist/runtime/react/AuthenticatedPageRoute.js} +11 -18
- package/dist/runtime/react/AuthenticatedPageRoute.js.map +1 -0
- package/dist/runtime/react/CombinedAppProvider.d.ts +6 -0
- package/dist/runtime/react/CombinedAppProvider.js +24 -0
- package/dist/runtime/react/CombinedAppProvider.js.map +1 -0
- package/dist/runtime/react/CurrentAppContext.d.ts +20 -0
- package/{runtime/react/CurrentAppContext.tsx → dist/runtime/react/CurrentAppContext.js} +3 -7
- package/dist/runtime/react/CurrentAppContext.js.map +1 -0
- package/dist/runtime/react/CurrentAppProvider.d.ts +23 -0
- package/dist/runtime/react/CurrentAppProvider.js +33 -0
- package/dist/runtime/react/CurrentAppProvider.js.map +1 -0
- package/dist/runtime/react/Divider.d.ts +1 -0
- package/dist/runtime/react/Divider.js +5 -0
- package/dist/runtime/react/Divider.js.map +1 -0
- package/dist/runtime/react/ErrorBoundary.d.ts +32 -0
- package/dist/runtime/react/ErrorBoundary.js +40 -0
- package/dist/runtime/react/ErrorBoundary.js.map +1 -0
- package/dist/runtime/react/ErrorPage.d.ts +17 -0
- package/dist/runtime/react/ErrorPage.js +29 -0
- package/dist/runtime/react/ErrorPage.js.map +1 -0
- package/dist/runtime/react/LoginRedirect.d.ts +8 -0
- package/{runtime/react/LoginRedirect.jsx → dist/runtime/react/LoginRedirect.js} +5 -5
- package/dist/runtime/react/LoginRedirect.js.map +1 -0
- package/dist/runtime/react/PageWrap.d.ts +8 -0
- package/{runtime/react/PageWrap.jsx → dist/runtime/react/PageWrap.js} +7 -10
- package/dist/runtime/react/PageWrap.js.map +1 -0
- package/dist/runtime/react/SiteContext.d.ts +24 -0
- package/{runtime/react/SiteContext.tsx → dist/runtime/react/SiteContext.js} +5 -11
- package/dist/runtime/react/SiteContext.js.map +1 -0
- package/dist/runtime/react/SiteProvider.d.ts +29 -0
- package/dist/runtime/react/SiteProvider.js +69 -0
- package/dist/runtime/react/SiteProvider.js.map +1 -0
- package/dist/runtime/react/constants.d.ts +3 -0
- package/{runtime/react/constants.ts → dist/runtime/react/constants.js} +1 -0
- package/dist/runtime/react/constants.js.map +1 -0
- package/{runtime/react/hooks/index.ts → dist/runtime/react/hooks/index.d.ts} +0 -1
- package/dist/runtime/react/hooks/index.js +8 -0
- package/dist/runtime/react/hooks/index.js.map +1 -0
- package/dist/runtime/react/hooks/theme/index.js +3 -0
- package/dist/runtime/react/hooks/theme/index.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useTheme.d.ts +35 -0
- package/dist/runtime/react/hooks/theme/useTheme.js +153 -0
- package/dist/runtime/react/hooks/theme/useTheme.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useThemeConfig.d.ts +16 -0
- package/{runtime/react/hooks/theme/useThemeConfig.ts → dist/runtime/react/hooks/theme/useThemeConfig.js} +11 -16
- package/dist/runtime/react/hooks/theme/useThemeConfig.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useThemeCore.d.ts +10 -0
- package/dist/runtime/react/hooks/theme/useThemeCore.js +40 -0
- package/dist/runtime/react/hooks/theme/useThemeCore.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useThemeVariants.d.ts +17 -0
- package/dist/runtime/react/hooks/theme/useThemeVariants.js +90 -0
- package/dist/runtime/react/hooks/theme/useThemeVariants.js.map +1 -0
- package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.d.ts +8 -0
- package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js +30 -0
- package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js.map +1 -0
- package/dist/runtime/react/hooks/theme/utils.d.ts +6 -0
- package/{runtime/react/hooks/theme/utils.ts → dist/runtime/react/hooks/theme/utils.js} +4 -4
- package/dist/runtime/react/hooks/theme/utils.js.map +1 -0
- package/dist/runtime/react/hooks/useActiveRoles.d.ts +2 -0
- package/{runtime/react/hooks/useActiveRoles.ts → dist/runtime/react/hooks/useActiveRoles.js} +6 -8
- package/dist/runtime/react/hooks/useActiveRoles.js.map +1 -0
- package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.d.ts +2 -0
- package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js +26 -0
- package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js.map +1 -0
- package/dist/runtime/react/hooks/useAppConfig.d.ts +2 -0
- package/{runtime/react/hooks/useAppConfig.ts → dist/runtime/react/hooks/useAppConfig.js} +3 -4
- package/dist/runtime/react/hooks/useAppConfig.js.map +1 -0
- package/dist/runtime/react/hooks/useAuthenticatedUser.d.ts +2 -0
- package/{runtime/react/hooks/useAuthenticatedUser.ts → dist/runtime/react/hooks/useAuthenticatedUser.js} +3 -4
- package/dist/runtime/react/hooks/useAuthenticatedUser.js.map +1 -0
- package/dist/runtime/react/hooks/useSiteConfig.d.ts +2 -0
- package/{runtime/react/hooks/useSiteConfig.ts → dist/runtime/react/hooks/useSiteConfig.js} +3 -4
- package/dist/runtime/react/hooks/useSiteConfig.js.map +1 -0
- package/dist/runtime/react/hooks/useSiteEvent.d.ts +12 -0
- package/{runtime/react/hooks/useSiteEvent.ts → dist/runtime/react/hooks/useSiteEvent.js} +7 -9
- package/dist/runtime/react/hooks/useSiteEvent.js.map +1 -0
- package/{runtime/react/index.ts → dist/runtime/react/index.d.ts} +0 -1
- package/dist/runtime/react/index.js +19 -0
- package/dist/runtime/react/index.js.map +1 -0
- package/dist/runtime/react/reducers.d.ts +11 -0
- package/dist/runtime/react/reducers.js +28 -0
- package/dist/runtime/react/reducers.js.map +1 -0
- package/dist/runtime/routing/index.js +2 -0
- package/dist/runtime/routing/index.js.map +1 -0
- package/dist/runtime/routing/utils.d.ts +4 -0
- package/dist/runtime/routing/utils.js +28 -0
- package/dist/runtime/routing/utils.js.map +1 -0
- package/dist/runtime/scripts/GoogleAnalyticsLoader.d.ts +12 -0
- package/dist/runtime/scripts/GoogleAnalyticsLoader.js +49 -0
- package/dist/runtime/scripts/GoogleAnalyticsLoader.js.map +1 -0
- package/dist/runtime/scripts/index.js +2 -0
- package/dist/runtime/scripts/index.js.map +1 -0
- package/dist/runtime/setupTest.d.ts +1 -0
- package/{runtime → dist/runtime}/setupTest.js +6 -8
- package/dist/runtime/setupTest.js.map +1 -0
- package/dist/runtime/slots/Slot.d.ts +9 -0
- package/dist/runtime/slots/Slot.js +30 -0
- package/dist/runtime/slots/Slot.js.map +1 -0
- package/dist/runtime/slots/SlotContext.d.ts +7 -0
- package/dist/runtime/slots/SlotContext.js +7 -0
- package/dist/runtime/slots/SlotContext.js.map +1 -0
- package/dist/runtime/slots/hooks.d.ts +12 -0
- package/dist/runtime/slots/hooks.js +29 -0
- package/dist/runtime/slots/hooks.js.map +1 -0
- package/dist/runtime/slots/index.js +7 -0
- package/dist/runtime/slots/index.js.map +1 -0
- package/dist/runtime/slots/layout/DefaultSlotLayout.d.ts +1 -0
- package/dist/runtime/slots/layout/DefaultSlotLayout.js +7 -0
- package/dist/runtime/slots/layout/DefaultSlotLayout.js.map +1 -0
- package/dist/runtime/slots/layout/hooks.d.ts +10 -0
- package/dist/runtime/slots/layout/hooks.js +57 -0
- package/dist/runtime/slots/layout/hooks.js.map +1 -0
- package/dist/runtime/slots/layout/index.js +5 -0
- package/dist/runtime/slots/layout/index.js.map +1 -0
- package/{runtime/slots/layout/types.ts → dist/runtime/slots/layout/types.d.ts} +10 -25
- package/dist/runtime/slots/layout/types.js +12 -0
- package/dist/runtime/slots/layout/types.js.map +1 -0
- package/dist/runtime/slots/layout/utils.d.ts +5 -0
- package/dist/runtime/slots/layout/utils.js +11 -0
- package/dist/runtime/slots/layout/utils.js.map +1 -0
- package/{runtime/slots/types.ts → dist/runtime/slots/types.d.ts} +6 -12
- package/dist/runtime/slots/types.js +7 -0
- package/dist/runtime/slots/types.js.map +1 -0
- package/dist/runtime/slots/utils.d.ts +3 -0
- package/dist/runtime/slots/utils.js +66 -0
- package/dist/runtime/slots/utils.js.map +1 -0
- package/dist/runtime/slots/widget/WidgetContext.d.ts +6 -0
- package/dist/runtime/slots/widget/WidgetContext.js +8 -0
- package/dist/runtime/slots/widget/WidgetContext.js.map +1 -0
- package/dist/runtime/slots/widget/WidgetProvider.d.ts +9 -0
- package/dist/runtime/slots/widget/WidgetProvider.js +18 -0
- package/dist/runtime/slots/widget/WidgetProvider.js.map +1 -0
- package/dist/runtime/slots/widget/hooks.d.ts +13 -0
- package/dist/runtime/slots/widget/hooks.js +104 -0
- package/dist/runtime/slots/widget/hooks.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.d.ts +10 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js +42 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.d.ts +13 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js +15 -0
- package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/IFrameWidget.d.ts +6 -0
- package/dist/runtime/slots/widget/iframe/IFrameWidget.js +32 -0
- package/dist/runtime/slots/widget/iframe/IFrameWidget.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/constants.d.ts +15 -0
- package/{runtime/slots/widget/iframe/constants.ts → dist/runtime/slots/widget/iframe/constants.js} +2 -4
- package/dist/runtime/slots/widget/iframe/constants.js.map +1 -0
- package/dist/runtime/slots/widget/iframe/hooks.d.ts +64 -0
- package/dist/runtime/slots/widget/iframe/hooks.js +144 -0
- package/dist/runtime/slots/widget/iframe/hooks.js.map +1 -0
- package/{runtime/slots/widget/iframe/index.ts → dist/runtime/slots/widget/iframe/index.d.ts} +1 -4
- package/dist/runtime/slots/widget/iframe/index.js +3 -0
- package/dist/runtime/slots/widget/iframe/index.js.map +1 -0
- package/{runtime/slots/widget/iframe/types.ts → dist/runtime/slots/widget/iframe/types.d.ts} +2 -4
- package/dist/runtime/slots/widget/iframe/types.js +3 -0
- package/dist/runtime/slots/widget/iframe/types.js.map +1 -0
- package/dist/runtime/slots/widget/index.js +6 -0
- package/dist/runtime/slots/widget/index.js.map +1 -0
- package/{runtime/slots/widget/types.ts → dist/runtime/slots/widget/types.d.ts} +50 -84
- package/dist/runtime/slots/widget/types.js +41 -0
- package/dist/runtime/slots/widget/types.js.map +1 -0
- package/dist/runtime/slots/widget/utils.d.ts +22 -0
- package/dist/runtime/slots/widget/utils.js +166 -0
- package/dist/runtime/slots/widget/utils.js.map +1 -0
- package/{runtime/subscriptions.ts → dist/runtime/subscriptions.d.ts} +5 -41
- package/dist/runtime/subscriptions.js +48 -0
- package/dist/runtime/subscriptions.js.map +1 -0
- package/{runtime/testing/index.ts → dist/runtime/testing/index.d.ts} +0 -1
- package/dist/runtime/testing/index.js +9 -0
- package/dist/runtime/testing/index.js.map +1 -0
- package/dist/runtime/testing/initializeMockApp.d.ts +46 -0
- package/{runtime/testing/initializeMockApp.ts → dist/runtime/testing/initializeMockApp.js} +26 -41
- package/dist/runtime/testing/initializeMockApp.js.map +1 -0
- package/dist/runtime/testing/mockMessages.d.ts +22 -0
- package/dist/runtime/testing/mockMessages.js +23 -0
- package/dist/runtime/testing/mockMessages.js.map +1 -0
- package/dist/runtime/utils.d.ts +95 -0
- package/{runtime → dist/runtime}/utils.js +55 -70
- package/dist/runtime/utils.js.map +1 -0
- package/dist/shell/DefaultLayout.d.ts +1 -0
- package/dist/shell/DefaultLayout.js +7 -0
- package/dist/shell/DefaultLayout.js.map +1 -0
- package/dist/shell/DefaultMain.d.ts +1 -0
- package/dist/shell/DefaultMain.js +6 -0
- package/dist/shell/DefaultMain.js.map +1 -0
- package/dist/shell/Logo.d.ts +6 -0
- package/dist/shell/Logo.js +11 -0
- package/dist/shell/Logo.js.map +1 -0
- package/dist/shell/Shell.d.ts +1 -0
- package/dist/shell/Shell.js +10 -0
- package/dist/shell/Shell.js.map +1 -0
- package/dist/shell/Shell.messages.d.ts +58 -0
- package/dist/shell/Shell.messages.js +60 -0
- package/dist/shell/Shell.messages.js.map +1 -0
- package/dist/shell/app.d.ts +3 -0
- package/dist/shell/app.js +35 -0
- package/dist/shell/app.js.map +1 -0
- package/dist/shell/babel.config.d.ts +2 -0
- package/{runtime → dist/shell}/babel.config.js +2 -1
- package/dist/shell/babel.config.js.map +1 -0
- package/dist/shell/dev/devFooter/app.d.ts +3 -0
- package/dist/shell/dev/devFooter/app.js +36 -0
- package/dist/shell/dev/devFooter/app.js.map +1 -0
- package/dist/shell/dev/devFooter/index.js +2 -0
- package/dist/shell/dev/devFooter/index.js.map +1 -0
- package/dist/shell/dev/devHeader/BarContext.d.ts +7 -0
- package/dist/shell/dev/devHeader/BarContext.js +8 -0
- package/dist/shell/dev/devHeader/BarContext.js.map +1 -0
- package/dist/shell/dev/devHeader/BarLink.d.ts +1 -0
- package/dist/shell/dev/devHeader/BarLink.js +10 -0
- package/dist/shell/dev/devHeader/BarLink.js.map +1 -0
- package/dist/shell/dev/devHeader/BarProvider.d.ts +6 -0
- package/dist/shell/dev/devHeader/BarProvider.js +16 -0
- package/dist/shell/dev/devHeader/BarProvider.js.map +1 -0
- package/dist/shell/dev/devHeader/CoursesLink.d.ts +1 -0
- package/dist/shell/dev/devHeader/CoursesLink.js +10 -0
- package/dist/shell/dev/devHeader/CoursesLink.js.map +1 -0
- package/dist/shell/dev/devHeader/FooContext.d.ts +7 -0
- package/dist/shell/dev/devHeader/FooContext.js +8 -0
- package/dist/shell/dev/devHeader/FooContext.js.map +1 -0
- package/dist/shell/dev/devHeader/FooLink.d.ts +1 -0
- package/dist/shell/dev/devHeader/FooLink.js +10 -0
- package/dist/shell/dev/devHeader/FooLink.js.map +1 -0
- package/dist/shell/dev/devHeader/FooProvider.d.ts +6 -0
- package/dist/shell/dev/devHeader/FooProvider.js +16 -0
- package/dist/shell/dev/devHeader/FooProvider.js.map +1 -0
- package/dist/shell/dev/devHeader/app.d.ts +3 -0
- package/dist/shell/dev/devHeader/app.js +34 -0
- package/dist/shell/dev/devHeader/app.js.map +1 -0
- package/dist/shell/dev/devHeader/index.js +2 -0
- package/dist/shell/dev/devHeader/index.js.map +1 -0
- package/dist/shell/dev/devHeader/providers.d.ts +3 -0
- package/dist/shell/dev/devHeader/providers.js +8 -0
- package/dist/shell/dev/devHeader/providers.js.map +1 -0
- package/dist/shell/dev/devHome/HomePage.d.ts +1 -0
- package/dist/shell/dev/devHome/HomePage.js +13 -0
- package/dist/shell/dev/devHome/HomePage.js.map +1 -0
- package/dist/shell/dev/devHome/app.d.ts +3 -0
- package/dist/shell/dev/devHome/app.js +16 -0
- package/dist/shell/dev/devHome/app.js.map +1 -0
- package/dist/shell/dev/devHome/i18n/index.d.ts +27 -0
- package/dist/shell/dev/devHome/i18n/index.js +28 -0
- package/dist/shell/dev/devHome/i18n/index.js.map +1 -0
- package/dist/shell/dev/devHome/index.js +2 -0
- package/dist/shell/dev/devHome/index.js.map +1 -0
- package/dist/shell/dev/devHome/messages.d.ts +8 -0
- package/dist/shell/dev/devHome/messages.js +10 -0
- package/dist/shell/dev/devHome/messages.js.map +1 -0
- package/dist/shell/dev/devUser/app.d.ts +3 -0
- package/dist/shell/dev/devUser/app.js +22 -0
- package/dist/shell/dev/devUser/app.js.map +1 -0
- package/dist/shell/dev/devUser/index.js +2 -0
- package/dist/shell/dev/devUser/index.js.map +1 -0
- package/dist/shell/dev/index.js +6 -0
- package/dist/shell/dev/index.js.map +1 -0
- package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.d.ts +1 -0
- package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js +7 -0
- package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js.map +1 -0
- package/dist/shell/dev/slotShowcase/LayoutWithOptions.d.ts +1 -0
- package/dist/shell/dev/slotShowcase/LayoutWithOptions.js +9 -0
- package/dist/shell/dev/slotShowcase/LayoutWithOptions.js.map +1 -0
- package/dist/shell/dev/slotShowcase/SlotShowcasePage.d.ts +1 -0
- package/dist/shell/dev/slotShowcase/SlotShowcasePage.js +8 -0
- package/dist/shell/dev/slotShowcase/SlotShowcasePage.js.map +1 -0
- package/dist/shell/dev/slotShowcase/WidgetWithOptions.d.ts +1 -0
- package/dist/shell/dev/slotShowcase/WidgetWithOptions.js +8 -0
- package/dist/shell/dev/slotShowcase/WidgetWithOptions.js.map +1 -0
- package/dist/shell/dev/slotShowcase/app.d.ts +3 -0
- package/dist/shell/dev/slotShowcase/app.js +336 -0
- package/dist/shell/dev/slotShowcase/app.js.map +1 -0
- package/dist/shell/dev/slotShowcase/index.js +2 -0
- package/dist/shell/dev/slotShowcase/index.js.map +1 -0
- package/dist/shell/footer/CenterLinks.d.ts +1 -0
- package/dist/shell/footer/CenterLinks.js +7 -0
- package/dist/shell/footer/CenterLinks.js.map +1 -0
- package/dist/shell/footer/CopyrightNotice.d.ts +10 -0
- package/dist/shell/footer/CopyrightNotice.js +10 -0
- package/dist/shell/footer/CopyrightNotice.js.map +1 -0
- package/dist/shell/footer/Footer.d.ts +1 -0
- package/dist/shell/footer/Footer.js +12 -0
- package/dist/shell/footer/Footer.js.map +1 -0
- package/dist/shell/footer/LabeledLinkColumn.d.ts +1 -0
- package/dist/shell/footer/LabeledLinkColumn.js +11 -0
- package/dist/shell/footer/LabeledLinkColumn.js.map +1 -0
- package/dist/shell/footer/LanguageMenu.d.ts +1 -0
- package/dist/shell/footer/LanguageMenu.js +16 -0
- package/dist/shell/footer/LanguageMenu.js.map +1 -0
- package/dist/shell/footer/LanguageMenuItem.d.ts +8 -0
- package/dist/shell/footer/LanguageMenuItem.js +11 -0
- package/dist/shell/footer/LanguageMenuItem.js.map +1 -0
- package/dist/shell/footer/LeftLinks.d.ts +1 -0
- package/dist/shell/footer/LeftLinks.js +7 -0
- package/dist/shell/footer/LeftLinks.js.map +1 -0
- package/dist/shell/footer/LegalNotices.d.ts +1 -0
- package/dist/shell/footer/LegalNotices.js +10 -0
- package/dist/shell/footer/LegalNotices.js.map +1 -0
- package/dist/shell/footer/PoweredBy.d.ts +1 -0
- package/dist/shell/footer/PoweredBy.js +9 -0
- package/dist/shell/footer/PoweredBy.js.map +1 -0
- package/dist/shell/footer/RevealLinks.d.ts +1 -0
- package/dist/shell/footer/RevealLinks.js +16 -0
- package/dist/shell/footer/RevealLinks.js.map +1 -0
- package/dist/shell/footer/RightLinks.d.ts +1 -0
- package/dist/shell/footer/RightLinks.js +7 -0
- package/dist/shell/footer/RightLinks.js.map +1 -0
- package/dist/shell/footer/app.d.ts +3 -0
- package/dist/shell/footer/app.js +59 -0
- package/dist/shell/footer/app.js.map +1 -0
- package/dist/shell/footer/data/api.d.ts +1 -0
- package/dist/shell/footer/data/api.js +45 -0
- package/dist/shell/footer/data/api.js.map +1 -0
- package/dist/shell/footer/index.js +3 -0
- package/dist/shell/footer/index.js.map +1 -0
- package/dist/shell/header/AuthenticatedMenu.d.ts +5 -0
- package/dist/shell/header/AuthenticatedMenu.js +13 -0
- package/dist/shell/header/AuthenticatedMenu.js.map +1 -0
- package/dist/shell/header/Header.d.ts +1 -0
- package/dist/shell/header/Header.js +8 -0
- package/dist/shell/header/Header.js.map +1 -0
- package/dist/shell/header/anonymous-menu/AnonymousMenu.d.ts +5 -0
- package/dist/shell/header/anonymous-menu/AnonymousMenu.js +7 -0
- package/dist/shell/header/anonymous-menu/AnonymousMenu.js.map +1 -0
- package/dist/shell/header/anonymous-menu/LoginButton.d.ts +3 -0
- package/dist/shell/header/anonymous-menu/LoginButton.js +22 -0
- package/dist/shell/header/anonymous-menu/LoginButton.js.map +1 -0
- package/dist/shell/header/anonymous-menu/RegisterButton.d.ts +3 -0
- package/dist/shell/header/anonymous-menu/RegisterButton.js +22 -0
- package/dist/shell/header/anonymous-menu/RegisterButton.js.map +1 -0
- package/dist/shell/header/app.d.ts +3 -0
- package/dist/shell/header/app.js +119 -0
- package/dist/shell/header/app.js.map +1 -0
- package/dist/shell/header/desktop/DesktopLayout.d.ts +1 -0
- package/dist/shell/header/desktop/DesktopLayout.js +9 -0
- package/dist/shell/header/desktop/DesktopLayout.js.map +1 -0
- package/dist/shell/header/desktop/PrimaryNavLinks.d.ts +1 -0
- package/dist/shell/header/desktop/PrimaryNavLinks.js +7 -0
- package/dist/shell/header/desktop/PrimaryNavLinks.js.map +1 -0
- package/dist/shell/header/desktop/SecondaryNavLinks.d.ts +1 -0
- package/dist/shell/header/desktop/SecondaryNavLinks.js +7 -0
- package/dist/shell/header/desktop/SecondaryNavLinks.js.map +1 -0
- package/dist/shell/header/index.js +3 -0
- package/dist/shell/header/index.js.map +1 -0
- package/dist/shell/header/mobile/MobileLayout.d.ts +1 -0
- package/dist/shell/header/mobile/MobileLayout.js +17 -0
- package/dist/shell/header/mobile/MobileLayout.js.map +1 -0
- package/dist/shell/header/mobile/MobileNavLinks.d.ts +1 -0
- package/dist/shell/header/mobile/MobileNavLinks.js +7 -0
- package/dist/shell/header/mobile/MobileNavLinks.js.map +1 -0
- package/dist/shell/i18n/index.d.ts +25 -0
- package/dist/shell/i18n/index.js +26 -0
- package/dist/shell/i18n/index.js.map +1 -0
- package/dist/shell/index.js +8 -0
- package/dist/shell/index.js.map +1 -0
- package/dist/shell/jest.config.d.ts +16 -0
- package/{tools/dist/jest → dist/shell}/jest.config.js +13 -11
- package/dist/shell/jest.config.js.map +1 -0
- package/dist/shell/menus/LinkMenuItem.d.ts +9 -0
- package/dist/shell/menus/LinkMenuItem.js +36 -0
- package/dist/shell/menus/LinkMenuItem.js.map +1 -0
- package/dist/shell/menus/NavDropdownMenuSlot.d.ts +7 -0
- package/dist/shell/menus/NavDropdownMenuSlot.js +14 -0
- package/dist/shell/menus/NavDropdownMenuSlot.js.map +1 -0
- package/dist/shell/menus/ProfileLinkMenuItem.d.ts +8 -0
- package/dist/shell/menus/ProfileLinkMenuItem.js +16 -0
- package/dist/shell/menus/ProfileLinkMenuItem.js.map +1 -0
- package/dist/shell/menus/data/utils.d.ts +4 -0
- package/dist/shell/menus/data/utils.js +13 -0
- package/dist/shell/menus/data/utils.js.map +1 -0
- package/dist/shell/router/createRouter.d.ts +1 -0
- package/{shell/router/createRouter.ts → dist/shell/router/createRouter.js} +9 -11
- package/dist/shell/router/createRouter.js.map +1 -0
- package/dist/shell/router/getAppRoutes.d.ts +2 -0
- package/dist/shell/router/getAppRoutes.js +14 -0
- package/dist/shell/router/getAppRoutes.js.map +1 -0
- package/dist/shell/setupTest.d.ts +1 -0
- package/{shell → dist/shell}/setupTest.js +6 -7
- package/dist/shell/setupTest.js.map +1 -0
- package/dist/shell/site.config.dev.d.ts +4 -0
- package/dist/shell/site.config.dev.js +43 -0
- package/dist/shell/site.config.dev.js.map +1 -0
- package/dist/shell/site.d.ts +1 -0
- package/dist/shell/site.js +35 -0
- package/dist/shell/site.js.map +1 -0
- package/dist/tools/babel/babel.config.d.ts +12 -0
- package/dist/tools/cli/commands/serve.d.ts +1 -0
- package/dist/tools/cli/intl-imports.d.ts +7 -0
- package/dist/tools/cli/intl-imports.test.d.ts +1 -0
- package/dist/tools/cli/openedx.d.ts +2 -0
- package/{tools/dist → dist/tools}/cli/openedx.js +1 -1
- package/dist/tools/cli/transifex-utils.d.ts +2 -0
- package/dist/tools/cli/utils/ensureConfigFilenameOption.d.ts +2 -0
- package/dist/tools/cli/utils/formatter.d.ts +1 -0
- package/dist/tools/cli/utils/getResolvedConfigPath.d.ts +2 -0
- package/dist/tools/cli/utils/prettyPrintTitle.d.ts +1 -0
- package/dist/tools/cli/utils/printUsage.d.ts +1 -0
- package/dist/tools/config-helpers/createConfig.d.ts +2 -0
- package/dist/tools/config-helpers/createLintConfig.d.ts +2 -0
- package/dist/tools/config-helpers/getBaseConfig.d.ts +2 -0
- package/dist/tools/defaultConfigPaths.d.ts +8 -0
- package/dist/tools/eslint/base.eslint.config.d.ts +3 -0
- package/dist/tools/eslint.config.d.ts +3 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/jest/jest.config.d.ts +15 -0
- package/dist/tools/jest.config.d.ts +8 -0
- package/dist/tools/types.d.ts +18 -0
- package/{tools/dist → dist/tools}/typescript/tsconfig.json +2 -1
- package/dist/tools/webpack/common-config/all/getCodeRules.d.ts +2 -0
- package/dist/tools/webpack/common-config/all/getFileLoaderRules.d.ts +11 -0
- package/dist/tools/webpack/common-config/all/getImageMinimizer.d.ts +5 -0
- package/dist/tools/webpack/common-config/all/getStylesheetRule.d.ts +8 -0
- package/dist/tools/webpack/common-config/dev/getDevServer.d.ts +2 -0
- package/dist/tools/webpack/common-config/index.d.ts +6 -0
- package/dist/tools/webpack/common-config/site/getHtmlWebpackPlugin.d.ts +2 -0
- package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.d.ts +18 -0
- package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/index.d.ts +2 -0
- package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.d.ts +1 -0
- package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.d.ts +1 -0
- package/dist/tools/webpack/utils/getPublicPath.d.ts +1 -0
- package/dist/tools/webpack/utils/getResolvedSiteConfigPath.d.ts +1 -0
- package/dist/tools/webpack/webpack.config.build.d.ts +3 -0
- package/{config → dist/tools}/webpack/webpack.config.build.js +8 -5
- package/dist/tools/webpack/webpack.config.dev.d.ts +3 -0
- package/{tools/dist → dist/tools}/webpack/webpack.config.dev.js +8 -5
- package/dist/tools/webpack/webpack.config.dev.shell.d.ts +3 -0
- package/{tools/dist → dist/tools}/webpack/webpack.config.dev.shell.js +0 -4
- package/dist/types.d.ts +82 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +21 -16
- package/config/tsconfig.json +0 -32
- package/config/webpack/common-config/all/getIgnoreWarnings.js +0 -14
- package/config/webpack/utils/getLocalAliases.js +0 -65
- package/config/webpack/webpack.config.dev.js +0 -70
- package/config/webpack/webpack.config.dev.shell.js +0 -104
- package/runtime/__mocks__/file.js +0 -1
- package/runtime/__mocks__/svg.js +0 -1
- package/runtime/__mocks__/universal-cookie.js +0 -6
- package/runtime/analytics/MockAnalyticsService.js +0 -71
- package/runtime/analytics/SegmentAnalyticsService.js +0 -243
- package/runtime/analytics/index.ts +0 -12
- package/runtime/analytics/interface.test.js +0 -242
- package/runtime/auth/AxiosCsrfTokenService.js +0 -60
- package/runtime/auth/AxiosJwtAuthService.js +0 -363
- package/runtime/auth/AxiosJwtAuthService.test.jsx +0 -1076
- package/runtime/auth/AxiosJwtTokenService.js +0 -134
- package/runtime/auth/LocalForageCache.js +0 -76
- package/runtime/auth/MockAuthService.js +0 -278
- package/runtime/auth/index.ts +0 -19
- package/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +0 -36
- package/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +0 -37
- package/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +0 -20
- package/runtime/auth/interceptors/createRetryInterceptor.js +0 -74
- package/runtime/auth/interceptors/createRetryInterceptor.test.js +0 -23
- package/runtime/auth/utils.js +0 -105
- package/runtime/config/getExternalLinkUrl.test.js +0 -76
- package/runtime/i18n/injectIntlWithShim.jsx +0 -48
- package/runtime/i18n/lib.test.js +0 -230
- package/runtime/i18n/lib.ts +0 -272
- package/runtime/index.ts +0 -139
- package/runtime/initialize.async.function.config.test.js +0 -43
- package/runtime/initialize.const.config.test.js +0 -41
- package/runtime/initialize.function.config.test.js +0 -41
- package/runtime/initialize.js +0 -352
- package/runtime/initialize.test.js +0 -356
- package/runtime/jest.config.js +0 -33
- package/runtime/logging/MockLoggingService.js +0 -31
- package/runtime/logging/NewRelicLoggingService.js +0 -184
- package/runtime/logging/NewRelicLoggingService.test.js +0 -214
- package/runtime/logging/types.ts +0 -4
- package/runtime/react/AuthenticatedPageRoute.test.jsx +0 -135
- package/runtime/react/CombinedAppProvider.tsx +0 -46
- package/runtime/react/CurrentAppProvider.tsx +0 -46
- package/runtime/react/Divider.tsx +0 -5
- package/runtime/react/ErrorBoundary.jsx +0 -47
- package/runtime/react/ErrorBoundary.test.jsx +0 -83
- package/runtime/react/ErrorPage.jsx +0 -72
- package/runtime/react/SiteProvider.test.jsx +0 -66
- package/runtime/react/SiteProvider.tsx +0 -101
- package/runtime/react/hooks/theme/useTheme.test.ts +0 -221
- package/runtime/react/hooks/theme/useTheme.ts +0 -179
- package/runtime/react/hooks/theme/useThemeConfig.test.ts +0 -107
- package/runtime/react/hooks/theme/useThemeCore.test.ts +0 -65
- package/runtime/react/hooks/theme/useThemeCore.ts +0 -52
- package/runtime/react/hooks/theme/useThemeVariants.test.ts +0 -97
- package/runtime/react/hooks/theme/useThemeVariants.ts +0 -116
- package/runtime/react/hooks/theme/useTrackColorSchemeChoice.test.ts +0 -54
- package/runtime/react/hooks/theme/useTrackColorSchemeChoice.ts +0 -30
- package/runtime/react/hooks/useActiveRouteRoleWatcher.ts +0 -31
- package/runtime/react/hooks/useAuthenticatedUser.test.tsx +0 -41
- package/runtime/react/hooks/useSiteConfig.test.tsx +0 -13
- package/runtime/react/reducers.ts +0 -40
- package/runtime/routing/utils.test.ts +0 -7
- package/runtime/routing/utils.ts +0 -34
- package/runtime/scripts/GoogleAnalyticsLoader.test.ts +0 -77
- package/runtime/scripts/GoogleAnalyticsLoader.ts +0 -59
- package/runtime/site.config.test.tsx +0 -33
- package/runtime/slots/Slot.test.tsx +0 -40
- package/runtime/slots/Slot.tsx +0 -32
- package/runtime/slots/SlotContext.tsx +0 -8
- package/runtime/slots/hooks.ts +0 -35
- package/runtime/slots/layout/DefaultSlotLayout.test.tsx +0 -31
- package/runtime/slots/layout/DefaultSlotLayout.tsx +0 -9
- package/runtime/slots/layout/hooks.test.tsx +0 -178
- package/runtime/slots/layout/hooks.ts +0 -65
- package/runtime/slots/layout/utils.test.ts +0 -67
- package/runtime/slots/layout/utils.ts +0 -14
- package/runtime/slots/utils.test.ts +0 -64
- package/runtime/slots/utils.ts +0 -78
- package/runtime/slots/widget/WidgetContext.tsx +0 -9
- package/runtime/slots/widget/WidgetProvider.tsx +0 -30
- package/runtime/slots/widget/hooks.ts +0 -105
- package/runtime/slots/widget/iframe/IFrameContentWrapper.messages.tsx +0 -16
- package/runtime/slots/widget/iframe/IFrameContentWrapper.tsx +0 -84
- package/runtime/slots/widget/iframe/IFrameWidget.tsx +0 -59
- package/runtime/slots/widget/iframe/hooks.ts +0 -179
- package/runtime/slots/widget/utils.tsx +0 -201
- package/runtime/testing/initializeMockApp.test.ts +0 -66
- package/runtime/testing/mockMessages.ts +0 -23
- package/runtime/utils.test.js +0 -116
- package/shell/DefaultLayout.tsx +0 -18
- package/shell/DefaultMain.tsx +0 -7
- package/shell/Logo.test.tsx +0 -32
- package/shell/Logo.tsx +0 -28
- package/shell/Shell.messages.ts +0 -61
- package/shell/Shell.tsx +0 -18
- package/shell/__mocks__/file.js +0 -1
- package/shell/__mocks__/svg.js +0 -1
- package/shell/__mocks__/universal-cookie.js +0 -6
- package/shell/app.ts +0 -38
- package/shell/dev/devFooter/app.tsx +0 -43
- package/shell/dev/devHeader/BarContext.tsx +0 -13
- package/shell/dev/devHeader/BarLink.tsx +0 -16
- package/shell/dev/devHeader/BarProvider.tsx +0 -25
- package/shell/dev/devHeader/CoursesLink.tsx +0 -16
- package/shell/dev/devHeader/FooContext.tsx +0 -13
- package/shell/dev/devHeader/FooLink.tsx +0 -16
- package/shell/dev/devHeader/FooProvider.tsx +0 -25
- package/shell/dev/devHeader/app.tsx +0 -53
- package/shell/dev/devHeader/providers.tsx +0 -11
- package/shell/dev/devHome/HomePage.tsx +0 -28
- package/shell/dev/devHome/app.ts +0 -18
- package/shell/dev/devHome/i18n/index.ts +0 -27
- package/shell/dev/devHome/messages.ts +0 -11
- package/shell/dev/devUser/app.tsx +0 -24
- package/shell/dev/slotShowcase/HorizontalSlotLayout.tsx +0 -11
- package/shell/dev/slotShowcase/LayoutWithOptions.tsx +0 -17
- package/shell/dev/slotShowcase/SlotShowcasePage.tsx +0 -66
- package/shell/dev/slotShowcase/WidgetWithOptions.tsx +0 -11
- package/shell/dev/slotShowcase/app.tsx +0 -373
- package/shell/footer/CenterLinks.tsx +0 -11
- package/shell/footer/CopyrightNotice.tsx +0 -36
- package/shell/footer/Footer.tsx +0 -34
- package/shell/footer/LabeledLinkColumn.tsx +0 -19
- package/shell/footer/LanguageMenu.tsx +0 -35
- package/shell/footer/LanguageMenuItem.tsx +0 -23
- package/shell/footer/LeftLinks.tsx +0 -11
- package/shell/footer/LegalNotices.tsx +0 -17
- package/shell/footer/PoweredBy.tsx +0 -17
- package/shell/footer/RevealLinks.tsx +0 -43
- package/shell/footer/RightLinks.tsx +0 -11
- package/shell/footer/app.tsx +0 -73
- package/shell/footer/data/api.ts +0 -48
- package/shell/header/AuthenticatedMenu.tsx +0 -32
- package/shell/header/Header.tsx +0 -17
- package/shell/header/anonymous-menu/AnonymousMenu.tsx +0 -14
- package/shell/header/anonymous-menu/LoginButton.tsx +0 -14
- package/shell/header/anonymous-menu/RegisterButton.tsx +0 -15
- package/shell/header/app.tsx +0 -142
- package/shell/header/desktop/DesktopLayout.tsx +0 -22
- package/shell/header/desktop/PrimaryNavLinks.tsx +0 -10
- package/shell/header/desktop/SecondaryNavLinks.tsx +0 -10
- package/shell/header/mobile/MobileLayout.tsx +0 -47
- package/shell/header/mobile/MobileNavLinks.tsx +0 -10
- package/shell/i18n/index.ts +0 -25
- package/shell/jest.config.js +0 -31
- package/shell/menus/LinkMenuItem.tsx +0 -64
- package/shell/menus/NavDropdownMenuSlot.tsx +0 -29
- package/shell/menus/ProfileLinkMenuItem.tsx +0 -33
- package/shell/menus/data/utils.ts +0 -19
- package/shell/public/index.html +0 -10
- package/shell/router/createRouter.test.tsx +0 -50
- package/shell/router/getAppRoutes.test.tsx +0 -59
- package/shell/router/getAppRoutes.ts +0 -21
- package/shell/site.config.dev.tsx +0 -49
- package/shell/site.config.test.tsx +0 -16
- package/shell/site.tsx +0 -41
- package/tools/dist/babel/babel.config.js +0 -28
- package/tools/dist/config-helpers/createConfig.js +0 -13
- package/tools/dist/config-helpers/createLintConfig.js +0 -16
- package/tools/dist/config-helpers/getBaseConfig.js +0 -12
- package/tools/dist/defaultConfigPaths.js +0 -35
- package/tools/dist/eslint/base.eslint.config.js +0 -113
- package/tools/dist/index.js +0 -12
- package/tools/dist/types.js +0 -23
- package/tools/dist/webpack/common-config/all/getCodeRules.js +0 -52
- package/tools/dist/webpack/common-config/all/getFileLoaderRules.js +0 -26
- package/tools/dist/webpack/common-config/all/getIgnoreWarnings.js +0 -14
- package/tools/dist/webpack/common-config/all/getImageMinimizer.js +0 -25
- package/tools/dist/webpack/common-config/all/getStylesheetRule.js +0 -112
- package/tools/dist/webpack/common-config/dev/getDevServer.js +0 -38
- package/tools/dist/webpack/common-config/index.js +0 -18
- package/tools/dist/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -16
- package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -91
- package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -7
- package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -66
- package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -3
- package/tools/dist/webpack/utils/getLocalAliases.js +0 -65
- package/tools/dist/webpack/utils/getPublicPath.js +0 -6
- package/tools/dist/webpack/utils/getResolvedSiteConfigPath.js +0 -32
- package/tools/dist/webpack/webpack.config.build.js +0 -70
- package/types.ts +0 -119
- /package/{runtime/react/hooks/theme/index.ts → dist/runtime/react/hooks/theme/index.d.ts} +0 -0
- /package/{runtime/routing/index.ts → dist/runtime/routing/index.d.ts} +0 -0
- /package/{runtime/scripts/index.ts → dist/runtime/scripts/index.d.ts} +0 -0
- /package/{runtime/slots/index.ts → dist/runtime/slots/index.d.ts} +0 -0
- /package/{runtime/slots/layout/index.ts → dist/runtime/slots/layout/index.d.ts} +0 -0
- /package/{runtime/slots/widget/index.ts → dist/runtime/slots/widget/index.d.ts} +0 -0
- /package/{shell → dist/shell}/app.scss +0 -0
- /package/{shell/dev/devFooter/index.ts → dist/shell/dev/devFooter/index.d.ts} +0 -0
- /package/{shell/dev/devHeader/index.ts → dist/shell/dev/devHeader/index.d.ts} +0 -0
- /package/{shell/dev/devHome/index.ts → dist/shell/dev/devHome/index.d.ts} +0 -0
- /package/{shell/dev/devUser/index.ts → dist/shell/dev/devUser/index.d.ts} +0 -0
- /package/{shell/dev/index.ts → dist/shell/dev/index.d.ts} +0 -0
- /package/{shell/dev/slotShowcase/index.ts → dist/shell/dev/slotShowcase/index.d.ts} +0 -0
- /package/{shell/footer/index.ts → dist/shell/footer/index.d.ts} +0 -0
- /package/{shell/header/index.ts → dist/shell/header/index.d.ts} +0 -0
- /package/{shell/index.ts → dist/shell/index.d.ts} +0 -0
- /package/{config → dist/tools}/babel/babel.config.js +0 -0
- /package/{tools/dist → dist/tools}/cli/commands/serve.js +0 -0
- /package/{tools/dist → dist/tools}/cli/intl-imports.js +0 -0
- /package/{tools/dist → dist/tools}/cli/intl-imports.test.js +0 -0
- /package/{tools/dist → dist/tools}/cli/transifex-utils.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/ensureConfigFilenameOption.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/formatter.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/getResolvedConfigPath.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/prettyPrintTitle.js +0 -0
- /package/{tools/dist → dist/tools}/cli/utils/printUsage.js +0 -0
- /package/{config → dist/tools}/config-helpers/createConfig.js +0 -0
- /package/{config → dist/tools}/config-helpers/createLintConfig.js +0 -0
- /package/{config → dist/tools}/config-helpers/getBaseConfig.js +0 -0
- /package/{config → dist/tools}/defaultConfigPaths.js +0 -0
- /package/{config → dist/tools}/eslint/base.eslint.config.js +0 -0
- /package/{tools/dist → dist/tools}/eslint.config.js +0 -0
- /package/{config → dist/tools}/index.js +0 -0
- /package/{config → dist/tools}/jest/jest.config.js +0 -0
- /package/{tools/dist → dist/tools}/jest.config.js +0 -0
- /package/{config → dist/tools}/types.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/all/getCodeRules.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/all/getFileLoaderRules.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/all/getImageMinimizer.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/all/getStylesheetRule.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/dev/getDevServer.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/index.js +0 -0
- /package/{config → dist/tools}/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -0
- /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -0
- /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -0
- /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -0
- /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -0
- /package/{config → dist/tools}/webpack/utils/getPublicPath.js +0 -0
- /package/{config → dist/tools}/webpack/utils/getResolvedSiteConfigPath.js +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export default ErrorBoundary;
|
|
2
|
+
/**
|
|
3
|
+
* Error boundary component used to log caught errors and display the error page.
|
|
4
|
+
*
|
|
5
|
+
* @memberof module:React
|
|
6
|
+
* @extends {Component}
|
|
7
|
+
*/
|
|
8
|
+
declare class ErrorBoundary extends React.Component<any, any, any> {
|
|
9
|
+
static getDerivedStateFromError(): {
|
|
10
|
+
hasError: boolean;
|
|
11
|
+
};
|
|
12
|
+
constructor(props: any);
|
|
13
|
+
state: {
|
|
14
|
+
hasError: boolean;
|
|
15
|
+
};
|
|
16
|
+
componentDidCatch(error: any, info: any): void;
|
|
17
|
+
render(): any;
|
|
18
|
+
}
|
|
19
|
+
declare namespace ErrorBoundary {
|
|
20
|
+
namespace propTypes {
|
|
21
|
+
let children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
22
|
+
let fallbackComponent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
23
|
+
}
|
|
24
|
+
namespace defaultProps {
|
|
25
|
+
let children_1: null;
|
|
26
|
+
export { children_1 as children };
|
|
27
|
+
let fallbackComponent_1: undefined;
|
|
28
|
+
export { fallbackComponent_1 as fallbackComponent };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
import React from 'react';
|
|
32
|
+
import PropTypes from 'prop-types';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { Component } from 'react';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import { logError } from '../logging';
|
|
5
|
+
import ErrorPage from './ErrorPage';
|
|
6
|
+
/**
|
|
7
|
+
* Error boundary component used to log caught errors and display the error page.
|
|
8
|
+
*
|
|
9
|
+
* @memberof module:React
|
|
10
|
+
* @extends {Component}
|
|
11
|
+
*/
|
|
12
|
+
class ErrorBoundary extends Component {
|
|
13
|
+
constructor(props) {
|
|
14
|
+
super(props);
|
|
15
|
+
this.state = { hasError: false };
|
|
16
|
+
}
|
|
17
|
+
static getDerivedStateFromError() {
|
|
18
|
+
// Update state so the next render will show the fallback UI.
|
|
19
|
+
return { hasError: true };
|
|
20
|
+
}
|
|
21
|
+
componentDidCatch(error, info) {
|
|
22
|
+
logError(error, { stack: info.componentStack });
|
|
23
|
+
}
|
|
24
|
+
render() {
|
|
25
|
+
if (this.state.hasError) {
|
|
26
|
+
return this.props.fallbackComponent || _jsx(ErrorPage, {});
|
|
27
|
+
}
|
|
28
|
+
return this.props.children;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
ErrorBoundary.propTypes = {
|
|
32
|
+
children: PropTypes.node,
|
|
33
|
+
fallbackComponent: PropTypes.node,
|
|
34
|
+
};
|
|
35
|
+
ErrorBoundary.defaultProps = {
|
|
36
|
+
children: null,
|
|
37
|
+
fallbackComponent: undefined,
|
|
38
|
+
};
|
|
39
|
+
export default ErrorBoundary;
|
|
40
|
+
//# sourceMappingURL=ErrorBoundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../runtime/react/ErrorBoundary.jsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,aAAc,SAAQ,SAAS;IACnC,YAAY,KAAK;QACf,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,wBAAwB;QAC7B,6DAA6D;QAC7D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,KAAK,EAAE,IAAI;QAC3B,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAC,SAAS,KAAG,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF;AAED,aAAa,CAAC,SAAS,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC,IAAI;IACxB,iBAAiB,EAAE,SAAS,CAAC,IAAI;CAClC,CAAC;AAEF,aAAa,CAAC,YAAY,GAAG;IAC3B,QAAQ,EAAE,IAAI;IACd,iBAAiB,EAAE,SAAS;CAC7B,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { logError } from '../logging';\n\nimport ErrorPage from './ErrorPage';\n\n/**\n * Error boundary component used to log caught errors and display the error page.\n *\n * @memberof module:React\n * @extends {Component}\n */\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError() {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n componentDidCatch(error, info) {\n logError(error, { stack: info.componentStack });\n }\n\n render() {\n if (this.state.hasError) {\n return this.props.fallbackComponent || <ErrorPage />;\n }\n return this.props.children;\n }\n}\n\nErrorBoundary.propTypes = {\n children: PropTypes.node,\n fallbackComponent: PropTypes.node,\n};\n\nErrorBoundary.defaultProps = {\n children: null,\n fallbackComponent: undefined,\n};\n\nexport default ErrorBoundary;\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export default ErrorPage;
|
|
2
|
+
/**
|
|
3
|
+
* An error page that displays a generic message for unexpected errors. Also contains a "Try
|
|
4
|
+
* Again" button to refresh the page.
|
|
5
|
+
*
|
|
6
|
+
* @memberof module:React
|
|
7
|
+
* @extends {Component}
|
|
8
|
+
*/
|
|
9
|
+
declare function ErrorPage({ message, }: {
|
|
10
|
+
message?: null | undefined;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare namespace ErrorPage {
|
|
13
|
+
namespace propTypes {
|
|
14
|
+
let message: PropTypes.Requireable<string>;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
import PropTypes from 'prop-types';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import { Button, Container, Row, Col, } from '@openedx/paragon';
|
|
5
|
+
import { useSiteEvent } from './hooks';
|
|
6
|
+
import { FormattedMessage, IntlProvider, getMessages, getLocale, LOCALE_CHANGED, } from '../i18n';
|
|
7
|
+
/**
|
|
8
|
+
* An error page that displays a generic message for unexpected errors. Also contains a "Try
|
|
9
|
+
* Again" button to refresh the page.
|
|
10
|
+
*
|
|
11
|
+
* @memberof module:React
|
|
12
|
+
* @extends {Component}
|
|
13
|
+
*/
|
|
14
|
+
function ErrorPage({ message = null, }) {
|
|
15
|
+
const [locale, setLocale] = useState(getLocale());
|
|
16
|
+
useSiteEvent(LOCALE_CHANGED, () => {
|
|
17
|
+
setLocale(getLocale());
|
|
18
|
+
});
|
|
19
|
+
/* istanbul ignore next */
|
|
20
|
+
const reload = () => {
|
|
21
|
+
global.location.reload();
|
|
22
|
+
};
|
|
23
|
+
return (_jsx(IntlProvider, { locale: locale, messages: getMessages(), children: _jsx(Container, { fluid: true, className: "py-5 justify-content-center align-items-start text-center", "data-testid": "error-page", children: _jsx(Row, { children: _jsxs(Col, { children: [_jsx("p", { className: "text-muted", children: _jsx(FormattedMessage, { id: "unexpected.error.message.text", defaultMessage: "An unexpected error occurred. Please click the button below to refresh the page.", description: "error message when an unexpected error occurs" }) }), message && (_jsx("div", { role: "alert", className: "my-4", children: _jsx("p", { children: message }) })), _jsx(Button, { onClick: reload, children: _jsx(FormattedMessage, { id: "unexpected.error.button.text", defaultMessage: "Try again", description: "text for button that tries to reload the app by refreshing the page" }) })] }) }) }) }));
|
|
24
|
+
}
|
|
25
|
+
ErrorPage.propTypes = {
|
|
26
|
+
message: PropTypes.string,
|
|
27
|
+
};
|
|
28
|
+
export default ErrorPage;
|
|
29
|
+
//# sourceMappingURL=ErrorPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorPage.js","sourceRoot":"","sources":["../../../runtime/react/ErrorPage.jsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,EACjB,OAAO,GAAG,IAAI,GACf;IACC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAElD,YAAY,CAAC,cAAc,EAAE,GAAG,EAAE;QAChC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,YACnD,KAAC,SAAS,IAAC,KAAK,QAAC,SAAS,EAAC,2DAA2D,iBAAa,YAAY,YAC7G,KAAC,GAAG,cACF,MAAC,GAAG,eACF,YAAG,SAAS,EAAC,YAAY,YACvB,KAAC,gBAAgB,IACf,EAAE,EAAC,+BAA+B,EAClC,cAAc,EAAC,kFAAkF,EACjG,WAAW,EAAC,+CAA+C,GAC3D,GACA,EACH,OAAO,IAAI,CACV,cAAK,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,MAAM,YAChC,sBAAI,OAAO,GAAK,GACZ,CACP,EACD,KAAC,MAAM,IAAC,OAAO,EAAE,MAAM,YACrB,KAAC,gBAAgB,IACf,EAAE,EAAC,8BAA8B,EACjC,cAAc,EAAC,WAAW,EAC1B,WAAW,EAAC,qEAAqE,GACjF,GACK,IACL,GACF,GACI,GACC,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,CAAC,SAAS,GAAG;IACpB,OAAO,EAAE,SAAS,CAAC,MAAM;CAC1B,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Button, Container, Row, Col,\n} from '@openedx/paragon';\n\nimport { useSiteEvent } from './hooks';\nimport {\n FormattedMessage,\n IntlProvider,\n getMessages,\n getLocale,\n LOCALE_CHANGED,\n} from '../i18n';\n\n/**\n * An error page that displays a generic message for unexpected errors. Also contains a \"Try\n * Again\" button to refresh the page.\n *\n * @memberof module:React\n * @extends {Component}\n */\nfunction ErrorPage({\n message = null,\n}) {\n const [locale, setLocale] = useState(getLocale());\n\n useSiteEvent(LOCALE_CHANGED, () => {\n setLocale(getLocale());\n });\n\n /* istanbul ignore next */\n const reload = () => {\n global.location.reload();\n };\n\n return (\n <IntlProvider locale={locale} messages={getMessages()}>\n <Container fluid className=\"py-5 justify-content-center align-items-start text-center\" data-testid=\"error-page\">\n <Row>\n <Col>\n <p className=\"text-muted\">\n <FormattedMessage\n id=\"unexpected.error.message.text\"\n defaultMessage=\"An unexpected error occurred. Please click the button below to refresh the page.\"\n description=\"error message when an unexpected error occurs\"\n />\n </p>\n {message && (\n <div role=\"alert\" className=\"my-4\">\n <p>{message}</p>\n </div>\n )}\n <Button onClick={reload}>\n <FormattedMessage\n id=\"unexpected.error.button.text\"\n defaultMessage=\"Try again\"\n description=\"text for button that tries to reload the app by refreshing the page\"\n />\n </Button>\n </Col>\n </Row>\n </Container>\n </IntlProvider>\n );\n}\n\nErrorPage.propTypes = {\n message: PropTypes.string,\n};\n\nexport default ErrorPage;\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A React component that, when rendered, redirects to the login page as a side effect. Uses
|
|
3
|
+
* `redirectToLogin` to perform the redirect.
|
|
4
|
+
*
|
|
5
|
+
* @see {@link module:frontend-base~redirectToLogin}
|
|
6
|
+
* @memberof module:React
|
|
7
|
+
*/
|
|
8
|
+
export default function LoginRedirect(): null;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import { redirectToLogin } from '../auth';
|
|
3
|
-
|
|
4
3
|
/**
|
|
5
4
|
* A React component that, when rendered, redirects to the login page as a side effect. Uses
|
|
6
5
|
* `redirectToLogin` to perform the redirect.
|
|
@@ -9,8 +8,9 @@ import { redirectToLogin } from '../auth';
|
|
|
9
8
|
* @memberof module:React
|
|
10
9
|
*/
|
|
11
10
|
export default function LoginRedirect() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
redirectToLogin(global.location.href);
|
|
13
|
+
}, []);
|
|
14
|
+
return null;
|
|
16
15
|
}
|
|
16
|
+
//# sourceMappingURL=LoginRedirect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginRedirect.js","sourceRoot":"","sources":["../../../runtime/react/LoginRedirect.jsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa;IACnC,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import { useEffect } from 'react';\nimport { redirectToLogin } from '../auth';\n\n/**\n * A React component that, when rendered, redirects to the login page as a side effect. Uses\n * `redirectToLogin` to perform the redirect.\n *\n * @see {@link module:frontend-base~redirectToLogin}\n * @memberof module:React\n */\nexport default function LoginRedirect() {\n useEffect(() => {\n redirectToLogin(global.location.href);\n }, []);\n return null;\n}\n"]}
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
// eslint-disable-next-line no-unused-vars
|
|
3
3
|
import { useEffect } from 'react';
|
|
4
4
|
import { useLocation } from 'react-router-dom';
|
|
5
|
-
|
|
6
5
|
import { sendPageEvent } from '../analytics';
|
|
7
|
-
|
|
8
6
|
/**
|
|
9
7
|
* A Wrapper component that calls `sendPageEvent` when it becomes active.
|
|
10
8
|
*
|
|
@@ -13,12 +11,11 @@ import { sendPageEvent } from '../analytics';
|
|
|
13
11
|
* @param {Object} props
|
|
14
12
|
*/
|
|
15
13
|
export default function PageWrap({ children }) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return children;
|
|
14
|
+
const location = useLocation();
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
sendPageEvent();
|
|
17
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
18
|
+
}, [location.pathname]);
|
|
19
|
+
return children;
|
|
24
20
|
}
|
|
21
|
+
//# sourceMappingURL=PageWrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageWrap.js","sourceRoot":"","sources":["../../../runtime/react/PageWrap.jsx"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,0CAA0C;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAE;IAC3C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,EAAE,CAAC;QAClB,uDAAuD;IACvD,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExB,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["/* eslint-disable react/prop-types */\n// eslint-disable-next-line no-unused-vars\nimport { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport { sendPageEvent } from '../analytics';\n\n/**\n * A Wrapper component that calls `sendPageEvent` when it becomes active.\n *\n * @see {@link module:frontend-base~sendPageEvent}\n * @memberof module:React\n * @param {Object} props\n */\nexport default function PageWrap({ children }) {\n const location = useLocation();\n\n useEffect(() => {\n sendPageEvent();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location.pathname]);\n\n return children;\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SiteConfig, User } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* `SiteContext` provides data from `App` in a way that React components can readily consume, even
|
|
4
|
+
* if it's mutable data. `SiteContext` contains the following data structure:
|
|
5
|
+
*
|
|
6
|
+
* ```
|
|
7
|
+
* {
|
|
8
|
+
* authenticatedUser
|
|
9
|
+
* siteConfig
|
|
10
|
+
* locale
|
|
11
|
+
* }
|
|
12
|
+
* ```
|
|
13
|
+
* If `authenticatedUser`, `siteConfig`, or `locale` data changes, `SiteContext` will be updated
|
|
14
|
+
* accordingly and pass those changes onto React components using the context.
|
|
15
|
+
*
|
|
16
|
+
* `SiteContext` is used in a React application like any other `[React Context](https://reactjs.org/docs/context.html)
|
|
17
|
+
* @memberof module:React
|
|
18
|
+
*/
|
|
19
|
+
declare const SiteContext: import("react").Context<{
|
|
20
|
+
authenticatedUser: User | null;
|
|
21
|
+
siteConfig: SiteConfig;
|
|
22
|
+
locale: string;
|
|
23
|
+
}>;
|
|
24
|
+
export default SiteContext;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { createContext } from 'react';
|
|
2
|
-
import { SiteConfig, User } from '../../types';
|
|
3
2
|
import { getSiteConfig } from '../config';
|
|
4
|
-
|
|
5
3
|
/**
|
|
6
4
|
* `SiteContext` provides data from `App` in a way that React components can readily consume, even
|
|
7
5
|
* if it's mutable data. `SiteContext` contains the following data structure:
|
|
@@ -19,14 +17,10 @@ import { getSiteConfig } from '../config';
|
|
|
19
17
|
* `SiteContext` is used in a React application like any other `[React Context](https://reactjs.org/docs/context.html)
|
|
20
18
|
* @memberof module:React
|
|
21
19
|
*/
|
|
22
|
-
const SiteContext = createContext
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}>({
|
|
27
|
-
authenticatedUser: null,
|
|
28
|
-
siteConfig: getSiteConfig(),
|
|
29
|
-
locale: 'en',
|
|
20
|
+
const SiteContext = createContext({
|
|
21
|
+
authenticatedUser: null,
|
|
22
|
+
siteConfig: getSiteConfig(),
|
|
23
|
+
locale: 'en',
|
|
30
24
|
});
|
|
31
|
-
|
|
32
25
|
export default SiteContext;
|
|
26
|
+
//# sourceMappingURL=SiteContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiteContext.js","sourceRoot":"","sources":["../../../runtime/react/SiteContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,GAAG,aAAa,CAI9B;IACD,iBAAiB,EAAE,IAAI;IACvB,UAAU,EAAE,aAAa,EAAE;IAC3B,MAAM,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,eAAe,WAAW,CAAC","sourcesContent":["import { createContext } from 'react';\nimport { SiteConfig, User } from '../../types';\nimport { getSiteConfig } from '../config';\n\n/**\n * `SiteContext` provides data from `App` in a way that React components can readily consume, even\n * if it's mutable data. `SiteContext` contains the following data structure:\n *\n * ```\n * {\n * authenticatedUser\n * siteConfig\n * locale\n * }\n * ```\n * If `authenticatedUser`, `siteConfig`, or `locale` data changes, `SiteContext` will be updated\n * accordingly and pass those changes onto React components using the context.\n *\n * `SiteContext` is used in a React application like any other `[React Context](https://reactjs.org/docs/context.html)\n * @memberof module:React\n */\nconst SiteContext = createContext<{\n authenticatedUser: User | null,\n siteConfig: SiteConfig,\n locale: string,\n}>({\n authenticatedUser: null,\n siteConfig: getSiteConfig(),\n locale: 'en',\n});\n\nexport default SiteContext;\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface SiteProviderProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* A wrapper component for React-based micro-frontends to initialize a number of common data/
|
|
7
|
+
* context providers.
|
|
8
|
+
*
|
|
9
|
+
* ```
|
|
10
|
+
* subscribe(SITE_READY, () => {
|
|
11
|
+
* ReactDOM.render(
|
|
12
|
+
* <SiteProvider>
|
|
13
|
+
* <HelloWorld />
|
|
14
|
+
* </SiteProvider>
|
|
15
|
+
* )
|
|
16
|
+
* });
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* This will provide the following to HelloWorld:
|
|
20
|
+
* - An error boundary as described above.
|
|
21
|
+
* - An `SiteContext` provider for React context data.
|
|
22
|
+
* - IntlProvider for @edx/frontend-i18n internationalization
|
|
23
|
+
* - A theme manager for Paragon.
|
|
24
|
+
*
|
|
25
|
+
* @param {Object} props
|
|
26
|
+
* @memberof module:React
|
|
27
|
+
*/
|
|
28
|
+
export default function SiteProvider({ children }: SiteProviderProps): import("react/jsx-runtime").JSX.Element | null;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useState } from 'react';
|
|
3
|
+
import { AUTHENTICATED_USER_CHANGED, getAuthenticatedUser } from '../auth';
|
|
4
|
+
import { getSiteConfig } from '../config';
|
|
5
|
+
import { CONFIG_CHANGED } from '../constants';
|
|
6
|
+
import { getLocale, getMessages, IntlProvider, LOCALE_CHANGED, } from '../i18n';
|
|
7
|
+
import CombinedAppProvider from './CombinedAppProvider';
|
|
8
|
+
import ErrorBoundary from './ErrorBoundary';
|
|
9
|
+
import SiteContext from './SiteContext';
|
|
10
|
+
import { SELECTED_THEME_VARIANT_KEY } from './constants';
|
|
11
|
+
import { useTheme, useSiteEvent, useTrackColorSchemeChoice } from './hooks';
|
|
12
|
+
import { themeActions } from './reducers';
|
|
13
|
+
/**
|
|
14
|
+
* A wrapper component for React-based micro-frontends to initialize a number of common data/
|
|
15
|
+
* context providers.
|
|
16
|
+
*
|
|
17
|
+
* ```
|
|
18
|
+
* subscribe(SITE_READY, () => {
|
|
19
|
+
* ReactDOM.render(
|
|
20
|
+
* <SiteProvider>
|
|
21
|
+
* <HelloWorld />
|
|
22
|
+
* </SiteProvider>
|
|
23
|
+
* )
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* This will provide the following to HelloWorld:
|
|
28
|
+
* - An error boundary as described above.
|
|
29
|
+
* - An `SiteContext` provider for React context data.
|
|
30
|
+
* - IntlProvider for @edx/frontend-i18n internationalization
|
|
31
|
+
* - A theme manager for Paragon.
|
|
32
|
+
*
|
|
33
|
+
* @param {Object} props
|
|
34
|
+
* @memberof module:React
|
|
35
|
+
*/
|
|
36
|
+
export default function SiteProvider({ children }) {
|
|
37
|
+
const [siteConfig, setSiteConfig] = useState(getSiteConfig());
|
|
38
|
+
const [authenticatedUser, setAuthenticatedUser] = useState(getAuthenticatedUser());
|
|
39
|
+
const [locale, setLocale] = useState(getLocale());
|
|
40
|
+
useSiteEvent(AUTHENTICATED_USER_CHANGED, () => {
|
|
41
|
+
setAuthenticatedUser(getAuthenticatedUser());
|
|
42
|
+
});
|
|
43
|
+
useSiteEvent(CONFIG_CHANGED, () => {
|
|
44
|
+
setSiteConfig(getSiteConfig());
|
|
45
|
+
});
|
|
46
|
+
useSiteEvent(LOCALE_CHANGED, () => {
|
|
47
|
+
setLocale(getLocale());
|
|
48
|
+
});
|
|
49
|
+
useTrackColorSchemeChoice();
|
|
50
|
+
const [themeState, themeDispatch] = useTheme();
|
|
51
|
+
const siteContextValue = useMemo(() => ({
|
|
52
|
+
authenticatedUser,
|
|
53
|
+
siteConfig,
|
|
54
|
+
locale,
|
|
55
|
+
theme: {
|
|
56
|
+
state: themeState,
|
|
57
|
+
setThemeVariant: (themeVariant) => {
|
|
58
|
+
themeDispatch(themeActions.setThemeVariant(themeVariant));
|
|
59
|
+
// Persist selected theme variant to localStorage.
|
|
60
|
+
window.localStorage.setItem(SELECTED_THEME_VARIANT_KEY, themeVariant);
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
}), [authenticatedUser, siteConfig, locale, themeState, themeDispatch]);
|
|
64
|
+
if (!(themeState === null || themeState === void 0 ? void 0 : themeState.isThemeLoaded)) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
return (_jsx(IntlProvider, { locale: locale, messages: getMessages(), children: _jsx(ErrorBoundary, { children: _jsx(SiteContext.Provider, { value: siteContextValue, children: _jsx(CombinedAppProvider, { children: children }) }) }) }));
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=SiteProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SiteProvider.js","sourceRoot":"","sources":["../../../runtime/react/SiteProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAqB;IAClE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC9D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACnF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAElD,YAAY,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAC5C,oBAAoB,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,cAAc,EAAE,GAAG,EAAE;QAChC,aAAa,CAAC,aAAa,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,cAAc,EAAE,GAAG,EAAE;QAChC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,yBAAyB,EAAE,CAAC;IAC5B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,EAAE,CAAC;IAE/C,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,iBAAiB;QACjB,UAAU;QACV,MAAM;QACN,KAAK,EAAE;YACL,KAAK,EAAE,UAAU;YACjB,eAAe,EAAE,CAAC,YAAoB,EAAE,EAAE;gBACxC,aAAa,CAAC,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC;gBAE1D,kDAAkD;gBAClD,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;YACxE,CAAC;SACF;KACF,CAAC,EAAE,CAAC,iBAAiB,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAExE,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,aAAa,CAAA,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,YACnD,KAAC,aAAa,cACZ,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,gBAAgB,YAC3C,KAAC,mBAAmB,cACjB,QAAQ,GACW,GACD,GACT,GACH,CAChB,CAAC;AACJ,CAAC","sourcesContent":["import { ReactNode, useMemo, useState } from 'react';\n\nimport { AUTHENTICATED_USER_CHANGED, getAuthenticatedUser } from '../auth';\nimport { getSiteConfig } from '../config';\nimport { CONFIG_CHANGED } from '../constants';\nimport {\n getLocale,\n getMessages,\n IntlProvider,\n LOCALE_CHANGED,\n} from '../i18n';\n\nimport CombinedAppProvider from './CombinedAppProvider';\nimport ErrorBoundary from './ErrorBoundary';\nimport SiteContext from './SiteContext';\nimport { SELECTED_THEME_VARIANT_KEY } from './constants';\nimport {\n useTheme,\n useSiteEvent,\n useTrackColorSchemeChoice\n} from './hooks';\nimport { themeActions } from './reducers';\n\ninterface SiteProviderProps {\n children: ReactNode,\n}\n\n/**\n * A wrapper component for React-based micro-frontends to initialize a number of common data/\n * context providers.\n *\n * ```\n * subscribe(SITE_READY, () => {\n * ReactDOM.render(\n * <SiteProvider>\n * <HelloWorld />\n * </SiteProvider>\n * )\n * });\n * ```\n *\n * This will provide the following to HelloWorld:\n * - An error boundary as described above.\n * - An `SiteContext` provider for React context data.\n * - IntlProvider for @edx/frontend-i18n internationalization\n * - A theme manager for Paragon.\n *\n * @param {Object} props\n * @memberof module:React\n */\nexport default function SiteProvider({ children }: SiteProviderProps) {\n const [siteConfig, setSiteConfig] = useState(getSiteConfig());\n const [authenticatedUser, setAuthenticatedUser] = useState(getAuthenticatedUser());\n const [locale, setLocale] = useState(getLocale());\n\n useSiteEvent(AUTHENTICATED_USER_CHANGED, () => {\n setAuthenticatedUser(getAuthenticatedUser());\n });\n\n useSiteEvent(CONFIG_CHANGED, () => {\n setSiteConfig(getSiteConfig());\n });\n\n useSiteEvent(LOCALE_CHANGED, () => {\n setLocale(getLocale());\n });\n\n useTrackColorSchemeChoice();\n const [themeState, themeDispatch] = useTheme();\n\n const siteContextValue = useMemo(() => ({\n authenticatedUser,\n siteConfig,\n locale,\n theme: {\n state: themeState,\n setThemeVariant: (themeVariant: string) => {\n themeDispatch(themeActions.setThemeVariant(themeVariant));\n\n // Persist selected theme variant to localStorage.\n window.localStorage.setItem(SELECTED_THEME_VARIANT_KEY, themeVariant);\n },\n },\n }), [authenticatedUser, siteConfig, locale, themeState, themeDispatch]);\n\n if (!themeState?.isThemeLoaded) {\n return null;\n }\n\n return (\n <IntlProvider locale={locale} messages={getMessages()}>\n <ErrorBoundary>\n <SiteContext.Provider value={siteContextValue}>\n <CombinedAppProvider>\n {children}\n </CombinedAppProvider>\n </SiteContext.Provider>\n </ErrorBoundary>\n </IntlProvider>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../runtime/react/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AACzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC","sourcesContent":["export const SET_THEME_VARIANT = 'SET_THEME_VARIANT';\nexport const SET_IS_THEME_LOADED = 'SET_IS_THEME_LOADED';\nexport const SELECTED_THEME_VARIANT_KEY = 'selected-theme-variant';\n"]}
|
|
@@ -4,5 +4,4 @@ export { default as useActiveRouteRoleWatcher } from './useActiveRouteRoleWatche
|
|
|
4
4
|
export { default as useActiveRoles } from './useActiveRoles';
|
|
5
5
|
export { default as useSiteConfig } from './useSiteConfig';
|
|
6
6
|
export { default as useSiteEvent } from './useSiteEvent';
|
|
7
|
-
|
|
8
7
|
export * from './theme';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { default as useAppConfig } from './useAppConfig';
|
|
2
|
+
export { default as useAuthenticatedUser } from './useAuthenticatedUser';
|
|
3
|
+
export { default as useActiveRouteRoleWatcher } from './useActiveRouteRoleWatcher';
|
|
4
|
+
export { default as useActiveRoles } from './useActiveRoles';
|
|
5
|
+
export { default as useSiteConfig } from './useSiteConfig';
|
|
6
|
+
export { default as useSiteEvent } from './useSiteEvent';
|
|
7
|
+
export * from './theme';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../runtime/react/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEzD,cAAc,SAAS,CAAC","sourcesContent":["export { default as useAppConfig } from './useAppConfig';\nexport { default as useAuthenticatedUser } from './useAuthenticatedUser';\nexport { default as useActiveRouteRoleWatcher } from './useActiveRouteRoleWatcher';\nexport { default as useActiveRoles } from './useActiveRoles';\nexport { default as useSiteConfig } from './useSiteConfig';\nexport { default as useSiteEvent } from './useSiteEvent';\n\nexport * from './theme';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../runtime/react/hooks/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC","sourcesContent":["export { default as useTrackColorSchemeChoice } from './useTrackColorSchemeChoice';\nexport { default as useTheme } from './useTheme';\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ThemeVariants, ThemeDefaults } from '../../../../types';
|
|
2
|
+
/**
|
|
3
|
+
* Finds the default theme variant from the given theme variants object. If no default theme exists, the light theme
|
|
4
|
+
* variant is returned as a fallback.
|
|
5
|
+
*
|
|
6
|
+
* It prioritizes:
|
|
7
|
+
* 1. A persisted theme variant from localStorage.
|
|
8
|
+
* 2. A system preference (`prefers-color-scheme`).
|
|
9
|
+
* 3. The configured default theme variant.
|
|
10
|
+
*
|
|
11
|
+
* Returns the default theme variant, or `undefined` if no valid theme variant is found.
|
|
12
|
+
*/
|
|
13
|
+
export declare const getDefaultThemeVariant: (themeVariants: ThemeVariants | undefined, themeDefaults?: ThemeDefaults) => {
|
|
14
|
+
name: string;
|
|
15
|
+
metadata: import("../../../..").ThemeVariant;
|
|
16
|
+
} | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* A custom React hook that manages the application's theme state and injects the appropriate CSS for the theme core
|
|
19
|
+
* and theme variants (e.g., light and dark modes) into the HTML document. It handles dynamically loading the theme
|
|
20
|
+
* CSS based on the current theme variant, and ensures that the theme variant's CSS is preloaded for runtime theme
|
|
21
|
+
* switching. This is done using "alternate" stylesheets. That is, the browser will download the CSS for the
|
|
22
|
+
* non-current theme variants with a lower priority than the current one.
|
|
23
|
+
*
|
|
24
|
+
* The hook also responds to system theme preference changes (e.g., via the `prefers-color-scheme` media query),
|
|
25
|
+
* and can automatically switch the theme based on the system's dark mode or light mode preference.
|
|
26
|
+
*
|
|
27
|
+
* * @example
|
|
28
|
+
* const [themeState, dispatch] = useTheme();
|
|
29
|
+
* console.log(themeState.isThemeLoaded); // true when the theme has been successfully loaded.
|
|
30
|
+
*
|
|
31
|
+
* // Dispatch an action to change the theme variant
|
|
32
|
+
* dispatch(themeActions.setThemeVariant('dark'));
|
|
33
|
+
*/
|
|
34
|
+
declare const useTheme: () => any[];
|
|
35
|
+
export default useTheme;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { useCallback, useEffect, useReducer, useState, } from 'react';
|
|
2
|
+
import { SELECTED_THEME_VARIANT_KEY } from '../../constants';
|
|
3
|
+
import { logError } from '../../../logging';
|
|
4
|
+
import { themeActions, themeReducer } from '../../reducers';
|
|
5
|
+
import { isEmptyObject } from './utils';
|
|
6
|
+
import useThemeCore from './useThemeCore';
|
|
7
|
+
import useThemeConfig from './useThemeConfig';
|
|
8
|
+
import useThemeVariants from './useThemeVariants';
|
|
9
|
+
/**
|
|
10
|
+
* Finds the default theme variant from the given theme variants object. If no default theme exists, the light theme
|
|
11
|
+
* variant is returned as a fallback.
|
|
12
|
+
*
|
|
13
|
+
* It prioritizes:
|
|
14
|
+
* 1. A persisted theme variant from localStorage.
|
|
15
|
+
* 2. A system preference (`prefers-color-scheme`).
|
|
16
|
+
* 3. The configured default theme variant.
|
|
17
|
+
*
|
|
18
|
+
* Returns the default theme variant, or `undefined` if no valid theme variant is found.
|
|
19
|
+
*/
|
|
20
|
+
export const getDefaultThemeVariant = (themeVariants, themeDefaults = {}) => {
|
|
21
|
+
var _a, _b, _c, _d;
|
|
22
|
+
if (!themeVariants) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const themeVariantKeys = Object.keys(themeVariants);
|
|
26
|
+
// If there is only one theme variant, return it since it's the only one that may be used.
|
|
27
|
+
if (themeVariantKeys.length === 1) {
|
|
28
|
+
const themeVariantKey = themeVariantKeys[0];
|
|
29
|
+
return {
|
|
30
|
+
name: themeVariantKey,
|
|
31
|
+
metadata: themeVariants[themeVariantKey],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Prioritize persisted localStorage theme variant preference.
|
|
35
|
+
const persistedSelectedThemeVariant = localStorage.getItem(SELECTED_THEME_VARIANT_KEY);
|
|
36
|
+
if (persistedSelectedThemeVariant && themeVariants[persistedSelectedThemeVariant]) {
|
|
37
|
+
return {
|
|
38
|
+
name: persistedSelectedThemeVariant,
|
|
39
|
+
metadata: themeVariants[persistedSelectedThemeVariant],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Then, detect system preference via `prefers-color-scheme` media query and use
|
|
43
|
+
// the default dark theme variant, if one exists.
|
|
44
|
+
const hasDarkSystemPreference = !!((_b = (_a = window.matchMedia) === null || _a === void 0 ? void 0 : _a.call(window, '(prefers-color-scheme: dark)')) === null || _b === void 0 ? void 0 : _b.matches);
|
|
45
|
+
const defaultDarkThemeVariant = (_c = themeDefaults.dark) !== null && _c !== void 0 ? _c : 'dark';
|
|
46
|
+
const darkThemeVariantMetadata = themeVariants[defaultDarkThemeVariant];
|
|
47
|
+
if (hasDarkSystemPreference && defaultDarkThemeVariant && darkThemeVariantMetadata) {
|
|
48
|
+
return {
|
|
49
|
+
name: defaultDarkThemeVariant,
|
|
50
|
+
metadata: darkThemeVariantMetadata,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const defaultLightThemeVariant = (_d = themeDefaults.light) !== null && _d !== void 0 ? _d : 'light';
|
|
54
|
+
const lightThemeVariantMetadata = themeVariants[defaultLightThemeVariant];
|
|
55
|
+
// Handle edge case where the default light theme variant is not configured or provided.
|
|
56
|
+
if (!lightThemeVariantMetadata) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
// Otherwise, fallback to using the default light theme variant as configured.
|
|
60
|
+
return {
|
|
61
|
+
name: defaultLightThemeVariant,
|
|
62
|
+
metadata: lightThemeVariantMetadata,
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* A custom React hook that manages the application's theme state and injects the appropriate CSS for the theme core
|
|
67
|
+
* and theme variants (e.g., light and dark modes) into the HTML document. It handles dynamically loading the theme
|
|
68
|
+
* CSS based on the current theme variant, and ensures that the theme variant's CSS is preloaded for runtime theme
|
|
69
|
+
* switching. This is done using "alternate" stylesheets. That is, the browser will download the CSS for the
|
|
70
|
+
* non-current theme variants with a lower priority than the current one.
|
|
71
|
+
*
|
|
72
|
+
* The hook also responds to system theme preference changes (e.g., via the `prefers-color-scheme` media query),
|
|
73
|
+
* and can automatically switch the theme based on the system's dark mode or light mode preference.
|
|
74
|
+
*
|
|
75
|
+
* * @example
|
|
76
|
+
* const [themeState, dispatch] = useTheme();
|
|
77
|
+
* console.log(themeState.isThemeLoaded); // true when the theme has been successfully loaded.
|
|
78
|
+
*
|
|
79
|
+
* // Dispatch an action to change the theme variant
|
|
80
|
+
* dispatch(themeActions.setThemeVariant('dark'));
|
|
81
|
+
*/
|
|
82
|
+
const useTheme = () => {
|
|
83
|
+
var _a;
|
|
84
|
+
const themeConfig = useThemeConfig();
|
|
85
|
+
const { core: themeCore, defaults: themeVariantDefaults, variants: themeVariants, } = themeConfig;
|
|
86
|
+
const initialThemeState = {
|
|
87
|
+
isThemeLoaded: false,
|
|
88
|
+
themeVariant: (_a = getDefaultThemeVariant(themeVariants, themeVariantDefaults)) === null || _a === void 0 ? void 0 : _a.name,
|
|
89
|
+
};
|
|
90
|
+
const [themeState, dispatch] = useReducer(themeReducer, initialThemeState);
|
|
91
|
+
const [isThemeCoreLoaded, setIsThemeCoreLoaded] = useState(false);
|
|
92
|
+
const onLoadThemeCore = useCallback(() => {
|
|
93
|
+
setIsThemeCoreLoaded(true);
|
|
94
|
+
}, []);
|
|
95
|
+
const [hasLoadedThemeVariants, setHasLoadedThemeVariants] = useState(false);
|
|
96
|
+
const onLoadThemeVariants = useCallback(() => {
|
|
97
|
+
setHasLoadedThemeVariants(true);
|
|
98
|
+
}, []);
|
|
99
|
+
// load the theme's core CSS
|
|
100
|
+
useThemeCore({
|
|
101
|
+
themeCore,
|
|
102
|
+
onComplete: onLoadThemeCore,
|
|
103
|
+
});
|
|
104
|
+
// respond to system preference changes with regard to `prefers-color-scheme: dark`.
|
|
105
|
+
const handleDarkModeSystemPreferenceChange = useCallback((prefersDarkMode) => {
|
|
106
|
+
// Ignore system preference change if the theme variant is already set in localStorage.
|
|
107
|
+
if (localStorage.getItem(SELECTED_THEME_VARIANT_KEY)) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (prefersDarkMode && (themeVariantDefaults === null || themeVariantDefaults === void 0 ? void 0 : themeVariantDefaults.dark)) {
|
|
111
|
+
dispatch(themeActions.setThemeVariant(themeVariantDefaults.dark));
|
|
112
|
+
}
|
|
113
|
+
else if (!prefersDarkMode && (themeVariantDefaults === null || themeVariantDefaults === void 0 ? void 0 : themeVariantDefaults.light)) {
|
|
114
|
+
dispatch(themeActions.setThemeVariant(themeVariantDefaults.light));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
logError(`Could not set theme variant based on system preference (prefers dark mode: ${prefersDarkMode})`);
|
|
118
|
+
}
|
|
119
|
+
}, [themeVariantDefaults]);
|
|
120
|
+
// load the theme variant(s) CSS
|
|
121
|
+
useThemeVariants({
|
|
122
|
+
themeVariants,
|
|
123
|
+
onComplete: onLoadThemeVariants,
|
|
124
|
+
currentThemeVariant: themeState.themeVariant,
|
|
125
|
+
onDarkModeSystemPreferenceChange: handleDarkModeSystemPreferenceChange,
|
|
126
|
+
});
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
// theme is already loaded, do nothing
|
|
129
|
+
if (themeState.isThemeLoaded) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const hasThemeConfig = ((themeCore === null || themeCore === void 0 ? void 0 : themeCore.url) && !isEmptyObject(themeVariants));
|
|
133
|
+
if (!hasThemeConfig) {
|
|
134
|
+
// no theme URLs to load, set loading to false.
|
|
135
|
+
dispatch(themeActions.setThemeLoaded(true));
|
|
136
|
+
}
|
|
137
|
+
// Return early if neither the core theme CSS nor any theme variant CSS is loaded.
|
|
138
|
+
if (!isThemeCoreLoaded || !hasLoadedThemeVariants) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
// All application theme URLs are loaded
|
|
142
|
+
dispatch(themeActions.setThemeLoaded(true));
|
|
143
|
+
}, [
|
|
144
|
+
themeState.isThemeLoaded,
|
|
145
|
+
isThemeCoreLoaded,
|
|
146
|
+
hasLoadedThemeVariants,
|
|
147
|
+
themeCore === null || themeCore === void 0 ? void 0 : themeCore.url,
|
|
148
|
+
themeVariants,
|
|
149
|
+
]);
|
|
150
|
+
return [themeState, dispatch];
|
|
151
|
+
};
|
|
152
|
+
export default useTheme;
|
|
153
|
+
//# sourceMappingURL=useTheme.js.map
|