@openedx/frontend-base 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (782) hide show
  1. package/README.md +27 -0
  2. package/{index.ts → dist/index.d.ts} +0 -3
  3. package/dist/index.js +4 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/runtime/analytics/MockAnalyticsService.d.ts +50 -0
  6. package/dist/runtime/analytics/MockAnalyticsService.js +64 -0
  7. package/dist/runtime/analytics/MockAnalyticsService.js.map +1 -0
  8. package/dist/runtime/analytics/SegmentAnalyticsService.d.ts +64 -0
  9. package/dist/runtime/analytics/SegmentAnalyticsService.js +218 -0
  10. package/dist/runtime/analytics/SegmentAnalyticsService.js.map +1 -0
  11. package/dist/runtime/analytics/index.d.ts +3 -0
  12. package/dist/runtime/analytics/index.js +4 -0
  13. package/dist/runtime/analytics/index.js.map +1 -0
  14. package/dist/runtime/analytics/interface.d.ts +53 -0
  15. package/{runtime → dist/runtime}/analytics/interface.js +26 -38
  16. package/dist/runtime/analytics/interface.js.map +1 -0
  17. package/dist/runtime/auth/AxiosCsrfTokenService.d.ts +10 -0
  18. package/dist/runtime/auth/AxiosCsrfTokenService.js +64 -0
  19. package/dist/runtime/auth/AxiosCsrfTokenService.js.map +1 -0
  20. package/dist/runtime/auth/AxiosJwtAuthService.d.ts +182 -0
  21. package/dist/runtime/auth/AxiosJwtAuthService.js +339 -0
  22. package/dist/runtime/auth/AxiosJwtAuthService.js.map +1 -0
  23. package/dist/runtime/auth/AxiosJwtTokenService.d.ts +16 -0
  24. package/dist/runtime/auth/AxiosJwtTokenService.js +130 -0
  25. package/dist/runtime/auth/AxiosJwtTokenService.js.map +1 -0
  26. package/dist/runtime/auth/LocalForageCache.d.ts +7 -0
  27. package/dist/runtime/auth/LocalForageCache.js +78 -0
  28. package/dist/runtime/auth/LocalForageCache.js.map +1 -0
  29. package/dist/runtime/auth/MockAuthService.d.ts +209 -0
  30. package/dist/runtime/auth/MockAuthService.js +256 -0
  31. package/dist/runtime/auth/MockAuthService.js.map +1 -0
  32. package/dist/runtime/auth/index.d.ts +3 -0
  33. package/dist/runtime/auth/index.js +4 -0
  34. package/dist/runtime/auth/index.js.map +1 -0
  35. package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.d.ts +2 -0
  36. package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +42 -0
  37. package/dist/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js.map +1 -0
  38. package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.d.ts +2 -0
  39. package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +40 -0
  40. package/dist/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js.map +1 -0
  41. package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.d.ts +2 -0
  42. package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +26 -0
  43. package/dist/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js.map +1 -0
  44. package/dist/runtime/auth/interceptors/createRetryInterceptor.d.ts +3 -0
  45. package/dist/runtime/auth/interceptors/createRetryInterceptor.js +67 -0
  46. package/dist/runtime/auth/interceptors/createRetryInterceptor.js.map +1 -0
  47. package/dist/runtime/auth/interface.d.ts +133 -0
  48. package/{runtime → dist/runtime}/auth/interface.js +65 -72
  49. package/dist/runtime/auth/interface.js.map +1 -0
  50. package/dist/runtime/auth/utils.d.ts +13 -0
  51. package/dist/runtime/auth/utils.js +66 -0
  52. package/dist/runtime/auth/utils.js.map +1 -0
  53. package/dist/runtime/babel.config.d.ts +2 -0
  54. package/{runtime → dist/runtime}/babel.config.js +2 -1
  55. package/dist/runtime/babel.config.js.map +1 -0
  56. package/{runtime/config/index.ts → dist/runtime/config/index.d.ts} +28 -124
  57. package/dist/runtime/config/index.js +327 -0
  58. package/dist/runtime/config/index.js.map +1 -0
  59. package/dist/runtime/constants.d.ts +57 -0
  60. package/{runtime/constants.ts → dist/runtime/constants.js} +1 -11
  61. package/dist/runtime/constants.js.map +1 -0
  62. package/dist/runtime/i18n/index.d.ts +3 -0
  63. package/{runtime → dist/runtime}/i18n/index.js +4 -44
  64. package/dist/runtime/i18n/index.js.map +1 -0
  65. package/dist/runtime/i18n/injectIntlWithShim.d.ts +11 -0
  66. package/dist/runtime/i18n/injectIntlWithShim.js +45 -0
  67. package/dist/runtime/i18n/injectIntlWithShim.js.map +1 -0
  68. package/dist/runtime/i18n/lib.d.ts +119 -0
  69. package/dist/runtime/i18n/lib.js +236 -0
  70. package/dist/runtime/i18n/lib.js.map +1 -0
  71. package/dist/runtime/index.d.ts +13 -0
  72. package/dist/runtime/index.js +14 -0
  73. package/dist/runtime/index.js.map +1 -0
  74. package/dist/runtime/initialize.d.ts +91 -0
  75. package/dist/runtime/initialize.js +315 -0
  76. package/dist/runtime/initialize.js.map +1 -0
  77. package/dist/runtime/jest.config.d.ts +16 -0
  78. package/dist/runtime/jest.config.js +34 -0
  79. package/dist/runtime/jest.config.js.map +1 -0
  80. package/dist/runtime/logging/MockLoggingService.d.ts +28 -0
  81. package/dist/runtime/logging/MockLoggingService.js +31 -0
  82. package/dist/runtime/logging/MockLoggingService.js.map +1 -0
  83. package/dist/runtime/logging/NewRelicLoggingService.d.ts +67 -0
  84. package/dist/runtime/logging/NewRelicLoggingService.js +175 -0
  85. package/dist/runtime/logging/NewRelicLoggingService.js.map +1 -0
  86. package/{runtime/logging/index.ts → dist/runtime/logging/index.d.ts} +1 -7
  87. package/dist/runtime/logging/index.js +4 -0
  88. package/dist/runtime/logging/index.js.map +1 -0
  89. package/dist/runtime/logging/interface.d.ts +38 -0
  90. package/{runtime → dist/runtime}/logging/interface.js +16 -26
  91. package/dist/runtime/logging/interface.js.map +1 -0
  92. package/dist/runtime/logging/types.d.ts +4 -0
  93. package/dist/runtime/logging/types.js +2 -0
  94. package/dist/runtime/logging/types.js.map +1 -0
  95. package/dist/runtime/react/AuthenticatedPageRoute.d.ts +30 -0
  96. package/{runtime/react/AuthenticatedPageRoute.jsx → dist/runtime/react/AuthenticatedPageRoute.js} +13 -18
  97. package/dist/runtime/react/AuthenticatedPageRoute.js.map +1 -0
  98. package/dist/runtime/react/CombinedAppProvider.d.ts +6 -0
  99. package/dist/runtime/react/CombinedAppProvider.js +24 -0
  100. package/dist/runtime/react/CombinedAppProvider.js.map +1 -0
  101. package/dist/runtime/react/CurrentAppContext.d.ts +20 -0
  102. package/{runtime/react/CurrentAppContext.tsx → dist/runtime/react/CurrentAppContext.js} +3 -7
  103. package/dist/runtime/react/CurrentAppContext.js.map +1 -0
  104. package/dist/runtime/react/CurrentAppProvider.d.ts +23 -0
  105. package/dist/runtime/react/CurrentAppProvider.js +33 -0
  106. package/dist/runtime/react/CurrentAppProvider.js.map +1 -0
  107. package/dist/runtime/react/Divider.d.ts +1 -0
  108. package/dist/runtime/react/Divider.js +5 -0
  109. package/dist/runtime/react/Divider.js.map +1 -0
  110. package/dist/runtime/react/ErrorBoundary.d.ts +32 -0
  111. package/dist/runtime/react/ErrorBoundary.js +40 -0
  112. package/dist/runtime/react/ErrorBoundary.js.map +1 -0
  113. package/dist/runtime/react/ErrorPage.d.ts +17 -0
  114. package/dist/runtime/react/ErrorPage.js +29 -0
  115. package/dist/runtime/react/ErrorPage.js.map +1 -0
  116. package/dist/runtime/react/LoginRedirect.d.ts +8 -0
  117. package/{runtime/react/LoginRedirect.jsx → dist/runtime/react/LoginRedirect.js} +5 -5
  118. package/dist/runtime/react/LoginRedirect.js.map +1 -0
  119. package/dist/runtime/react/NotFoundPage.d.ts +2 -0
  120. package/dist/runtime/react/NotFoundPage.js +14 -0
  121. package/dist/runtime/react/NotFoundPage.js.map +1 -0
  122. package/dist/runtime/react/PageWrap.d.ts +8 -0
  123. package/{runtime/react/PageWrap.jsx → dist/runtime/react/PageWrap.js} +7 -10
  124. package/dist/runtime/react/PageWrap.js.map +1 -0
  125. package/dist/runtime/react/SiteContext.d.ts +24 -0
  126. package/{runtime/react/SiteContext.tsx → dist/runtime/react/SiteContext.js} +5 -11
  127. package/dist/runtime/react/SiteContext.js.map +1 -0
  128. package/dist/runtime/react/SiteProvider.d.ts +29 -0
  129. package/dist/runtime/react/SiteProvider.js +69 -0
  130. package/dist/runtime/react/SiteProvider.js.map +1 -0
  131. package/dist/runtime/react/constants.d.ts +3 -0
  132. package/dist/runtime/react/constants.js +4 -0
  133. package/dist/runtime/react/constants.js.map +1 -0
  134. package/dist/runtime/react/hooks/index.d.ts +7 -0
  135. package/dist/runtime/react/hooks/index.js +8 -0
  136. package/dist/runtime/react/hooks/index.js.map +1 -0
  137. package/dist/runtime/react/hooks/theme/index.d.ts +2 -0
  138. package/dist/runtime/react/hooks/theme/index.js +3 -0
  139. package/dist/runtime/react/hooks/theme/index.js.map +1 -0
  140. package/dist/runtime/react/hooks/theme/useTheme.d.ts +35 -0
  141. package/dist/runtime/react/hooks/theme/useTheme.js +153 -0
  142. package/dist/runtime/react/hooks/theme/useTheme.js.map +1 -0
  143. package/dist/runtime/react/hooks/theme/useThemeConfig.d.ts +16 -0
  144. package/dist/runtime/react/hooks/theme/useThemeConfig.js +29 -0
  145. package/dist/runtime/react/hooks/theme/useThemeConfig.js.map +1 -0
  146. package/dist/runtime/react/hooks/theme/useThemeCore.d.ts +10 -0
  147. package/dist/runtime/react/hooks/theme/useThemeCore.js +40 -0
  148. package/dist/runtime/react/hooks/theme/useThemeCore.js.map +1 -0
  149. package/dist/runtime/react/hooks/theme/useThemeVariants.d.ts +17 -0
  150. package/dist/runtime/react/hooks/theme/useThemeVariants.js +90 -0
  151. package/dist/runtime/react/hooks/theme/useThemeVariants.js.map +1 -0
  152. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.d.ts +8 -0
  153. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js +30 -0
  154. package/dist/runtime/react/hooks/theme/useTrackColorSchemeChoice.js.map +1 -0
  155. package/dist/runtime/react/hooks/theme/utils.d.ts +6 -0
  156. package/dist/runtime/react/hooks/theme/utils.js +11 -0
  157. package/dist/runtime/react/hooks/theme/utils.js.map +1 -0
  158. package/dist/runtime/react/hooks/useActiveRoles.d.ts +2 -0
  159. package/dist/runtime/react/hooks/useActiveRoles.js +13 -0
  160. package/dist/runtime/react/hooks/useActiveRoles.js.map +1 -0
  161. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.d.ts +2 -0
  162. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js +26 -0
  163. package/dist/runtime/react/hooks/useActiveRouteRoleWatcher.js.map +1 -0
  164. package/dist/runtime/react/hooks/useAppConfig.d.ts +2 -0
  165. package/dist/runtime/react/hooks/useAppConfig.js +8 -0
  166. package/dist/runtime/react/hooks/useAppConfig.js.map +1 -0
  167. package/dist/runtime/react/hooks/useAuthenticatedUser.d.ts +2 -0
  168. package/dist/runtime/react/hooks/useAuthenticatedUser.js +8 -0
  169. package/dist/runtime/react/hooks/useAuthenticatedUser.js.map +1 -0
  170. package/dist/runtime/react/hooks/useSiteConfig.d.ts +2 -0
  171. package/dist/runtime/react/hooks/useSiteConfig.js +8 -0
  172. package/dist/runtime/react/hooks/useSiteConfig.js.map +1 -0
  173. package/dist/runtime/react/hooks/useSiteEvent.d.ts +12 -0
  174. package/dist/runtime/react/hooks/useSiteEvent.js +22 -0
  175. package/dist/runtime/react/hooks/useSiteEvent.js.map +1 -0
  176. package/{runtime/react/index.ts → dist/runtime/react/index.d.ts} +1 -1
  177. package/dist/runtime/react/index.js +20 -0
  178. package/dist/runtime/react/index.js.map +1 -0
  179. package/dist/runtime/react/reducers.d.ts +11 -0
  180. package/dist/runtime/react/reducers.js +28 -0
  181. package/dist/runtime/react/reducers.js.map +1 -0
  182. package/dist/runtime/routing/authenticatedLoader.d.ts +2 -0
  183. package/dist/runtime/routing/authenticatedLoader.js +27 -0
  184. package/dist/runtime/routing/authenticatedLoader.js.map +1 -0
  185. package/dist/runtime/routing/index.d.ts +2 -0
  186. package/dist/runtime/routing/index.js +3 -0
  187. package/dist/runtime/routing/index.js.map +1 -0
  188. package/dist/runtime/routing/utils.d.ts +4 -0
  189. package/dist/runtime/routing/utils.js +43 -0
  190. package/dist/runtime/routing/utils.js.map +1 -0
  191. package/dist/runtime/scripts/GoogleAnalyticsLoader.d.ts +12 -0
  192. package/dist/runtime/scripts/GoogleAnalyticsLoader.js +49 -0
  193. package/dist/runtime/scripts/GoogleAnalyticsLoader.js.map +1 -0
  194. package/dist/runtime/scripts/index.js +2 -0
  195. package/dist/runtime/scripts/index.js.map +1 -0
  196. package/dist/runtime/setupTest.d.ts +1 -0
  197. package/dist/runtime/setupTest.js +12 -0
  198. package/dist/runtime/setupTest.js.map +1 -0
  199. package/dist/runtime/slots/Slot.d.ts +10 -0
  200. package/dist/runtime/slots/Slot.js +35 -0
  201. package/dist/runtime/slots/Slot.js.map +1 -0
  202. package/dist/runtime/slots/SlotContext.d.ts +8 -0
  203. package/dist/runtime/slots/SlotContext.js +7 -0
  204. package/dist/runtime/slots/SlotContext.js.map +1 -0
  205. package/dist/runtime/slots/hooks.d.ts +13 -0
  206. package/dist/runtime/slots/hooks.js +29 -0
  207. package/dist/runtime/slots/hooks.js.map +1 -0
  208. package/dist/runtime/slots/index.js +7 -0
  209. package/dist/runtime/slots/index.js.map +1 -0
  210. package/dist/runtime/slots/layout/DefaultSlotLayout.d.ts +1 -0
  211. package/dist/runtime/slots/layout/DefaultSlotLayout.js +7 -0
  212. package/dist/runtime/slots/layout/DefaultSlotLayout.js.map +1 -0
  213. package/dist/runtime/slots/layout/hooks.d.ts +10 -0
  214. package/dist/runtime/slots/layout/hooks.js +57 -0
  215. package/dist/runtime/slots/layout/hooks.js.map +1 -0
  216. package/dist/runtime/slots/layout/index.js +5 -0
  217. package/dist/runtime/slots/layout/index.js.map +1 -0
  218. package/{runtime/slots/layout/types.ts → dist/runtime/slots/layout/types.d.ts} +10 -25
  219. package/dist/runtime/slots/layout/types.js +12 -0
  220. package/dist/runtime/slots/layout/types.js.map +1 -0
  221. package/dist/runtime/slots/layout/utils.d.ts +5 -0
  222. package/dist/runtime/slots/layout/utils.js +11 -0
  223. package/dist/runtime/slots/layout/utils.js.map +1 -0
  224. package/{runtime/slots/types.ts → dist/runtime/slots/types.d.ts} +6 -12
  225. package/dist/runtime/slots/types.js +7 -0
  226. package/dist/runtime/slots/types.js.map +1 -0
  227. package/dist/runtime/slots/utils.d.ts +3 -0
  228. package/dist/runtime/slots/utils.js +66 -0
  229. package/dist/runtime/slots/utils.js.map +1 -0
  230. package/dist/runtime/slots/widget/WidgetContext.d.ts +6 -0
  231. package/dist/runtime/slots/widget/WidgetContext.js +8 -0
  232. package/dist/runtime/slots/widget/WidgetContext.js.map +1 -0
  233. package/dist/runtime/slots/widget/WidgetProvider.d.ts +9 -0
  234. package/dist/runtime/slots/widget/WidgetProvider.js +18 -0
  235. package/dist/runtime/slots/widget/WidgetProvider.js.map +1 -0
  236. package/dist/runtime/slots/widget/hooks.d.ts +13 -0
  237. package/dist/runtime/slots/widget/hooks.js +104 -0
  238. package/dist/runtime/slots/widget/hooks.js.map +1 -0
  239. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.d.ts +10 -0
  240. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js +42 -0
  241. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js.map +1 -0
  242. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.d.ts +13 -0
  243. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js +15 -0
  244. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js.map +1 -0
  245. package/dist/runtime/slots/widget/iframe/IFrameWidget.d.ts +6 -0
  246. package/dist/runtime/slots/widget/iframe/IFrameWidget.js +32 -0
  247. package/dist/runtime/slots/widget/iframe/IFrameWidget.js.map +1 -0
  248. package/dist/runtime/slots/widget/iframe/constants.d.ts +15 -0
  249. package/{runtime/slots/widget/iframe/constants.ts → dist/runtime/slots/widget/iframe/constants.js} +2 -4
  250. package/dist/runtime/slots/widget/iframe/constants.js.map +1 -0
  251. package/dist/runtime/slots/widget/iframe/hooks.d.ts +64 -0
  252. package/dist/runtime/slots/widget/iframe/hooks.js +144 -0
  253. package/dist/runtime/slots/widget/iframe/hooks.js.map +1 -0
  254. package/{runtime/slots/widget/iframe/index.ts → dist/runtime/slots/widget/iframe/index.d.ts} +1 -4
  255. package/dist/runtime/slots/widget/iframe/index.js +3 -0
  256. package/dist/runtime/slots/widget/iframe/index.js.map +1 -0
  257. package/{runtime/slots/widget/iframe/types.ts → dist/runtime/slots/widget/iframe/types.d.ts} +2 -4
  258. package/dist/runtime/slots/widget/iframe/types.js +3 -0
  259. package/dist/runtime/slots/widget/iframe/types.js.map +1 -0
  260. package/dist/runtime/slots/widget/index.js +6 -0
  261. package/dist/runtime/slots/widget/index.js.map +1 -0
  262. package/{runtime/slots/widget/types.ts → dist/runtime/slots/widget/types.d.ts} +58 -84
  263. package/dist/runtime/slots/widget/types.js +41 -0
  264. package/dist/runtime/slots/widget/types.js.map +1 -0
  265. package/dist/runtime/slots/widget/utils.d.ts +22 -0
  266. package/dist/runtime/slots/widget/utils.js +184 -0
  267. package/dist/runtime/slots/widget/utils.js.map +1 -0
  268. package/{runtime/subscriptions.ts → dist/runtime/subscriptions.d.ts} +5 -41
  269. package/dist/runtime/subscriptions.js +48 -0
  270. package/dist/runtime/subscriptions.js.map +1 -0
  271. package/{runtime/testing/index.ts → dist/runtime/testing/index.d.ts} +0 -1
  272. package/dist/runtime/testing/index.js +9 -0
  273. package/dist/runtime/testing/index.js.map +1 -0
  274. package/dist/runtime/testing/initializeMockApp.d.ts +46 -0
  275. package/{runtime/testing/initializeMockApp.ts → dist/runtime/testing/initializeMockApp.js} +26 -36
  276. package/dist/runtime/testing/initializeMockApp.js.map +1 -0
  277. package/dist/runtime/testing/mockMessages.d.ts +22 -0
  278. package/dist/runtime/testing/mockMessages.js +23 -0
  279. package/dist/runtime/testing/mockMessages.js.map +1 -0
  280. package/dist/runtime/utils.d.ts +95 -0
  281. package/{runtime → dist/runtime}/utils.js +55 -70
  282. package/dist/runtime/utils.js.map +1 -0
  283. package/dist/shell/DefaultLayout.d.ts +1 -0
  284. package/dist/shell/DefaultLayout.js +7 -0
  285. package/dist/shell/DefaultLayout.js.map +1 -0
  286. package/dist/shell/DefaultMain.d.ts +1 -0
  287. package/dist/shell/DefaultMain.js +6 -0
  288. package/dist/shell/DefaultMain.js.map +1 -0
  289. package/dist/shell/Logo.d.ts +6 -0
  290. package/dist/shell/Logo.js +14 -0
  291. package/dist/shell/Logo.js.map +1 -0
  292. package/dist/shell/Shell.d.ts +1 -0
  293. package/dist/shell/Shell.js +10 -0
  294. package/dist/shell/Shell.js.map +1 -0
  295. package/dist/shell/Shell.messages.d.ts +58 -0
  296. package/dist/shell/Shell.messages.js +60 -0
  297. package/dist/shell/Shell.messages.js.map +1 -0
  298. package/dist/shell/app.d.ts +3 -0
  299. package/dist/shell/app.js +35 -0
  300. package/dist/shell/app.js.map +1 -0
  301. package/{shell → dist/shell}/app.scss +2 -1
  302. package/dist/shell/babel.config.d.ts +2 -0
  303. package/{shell → dist/shell}/babel.config.js +2 -1
  304. package/dist/shell/babel.config.js.map +1 -0
  305. package/dist/shell/dev/devFooter/app.d.ts +3 -0
  306. package/dist/shell/dev/devFooter/app.js +36 -0
  307. package/dist/shell/dev/devFooter/app.js.map +1 -0
  308. package/dist/shell/dev/devFooter/index.js +2 -0
  309. package/dist/shell/dev/devFooter/index.js.map +1 -0
  310. package/dist/shell/dev/devHeader/BarContext.d.ts +7 -0
  311. package/dist/shell/dev/devHeader/BarContext.js +8 -0
  312. package/dist/shell/dev/devHeader/BarContext.js.map +1 -0
  313. package/dist/shell/dev/devHeader/BarLink.d.ts +1 -0
  314. package/dist/shell/dev/devHeader/BarLink.js +10 -0
  315. package/dist/shell/dev/devHeader/BarLink.js.map +1 -0
  316. package/dist/shell/dev/devHeader/BarProvider.d.ts +6 -0
  317. package/dist/shell/dev/devHeader/BarProvider.js +16 -0
  318. package/dist/shell/dev/devHeader/BarProvider.js.map +1 -0
  319. package/dist/shell/dev/devHeader/CoursesLink.d.ts +1 -0
  320. package/dist/shell/dev/devHeader/CoursesLink.js +10 -0
  321. package/dist/shell/dev/devHeader/CoursesLink.js.map +1 -0
  322. package/dist/shell/dev/devHeader/FooContext.d.ts +7 -0
  323. package/dist/shell/dev/devHeader/FooContext.js +8 -0
  324. package/dist/shell/dev/devHeader/FooContext.js.map +1 -0
  325. package/dist/shell/dev/devHeader/FooLink.d.ts +1 -0
  326. package/dist/shell/dev/devHeader/FooLink.js +10 -0
  327. package/dist/shell/dev/devHeader/FooLink.js.map +1 -0
  328. package/dist/shell/dev/devHeader/FooProvider.d.ts +6 -0
  329. package/dist/shell/dev/devHeader/FooProvider.js +16 -0
  330. package/dist/shell/dev/devHeader/FooProvider.js.map +1 -0
  331. package/dist/shell/dev/devHeader/app.d.ts +3 -0
  332. package/dist/shell/dev/devHeader/app.js +34 -0
  333. package/dist/shell/dev/devHeader/app.js.map +1 -0
  334. package/dist/shell/dev/devHeader/index.js +2 -0
  335. package/dist/shell/dev/devHeader/index.js.map +1 -0
  336. package/dist/shell/dev/devHeader/providers.d.ts +3 -0
  337. package/dist/shell/dev/devHeader/providers.js +8 -0
  338. package/dist/shell/dev/devHeader/providers.js.map +1 -0
  339. package/dist/shell/dev/devHome/HomePage.d.ts +1 -0
  340. package/dist/shell/dev/devHome/HomePage.js +13 -0
  341. package/dist/shell/dev/devHome/HomePage.js.map +1 -0
  342. package/dist/shell/dev/devHome/app.d.ts +3 -0
  343. package/dist/shell/dev/devHome/app.js +16 -0
  344. package/dist/shell/dev/devHome/app.js.map +1 -0
  345. package/dist/shell/dev/devHome/i18n/index.d.ts +27 -0
  346. package/dist/shell/dev/devHome/i18n/index.js +28 -0
  347. package/dist/shell/dev/devHome/i18n/index.js.map +1 -0
  348. package/dist/shell/dev/devHome/index.js +2 -0
  349. package/dist/shell/dev/devHome/index.js.map +1 -0
  350. package/dist/shell/dev/devHome/messages.d.ts +8 -0
  351. package/dist/shell/dev/devHome/messages.js +10 -0
  352. package/dist/shell/dev/devHome/messages.js.map +1 -0
  353. package/dist/shell/dev/devUser/app.d.ts +3 -0
  354. package/dist/shell/dev/devUser/app.js +22 -0
  355. package/dist/shell/dev/devUser/app.js.map +1 -0
  356. package/dist/shell/dev/devUser/index.js +2 -0
  357. package/dist/shell/dev/devUser/index.js.map +1 -0
  358. package/dist/shell/dev/index.js +6 -0
  359. package/dist/shell/dev/index.js.map +1 -0
  360. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.d.ts +1 -0
  361. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js +8 -0
  362. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js.map +1 -0
  363. package/dist/shell/dev/slotShowcase/LayoutWithOptions.d.ts +1 -0
  364. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js +9 -0
  365. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js.map +1 -0
  366. package/dist/shell/dev/slotShowcase/SlotShowcasePage.d.ts +2 -0
  367. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js +17 -0
  368. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js.map +1 -0
  369. package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.d.ts +1 -0
  370. package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.js +11 -0
  371. package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.js.map +1 -0
  372. package/dist/shell/dev/slotShowcase/WidgetWithOptions.d.ts +1 -0
  373. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js +8 -0
  374. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js.map +1 -0
  375. package/dist/shell/dev/slotShowcase/app.d.ts +3 -0
  376. package/dist/shell/dev/slotShowcase/app.js +372 -0
  377. package/dist/shell/dev/slotShowcase/app.js.map +1 -0
  378. package/dist/shell/dev/slotShowcase/index.js +2 -0
  379. package/dist/shell/dev/slotShowcase/index.js.map +1 -0
  380. package/dist/shell/footer/CenterLinks.d.ts +1 -0
  381. package/dist/shell/footer/CenterLinks.js +7 -0
  382. package/dist/shell/footer/CenterLinks.js.map +1 -0
  383. package/dist/shell/footer/CopyrightNotice.d.ts +10 -0
  384. package/dist/shell/footer/CopyrightNotice.js +10 -0
  385. package/dist/shell/footer/CopyrightNotice.js.map +1 -0
  386. package/dist/shell/footer/Footer.d.ts +1 -0
  387. package/dist/shell/footer/Footer.js +12 -0
  388. package/dist/shell/footer/Footer.js.map +1 -0
  389. package/dist/shell/footer/LabeledLinkColumn.d.ts +1 -0
  390. package/dist/shell/footer/LabeledLinkColumn.js +11 -0
  391. package/dist/shell/footer/LabeledLinkColumn.js.map +1 -0
  392. package/dist/shell/footer/LanguageMenu.d.ts +1 -0
  393. package/dist/shell/footer/LanguageMenu.js +16 -0
  394. package/dist/shell/footer/LanguageMenu.js.map +1 -0
  395. package/dist/shell/footer/LanguageMenuItem.d.ts +8 -0
  396. package/dist/shell/footer/LanguageMenuItem.js +11 -0
  397. package/dist/shell/footer/LanguageMenuItem.js.map +1 -0
  398. package/dist/shell/footer/LeftLinks.d.ts +1 -0
  399. package/dist/shell/footer/LeftLinks.js +7 -0
  400. package/dist/shell/footer/LeftLinks.js.map +1 -0
  401. package/dist/shell/footer/LegalNotices.d.ts +1 -0
  402. package/dist/shell/footer/LegalNotices.js +10 -0
  403. package/dist/shell/footer/LegalNotices.js.map +1 -0
  404. package/dist/shell/footer/PoweredBy.d.ts +1 -0
  405. package/dist/shell/footer/PoweredBy.js +9 -0
  406. package/dist/shell/footer/PoweredBy.js.map +1 -0
  407. package/dist/shell/footer/RevealLinks.d.ts +1 -0
  408. package/dist/shell/footer/RevealLinks.js +16 -0
  409. package/dist/shell/footer/RevealLinks.js.map +1 -0
  410. package/dist/shell/footer/RightLinks.d.ts +1 -0
  411. package/dist/shell/footer/RightLinks.js +7 -0
  412. package/dist/shell/footer/RightLinks.js.map +1 -0
  413. package/dist/shell/footer/app.d.ts +3 -0
  414. package/dist/shell/footer/app.js +59 -0
  415. package/dist/shell/footer/app.js.map +1 -0
  416. package/dist/shell/footer/data/api.d.ts +1 -0
  417. package/dist/shell/footer/data/api.js +45 -0
  418. package/dist/shell/footer/data/api.js.map +1 -0
  419. package/dist/shell/footer/index.js +3 -0
  420. package/dist/shell/footer/index.js.map +1 -0
  421. package/dist/shell/header/AuthenticatedMenu.d.ts +5 -0
  422. package/dist/shell/header/AuthenticatedMenu.js +11 -0
  423. package/dist/shell/header/AuthenticatedMenu.js.map +1 -0
  424. package/dist/shell/header/Header.d.ts +1 -0
  425. package/dist/shell/header/Header.js +8 -0
  426. package/dist/shell/header/Header.js.map +1 -0
  427. package/dist/shell/header/anonymous-menu/AnonymousMenu.d.ts +5 -0
  428. package/dist/shell/header/anonymous-menu/AnonymousMenu.js +7 -0
  429. package/dist/shell/header/anonymous-menu/AnonymousMenu.js.map +1 -0
  430. package/dist/shell/header/anonymous-menu/LoginButton.d.ts +3 -0
  431. package/dist/shell/header/anonymous-menu/LoginButton.js +22 -0
  432. package/dist/shell/header/anonymous-menu/LoginButton.js.map +1 -0
  433. package/dist/shell/header/anonymous-menu/RegisterButton.d.ts +3 -0
  434. package/dist/shell/header/anonymous-menu/RegisterButton.js +22 -0
  435. package/dist/shell/header/anonymous-menu/RegisterButton.js.map +1 -0
  436. package/dist/shell/header/app.d.ts +3 -0
  437. package/dist/shell/header/app.js +119 -0
  438. package/dist/shell/header/app.js.map +1 -0
  439. package/dist/shell/header/desktop/DesktopLayout.d.ts +1 -0
  440. package/dist/shell/header/desktop/DesktopLayout.js +9 -0
  441. package/dist/shell/header/desktop/DesktopLayout.js.map +1 -0
  442. package/dist/shell/header/desktop/PrimaryNavLinks.d.ts +1 -0
  443. package/dist/shell/header/desktop/PrimaryNavLinks.js +7 -0
  444. package/dist/shell/header/desktop/PrimaryNavLinks.js.map +1 -0
  445. package/dist/shell/header/desktop/SecondaryNavLinks.d.ts +1 -0
  446. package/dist/shell/header/desktop/SecondaryNavLinks.js +7 -0
  447. package/dist/shell/header/desktop/SecondaryNavLinks.js.map +1 -0
  448. package/dist/shell/header/index.js +3 -0
  449. package/dist/shell/header/index.js.map +1 -0
  450. package/dist/shell/header/mobile/MobileLayout.d.ts +1 -0
  451. package/dist/shell/header/mobile/MobileLayout.js +17 -0
  452. package/dist/shell/header/mobile/MobileLayout.js.map +1 -0
  453. package/dist/shell/header/mobile/MobileNavLinks.d.ts +1 -0
  454. package/dist/shell/header/mobile/MobileNavLinks.js +7 -0
  455. package/dist/shell/header/mobile/MobileNavLinks.js.map +1 -0
  456. package/dist/shell/i18n/index.d.ts +25 -0
  457. package/dist/shell/i18n/index.js +26 -0
  458. package/dist/shell/i18n/index.js.map +1 -0
  459. package/dist/shell/index.js +8 -0
  460. package/dist/shell/index.js.map +1 -0
  461. package/dist/shell/jest.config.d.ts +15 -0
  462. package/{tools/dist/jest → dist/shell}/jest.config.js +12 -10
  463. package/dist/shell/jest.config.js.map +1 -0
  464. package/dist/shell/menus/LinkMenuItem.d.ts +9 -0
  465. package/dist/shell/menus/LinkMenuItem.js +36 -0
  466. package/dist/shell/menus/LinkMenuItem.js.map +1 -0
  467. package/dist/shell/menus/NavDropdownMenuSlot.d.ts +7 -0
  468. package/dist/shell/menus/NavDropdownMenuSlot.js +14 -0
  469. package/dist/shell/menus/NavDropdownMenuSlot.js.map +1 -0
  470. package/dist/shell/menus/ProfileLinkMenuItem.d.ts +8 -0
  471. package/dist/shell/menus/ProfileLinkMenuItem.js +16 -0
  472. package/dist/shell/menus/ProfileLinkMenuItem.js.map +1 -0
  473. package/dist/shell/menus/data/utils.d.ts +4 -0
  474. package/dist/shell/menus/data/utils.js +13 -0
  475. package/dist/shell/menus/data/utils.js.map +1 -0
  476. package/dist/shell/router/createRouter.d.ts +1 -0
  477. package/dist/shell/router/createRouter.js +26 -0
  478. package/dist/shell/router/createRouter.js.map +1 -0
  479. package/dist/shell/router/getAppRoutes.d.ts +2 -0
  480. package/dist/shell/router/getAppRoutes.js +14 -0
  481. package/dist/shell/router/getAppRoutes.js.map +1 -0
  482. package/dist/shell/setupTest.d.ts +1 -0
  483. package/dist/shell/setupTest.js +12 -0
  484. package/dist/shell/setupTest.js.map +1 -0
  485. package/dist/shell/site.config.dev.d.ts +4 -0
  486. package/dist/shell/site.config.dev.js +43 -0
  487. package/dist/shell/site.config.dev.js.map +1 -0
  488. package/dist/shell/site.d.ts +1 -0
  489. package/dist/shell/site.js +35 -0
  490. package/dist/shell/site.js.map +1 -0
  491. package/dist/tools/babel/babel.config.d.ts +12 -0
  492. package/dist/tools/babel.config.d.ts +2 -0
  493. package/dist/tools/babel.config.js +3 -0
  494. package/dist/tools/cli/commands/serve.d.ts +1 -0
  495. package/dist/tools/cli/intl-imports.d.ts +7 -0
  496. package/{tools/dist → dist/tools}/cli/intl-imports.js +0 -0
  497. package/dist/tools/cli/intl-imports.test.d.ts +1 -0
  498. package/dist/tools/cli/openedx.d.ts +2 -0
  499. package/{tools/dist → dist/tools}/cli/openedx.js +27 -8
  500. package/dist/tools/cli/transifex-utils.d.ts +2 -0
  501. package/{tools/dist → dist/tools}/cli/transifex-utils.js +0 -0
  502. package/dist/tools/cli/utils/ensureConfigFilenameOption.d.ts +2 -0
  503. package/dist/tools/cli/utils/formatter.d.ts +1 -0
  504. package/dist/tools/cli/utils/formatter.js +3 -0
  505. package/dist/tools/cli/utils/getResolvedConfigPath.d.ts +2 -0
  506. package/dist/tools/cli/utils/prettyPrintTitle.d.ts +1 -0
  507. package/dist/tools/cli/utils/printUsage.d.ts +1 -0
  508. package/dist/tools/config-helpers/createConfig.d.ts +2 -0
  509. package/dist/tools/config-helpers/createLintConfig.d.ts +2 -0
  510. package/dist/tools/config-helpers/getBaseConfig.d.ts +2 -0
  511. package/dist/tools/defaultConfigPaths.d.ts +8 -0
  512. package/dist/tools/eslint/base.eslint.config.d.ts +3 -0
  513. package/{config → dist/tools}/eslint/base.eslint.config.js +5 -4
  514. package/dist/tools/eslint.config.d.ts +3 -0
  515. package/dist/tools/index.d.ts +3 -0
  516. package/dist/tools/jest/jest.config.d.ts +14 -0
  517. package/dist/tools/jest.config.d.ts +8 -0
  518. package/dist/tools/types.d.ts +18 -0
  519. package/{tools/dist → dist/tools}/typescript/tsconfig.json +2 -1
  520. package/dist/tools/webpack/common-config/all/getCodeRules.d.ts +2 -0
  521. package/dist/tools/webpack/common-config/all/getFileLoaderRules.d.ts +11 -0
  522. package/dist/tools/webpack/common-config/all/getImageMinimizer.d.ts +5 -0
  523. package/dist/tools/webpack/common-config/all/getStylesheetRule.d.ts +8 -0
  524. package/{config → dist/tools}/webpack/common-config/all/getStylesheetRule.js +1 -1
  525. package/dist/tools/webpack/common-config/dev/getDevServer.d.ts +2 -0
  526. package/{tools/dist → dist/tools}/webpack/common-config/dev/getDevServer.js +3 -5
  527. package/dist/tools/webpack/common-config/index.d.ts +6 -0
  528. package/dist/tools/webpack/common-config/site/getHtmlWebpackPlugin.d.ts +2 -0
  529. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.d.ts +16 -0
  530. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/index.d.ts +2 -0
  531. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.d.ts +1 -0
  532. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.d.ts +1 -0
  533. package/dist/tools/webpack/utils/getPublicPath.d.ts +1 -0
  534. package/{tools/dist → dist/tools}/webpack/utils/getPublicPath.js +1 -1
  535. package/dist/tools/webpack/utils/getResolvedSiteConfigPath.d.ts +1 -0
  536. package/dist/tools/webpack/webpack.config.build.d.ts +3 -0
  537. package/{config → dist/tools}/webpack/webpack.config.build.js +8 -15
  538. package/dist/tools/webpack/webpack.config.dev.d.ts +3 -0
  539. package/{tools/dist → dist/tools}/webpack/webpack.config.dev.js +12 -15
  540. package/dist/tools/webpack/webpack.config.dev.shell.d.ts +3 -0
  541. package/{config → dist/tools}/webpack/webpack.config.dev.shell.js +4 -14
  542. package/dist/types.d.ts +84 -0
  543. package/dist/types.js +7 -0
  544. package/dist/types.js.map +1 -0
  545. package/package.json +27 -16
  546. package/config/tsconfig.json +0 -32
  547. package/config/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  548. package/config/webpack/common-config/dev/getDevServer.js +0 -38
  549. package/config/webpack/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +0 -108
  550. package/config/webpack/plugins/paragon-webpack-plugin/index.js +0 -7
  551. package/config/webpack/plugins/paragon-webpack-plugin/utils/assetUtils.js +0 -64
  552. package/config/webpack/plugins/paragon-webpack-plugin/utils/htmlUtils.js +0 -53
  553. package/config/webpack/plugins/paragon-webpack-plugin/utils/index.js +0 -9
  554. package/config/webpack/plugins/paragon-webpack-plugin/utils/paragonStylesheetUtils.js +0 -114
  555. package/config/webpack/plugins/paragon-webpack-plugin/utils/scriptUtils.js +0 -146
  556. package/config/webpack/plugins/paragon-webpack-plugin/utils/stylesheetUtils.js +0 -126
  557. package/config/webpack/plugins/paragon-webpack-plugin/utils/tagUtils.js +0 -57
  558. package/config/webpack/types.js +0 -2
  559. package/config/webpack/utils/getLocalAliases.js +0 -65
  560. package/config/webpack/utils/getPublicPath.js +0 -6
  561. package/config/webpack/utils/paragonUtils.js +0 -138
  562. package/config/webpack/webpack.config.dev.js +0 -76
  563. package/runtime/__mocks__/file.js +0 -1
  564. package/runtime/__mocks__/svg.js +0 -1
  565. package/runtime/__mocks__/universal-cookie.js +0 -6
  566. package/runtime/analytics/MockAnalyticsService.js +0 -71
  567. package/runtime/analytics/SegmentAnalyticsService.js +0 -243
  568. package/runtime/analytics/index.ts +0 -12
  569. package/runtime/analytics/interface.test.js +0 -242
  570. package/runtime/auth/AxiosCsrfTokenService.js +0 -60
  571. package/runtime/auth/AxiosJwtAuthService.js +0 -363
  572. package/runtime/auth/AxiosJwtAuthService.test.jsx +0 -1076
  573. package/runtime/auth/AxiosJwtTokenService.js +0 -134
  574. package/runtime/auth/LocalForageCache.js +0 -76
  575. package/runtime/auth/MockAuthService.js +0 -278
  576. package/runtime/auth/index.ts +0 -19
  577. package/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +0 -36
  578. package/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +0 -37
  579. package/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +0 -20
  580. package/runtime/auth/interceptors/createRetryInterceptor.js +0 -74
  581. package/runtime/auth/interceptors/createRetryInterceptor.test.js +0 -23
  582. package/runtime/auth/utils.js +0 -105
  583. package/runtime/config/getExternalLinkUrl.test.js +0 -76
  584. package/runtime/i18n/injectIntlWithShim.jsx +0 -48
  585. package/runtime/i18n/lib.test.js +0 -230
  586. package/runtime/i18n/lib.ts +0 -272
  587. package/runtime/index.ts +0 -134
  588. package/runtime/initialize.async.function.config.test.js +0 -43
  589. package/runtime/initialize.const.config.test.js +0 -41
  590. package/runtime/initialize.function.config.test.js +0 -41
  591. package/runtime/initialize.js +0 -352
  592. package/runtime/initialize.test.js +0 -356
  593. package/runtime/jest.config.js +0 -32
  594. package/runtime/logging/MockLoggingService.js +0 -31
  595. package/runtime/logging/NewRelicLoggingService.js +0 -184
  596. package/runtime/logging/NewRelicLoggingService.test.js +0 -214
  597. package/runtime/logging/types.ts +0 -4
  598. package/runtime/react/AuthenticatedPageRoute.test.jsx +0 -135
  599. package/runtime/react/CombinedAppProvider.tsx +0 -46
  600. package/runtime/react/CurrentAppProvider.tsx +0 -46
  601. package/runtime/react/Divider.tsx +0 -5
  602. package/runtime/react/ErrorBoundary.jsx +0 -47
  603. package/runtime/react/ErrorBoundary.test.jsx +0 -83
  604. package/runtime/react/ErrorPage.jsx +0 -72
  605. package/runtime/react/SiteProvider.test.jsx +0 -66
  606. package/runtime/react/SiteProvider.tsx +0 -78
  607. package/runtime/react/hooks.test.jsx +0 -104
  608. package/runtime/react/hooks.ts +0 -106
  609. package/runtime/routing/index.ts +0 -1
  610. package/runtime/routing/utils.test.ts +0 -7
  611. package/runtime/routing/utils.ts +0 -34
  612. package/runtime/scripts/GoogleAnalyticsLoader.test.ts +0 -77
  613. package/runtime/scripts/GoogleAnalyticsLoader.ts +0 -59
  614. package/runtime/setupTest.js +0 -49
  615. package/runtime/site.config.test.tsx +0 -33
  616. package/runtime/slots/Slot.test.tsx +0 -40
  617. package/runtime/slots/Slot.tsx +0 -32
  618. package/runtime/slots/SlotContext.tsx +0 -8
  619. package/runtime/slots/hooks.ts +0 -35
  620. package/runtime/slots/layout/DefaultSlotLayout.test.tsx +0 -31
  621. package/runtime/slots/layout/DefaultSlotLayout.tsx +0 -9
  622. package/runtime/slots/layout/hooks.test.tsx +0 -178
  623. package/runtime/slots/layout/hooks.ts +0 -65
  624. package/runtime/slots/layout/utils.test.ts +0 -67
  625. package/runtime/slots/layout/utils.ts +0 -14
  626. package/runtime/slots/utils.test.ts +0 -64
  627. package/runtime/slots/utils.ts +0 -78
  628. package/runtime/slots/widget/WidgetContext.tsx +0 -9
  629. package/runtime/slots/widget/WidgetProvider.tsx +0 -30
  630. package/runtime/slots/widget/hooks.ts +0 -105
  631. package/runtime/slots/widget/iframe/IFrameContentWrapper.messages.tsx +0 -16
  632. package/runtime/slots/widget/iframe/IFrameContentWrapper.tsx +0 -84
  633. package/runtime/slots/widget/iframe/IFrameWidget.tsx +0 -59
  634. package/runtime/slots/widget/iframe/hooks.ts +0 -179
  635. package/runtime/slots/widget/utils.tsx +0 -201
  636. package/runtime/testing/initializeMockApp.test.ts +0 -66
  637. package/runtime/testing/mockMessages.ts +0 -23
  638. package/runtime/utils.test.js +0 -116
  639. package/shell/DefaultLayout.tsx +0 -18
  640. package/shell/DefaultMain.tsx +0 -7
  641. package/shell/Logo.test.tsx +0 -32
  642. package/shell/Logo.tsx +0 -28
  643. package/shell/Shell.messages.ts +0 -61
  644. package/shell/Shell.tsx +0 -18
  645. package/shell/__mocks__/file.js +0 -1
  646. package/shell/__mocks__/svg.js +0 -1
  647. package/shell/__mocks__/universal-cookie.js +0 -6
  648. package/shell/app.ts +0 -38
  649. package/shell/dev/devFooter/app.tsx +0 -43
  650. package/shell/dev/devHeader/BarContext.tsx +0 -13
  651. package/shell/dev/devHeader/BarLink.tsx +0 -16
  652. package/shell/dev/devHeader/BarProvider.tsx +0 -25
  653. package/shell/dev/devHeader/CoursesLink.tsx +0 -16
  654. package/shell/dev/devHeader/FooContext.tsx +0 -13
  655. package/shell/dev/devHeader/FooLink.tsx +0 -16
  656. package/shell/dev/devHeader/FooProvider.tsx +0 -25
  657. package/shell/dev/devHeader/app.tsx +0 -53
  658. package/shell/dev/devHeader/providers.tsx +0 -11
  659. package/shell/dev/devHome/HomePage.tsx +0 -28
  660. package/shell/dev/devHome/app.ts +0 -18
  661. package/shell/dev/devHome/i18n/index.ts +0 -27
  662. package/shell/dev/devHome/messages.ts +0 -11
  663. package/shell/dev/devUser/app.tsx +0 -24
  664. package/shell/dev/slotShowcase/HorizontalSlotLayout.tsx +0 -11
  665. package/shell/dev/slotShowcase/LayoutWithOptions.tsx +0 -17
  666. package/shell/dev/slotShowcase/SlotShowcasePage.tsx +0 -66
  667. package/shell/dev/slotShowcase/WidgetWithOptions.tsx +0 -11
  668. package/shell/dev/slotShowcase/app.tsx +0 -373
  669. package/shell/footer/CenterLinks.tsx +0 -11
  670. package/shell/footer/CopyrightNotice.tsx +0 -36
  671. package/shell/footer/Footer.tsx +0 -34
  672. package/shell/footer/LabeledLinkColumn.tsx +0 -19
  673. package/shell/footer/LanguageMenu.tsx +0 -35
  674. package/shell/footer/LanguageMenuItem.tsx +0 -23
  675. package/shell/footer/LeftLinks.tsx +0 -11
  676. package/shell/footer/LegalNotices.tsx +0 -17
  677. package/shell/footer/PoweredBy.tsx +0 -17
  678. package/shell/footer/RevealLinks.tsx +0 -43
  679. package/shell/footer/RightLinks.tsx +0 -11
  680. package/shell/footer/app.tsx +0 -73
  681. package/shell/footer/data/api.ts +0 -48
  682. package/shell/header/AuthenticatedMenu.tsx +0 -32
  683. package/shell/header/Header.tsx +0 -17
  684. package/shell/header/anonymous-menu/AnonymousMenu.tsx +0 -14
  685. package/shell/header/anonymous-menu/LoginButton.tsx +0 -14
  686. package/shell/header/anonymous-menu/RegisterButton.tsx +0 -15
  687. package/shell/header/app.tsx +0 -142
  688. package/shell/header/desktop/DesktopLayout.tsx +0 -22
  689. package/shell/header/desktop/PrimaryNavLinks.tsx +0 -10
  690. package/shell/header/desktop/SecondaryNavLinks.tsx +0 -10
  691. package/shell/header/mobile/MobileLayout.tsx +0 -47
  692. package/shell/header/mobile/MobileNavLinks.tsx +0 -10
  693. package/shell/i18n/index.ts +0 -25
  694. package/shell/jest.config.js +0 -30
  695. package/shell/menus/LinkMenuItem.tsx +0 -64
  696. package/shell/menus/NavDropdownMenuSlot.tsx +0 -29
  697. package/shell/menus/ProfileLinkMenuItem.tsx +0 -33
  698. package/shell/menus/data/utils.ts +0 -19
  699. package/shell/public/index.html +0 -10
  700. package/shell/router/createRouter.test.tsx +0 -50
  701. package/shell/router/createRouter.ts +0 -17
  702. package/shell/router/getAppRoutes.test.tsx +0 -59
  703. package/shell/router/getAppRoutes.ts +0 -21
  704. package/shell/setupTest.js +0 -48
  705. package/shell/site.config.dev.tsx +0 -49
  706. package/shell/site.config.test.tsx +0 -16
  707. package/shell/site.tsx +0 -41
  708. package/tools/dist/babel/babel.config.js +0 -28
  709. package/tools/dist/cli/utils/formatter.js +0 -10
  710. package/tools/dist/config-helpers/createConfig.js +0 -13
  711. package/tools/dist/config-helpers/createLintConfig.js +0 -16
  712. package/tools/dist/config-helpers/getBaseConfig.js +0 -12
  713. package/tools/dist/defaultConfigPaths.js +0 -35
  714. package/tools/dist/eslint/base.eslint.config.js +0 -113
  715. package/tools/dist/index.js +0 -12
  716. package/tools/dist/types.js +0 -23
  717. package/tools/dist/webpack/common-config/all/getCodeRules.js +0 -52
  718. package/tools/dist/webpack/common-config/all/getFileLoaderRules.js +0 -26
  719. package/tools/dist/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  720. package/tools/dist/webpack/common-config/all/getImageMinimizer.js +0 -25
  721. package/tools/dist/webpack/common-config/all/getStylesheetRule.js +0 -112
  722. package/tools/dist/webpack/common-config/index.js +0 -18
  723. package/tools/dist/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -16
  724. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -91
  725. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -7
  726. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -66
  727. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -3
  728. package/tools/dist/webpack/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +0 -108
  729. package/tools/dist/webpack/plugins/paragon-webpack-plugin/index.js +0 -7
  730. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/assetUtils.js +0 -64
  731. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/htmlUtils.js +0 -53
  732. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/index.js +0 -9
  733. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/paragonStylesheetUtils.js +0 -114
  734. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/scriptUtils.js +0 -146
  735. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/stylesheetUtils.js +0 -126
  736. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/tagUtils.js +0 -57
  737. package/tools/dist/webpack/types.js +0 -2
  738. package/tools/dist/webpack/utils/getLocalAliases.js +0 -65
  739. package/tools/dist/webpack/utils/getResolvedSiteConfigPath.js +0 -32
  740. package/tools/dist/webpack/utils/paragonUtils.js +0 -138
  741. package/tools/dist/webpack/webpack.config.build.js +0 -80
  742. package/tools/dist/webpack/webpack.config.dev.shell.js +0 -110
  743. package/types.ts +0 -99
  744. /package/{runtime/scripts/index.ts → dist/runtime/scripts/index.d.ts} +0 -0
  745. /package/{runtime/slots/index.ts → dist/runtime/slots/index.d.ts} +0 -0
  746. /package/{runtime/slots/layout/index.ts → dist/runtime/slots/layout/index.d.ts} +0 -0
  747. /package/{runtime/slots/widget/index.ts → dist/runtime/slots/widget/index.d.ts} +0 -0
  748. /package/{shell/dev/devFooter/index.ts → dist/shell/dev/devFooter/index.d.ts} +0 -0
  749. /package/{shell/dev/devHeader/index.ts → dist/shell/dev/devHeader/index.d.ts} +0 -0
  750. /package/{shell/dev/devHome/index.ts → dist/shell/dev/devHome/index.d.ts} +0 -0
  751. /package/{shell/dev/devUser/index.ts → dist/shell/dev/devUser/index.d.ts} +0 -0
  752. /package/{shell/dev/index.ts → dist/shell/dev/index.d.ts} +0 -0
  753. /package/{shell/dev/slotShowcase/index.ts → dist/shell/dev/slotShowcase/index.d.ts} +0 -0
  754. /package/{shell/footer/index.ts → dist/shell/footer/index.d.ts} +0 -0
  755. /package/{shell/header/index.ts → dist/shell/header/index.d.ts} +0 -0
  756. /package/{shell/index.ts → dist/shell/index.d.ts} +0 -0
  757. /package/{config → dist/tools}/babel/babel.config.js +0 -0
  758. /package/{tools/dist → dist/tools}/cli/commands/serve.js +0 -0
  759. /package/{tools/dist → dist/tools}/cli/intl-imports.test.js +0 -0
  760. /package/{tools/dist → dist/tools}/cli/utils/ensureConfigFilenameOption.js +0 -0
  761. /package/{tools/dist → dist/tools}/cli/utils/getResolvedConfigPath.js +0 -0
  762. /package/{tools/dist → dist/tools}/cli/utils/prettyPrintTitle.js +0 -0
  763. /package/{tools/dist → dist/tools}/cli/utils/printUsage.js +0 -0
  764. /package/{config → dist/tools}/config-helpers/createConfig.js +0 -0
  765. /package/{config → dist/tools}/config-helpers/createLintConfig.js +0 -0
  766. /package/{config → dist/tools}/config-helpers/getBaseConfig.js +0 -0
  767. /package/{config → dist/tools}/defaultConfigPaths.js +0 -0
  768. /package/{tools/dist → dist/tools}/eslint.config.js +0 -0
  769. /package/{config → dist/tools}/index.js +0 -0
  770. /package/{config → dist/tools}/jest/jest.config.js +0 -0
  771. /package/{tools/dist → dist/tools}/jest.config.js +0 -0
  772. /package/{config → dist/tools}/types.js +0 -0
  773. /package/{config → dist/tools}/webpack/common-config/all/getCodeRules.js +0 -0
  774. /package/{config → dist/tools}/webpack/common-config/all/getFileLoaderRules.js +0 -0
  775. /package/{config → dist/tools}/webpack/common-config/all/getImageMinimizer.js +0 -0
  776. /package/{config → dist/tools}/webpack/common-config/index.js +0 -0
  777. /package/{config → dist/tools}/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -0
  778. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -0
  779. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -0
  780. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -0
  781. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -0
  782. /package/{config → dist/tools}/webpack/utils/getResolvedSiteConfigPath.js +0 -0
@@ -0,0 +1,22 @@
1
+ import { useEffect } from 'react';
2
+ import { subscribe, unsubscribe } from '../../subscriptions';
3
+ /**
4
+ * A React hook that allows functional components to subscribe to application events. This should
5
+ * be used sparingly - for the most part, Context should be used higher-up in the application to
6
+ * provide necessary data to a given component, rather than utilizing a non-React-like Pub/Sub
7
+ * mechanism.
8
+ *
9
+ * @memberof module:React
10
+ * @param {string} type
11
+ * @param {function} callback
12
+ */
13
+ const useSiteEvent = (type, callback) => {
14
+ useEffect(() => {
15
+ subscribe(type, callback);
16
+ return () => {
17
+ unsubscribe(type, callback);
18
+ };
19
+ }, [callback, type]);
20
+ };
21
+ export default useSiteEvent;
22
+ //# sourceMappingURL=useSiteEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSiteEvent.js","sourceRoot":"","sources":["../../../../runtime/react/hooks/useSiteEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;;;;;;;;GASG;AACH,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;IACtC,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE1B,OAAO,GAAG,EAAE;YACV,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { useEffect } from 'react';\nimport { subscribe, unsubscribe } from '../../subscriptions';\n\n/**\n * A React hook that allows functional components to subscribe to application events. This should\n * be used sparingly - for the most part, Context should be used higher-up in the application to\n * provide necessary data to a given component, rather than utilizing a non-React-like Pub/Sub\n * mechanism.\n *\n * @memberof module:React\n * @param {string} type\n * @param {function} callback\n */\nconst useSiteEvent = (type, callback) => {\n useEffect(() => {\n subscribe(type, callback);\n\n return () => {\n unsubscribe(type, callback);\n };\n }, [callback, type]);\n};\n\nexport default useSiteEvent;\n"]}
@@ -5,7 +5,6 @@
5
5
  *
6
6
  * @module React
7
7
  */
8
-
9
8
  export { default as CurrentAppContext } from './CurrentAppContext';
10
9
  export { default as CurrentAppProvider } from './CurrentAppProvider';
11
10
  export { default as SiteContext } from './SiteContext';
@@ -14,6 +13,7 @@ export { default as AuthenticatedPageRoute } from './AuthenticatedPageRoute';
14
13
  export { default as Divider } from './Divider';
15
14
  export { default as ErrorBoundary } from './ErrorBoundary';
16
15
  export { default as ErrorPage } from './ErrorPage';
16
+ export { default as NotFoundPage } from './NotFoundPage';
17
17
  export { useSiteEvent, useAuthenticatedUser, useSiteConfig, useAppConfig } from './hooks';
18
18
  export { default as LoginRedirect } from './LoginRedirect';
19
19
  export { default as PageWrap } from './PageWrap';
@@ -0,0 +1,20 @@
1
+ /**
2
+ * #### Import members from **@openedx/frontend-base** React
3
+ * The React module provides a variety of React components, hooks, and contexts for use in an
4
+ * application.
5
+ *
6
+ * @module React
7
+ */
8
+ export { default as CurrentAppContext } from './CurrentAppContext';
9
+ export { default as CurrentAppProvider } from './CurrentAppProvider';
10
+ export { default as SiteContext } from './SiteContext';
11
+ export { default as SiteProvider } from './SiteProvider';
12
+ export { default as AuthenticatedPageRoute } from './AuthenticatedPageRoute';
13
+ export { default as Divider } from './Divider';
14
+ export { default as ErrorBoundary } from './ErrorBoundary';
15
+ export { default as ErrorPage } from './ErrorPage';
16
+ export { default as NotFoundPage } from './NotFoundPage';
17
+ export { useSiteEvent, useAuthenticatedUser, useSiteConfig, useAppConfig } from './hooks';
18
+ export { default as LoginRedirect } from './LoginRedirect';
19
+ export { default as PageWrap } from './PageWrap';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../runtime/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC","sourcesContent":["/**\n * #### Import members from **@openedx/frontend-base** React\n * The React module provides a variety of React components, hooks, and contexts for use in an\n * application.\n *\n * @module React\n */\n\nexport { default as CurrentAppContext } from './CurrentAppContext';\nexport { default as CurrentAppProvider } from './CurrentAppProvider';\nexport { default as SiteContext } from './SiteContext';\nexport { default as SiteProvider } from './SiteProvider';\nexport { default as AuthenticatedPageRoute } from './AuthenticatedPageRoute';\nexport { default as Divider } from './Divider';\nexport { default as ErrorBoundary } from './ErrorBoundary';\nexport { default as ErrorPage } from './ErrorPage';\nexport { default as NotFoundPage } from './NotFoundPage';\nexport { useSiteEvent, useAuthenticatedUser, useSiteConfig, useAppConfig } from './hooks';\nexport { default as LoginRedirect } from './LoginRedirect';\nexport { default as PageWrap } from './PageWrap';\n"]}
@@ -0,0 +1,11 @@
1
+ export declare function themeReducer(state: any, action: any): any;
2
+ export declare const themeActions: {
3
+ setThemeVariant: (payload: any) => {
4
+ type: string;
5
+ payload: any;
6
+ };
7
+ setThemeLoaded: (payload: any) => {
8
+ type: string;
9
+ payload: any;
10
+ };
11
+ };
@@ -0,0 +1,28 @@
1
+ import { SET_THEME_VARIANT, SET_IS_THEME_LOADED, } from './constants';
2
+ export function themeReducer(state, action) {
3
+ switch (action.type) {
4
+ case SET_THEME_VARIANT: {
5
+ const requestedThemeVariant = action.payload;
6
+ return Object.assign(Object.assign({}, state), { themeVariant: requestedThemeVariant });
7
+ }
8
+ case SET_IS_THEME_LOADED: {
9
+ const requestedIsThemeLoaded = action.payload;
10
+ return Object.assign(Object.assign({}, state), { isThemeLoaded: requestedIsThemeLoaded });
11
+ }
12
+ default:
13
+ return state;
14
+ }
15
+ }
16
+ const setThemeVariant = (payload) => ({
17
+ type: SET_THEME_VARIANT,
18
+ payload,
19
+ });
20
+ const setThemeLoaded = (payload) => ({
21
+ type: SET_IS_THEME_LOADED,
22
+ payload,
23
+ });
24
+ export const themeActions = {
25
+ setThemeVariant,
26
+ setThemeLoaded,
27
+ };
28
+ //# sourceMappingURL=reducers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reducers.js","sourceRoot":"","sources":["../../../runtime/react/reducers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,MAAM,UAAU,YAAY,CAAC,KAAK,EAAE,MAAM;IACxC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7C,uCACK,KAAK,KACR,YAAY,EAAE,qBAAqB,IACnC;QACJ,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAAC;YAC9C,uCACK,KAAK,KACR,aAAa,EAAE,sBAAsB,IACrC;QACJ,CAAC;QACD;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,EAAE,iBAAiB;IACvB,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,EAAE,mBAAmB;IACzB,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe;IACf,cAAc;CACf,CAAC","sourcesContent":["import {\n SET_THEME_VARIANT,\n SET_IS_THEME_LOADED,\n} from './constants';\n\nexport function themeReducer(state, action) {\n switch (action.type) {\n case SET_THEME_VARIANT: {\n const requestedThemeVariant = action.payload;\n return {\n ...state,\n themeVariant: requestedThemeVariant,\n };\n }\n case SET_IS_THEME_LOADED: {\n const requestedIsThemeLoaded = action.payload;\n return {\n ...state,\n isThemeLoaded: requestedIsThemeLoaded,\n };\n }\n default:\n return state;\n }\n}\n\nconst setThemeVariant = (payload) => ({\n type: SET_THEME_VARIANT,\n payload,\n});\n\nconst setThemeLoaded = (payload) => ({\n type: SET_IS_THEME_LOADED,\n payload,\n});\n\nexport const themeActions = {\n setThemeVariant,\n setThemeLoaded,\n};\n"]}
@@ -0,0 +1,2 @@
1
+ import { LoaderFunctionArgs } from 'react-router';
2
+ export default function authenticatedLoader({ request }: LoaderFunctionArgs): Response | Promise<unknown> | null;
@@ -0,0 +1,27 @@
1
+ import { redirect } from 'react-router';
2
+ import { getAuthenticatedUser, getLoginRedirectUrl } from '../auth';
3
+ import { getUrlByRouteRole } from './utils';
4
+ const loginRole = 'org.openedx.frontend.role.login';
5
+ export default function authenticatedLoader({ request }) {
6
+ const authenticatedUser = getAuthenticatedUser();
7
+ if (authenticatedUser !== null) {
8
+ return null;
9
+ }
10
+ const requestUrl = new URL(request.url);
11
+ const loginUrl = getUrlByRouteRole(loginRole);
12
+ // Internal login route → SPA redirect with a relative ?next so the login
13
+ // page can navigate() back without a full page refresh.
14
+ if (loginUrl === null || loginUrl === void 0 ? void 0 : loginUrl.startsWith('/')) {
15
+ return redirect(`${loginUrl}?next=${encodeURIComponent(requestUrl.pathname)}`);
16
+ }
17
+ // No login role found (or it's defined as an external route, which is not
18
+ // supported). Use loginUrl from siteConfig and the full href for the return
19
+ // path so the login service redirects back to the correct origin after
20
+ // login.
21
+ const fullLoginUrl = getLoginRedirectUrl(requestUrl.href);
22
+ // Return a never-resolving promise so React Router keeps waiting (and does
23
+ // not attempt to render the route) while the browser navigates away.
24
+ global.location.assign(fullLoginUrl);
25
+ return new Promise(() => { });
26
+ }
27
+ //# sourceMappingURL=authenticatedLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticatedLoader.js","sourceRoot":"","sources":["../../../runtime/routing/authenticatedLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,SAAS,GAAG,iCAAiC,CAAC;AAEpD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,OAAO,EAAsB;IACzE,MAAM,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;IACjD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE9C,yEAAyE;IACzE,wDAAwD;IACxD,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,GAAG,QAAQ,SAAS,kBAAkB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,0EAA0E;IAC1E,4EAA4E;IAC5E,uEAAuE;IACvE,SAAS;IACT,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAE1D,2EAA2E;IAC3E,qEAAqE;IACrE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACrC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAChC,CAAC","sourcesContent":["import { LoaderFunctionArgs, redirect } from 'react-router';\nimport { getAuthenticatedUser, getLoginRedirectUrl } from '../auth';\nimport { getUrlByRouteRole } from './utils';\n\nconst loginRole = 'org.openedx.frontend.role.login';\n\nexport default function authenticatedLoader({ request }: LoaderFunctionArgs) {\n const authenticatedUser = getAuthenticatedUser();\n if (authenticatedUser !== null) {\n return null;\n }\n\n const requestUrl = new URL(request.url);\n const loginUrl = getUrlByRouteRole(loginRole);\n\n // Internal login route → SPA redirect with a relative ?next so the login\n // page can navigate() back without a full page refresh.\n if (loginUrl?.startsWith('/')) {\n return redirect(`${loginUrl}?next=${encodeURIComponent(requestUrl.pathname)}`);\n }\n\n // No login role found (or it's defined as an external route, which is not\n // supported). Use loginUrl from siteConfig and the full href for the return\n // path so the login service redirects back to the correct origin after\n // login.\n const fullLoginUrl = getLoginRedirectUrl(requestUrl.href);\n\n // Return a never-resolving promise so React Router keeps waiting (and does\n // not attempt to render the route) while the browser navigates away.\n global.location.assign(fullLoginUrl);\n return new Promise(() => { });\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { default as authenticatedLoader } from './authenticatedLoader';
2
+ export * from './utils';
@@ -0,0 +1,3 @@
1
+ export { default as authenticatedLoader } from './authenticatedLoader';
2
+ export * from './utils';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../runtime/routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,cAAc,SAAS,CAAC","sourcesContent":["export { default as authenticatedLoader } from './authenticatedLoader';\nexport * from './utils';\n"]}
@@ -0,0 +1,4 @@
1
+ import { RouteObject } from 'react-router';
2
+ import { RoleRouteObject } from '../../types';
3
+ export declare function getUrlByRouteRole(role: string): string | null;
4
+ export declare function isRoleRouteObject(match: RouteObject): match is RoleRouteObject;
@@ -0,0 +1,43 @@
1
+ import { getSiteConfig } from '../config';
2
+ function findRoleInRoutes(routes, role, prefix = '') {
3
+ var _a, _b;
4
+ for (const route of routes) {
5
+ const segment = (_a = route.path) !== null && _a !== void 0 ? _a : '';
6
+ const fullPath = segment.startsWith('/') ? segment : `${prefix}/${segment}`.replace(/\/+/g, '/');
7
+ if (((_b = route.handle) === null || _b === void 0 ? void 0 : _b.role) === role) {
8
+ return fullPath || null;
9
+ }
10
+ if (Array.isArray(route.children)) {
11
+ const found = findRoleInRoutes(route.children, role, fullPath);
12
+ if (found !== null) {
13
+ return found;
14
+ }
15
+ }
16
+ }
17
+ return null;
18
+ }
19
+ export function getUrlByRouteRole(role) {
20
+ const { apps, externalRoutes } = getSiteConfig();
21
+ if (apps) {
22
+ for (const app of apps) {
23
+ if (Array.isArray(app.routes)) {
24
+ const found = findRoleInRoutes(app.routes, role);
25
+ if (found !== null) {
26
+ return found;
27
+ }
28
+ }
29
+ }
30
+ }
31
+ if (externalRoutes) {
32
+ for (const externalRoute of externalRoutes) {
33
+ if (externalRoute.role === role) {
34
+ return externalRoute.url;
35
+ }
36
+ }
37
+ }
38
+ return null;
39
+ }
40
+ export function isRoleRouteObject(match) {
41
+ return match.handle !== undefined && 'role' in match.handle;
42
+ }
43
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../runtime/routing/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,SAAS,gBAAgB,CAAC,MAAqB,EAAE,IAAY,EAAE,MAAM,GAAG,EAAE;;IACxE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAA,KAAK,CAAC,IAAI,mCAAI,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEjG,IAAI,CAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,IAAI,MAAK,IAAI,EAAE,CAAC;YAChC,OAAO,QAAQ,IAAI,IAAI,CAAC;QAC1B,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/D,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,aAAa,EAAE,CAAC;IAEjD,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACjD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBACnB,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YAC3C,IAAI,aAAa,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChC,OAAO,aAAa,CAAC,GAAG,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;AAC9D,CAAC","sourcesContent":["import { RouteObject } from 'react-router';\n\nimport { RoleRouteObject } from '../../types';\nimport { getSiteConfig } from '../config';\n\nfunction findRoleInRoutes(routes: RouteObject[], role: string, prefix = ''): string | null {\n for (const route of routes) {\n const segment = route.path ?? '';\n const fullPath = segment.startsWith('/') ? segment : `${prefix}/${segment}`.replace(/\\/+/g, '/');\n\n if (route.handle?.role === role) {\n return fullPath || null;\n }\n\n if (Array.isArray(route.children)) {\n const found = findRoleInRoutes(route.children, role, fullPath);\n if (found !== null) {\n return found;\n }\n }\n }\n return null;\n}\n\nexport function getUrlByRouteRole(role: string) {\n const { apps, externalRoutes } = getSiteConfig();\n\n if (apps) {\n for (const app of apps) {\n if (Array.isArray(app.routes)) {\n const found = findRoleInRoutes(app.routes, role);\n if (found !== null) {\n return found;\n }\n }\n }\n }\n\n if (externalRoutes) {\n for (const externalRoute of externalRoutes) {\n if (externalRoute.role === role) {\n return externalRoute.url;\n }\n }\n }\n\n return null;\n}\n\nexport function isRoleRouteObject(match: RouteObject): match is RoleRouteObject {\n return match.handle !== undefined && 'role' in match.handle;\n}\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @implements {GoogleAnalyticsLoader}
3
+ * @memberof module:GoogleAnalytics
4
+ */
5
+ declare class GoogleAnalyticsLoader {
6
+ analyticsId: string;
7
+ constructor({ config }: {
8
+ config: any;
9
+ });
10
+ loadScript(): void;
11
+ }
12
+ export default GoogleAnalyticsLoader;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @implements {GoogleAnalyticsLoader}
3
+ * @memberof module:GoogleAnalytics
4
+ */
5
+ class GoogleAnalyticsLoader {
6
+ constructor({ config }) {
7
+ this.analyticsId = config.GOOGLE_ANALYTICS_4_ID;
8
+ }
9
+ loadScript() {
10
+ if (!this.analyticsId) {
11
+ return;
12
+ }
13
+ global.googleAnalytics = global.googleAnalytics || [];
14
+ // @ts-expect-error We just added googleAnalytics to global, it's there.
15
+ const { googleAnalytics } = global;
16
+ // If the snippet was invoked do nothing.
17
+ if (googleAnalytics.invoked) {
18
+ return;
19
+ }
20
+ // Invoked flag, to make sure the snippet
21
+ // is never invoked twice.
22
+ googleAnalytics.invoked = true;
23
+ googleAnalytics.load = (key, options) => {
24
+ const scriptSrc = document.createElement('script');
25
+ scriptSrc.type = 'text/javascript';
26
+ scriptSrc.async = true;
27
+ scriptSrc.src = `https://www.googletagmanager.com/gtag/js?id=${key}`;
28
+ const scriptGtag = document.createElement('script');
29
+ scriptGtag.innerHTML = `
30
+ window.dataLayer = window.dataLayer || [];
31
+ function gtag(){dataLayer.push(arguments);}
32
+ gtag('js', new Date());
33
+ gtag('config', '${key}');
34
+ `;
35
+ // Insert our scripts next to the first script element.
36
+ const first = document.getElementsByTagName('script')[0];
37
+ if ((first === null || first === void 0 ? void 0 : first.parentNode) === null) {
38
+ throw new Error('No script to insert Google analytics script before.');
39
+ }
40
+ first.parentNode.insertBefore(scriptSrc, first);
41
+ first.parentNode.insertBefore(scriptGtag, first);
42
+ googleAnalytics._loadOptions = options;
43
+ };
44
+ // Load GoogleAnalytics with your key.
45
+ googleAnalytics.load(this.analyticsId);
46
+ }
47
+ }
48
+ export default GoogleAnalyticsLoader;
49
+ //# sourceMappingURL=GoogleAnalyticsLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleAnalyticsLoader.js","sourceRoot":"","sources":["../../../runtime/scripts/GoogleAnalyticsLoader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,qBAAqB;IAGzB,YAAY,EAAE,MAAM,EAAE;QACpB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAClD,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QACtD,wEAAwE;QACxE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;QAEnC,yCAAyC;QACzC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,0BAA0B;QAC1B,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QAE/B,eAAe,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;YACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACnD,SAAS,CAAC,IAAI,GAAG,iBAAiB,CAAC;YACnC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;YACvB,SAAS,CAAC,GAAG,GAAG,+CAA+C,GAAG,EAAE,CAAC;YAErE,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACpD,UAAU,CAAC,SAAS,GAAG;;;;0BAIH,GAAG;OACtB,CAAC;YAEF,uDAAuD;YACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,MAAK,IAAI,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAChD,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACjD,eAAe,CAAC,YAAY,GAAG,OAAO,CAAC;QACzC,CAAC,CAAC;QAEF,sCAAsC;QACtC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;CACF;AAED,eAAe,qBAAqB,CAAC","sourcesContent":["/**\n * @implements {GoogleAnalyticsLoader}\n * @memberof module:GoogleAnalytics\n */\nclass GoogleAnalyticsLoader {\n analyticsId: string;\n\n constructor({ config }) {\n this.analyticsId = config.GOOGLE_ANALYTICS_4_ID;\n }\n\n loadScript() {\n if (!this.analyticsId) {\n return;\n }\n\n global.googleAnalytics = global.googleAnalytics || [];\n // @ts-expect-error We just added googleAnalytics to global, it's there.\n const { googleAnalytics } = global;\n\n // If the snippet was invoked do nothing.\n if (googleAnalytics.invoked) {\n return;\n }\n\n // Invoked flag, to make sure the snippet\n // is never invoked twice.\n googleAnalytics.invoked = true;\n\n googleAnalytics.load = (key, options) => {\n const scriptSrc = document.createElement('script');\n scriptSrc.type = 'text/javascript';\n scriptSrc.async = true;\n scriptSrc.src = `https://www.googletagmanager.com/gtag/js?id=${key}`;\n\n const scriptGtag = document.createElement('script');\n scriptGtag.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${key}');\n `;\n\n // Insert our scripts next to the first script element.\n const first = document.getElementsByTagName('script')[0];\n if (first?.parentNode === null) {\n throw new Error('No script to insert Google analytics script before.');\n }\n first.parentNode.insertBefore(scriptSrc, first);\n first.parentNode.insertBefore(scriptGtag, first);\n googleAnalytics._loadOptions = options;\n };\n\n // Load GoogleAnalytics with your key.\n googleAnalytics.load(this.analyticsId);\n }\n}\n\nexport default GoogleAnalyticsLoader;\n"]}
@@ -0,0 +1,2 @@
1
+ export { default as GoogleAnalyticsLoader } from './GoogleAnalyticsLoader';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../runtime/scripts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC","sourcesContent":["export { default as GoogleAnalyticsLoader } from './GoogleAnalyticsLoader';\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,12 @@
1
+ import '@testing-library/jest-dom';
2
+ import siteConfig from 'site.config';
3
+ import { mergeSiteConfig } from './config';
4
+ jest.mock('universal-cookie', () => {
5
+ const mCookie = {
6
+ get: jest.fn(),
7
+ remove: jest.fn(),
8
+ };
9
+ return jest.fn(() => mCookie);
10
+ });
11
+ mergeSiteConfig(siteConfig);
12
+ //# sourceMappingURL=setupTest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setupTest.js","sourceRoot":"","sources":["../../runtime/setupTest.js"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AAEnC,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,MAAM,OAAO,GAAG;QACd,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QACd,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;KAClB,CAAC;IACF,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,eAAe,CAAC,UAAU,CAAC,CAAC","sourcesContent":["import '@testing-library/jest-dom';\n\nimport siteConfig from 'site.config';\nimport { mergeSiteConfig } from './config';\n\njest.mock('universal-cookie', () => {\n const mCookie = {\n get: jest.fn(),\n remove: jest.fn(),\n };\n return jest.fn(() => mCookie);\n});\n\nmergeSiteConfig(siteConfig);\n"]}
@@ -0,0 +1,10 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ interface SlotProps {
3
+ id: string;
4
+ idAliases?: string[];
5
+ children?: ReactNode;
6
+ layout?: ComponentType | ReactNode;
7
+ [key: string]: unknown;
8
+ }
9
+ export default function Slot({ id, idAliases, children, layout, ...props }: SlotProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,35 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
13
+ import { createElement, isValidElement } from 'react';
14
+ import DefaultSlotLayout from './layout/DefaultSlotLayout';
15
+ import { useLayoutForSlotId } from './layout/hooks';
16
+ import SlotContext from './SlotContext';
17
+ import { useSlotContext } from './hooks';
18
+ function SlotRenderer({ layout }) {
19
+ const { id } = useSlotContext();
20
+ let layoutElement = layout;
21
+ const overrideLayout = useLayoutForSlotId(id);
22
+ // Weed out any ReactNode types that aren't actually JSX.
23
+ if (overrideLayout && overrideLayout !== null && overrideLayout !== undefined && typeof overrideLayout !== 'boolean') {
24
+ layoutElement = overrideLayout;
25
+ }
26
+ if (!isValidElement(layoutElement)) {
27
+ layoutElement = createElement(layoutElement);
28
+ }
29
+ return _jsx(_Fragment, { children: layoutElement });
30
+ }
31
+ export default function Slot(_a) {
32
+ var { id, idAliases, children, layout = DefaultSlotLayout } = _a, props = __rest(_a, ["id", "idAliases", "children", "layout"]);
33
+ return (_jsx(SlotContext.Provider, { value: Object.assign({ id, idAliases, children }, props), children: _jsx(SlotRenderer, { layout: layout }) }));
34
+ }
35
+ //# sourceMappingURL=Slot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slot.js","sourceRoot":"","sources":["../../../runtime/slots/Slot.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAiB,aAAa,EAAE,cAAc,EAAa,MAAM,OAAO,CAAC;AAChF,OAAO,iBAAiB,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAUzC,SAAS,YAAY,CAAC,EAAE,MAAM,EAAyC;IACrE,MAAM,EAAE,EAAE,EAAE,GAAG,cAAc,EAAE,CAAC;IAChC,IAAI,aAAa,GAA8B,MAAM,CAAC;IAEtD,MAAM,cAAc,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE9C,yDAAyD;IACzD,IAAI,cAAc,IAAI,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,SAAS,IAAI,OAAO,cAAc,KAAK,SAAS,EAAE,CAAC;QACrH,aAAa,GAAG,cAAc,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,aAAa,GAAG,aAAa,CAAC,aAA8B,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,4BAAG,aAAa,GAAI,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAA4E;QAA5E,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,OAAuB,EAAlB,KAAK,cAA/D,yCAAiE,CAAF;IAC1F,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,kBAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,IAAK,KAAK,aAC9D,KAAC,YAAY,IAAC,MAAM,EAAE,MAAM,GAAI,GACX,CACxB,CAAC;AACJ,CAAC","sourcesContent":["import { ComponentType, createElement, isValidElement, ReactNode } from 'react';\nimport DefaultSlotLayout from './layout/DefaultSlotLayout';\nimport { useLayoutForSlotId } from './layout/hooks';\nimport SlotContext from './SlotContext';\nimport { useSlotContext } from './hooks';\n\ninterface SlotProps {\n id: string,\n idAliases?: string[],\n children?: ReactNode,\n layout?: ComponentType | ReactNode,\n [key: string]: unknown,\n}\n\nfunction SlotRenderer({ layout }: { layout: ComponentType | ReactNode }) {\n const { id } = useSlotContext();\n let layoutElement: ComponentType | ReactNode = layout;\n\n const overrideLayout = useLayoutForSlotId(id);\n\n // Weed out any ReactNode types that aren't actually JSX.\n if (overrideLayout && overrideLayout !== null && overrideLayout !== undefined && typeof overrideLayout !== 'boolean') {\n layoutElement = overrideLayout;\n }\n\n if (!isValidElement(layoutElement)) {\n layoutElement = createElement(layoutElement as ComponentType);\n }\n\n return <>{layoutElement}</>;\n}\n\nexport default function Slot({ id, idAliases, children, layout = DefaultSlotLayout, ...props }: SlotProps) {\n return (\n <SlotContext.Provider value={{ id, idAliases, children, ...props }}>\n <SlotRenderer layout={layout} />\n </SlotContext.Provider>\n );\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { ReactNode } from 'react';
2
+ declare const SlotContext: import("react").Context<{
3
+ [key: string]: unknown;
4
+ id: string;
5
+ idAliases?: string[];
6
+ children?: ReactNode;
7
+ }>;
8
+ export default SlotContext;
@@ -0,0 +1,7 @@
1
+ import { createContext } from 'react';
2
+ const SlotContext = createContext({
3
+ id: '',
4
+ children: null,
5
+ });
6
+ export default SlotContext;
7
+ //# sourceMappingURL=SlotContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlotContext.js","sourceRoot":"","sources":["../../../runtime/slots/SlotContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAa,MAAM,OAAO,CAAC;AAEjD,MAAM,WAAW,GAAG,aAAa,CAAqF;IACpH,EAAE,EAAE,EAAE;IACN,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,eAAe,WAAW,CAAC","sourcesContent":["import { createContext, ReactNode } from 'react';\n\nconst SlotContext = createContext<{ id: string, idAliases?: string[], children?: ReactNode, [key: string]: unknown }>({\n id: '',\n children: null,\n});\n\nexport default SlotContext;\n"]}
@@ -0,0 +1,13 @@
1
+ import { SlotOperation } from './types';
2
+ /**
3
+ * The useSlotOperations hook will trigger re-renders when the slot configuration changes.
4
+ * It is a fundamental hook that is used by many of the others to ensure they're using up-to-date
5
+ * config as it changes.
6
+ */
7
+ export declare function useSlotOperations(id: string): SlotOperation[];
8
+ export declare function useSlotContext(): {
9
+ [key: string]: unknown;
10
+ id: string;
11
+ idAliases?: string[];
12
+ children?: import("react").ReactNode;
13
+ };
@@ -0,0 +1,29 @@
1
+ import { useContext, useEffect, useState } from 'react';
2
+ import { useLocation } from 'react-router-dom';
3
+ import { getSlotOperations } from './utils';
4
+ import SlotContext from './SlotContext';
5
+ import { createWidgetAppendOperation } from './widget';
6
+ /**
7
+ * The useSlotOperations hook will trigger re-renders when the slot configuration changes.
8
+ * It is a fundamental hook that is used by many of the others to ensure they're using up-to-date
9
+ * config as it changes.
10
+ */
11
+ export function useSlotOperations(id) {
12
+ const { children, idAliases } = useSlotContext();
13
+ const location = useLocation();
14
+ const [operations, setOperations] = useState([]);
15
+ useEffect(() => {
16
+ // Setting default content has to happen inside `useEffect()` so that re-renders only happen
17
+ // when [children] props change. This avoids an endless render loop. After all, the whole
18
+ // point of a slot is to modify its children via slot operations.
19
+ const defaultOperation = createWidgetAppendOperation('defaultContent', id, children);
20
+ setOperations(getSlotOperations([id, ...(idAliases !== null && idAliases !== void 0 ? idAliases : [])], defaultOperation));
21
+ // We depend on [location] to force re-renders on navigation. This guarantees changes in active
22
+ // roles (and thus, changes in what conditional widgets are shown) properly.
23
+ }, [id, children, idAliases, location]);
24
+ return operations;
25
+ }
26
+ export function useSlotContext() {
27
+ return useContext(SlotContext);
28
+ }
29
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../runtime/slots/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAU;IAC1C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAkB,EAAE,CAAC,CAAC;IAElE,SAAS,CAAC,GAAG,EAAE;QACb,4FAA4F;QAC5F,2FAA2F;QAC3F,iEAAiE;QACjE,MAAM,gBAAgB,GAAG,2BAA2B,CAAC,gBAAgB,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrF,aAAa,CAAC,iBAAiB,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAE/E,gGAAgG;QAChG,4EAA4E;IAC9E,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC","sourcesContent":["import { useContext, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nimport { SlotOperation } from './types';\nimport { getSlotOperations } from './utils';\nimport SlotContext from './SlotContext';\nimport { createWidgetAppendOperation } from './widget';\n\n/**\n * The useSlotOperations hook will trigger re-renders when the slot configuration changes.\n * It is a fundamental hook that is used by many of the others to ensure they're using up-to-date\n * config as it changes.\n */\nexport function useSlotOperations(id: string) {\n const { children, idAliases } = useSlotContext();\n const location = useLocation();\n const [operations, setOperations] = useState<SlotOperation[]>([]);\n\n useEffect(() => {\n // Setting default content has to happen inside `useEffect()` so that re-renders only happen\n // when [children] props change. This avoids an endless render loop. After all, the whole\n // point of a slot is to modify its children via slot operations.\n const defaultOperation = createWidgetAppendOperation('defaultContent', id, children);\n setOperations(getSlotOperations([id, ...(idAliases ?? [])], defaultOperation));\n\n // We depend on [location] to force re-renders on navigation. This guarantees changes in active\n // roles (and thus, changes in what conditional widgets are shown) properly.\n }, [id, children, idAliases, location]);\n\n return operations;\n}\n\nexport function useSlotContext() {\n return useContext(SlotContext);\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export * from './hooks';
2
+ export * from './layout';
3
+ export { default as Slot } from './Slot';
4
+ export { default as SlotContext } from './SlotContext';
5
+ export * from './utils';
6
+ export * from './widget';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../runtime/slots/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC","sourcesContent":["export * from './hooks';\nexport type * from './types';\nexport * from './layout';\nexport { default as Slot } from './Slot';\nexport { default as SlotContext } from './SlotContext';\nexport * from './utils';\nexport * from './widget';\n"]}
@@ -0,0 +1 @@
1
+ export default function DefaultSlotLayout(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useWidgets } from '../widget/hooks';
3
+ export default function DefaultSlotLayout() {
4
+ const widgets = useWidgets();
5
+ return (_jsx(_Fragment, { children: widgets }));
6
+ }
7
+ //# sourceMappingURL=DefaultSlotLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultSlotLayout.js","sourceRoot":"","sources":["../../../../runtime/slots/layout/DefaultSlotLayout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,iBAAiB;IACvC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,OAAO,CACL,4BAAG,OAAO,GAAI,CACf,CAAC;AACJ,CAAC","sourcesContent":["import { useWidgets } from '../widget/hooks';\n\nexport default function DefaultSlotLayout() {\n const widgets = useWidgets();\n\n return (\n <>{widgets}</>\n );\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ export declare function useLayoutForSlotId(id: string): ReactNode | ComponentType;
3
+ /**
4
+ * useLayoutOptions iterates through the slot's operations to find any which are "layout
5
+ * options" operations. It merges these into a single object and returns them - operations are
6
+ * merged in declaration order, meaning last one in wins. useLayoutOptions only triggers a
7
+ * re-render when the options change.
8
+ */
9
+ export declare function useLayoutOptions(): Record<string, unknown>;
10
+ export declare function useLayoutOptionsForId(id: string): Record<string, unknown>;
@@ -0,0 +1,57 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { useSlotContext, useSlotOperations } from '../hooks';
3
+ import { isSlotOperationConditionSatisfied } from '../utils';
4
+ import { isLayoutOperation, isLayoutOptionsOperation, isLayoutReplaceOperation } from './utils';
5
+ function hasLayoutComponentProps(operation) {
6
+ return isLayoutOperation(operation) && 'component' in operation;
7
+ }
8
+ function hasLayoutElementProps(operation) {
9
+ return isLayoutOperation(operation) && 'element' in operation;
10
+ }
11
+ export function useLayoutForSlotId(id) {
12
+ const operations = useSlotOperations(id);
13
+ let layoutElement = null;
14
+ for (const operation of operations) {
15
+ if (isSlotOperationConditionSatisfied(operation)) {
16
+ if (isLayoutReplaceOperation(operation)) {
17
+ if (hasLayoutComponentProps(operation)) {
18
+ layoutElement = operation.component;
19
+ }
20
+ else if (hasLayoutElementProps(operation)) {
21
+ layoutElement = operation.element;
22
+ }
23
+ }
24
+ }
25
+ }
26
+ return layoutElement;
27
+ }
28
+ /**
29
+ * useLayoutOptions iterates through the slot's operations to find any which are "layout
30
+ * options" operations. It merges these into a single object and returns them - operations are
31
+ * merged in declaration order, meaning last one in wins. useLayoutOptions only triggers a
32
+ * re-render when the options change.
33
+ */
34
+ export function useLayoutOptions() {
35
+ const { id } = useSlotContext();
36
+ return useLayoutOptionsForId(id);
37
+ }
38
+ export function useLayoutOptionsForId(id) {
39
+ const operations = useSlotOperations(id);
40
+ const [options, setOptions] = useState({});
41
+ useEffect(() => {
42
+ const findOptions = () => {
43
+ let nextOptions = {};
44
+ for (const operation of operations) {
45
+ if (isSlotOperationConditionSatisfied(operation)) {
46
+ if (isLayoutOptionsOperation(operation)) {
47
+ nextOptions = Object.assign(Object.assign({}, nextOptions), operation.options);
48
+ }
49
+ }
50
+ }
51
+ return nextOptions;
52
+ };
53
+ setOptions(findOptions());
54
+ }, [operations]);
55
+ return options;
56
+ }
57
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../runtime/slots/layout/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAEhG,SAAS,uBAAuB,CAAC,SAA0B;IACzD,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,WAAW,IAAI,SAAS,CAAC;AAClE,CAAC;AAED,SAAS,qBAAqB,CAAC,SAA0B;IACvD,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,SAAS,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,aAAa,GAA8B,IAAI,CAAC;IAEpD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,iCAAiC,CAAC,SAAS,CAAC,EAAE,CAAC;YACjD,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxC,IAAI,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvC,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC;gBACtC,CAAC;qBAAM,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5C,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,cAAc,EAAE,CAAC;IAChC,OAAO,qBAAqB,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA0B,EAAE,CAAC,CAAC;IAEpE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,WAAW,GAA4B,EAAE,CAAC;YAC9C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,iCAAiC,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjD,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;wBACxC,WAAW,mCAAQ,WAAW,GAAK,SAAS,CAAC,OAAO,CAAE,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC,CAAC;QAEF,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { ComponentType, ReactNode, useEffect, useState } from 'react';\nimport { useSlotContext, useSlotOperations } from '../hooks';\nimport { isSlotOperationConditionSatisfied } from '../utils';\nimport { LayoutComponentProps, LayoutElementProps, LayoutOperation } from './types';\nimport { isLayoutOperation, isLayoutOptionsOperation, isLayoutReplaceOperation } from './utils';\n\nfunction hasLayoutComponentProps(operation: LayoutOperation): operation is (LayoutOperation & LayoutComponentProps) {\n return isLayoutOperation(operation) && 'component' in operation;\n}\n\nfunction hasLayoutElementProps(operation: LayoutOperation): operation is (LayoutOperation & LayoutElementProps) {\n return isLayoutOperation(operation) && 'element' in operation;\n}\n\nexport function useLayoutForSlotId(id: string) {\n const operations = useSlotOperations(id);\n let layoutElement: ReactNode | ComponentType = null;\n\n for (const operation of operations) {\n if (isSlotOperationConditionSatisfied(operation)) {\n if (isLayoutReplaceOperation(operation)) {\n if (hasLayoutComponentProps(operation)) {\n layoutElement = operation.component;\n } else if (hasLayoutElementProps(operation)) {\n layoutElement = operation.element;\n }\n }\n }\n }\n return layoutElement;\n}\n\n/**\n * useLayoutOptions iterates through the slot's operations to find any which are \"layout\n * options\" operations. It merges these into a single object and returns them - operations are\n * merged in declaration order, meaning last one in wins. useLayoutOptions only triggers a\n * re-render when the options change.\n */\nexport function useLayoutOptions() {\n const { id } = useSlotContext();\n return useLayoutOptionsForId(id);\n}\n\nexport function useLayoutOptionsForId(id: string) {\n const operations = useSlotOperations(id);\n const [options, setOptions] = useState<Record<string, unknown>>({});\n\n useEffect(() => {\n const findOptions = () => {\n let nextOptions: Record<string, unknown> = {};\n for (const operation of operations) {\n if (isSlotOperationConditionSatisfied(operation)) {\n if (isLayoutOptionsOperation(operation)) {\n nextOptions = { ...nextOptions, ...operation.options };\n }\n }\n }\n return nextOptions;\n };\n\n setOptions(findOptions());\n }, [operations]);\n\n return options;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export { default as DefaultSlotLayout } from './DefaultSlotLayout';
2
+ export * from './hooks';
3
+ export { LayoutOperationTypes } from './types';
4
+ export * from './utils';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../runtime/slots/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,cAAc,SAAS,CAAC","sourcesContent":["export { default as DefaultSlotLayout } from './DefaultSlotLayout';\nexport * from './hooks';\nexport type * from './types';\nexport { LayoutOperationTypes } from './types';\nexport * from './utils';\n"]}