@openedx/frontend-base 1.0.0-alpha.3 → 1.0.0-alpha.30

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 (806) 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} +45 -124
  57. package/dist/runtime/config/index.js +359 -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 +113 -0
  69. package/dist/runtime/i18n/lib.js +223 -0
  70. package/dist/runtime/i18n/lib.js.map +1 -0
  71. package/dist/runtime/index.d.ts +14 -0
  72. package/dist/runtime/index.js +15 -0
  73. package/dist/runtime/index.js.map +1 -0
  74. package/dist/runtime/initialize.d.ts +87 -0
  75. package/dist/runtime/initialize.js +305 -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 +28 -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/index.d.ts +1 -0
  192. package/dist/runtime/scripts/index.js +14 -0
  193. package/dist/runtime/scripts/index.js.map +1 -0
  194. package/dist/runtime/setupTest.d.ts +1 -0
  195. package/dist/runtime/setupTest.js +12 -0
  196. package/dist/runtime/setupTest.js.map +1 -0
  197. package/dist/runtime/slots/Slot.d.ts +10 -0
  198. package/dist/runtime/slots/Slot.js +35 -0
  199. package/dist/runtime/slots/Slot.js.map +1 -0
  200. package/dist/runtime/slots/SlotContext.d.ts +8 -0
  201. package/dist/runtime/slots/SlotContext.js +7 -0
  202. package/dist/runtime/slots/SlotContext.js.map +1 -0
  203. package/dist/runtime/slots/hooks.d.ts +13 -0
  204. package/dist/runtime/slots/hooks.js +29 -0
  205. package/dist/runtime/slots/hooks.js.map +1 -0
  206. package/dist/runtime/slots/index.js +7 -0
  207. package/dist/runtime/slots/index.js.map +1 -0
  208. package/dist/runtime/slots/layout/DefaultSlotLayout.d.ts +1 -0
  209. package/dist/runtime/slots/layout/DefaultSlotLayout.js +7 -0
  210. package/dist/runtime/slots/layout/DefaultSlotLayout.js.map +1 -0
  211. package/dist/runtime/slots/layout/hooks.d.ts +10 -0
  212. package/dist/runtime/slots/layout/hooks.js +57 -0
  213. package/dist/runtime/slots/layout/hooks.js.map +1 -0
  214. package/dist/runtime/slots/layout/index.js +5 -0
  215. package/dist/runtime/slots/layout/index.js.map +1 -0
  216. package/{runtime/slots/layout/types.ts → dist/runtime/slots/layout/types.d.ts} +10 -25
  217. package/dist/runtime/slots/layout/types.js +12 -0
  218. package/dist/runtime/slots/layout/types.js.map +1 -0
  219. package/dist/runtime/slots/layout/utils.d.ts +5 -0
  220. package/dist/runtime/slots/layout/utils.js +11 -0
  221. package/dist/runtime/slots/layout/utils.js.map +1 -0
  222. package/{runtime/slots/types.ts → dist/runtime/slots/types.d.ts} +6 -12
  223. package/dist/runtime/slots/types.js +7 -0
  224. package/dist/runtime/slots/types.js.map +1 -0
  225. package/dist/runtime/slots/utils.d.ts +3 -0
  226. package/dist/runtime/slots/utils.js +66 -0
  227. package/dist/runtime/slots/utils.js.map +1 -0
  228. package/dist/runtime/slots/widget/WidgetContext.d.ts +6 -0
  229. package/dist/runtime/slots/widget/WidgetContext.js +8 -0
  230. package/dist/runtime/slots/widget/WidgetContext.js.map +1 -0
  231. package/dist/runtime/slots/widget/WidgetProvider.d.ts +9 -0
  232. package/dist/runtime/slots/widget/WidgetProvider.js +18 -0
  233. package/dist/runtime/slots/widget/WidgetProvider.js.map +1 -0
  234. package/dist/runtime/slots/widget/hooks.d.ts +13 -0
  235. package/dist/runtime/slots/widget/hooks.js +104 -0
  236. package/dist/runtime/slots/widget/hooks.js.map +1 -0
  237. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.d.ts +10 -0
  238. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js +42 -0
  239. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.js.map +1 -0
  240. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.d.ts +13 -0
  241. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js +15 -0
  242. package/dist/runtime/slots/widget/iframe/IFrameContentWrapper.messages.js.map +1 -0
  243. package/dist/runtime/slots/widget/iframe/IFrameWidget.d.ts +6 -0
  244. package/dist/runtime/slots/widget/iframe/IFrameWidget.js +32 -0
  245. package/dist/runtime/slots/widget/iframe/IFrameWidget.js.map +1 -0
  246. package/dist/runtime/slots/widget/iframe/constants.d.ts +15 -0
  247. package/{runtime/slots/widget/iframe/constants.ts → dist/runtime/slots/widget/iframe/constants.js} +2 -4
  248. package/dist/runtime/slots/widget/iframe/constants.js.map +1 -0
  249. package/dist/runtime/slots/widget/iframe/hooks.d.ts +64 -0
  250. package/dist/runtime/slots/widget/iframe/hooks.js +144 -0
  251. package/dist/runtime/slots/widget/iframe/hooks.js.map +1 -0
  252. package/{runtime/slots/widget/iframe/index.ts → dist/runtime/slots/widget/iframe/index.d.ts} +1 -4
  253. package/dist/runtime/slots/widget/iframe/index.js +3 -0
  254. package/dist/runtime/slots/widget/iframe/index.js.map +1 -0
  255. package/{runtime/slots/widget/iframe/types.ts → dist/runtime/slots/widget/iframe/types.d.ts} +2 -4
  256. package/dist/runtime/slots/widget/iframe/types.js +3 -0
  257. package/dist/runtime/slots/widget/iframe/types.js.map +1 -0
  258. package/dist/runtime/slots/widget/index.js +6 -0
  259. package/dist/runtime/slots/widget/index.js.map +1 -0
  260. package/{runtime/slots/widget/types.ts → dist/runtime/slots/widget/types.d.ts} +58 -84
  261. package/dist/runtime/slots/widget/types.js +41 -0
  262. package/dist/runtime/slots/widget/types.js.map +1 -0
  263. package/dist/runtime/slots/widget/utils.d.ts +22 -0
  264. package/dist/runtime/slots/widget/utils.js +184 -0
  265. package/dist/runtime/slots/widget/utils.js.map +1 -0
  266. package/{runtime/subscriptions.ts → dist/runtime/subscriptions.d.ts} +5 -41
  267. package/dist/runtime/subscriptions.js +48 -0
  268. package/dist/runtime/subscriptions.js.map +1 -0
  269. package/{runtime/testing/index.ts → dist/runtime/testing/index.d.ts} +0 -1
  270. package/dist/runtime/testing/index.js +9 -0
  271. package/dist/runtime/testing/index.js.map +1 -0
  272. package/dist/runtime/testing/initializeMockApp.d.ts +46 -0
  273. package/{runtime/testing/initializeMockApp.ts → dist/runtime/testing/initializeMockApp.js} +26 -36
  274. package/dist/runtime/testing/initializeMockApp.js.map +1 -0
  275. package/dist/runtime/testing/mockMessages.d.ts +22 -0
  276. package/dist/runtime/testing/mockMessages.js +23 -0
  277. package/dist/runtime/testing/mockMessages.js.map +1 -0
  278. package/dist/runtime/utils.d.ts +95 -0
  279. package/{runtime → dist/runtime}/utils.js +55 -70
  280. package/dist/runtime/utils.js.map +1 -0
  281. package/dist/shell/DefaultLayout.d.ts +1 -0
  282. package/dist/shell/DefaultLayout.js +7 -0
  283. package/dist/shell/DefaultLayout.js.map +1 -0
  284. package/dist/shell/DefaultMain.d.ts +1 -0
  285. package/dist/shell/DefaultMain.js +6 -0
  286. package/dist/shell/DefaultMain.js.map +1 -0
  287. package/dist/shell/Logo.d.ts +6 -0
  288. package/dist/shell/Logo.js +16 -0
  289. package/dist/shell/Logo.js.map +1 -0
  290. package/dist/shell/Shell.d.ts +1 -0
  291. package/dist/shell/Shell.js +10 -0
  292. package/dist/shell/Shell.js.map +1 -0
  293. package/dist/shell/Shell.messages.d.ts +58 -0
  294. package/dist/shell/Shell.messages.js +60 -0
  295. package/dist/shell/Shell.messages.js.map +1 -0
  296. package/dist/shell/app.d.ts +3 -0
  297. package/dist/shell/app.js +43 -0
  298. package/dist/shell/app.js.map +1 -0
  299. package/{shell → dist/shell}/app.scss +2 -1
  300. package/dist/shell/babel.config.d.ts +2 -0
  301. package/{shell → dist/shell}/babel.config.js +2 -1
  302. package/dist/shell/babel.config.js.map +1 -0
  303. package/dist/shell/constants.d.ts +2 -0
  304. package/dist/shell/constants.js +3 -0
  305. package/dist/shell/constants.js.map +1 -0
  306. package/dist/shell/dev/devFooter/app.d.ts +3 -0
  307. package/dist/shell/dev/devFooter/app.js +36 -0
  308. package/dist/shell/dev/devFooter/app.js.map +1 -0
  309. package/dist/shell/dev/devFooter/index.js +2 -0
  310. package/dist/shell/dev/devFooter/index.js.map +1 -0
  311. package/dist/shell/dev/devHeader/BarContext.d.ts +7 -0
  312. package/dist/shell/dev/devHeader/BarContext.js +8 -0
  313. package/dist/shell/dev/devHeader/BarContext.js.map +1 -0
  314. package/dist/shell/dev/devHeader/BarLink.d.ts +1 -0
  315. package/dist/shell/dev/devHeader/BarLink.js +10 -0
  316. package/dist/shell/dev/devHeader/BarLink.js.map +1 -0
  317. package/dist/shell/dev/devHeader/BarProvider.d.ts +6 -0
  318. package/dist/shell/dev/devHeader/BarProvider.js +16 -0
  319. package/dist/shell/dev/devHeader/BarProvider.js.map +1 -0
  320. package/dist/shell/dev/devHeader/CoursesLink.d.ts +1 -0
  321. package/dist/shell/dev/devHeader/CoursesLink.js +10 -0
  322. package/dist/shell/dev/devHeader/CoursesLink.js.map +1 -0
  323. package/dist/shell/dev/devHeader/FooContext.d.ts +7 -0
  324. package/dist/shell/dev/devHeader/FooContext.js +8 -0
  325. package/dist/shell/dev/devHeader/FooContext.js.map +1 -0
  326. package/dist/shell/dev/devHeader/FooLink.d.ts +1 -0
  327. package/dist/shell/dev/devHeader/FooLink.js +10 -0
  328. package/dist/shell/dev/devHeader/FooLink.js.map +1 -0
  329. package/dist/shell/dev/devHeader/FooProvider.d.ts +6 -0
  330. package/dist/shell/dev/devHeader/FooProvider.js +16 -0
  331. package/dist/shell/dev/devHeader/FooProvider.js.map +1 -0
  332. package/dist/shell/dev/devHeader/app.d.ts +3 -0
  333. package/dist/shell/dev/devHeader/app.js +34 -0
  334. package/dist/shell/dev/devHeader/app.js.map +1 -0
  335. package/dist/shell/dev/devHeader/index.js +2 -0
  336. package/dist/shell/dev/devHeader/index.js.map +1 -0
  337. package/dist/shell/dev/devHeader/providers.d.ts +3 -0
  338. package/dist/shell/dev/devHeader/providers.js +8 -0
  339. package/dist/shell/dev/devHeader/providers.js.map +1 -0
  340. package/dist/shell/dev/devHome/HomePage.d.ts +1 -0
  341. package/dist/shell/dev/devHome/HomePage.js +14 -0
  342. package/dist/shell/dev/devHome/HomePage.js.map +1 -0
  343. package/dist/shell/dev/devHome/app.d.ts +3 -0
  344. package/dist/shell/dev/devHome/app.js +15 -0
  345. package/dist/shell/dev/devHome/app.js.map +1 -0
  346. package/dist/shell/dev/devHome/index.js +2 -0
  347. package/dist/shell/dev/devHome/index.js.map +1 -0
  348. package/dist/shell/dev/devHome/messages.d.ts +8 -0
  349. package/dist/shell/dev/devHome/messages.js +10 -0
  350. package/dist/shell/dev/devHome/messages.js.map +1 -0
  351. package/dist/shell/dev/devUser/app.d.ts +3 -0
  352. package/dist/shell/dev/devUser/app.js +22 -0
  353. package/dist/shell/dev/devUser/app.js.map +1 -0
  354. package/dist/shell/dev/devUser/index.js +2 -0
  355. package/dist/shell/dev/devUser/index.js.map +1 -0
  356. package/dist/shell/dev/index.js +6 -0
  357. package/dist/shell/dev/index.js.map +1 -0
  358. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.d.ts +1 -0
  359. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js +8 -0
  360. package/dist/shell/dev/slotShowcase/HorizontalSlotLayout.js.map +1 -0
  361. package/dist/shell/dev/slotShowcase/LayoutWithOptions.d.ts +1 -0
  362. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js +9 -0
  363. package/dist/shell/dev/slotShowcase/LayoutWithOptions.js.map +1 -0
  364. package/dist/shell/dev/slotShowcase/SlotShowcase.scss +50 -0
  365. package/dist/shell/dev/slotShowcase/SlotShowcasePage.d.ts +2 -0
  366. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js +17 -0
  367. package/dist/shell/dev/slotShowcase/SlotShowcasePage.js.map +1 -0
  368. package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.d.ts +1 -0
  369. package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.js +11 -0
  370. package/dist/shell/dev/slotShowcase/ToggleByRoleLayout.js.map +1 -0
  371. package/dist/shell/dev/slotShowcase/WidgetWithOptions.d.ts +1 -0
  372. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js +8 -0
  373. package/dist/shell/dev/slotShowcase/WidgetWithOptions.js.map +1 -0
  374. package/dist/shell/dev/slotShowcase/app.d.ts +3 -0
  375. package/dist/shell/dev/slotShowcase/app.js +372 -0
  376. package/dist/shell/dev/slotShowcase/app.js.map +1 -0
  377. package/dist/shell/dev/slotShowcase/index.js +2 -0
  378. package/dist/shell/dev/slotShowcase/index.js.map +1 -0
  379. package/dist/shell/footer/CenterLinks.d.ts +1 -0
  380. package/dist/shell/footer/CenterLinks.js +7 -0
  381. package/dist/shell/footer/CenterLinks.js.map +1 -0
  382. package/dist/shell/footer/CopyrightNotice.d.ts +10 -0
  383. package/dist/shell/footer/CopyrightNotice.js +10 -0
  384. package/dist/shell/footer/CopyrightNotice.js.map +1 -0
  385. package/dist/shell/footer/Footer.d.ts +1 -0
  386. package/dist/shell/footer/Footer.js +12 -0
  387. package/dist/shell/footer/Footer.js.map +1 -0
  388. package/dist/shell/footer/LabeledLinkColumn.d.ts +1 -0
  389. package/dist/shell/footer/LabeledLinkColumn.js +11 -0
  390. package/dist/shell/footer/LabeledLinkColumn.js.map +1 -0
  391. package/dist/shell/footer/LanguageMenu.d.ts +1 -0
  392. package/dist/shell/footer/LanguageMenu.js +16 -0
  393. package/dist/shell/footer/LanguageMenu.js.map +1 -0
  394. package/dist/shell/footer/LanguageMenuItem.d.ts +8 -0
  395. package/dist/shell/footer/LanguageMenuItem.js +11 -0
  396. package/dist/shell/footer/LanguageMenuItem.js.map +1 -0
  397. package/dist/shell/footer/LeftLinks.d.ts +1 -0
  398. package/dist/shell/footer/LeftLinks.js +7 -0
  399. package/dist/shell/footer/LeftLinks.js.map +1 -0
  400. package/dist/shell/footer/LegalNotices.d.ts +1 -0
  401. package/dist/shell/footer/LegalNotices.js +10 -0
  402. package/dist/shell/footer/LegalNotices.js.map +1 -0
  403. package/dist/shell/footer/PoweredBy.d.ts +1 -0
  404. package/dist/shell/footer/PoweredBy.js +9 -0
  405. package/dist/shell/footer/PoweredBy.js.map +1 -0
  406. package/dist/shell/footer/RevealLinks.d.ts +1 -0
  407. package/dist/shell/footer/RevealLinks.js +16 -0
  408. package/dist/shell/footer/RevealLinks.js.map +1 -0
  409. package/dist/shell/footer/RightLinks.d.ts +1 -0
  410. package/dist/shell/footer/RightLinks.js +7 -0
  411. package/dist/shell/footer/RightLinks.js.map +1 -0
  412. package/dist/shell/footer/app.d.ts +3 -0
  413. package/dist/shell/footer/app.js +59 -0
  414. package/dist/shell/footer/app.js.map +1 -0
  415. package/dist/shell/footer/data/api.d.ts +1 -0
  416. package/dist/shell/footer/data/api.js +45 -0
  417. package/dist/shell/footer/data/api.js.map +1 -0
  418. package/dist/shell/footer/index.js +3 -0
  419. package/dist/shell/footer/index.js.map +1 -0
  420. package/dist/shell/header/AuthenticatedMenu.d.ts +5 -0
  421. package/dist/shell/header/AuthenticatedMenu.js +9 -0
  422. package/dist/shell/header/AuthenticatedMenu.js.map +1 -0
  423. package/dist/shell/header/Header.d.ts +1 -0
  424. package/dist/shell/header/Header.js +8 -0
  425. package/dist/shell/header/Header.js.map +1 -0
  426. package/dist/shell/header/anonymous-menu/AnonymousMenu.d.ts +5 -0
  427. package/dist/shell/header/anonymous-menu/AnonymousMenu.js +7 -0
  428. package/dist/shell/header/anonymous-menu/AnonymousMenu.js.map +1 -0
  429. package/dist/shell/header/anonymous-menu/LoginButton.d.ts +3 -0
  430. package/dist/shell/header/anonymous-menu/LoginButton.js +22 -0
  431. package/dist/shell/header/anonymous-menu/LoginButton.js.map +1 -0
  432. package/dist/shell/header/anonymous-menu/RegisterButton.d.ts +3 -0
  433. package/dist/shell/header/anonymous-menu/RegisterButton.js +22 -0
  434. package/dist/shell/header/anonymous-menu/RegisterButton.js.map +1 -0
  435. package/dist/shell/header/app.d.ts +4 -0
  436. package/dist/shell/header/app.js +132 -0
  437. package/dist/shell/header/app.js.map +1 -0
  438. package/dist/shell/header/app.scss +14 -0
  439. package/dist/shell/header/constants.d.ts +2 -0
  440. package/dist/shell/header/constants.js +3 -0
  441. package/dist/shell/header/constants.js.map +1 -0
  442. package/dist/shell/header/course-navigation-bar/CourseTabsNavigation.d.ts +3 -0
  443. package/dist/shell/header/course-navigation-bar/CourseTabsNavigation.js +62 -0
  444. package/dist/shell/header/course-navigation-bar/CourseTabsNavigation.js.map +1 -0
  445. package/dist/shell/header/course-navigation-bar/course-tabs-navigation.scss +7 -0
  446. package/dist/shell/header/course-navigation-bar/data/service.d.ts +9 -0
  447. package/dist/shell/header/course-navigation-bar/data/service.js +27 -0
  448. package/dist/shell/header/course-navigation-bar/data/service.js.map +1 -0
  449. package/dist/shell/header/course-navigation-bar/messages.d.ts +8 -0
  450. package/dist/shell/header/course-navigation-bar/messages.js +10 -0
  451. package/dist/shell/header/course-navigation-bar/messages.js.map +1 -0
  452. package/dist/shell/header/course-navigation-bar/utils.d.ts +2 -0
  453. package/dist/shell/header/course-navigation-bar/utils.js +27 -0
  454. package/dist/shell/header/course-navigation-bar/utils.js.map +1 -0
  455. package/dist/shell/header/desktop/DesktopLayout.d.ts +1 -0
  456. package/dist/shell/header/desktop/DesktopLayout.js +10 -0
  457. package/dist/shell/header/desktop/DesktopLayout.js.map +1 -0
  458. package/dist/shell/header/desktop/PrimaryNavLinks.d.ts +1 -0
  459. package/dist/shell/header/desktop/PrimaryNavLinks.js +7 -0
  460. package/dist/shell/header/desktop/PrimaryNavLinks.js.map +1 -0
  461. package/dist/shell/header/desktop/SecondaryNavLinks.d.ts +1 -0
  462. package/dist/shell/header/desktop/SecondaryNavLinks.js +7 -0
  463. package/dist/shell/header/desktop/SecondaryNavLinks.js.map +1 -0
  464. package/{shell/header/index.ts → dist/shell/header/index.d.ts} +1 -0
  465. package/dist/shell/header/index.js +4 -0
  466. package/dist/shell/header/index.js.map +1 -0
  467. package/dist/shell/header/mobile/MobileLayout.d.ts +1 -0
  468. package/dist/shell/header/mobile/MobileLayout.js +17 -0
  469. package/dist/shell/header/mobile/MobileLayout.js.map +1 -0
  470. package/dist/shell/header/mobile/MobileNavLinks.d.ts +1 -0
  471. package/dist/shell/header/mobile/MobileNavLinks.js +7 -0
  472. package/dist/shell/header/mobile/MobileNavLinks.js.map +1 -0
  473. package/{shell/index.ts → dist/shell/index.d.ts} +2 -1
  474. package/dist/shell/index.js +9 -0
  475. package/dist/shell/index.js.map +1 -0
  476. package/dist/shell/jest.config.d.ts +15 -0
  477. package/{tools/dist/jest → dist/shell}/jest.config.js +12 -10
  478. package/dist/shell/jest.config.js.map +1 -0
  479. package/dist/shell/menus/LinkMenuItem.d.ts +9 -0
  480. package/dist/shell/menus/LinkMenuItem.js +38 -0
  481. package/dist/shell/menus/LinkMenuItem.js.map +1 -0
  482. package/dist/shell/menus/NavDropdownMenuSlot.d.ts +7 -0
  483. package/dist/shell/menus/NavDropdownMenuSlot.js +14 -0
  484. package/dist/shell/menus/NavDropdownMenuSlot.js.map +1 -0
  485. package/dist/shell/menus/ProfileLinkMenuItem.d.ts +8 -0
  486. package/dist/shell/menus/ProfileLinkMenuItem.js +16 -0
  487. package/dist/shell/menus/ProfileLinkMenuItem.js.map +1 -0
  488. package/dist/shell/menus/data/utils.d.ts +4 -0
  489. package/dist/shell/menus/data/utils.js +13 -0
  490. package/dist/shell/menus/data/utils.js.map +1 -0
  491. package/dist/shell/router/createRouter.d.ts +1 -0
  492. package/dist/shell/router/createRouter.js +26 -0
  493. package/dist/shell/router/createRouter.js.map +1 -0
  494. package/dist/shell/router/getAppRoutes.d.ts +2 -0
  495. package/dist/shell/router/getAppRoutes.js +27 -0
  496. package/dist/shell/router/getAppRoutes.js.map +1 -0
  497. package/dist/shell/setupTest.d.ts +1 -0
  498. package/dist/shell/setupTest.js +12 -0
  499. package/dist/shell/setupTest.js.map +1 -0
  500. package/dist/shell/site.config.dev.d.ts +4 -0
  501. package/dist/shell/site.config.dev.js +43 -0
  502. package/dist/shell/site.config.dev.js.map +1 -0
  503. package/dist/shell/site.d.ts +1 -0
  504. package/dist/shell/site.js +45 -0
  505. package/dist/shell/site.js.map +1 -0
  506. package/dist/tools/babel/babel.config.d.ts +12 -0
  507. package/dist/tools/babel.config.d.ts +2 -0
  508. package/dist/tools/babel.config.js +3 -0
  509. package/dist/tools/cli/commands/serve.d.ts +1 -0
  510. package/dist/tools/cli/commands/translations.d.ts +2 -0
  511. package/dist/tools/cli/commands/translations.js +20 -0
  512. package/dist/tools/cli/openedx.d.ts +2 -0
  513. package/{tools/dist → dist/tools}/cli/openedx.js +33 -8
  514. package/dist/tools/cli/utils/ensureConfigFilenameOption.d.ts +2 -0
  515. package/dist/tools/cli/utils/formatter.d.ts +1 -0
  516. package/dist/tools/cli/utils/formatter.js +3 -0
  517. package/dist/tools/cli/utils/getResolvedConfigPath.d.ts +2 -0
  518. package/dist/tools/cli/utils/prettyPrintTitle.d.ts +1 -0
  519. package/dist/tools/cli/utils/printUsage.d.ts +1 -0
  520. package/{tools/dist → dist/tools}/cli/utils/printUsage.js +8 -0
  521. package/dist/tools/cli/utils/translations/index.d.ts +2 -0
  522. package/dist/tools/cli/utils/translations/index.js +7 -0
  523. package/dist/tools/cli/utils/translations/messagesObject.d.ts +26 -0
  524. package/dist/tools/cli/utils/translations/messagesObject.js +66 -0
  525. package/dist/tools/cli/utils/translations/prepare.d.ts +5 -0
  526. package/dist/tools/cli/utils/translations/prepare.js +98 -0
  527. package/dist/tools/cli/utils/translations/pull.d.ts +6 -0
  528. package/dist/tools/cli/utils/translations/pull.js +102 -0
  529. package/dist/tools/config-helpers/createConfig.d.ts +2 -0
  530. package/dist/tools/config-helpers/createLintConfig.d.ts +2 -0
  531. package/dist/tools/config-helpers/getBaseConfig.d.ts +2 -0
  532. package/dist/tools/defaultConfigPaths.d.ts +8 -0
  533. package/dist/tools/eslint/base.eslint.config.d.ts +3 -0
  534. package/{config → dist/tools}/eslint/base.eslint.config.js +5 -4
  535. package/dist/tools/eslint.config.d.ts +3 -0
  536. package/dist/tools/index.d.ts +3 -0
  537. package/dist/tools/jest/jest.config.d.ts +14 -0
  538. package/dist/tools/jest.config.d.ts +8 -0
  539. package/dist/tools/types.d.ts +20 -0
  540. package/{tools/dist → dist/tools}/types.js +2 -0
  541. package/{tools/dist → dist/tools}/typescript/tsconfig.json +2 -1
  542. package/dist/tools/webpack/common-config/all/getCodeRules.d.ts +2 -0
  543. package/dist/tools/webpack/common-config/all/getFileLoaderRules.d.ts +11 -0
  544. package/dist/tools/webpack/common-config/all/getImageMinimizer.d.ts +5 -0
  545. package/dist/tools/webpack/common-config/all/getStylesheetRule.d.ts +8 -0
  546. package/{config → dist/tools}/webpack/common-config/all/getStylesheetRule.js +1 -1
  547. package/dist/tools/webpack/common-config/dev/getDevServer.d.ts +2 -0
  548. package/{tools/dist → dist/tools}/webpack/common-config/dev/getDevServer.js +3 -5
  549. package/dist/tools/webpack/common-config/index.d.ts +7 -0
  550. package/{config → dist/tools}/webpack/common-config/index.js +3 -1
  551. package/dist/tools/webpack/common-config/site/getHtmlWebpackPlugin.d.ts +2 -0
  552. package/dist/tools/webpack/common-config/site/getI18nMessagesFallbackPlugin/emptyI18n.d.ts +2 -0
  553. package/{config/webpack/types.js → dist/tools/webpack/common-config/site/getI18nMessagesFallbackPlugin/emptyI18n.js} +1 -0
  554. package/dist/tools/webpack/common-config/site/getI18nMessagesFallbackPlugin/index.d.ts +2 -0
  555. package/dist/tools/webpack/common-config/site/getI18nMessagesFallbackPlugin/index.js +26 -0
  556. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.d.ts +16 -0
  557. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/index.d.ts +2 -0
  558. package/dist/tools/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.d.ts +1 -0
  559. package/dist/tools/webpack/utils/getPublicPath.d.ts +1 -0
  560. package/{tools/dist → dist/tools}/webpack/utils/getPublicPath.js +1 -1
  561. package/dist/tools/webpack/utils/getResolvedSiteConfigPath.d.ts +1 -0
  562. package/dist/tools/webpack/utils/getResolvedSiteI18nPath.d.ts +1 -0
  563. package/dist/tools/webpack/utils/getResolvedSiteI18nPath.js +25 -0
  564. package/dist/tools/webpack/webpack.config.build.d.ts +3 -0
  565. package/{config → dist/tools}/webpack/webpack.config.build.js +12 -15
  566. package/dist/tools/webpack/webpack.config.dev.d.ts +3 -0
  567. package/{config → dist/tools}/webpack/webpack.config.dev.js +16 -15
  568. package/dist/tools/webpack/webpack.config.dev.shell.d.ts +3 -0
  569. package/{config → dist/tools}/webpack/webpack.config.dev.shell.js +7 -14
  570. package/dist/types.d.ts +92 -0
  571. package/dist/types.js +7 -0
  572. package/dist/types.js.map +1 -0
  573. package/package.json +37 -19
  574. package/config/tsconfig.json +0 -32
  575. package/config/types.js +0 -23
  576. package/config/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  577. package/config/webpack/common-config/dev/getDevServer.js +0 -38
  578. package/config/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -66
  579. package/config/webpack/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +0 -108
  580. package/config/webpack/plugins/paragon-webpack-plugin/index.js +0 -7
  581. package/config/webpack/plugins/paragon-webpack-plugin/utils/assetUtils.js +0 -64
  582. package/config/webpack/plugins/paragon-webpack-plugin/utils/htmlUtils.js +0 -53
  583. package/config/webpack/plugins/paragon-webpack-plugin/utils/index.js +0 -9
  584. package/config/webpack/plugins/paragon-webpack-plugin/utils/paragonStylesheetUtils.js +0 -114
  585. package/config/webpack/plugins/paragon-webpack-plugin/utils/scriptUtils.js +0 -146
  586. package/config/webpack/plugins/paragon-webpack-plugin/utils/stylesheetUtils.js +0 -126
  587. package/config/webpack/plugins/paragon-webpack-plugin/utils/tagUtils.js +0 -57
  588. package/config/webpack/utils/getLocalAliases.js +0 -65
  589. package/config/webpack/utils/getPublicPath.js +0 -6
  590. package/config/webpack/utils/paragonUtils.js +0 -138
  591. package/runtime/__mocks__/file.js +0 -1
  592. package/runtime/__mocks__/svg.js +0 -1
  593. package/runtime/__mocks__/universal-cookie.js +0 -6
  594. package/runtime/analytics/MockAnalyticsService.js +0 -71
  595. package/runtime/analytics/SegmentAnalyticsService.js +0 -243
  596. package/runtime/analytics/index.ts +0 -12
  597. package/runtime/analytics/interface.test.js +0 -242
  598. package/runtime/auth/AxiosCsrfTokenService.js +0 -60
  599. package/runtime/auth/AxiosJwtAuthService.js +0 -363
  600. package/runtime/auth/AxiosJwtAuthService.test.jsx +0 -1076
  601. package/runtime/auth/AxiosJwtTokenService.js +0 -134
  602. package/runtime/auth/LocalForageCache.js +0 -76
  603. package/runtime/auth/MockAuthService.js +0 -278
  604. package/runtime/auth/index.ts +0 -19
  605. package/runtime/auth/interceptors/createCsrfTokenProviderInterceptor.js +0 -36
  606. package/runtime/auth/interceptors/createJwtTokenProviderInterceptor.js +0 -37
  607. package/runtime/auth/interceptors/createProcessAxiosRequestErrorInterceptor.js +0 -20
  608. package/runtime/auth/interceptors/createRetryInterceptor.js +0 -74
  609. package/runtime/auth/interceptors/createRetryInterceptor.test.js +0 -23
  610. package/runtime/auth/utils.js +0 -105
  611. package/runtime/config/getExternalLinkUrl.test.js +0 -76
  612. package/runtime/i18n/injectIntlWithShim.jsx +0 -48
  613. package/runtime/i18n/lib.test.js +0 -230
  614. package/runtime/i18n/lib.ts +0 -272
  615. package/runtime/index.ts +0 -134
  616. package/runtime/initialize.async.function.config.test.js +0 -43
  617. package/runtime/initialize.const.config.test.js +0 -41
  618. package/runtime/initialize.function.config.test.js +0 -41
  619. package/runtime/initialize.js +0 -352
  620. package/runtime/initialize.test.js +0 -356
  621. package/runtime/jest.config.js +0 -32
  622. package/runtime/logging/MockLoggingService.js +0 -31
  623. package/runtime/logging/NewRelicLoggingService.js +0 -184
  624. package/runtime/logging/NewRelicLoggingService.test.js +0 -214
  625. package/runtime/logging/types.ts +0 -4
  626. package/runtime/react/AuthenticatedPageRoute.test.jsx +0 -135
  627. package/runtime/react/CombinedAppProvider.tsx +0 -46
  628. package/runtime/react/CurrentAppProvider.tsx +0 -46
  629. package/runtime/react/Divider.tsx +0 -5
  630. package/runtime/react/ErrorBoundary.jsx +0 -47
  631. package/runtime/react/ErrorBoundary.test.jsx +0 -83
  632. package/runtime/react/ErrorPage.jsx +0 -72
  633. package/runtime/react/SiteProvider.test.jsx +0 -66
  634. package/runtime/react/SiteProvider.tsx +0 -78
  635. package/runtime/react/hooks.test.jsx +0 -104
  636. package/runtime/react/hooks.ts +0 -106
  637. package/runtime/routing/index.ts +0 -1
  638. package/runtime/routing/utils.test.ts +0 -7
  639. package/runtime/routing/utils.ts +0 -34
  640. package/runtime/scripts/GoogleAnalyticsLoader.test.ts +0 -77
  641. package/runtime/scripts/GoogleAnalyticsLoader.ts +0 -59
  642. package/runtime/scripts/index.ts +0 -1
  643. package/runtime/setupTest.js +0 -49
  644. package/runtime/site.config.test.tsx +0 -33
  645. package/runtime/slots/Slot.test.tsx +0 -40
  646. package/runtime/slots/Slot.tsx +0 -32
  647. package/runtime/slots/SlotContext.tsx +0 -8
  648. package/runtime/slots/hooks.ts +0 -35
  649. package/runtime/slots/layout/DefaultSlotLayout.test.tsx +0 -31
  650. package/runtime/slots/layout/DefaultSlotLayout.tsx +0 -9
  651. package/runtime/slots/layout/hooks.test.tsx +0 -178
  652. package/runtime/slots/layout/hooks.ts +0 -65
  653. package/runtime/slots/layout/utils.test.ts +0 -67
  654. package/runtime/slots/layout/utils.ts +0 -14
  655. package/runtime/slots/utils.test.ts +0 -64
  656. package/runtime/slots/utils.ts +0 -78
  657. package/runtime/slots/widget/WidgetContext.tsx +0 -9
  658. package/runtime/slots/widget/WidgetProvider.tsx +0 -30
  659. package/runtime/slots/widget/hooks.ts +0 -105
  660. package/runtime/slots/widget/iframe/IFrameContentWrapper.messages.tsx +0 -16
  661. package/runtime/slots/widget/iframe/IFrameContentWrapper.tsx +0 -84
  662. package/runtime/slots/widget/iframe/IFrameWidget.tsx +0 -59
  663. package/runtime/slots/widget/iframe/hooks.ts +0 -179
  664. package/runtime/slots/widget/utils.tsx +0 -201
  665. package/runtime/testing/initializeMockApp.test.ts +0 -66
  666. package/runtime/testing/mockMessages.ts +0 -23
  667. package/runtime/utils.test.js +0 -116
  668. package/shell/DefaultLayout.tsx +0 -18
  669. package/shell/DefaultMain.tsx +0 -7
  670. package/shell/Logo.test.tsx +0 -32
  671. package/shell/Logo.tsx +0 -28
  672. package/shell/Shell.messages.ts +0 -61
  673. package/shell/Shell.tsx +0 -18
  674. package/shell/__mocks__/file.js +0 -1
  675. package/shell/__mocks__/svg.js +0 -1
  676. package/shell/__mocks__/universal-cookie.js +0 -6
  677. package/shell/app.ts +0 -38
  678. package/shell/dev/devFooter/app.tsx +0 -43
  679. package/shell/dev/devHeader/BarContext.tsx +0 -13
  680. package/shell/dev/devHeader/BarLink.tsx +0 -16
  681. package/shell/dev/devHeader/BarProvider.tsx +0 -25
  682. package/shell/dev/devHeader/CoursesLink.tsx +0 -16
  683. package/shell/dev/devHeader/FooContext.tsx +0 -13
  684. package/shell/dev/devHeader/FooLink.tsx +0 -16
  685. package/shell/dev/devHeader/FooProvider.tsx +0 -25
  686. package/shell/dev/devHeader/app.tsx +0 -53
  687. package/shell/dev/devHeader/providers.tsx +0 -11
  688. package/shell/dev/devHome/HomePage.tsx +0 -28
  689. package/shell/dev/devHome/app.ts +0 -18
  690. package/shell/dev/devHome/i18n/index.ts +0 -27
  691. package/shell/dev/devHome/messages.ts +0 -11
  692. package/shell/dev/devUser/app.tsx +0 -24
  693. package/shell/dev/slotShowcase/HorizontalSlotLayout.tsx +0 -11
  694. package/shell/dev/slotShowcase/LayoutWithOptions.tsx +0 -17
  695. package/shell/dev/slotShowcase/SlotShowcasePage.tsx +0 -66
  696. package/shell/dev/slotShowcase/WidgetWithOptions.tsx +0 -11
  697. package/shell/dev/slotShowcase/app.tsx +0 -373
  698. package/shell/footer/CenterLinks.tsx +0 -11
  699. package/shell/footer/CopyrightNotice.tsx +0 -36
  700. package/shell/footer/Footer.tsx +0 -34
  701. package/shell/footer/LabeledLinkColumn.tsx +0 -19
  702. package/shell/footer/LanguageMenu.tsx +0 -35
  703. package/shell/footer/LanguageMenuItem.tsx +0 -23
  704. package/shell/footer/LeftLinks.tsx +0 -11
  705. package/shell/footer/LegalNotices.tsx +0 -17
  706. package/shell/footer/PoweredBy.tsx +0 -17
  707. package/shell/footer/RevealLinks.tsx +0 -43
  708. package/shell/footer/RightLinks.tsx +0 -11
  709. package/shell/footer/app.tsx +0 -73
  710. package/shell/footer/data/api.ts +0 -48
  711. package/shell/header/AuthenticatedMenu.tsx +0 -32
  712. package/shell/header/Header.tsx +0 -17
  713. package/shell/header/anonymous-menu/AnonymousMenu.tsx +0 -14
  714. package/shell/header/anonymous-menu/LoginButton.tsx +0 -14
  715. package/shell/header/anonymous-menu/RegisterButton.tsx +0 -15
  716. package/shell/header/app.tsx +0 -142
  717. package/shell/header/desktop/DesktopLayout.tsx +0 -22
  718. package/shell/header/desktop/PrimaryNavLinks.tsx +0 -10
  719. package/shell/header/desktop/SecondaryNavLinks.tsx +0 -10
  720. package/shell/header/mobile/MobileLayout.tsx +0 -47
  721. package/shell/header/mobile/MobileNavLinks.tsx +0 -10
  722. package/shell/i18n/index.ts +0 -25
  723. package/shell/jest.config.js +0 -30
  724. package/shell/menus/LinkMenuItem.tsx +0 -64
  725. package/shell/menus/NavDropdownMenuSlot.tsx +0 -29
  726. package/shell/menus/ProfileLinkMenuItem.tsx +0 -33
  727. package/shell/menus/data/utils.ts +0 -19
  728. package/shell/public/index.html +0 -10
  729. package/shell/router/createRouter.test.tsx +0 -50
  730. package/shell/router/createRouter.ts +0 -17
  731. package/shell/router/getAppRoutes.test.tsx +0 -59
  732. package/shell/router/getAppRoutes.ts +0 -21
  733. package/shell/setupTest.js +0 -48
  734. package/shell/site.config.dev.tsx +0 -49
  735. package/shell/site.config.test.tsx +0 -16
  736. package/shell/site.tsx +0 -41
  737. package/tools/dist/babel/babel.config.js +0 -28
  738. package/tools/dist/cli/intl-imports.js +0 -233
  739. package/tools/dist/cli/intl-imports.test.js +0 -146
  740. package/tools/dist/cli/transifex-utils.js +0 -68
  741. package/tools/dist/cli/utils/formatter.js +0 -10
  742. package/tools/dist/config-helpers/createConfig.js +0 -13
  743. package/tools/dist/config-helpers/createLintConfig.js +0 -16
  744. package/tools/dist/config-helpers/getBaseConfig.js +0 -12
  745. package/tools/dist/defaultConfigPaths.js +0 -35
  746. package/tools/dist/eslint/base.eslint.config.js +0 -113
  747. package/tools/dist/index.js +0 -12
  748. package/tools/dist/webpack/common-config/all/getCodeRules.js +0 -52
  749. package/tools/dist/webpack/common-config/all/getFileLoaderRules.js +0 -26
  750. package/tools/dist/webpack/common-config/all/getIgnoreWarnings.js +0 -14
  751. package/tools/dist/webpack/common-config/all/getImageMinimizer.js +0 -25
  752. package/tools/dist/webpack/common-config/all/getStylesheetRule.js +0 -112
  753. package/tools/dist/webpack/common-config/index.js +0 -18
  754. package/tools/dist/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -16
  755. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -91
  756. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -7
  757. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/HtmlWebpackNewRelicPlugin.test.js +0 -66
  758. package/tools/dist/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -3
  759. package/tools/dist/webpack/plugins/paragon-webpack-plugin/ParagonWebpackPlugin.js +0 -108
  760. package/tools/dist/webpack/plugins/paragon-webpack-plugin/index.js +0 -7
  761. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/assetUtils.js +0 -64
  762. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/htmlUtils.js +0 -53
  763. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/index.js +0 -9
  764. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/paragonStylesheetUtils.js +0 -114
  765. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/scriptUtils.js +0 -146
  766. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/stylesheetUtils.js +0 -126
  767. package/tools/dist/webpack/plugins/paragon-webpack-plugin/utils/tagUtils.js +0 -57
  768. package/tools/dist/webpack/types.js +0 -2
  769. package/tools/dist/webpack/utils/getLocalAliases.js +0 -65
  770. package/tools/dist/webpack/utils/getResolvedSiteConfigPath.js +0 -32
  771. package/tools/dist/webpack/utils/paragonUtils.js +0 -138
  772. package/tools/dist/webpack/webpack.config.build.js +0 -80
  773. package/tools/dist/webpack/webpack.config.dev.js +0 -76
  774. package/tools/dist/webpack/webpack.config.dev.shell.js +0 -110
  775. package/types.ts +0 -99
  776. /package/{runtime/slots/index.ts → dist/runtime/slots/index.d.ts} +0 -0
  777. /package/{runtime/slots/layout/index.ts → dist/runtime/slots/layout/index.d.ts} +0 -0
  778. /package/{runtime/slots/widget/index.ts → dist/runtime/slots/widget/index.d.ts} +0 -0
  779. /package/{shell/dev/devFooter/index.ts → dist/shell/dev/devFooter/index.d.ts} +0 -0
  780. /package/{shell/dev/devHeader/index.ts → dist/shell/dev/devHeader/index.d.ts} +0 -0
  781. /package/{shell/dev/devHome/index.ts → dist/shell/dev/devHome/index.d.ts} +0 -0
  782. /package/{shell/dev/devUser/index.ts → dist/shell/dev/devUser/index.d.ts} +0 -0
  783. /package/{shell/dev/index.ts → dist/shell/dev/index.d.ts} +0 -0
  784. /package/{shell/dev/slotShowcase/index.ts → dist/shell/dev/slotShowcase/index.d.ts} +0 -0
  785. /package/{shell/footer/index.ts → dist/shell/footer/index.d.ts} +0 -0
  786. /package/{config → dist/tools}/babel/babel.config.js +0 -0
  787. /package/{tools/dist → dist/tools}/cli/commands/serve.js +0 -0
  788. /package/{tools/dist → dist/tools}/cli/utils/ensureConfigFilenameOption.js +0 -0
  789. /package/{tools/dist → dist/tools}/cli/utils/getResolvedConfigPath.js +0 -0
  790. /package/{tools/dist → dist/tools}/cli/utils/prettyPrintTitle.js +0 -0
  791. /package/{config → dist/tools}/config-helpers/createConfig.js +0 -0
  792. /package/{config → dist/tools}/config-helpers/createLintConfig.js +0 -0
  793. /package/{config → dist/tools}/config-helpers/getBaseConfig.js +0 -0
  794. /package/{config → dist/tools}/defaultConfigPaths.js +0 -0
  795. /package/{tools/dist → dist/tools}/eslint.config.js +0 -0
  796. /package/{config → dist/tools}/index.js +0 -0
  797. /package/{config → dist/tools}/jest/jest.config.js +0 -0
  798. /package/{tools/dist → dist/tools}/jest.config.js +0 -0
  799. /package/{config → dist/tools}/webpack/common-config/all/getCodeRules.js +0 -0
  800. /package/{config → dist/tools}/webpack/common-config/all/getFileLoaderRules.js +0 -0
  801. /package/{config → dist/tools}/webpack/common-config/all/getImageMinimizer.js +0 -0
  802. /package/{config → dist/tools}/webpack/common-config/site/getHtmlWebpackPlugin.js +0 -0
  803. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/HtmlWebpackNewRelicPlugin.js +0 -0
  804. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/index.js +0 -0
  805. /package/{config → dist/tools}/webpack/plugins/html-webpack-new-relic-plugin/test/fixtures/entry.js +0 -0
  806. /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, _c;
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 ((_c = (_b = route.handle) === null || _b === void 0 ? void 0 : _b.roles) === null || _c === void 0 ? void 0 : _c.includes(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 && 'roles' 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,MAAA,MAAA,KAAK,CAAC,MAAM,0CAAE,KAAK,0CAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,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,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;AAC/D,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?.roles?.includes(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 && 'roles' in match.handle;\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare function loadExternalScripts(): void;
@@ -0,0 +1,14 @@
1
+ import { getAppConfig, getSiteConfig } from '../config';
2
+ export function loadExternalScripts() {
3
+ var _a;
4
+ const apps = (_a = getSiteConfig().apps) !== null && _a !== void 0 ? _a : [];
5
+ apps.forEach(app => {
6
+ var _a, _b;
7
+ const config = (_a = getAppConfig(app.appId)) !== null && _a !== void 0 ? _a : {};
8
+ ((_b = app.externalScripts) !== null && _b !== void 0 ? _b : []).forEach(ExternalScript => {
9
+ const script = new ExternalScript({ config });
10
+ script.loadScript();
11
+ });
12
+ });
13
+ }
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../runtime/scripts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAExD,MAAM,UAAU,mBAAmB;;IACjC,MAAM,IAAI,GAAG,MAAA,aAAa,EAAE,CAAC,IAAI,mCAAI,EAAE,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;;QACjB,MAAM,MAAM,GAAG,MAAA,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,EAAE,CAAC;QAC7C,CAAC,MAAA,GAAG,CAAC,eAAe,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;YACnD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { getAppConfig, getSiteConfig } from '../config';\n\nexport function loadExternalScripts() {\n const apps = getSiteConfig().apps ?? [];\n apps.forEach(app => {\n const config = getAppConfig(app.appId) ?? {};\n (app.externalScripts ?? []).forEach(ExternalScript => {\n const script = new ExternalScript({ config });\n script.loadScript();\n });\n });\n}\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"]}
@@ -4,42 +4,27 @@
4
4
  * "Layout" operations are a sub-type of UI operations which affect the layout component of a UI
5
5
  * slot. They have no effect on the widgets loaded into a UI slot.
6
6
  */
7
-
8
7
  import { ReactNode } from 'react';
9
8
  import { BaseSlotOperation } from '../types';
10
-
11
- export enum LayoutOperationTypes {
12
- OPTIONS = 'layoutOptions',
13
- REPLACE = 'layoutReplace',
9
+ export declare enum LayoutOperationTypes {
10
+ OPTIONS = "layoutOptions",
11
+ REPLACE = "layoutReplace"
14
12
  }
15
-
16
13
  export interface BaseLayoutOperation extends BaseSlotOperation {
17
- op: LayoutOperationTypes,
14
+ op: LayoutOperationTypes;
18
15
  }
19
-
20
- // Concrete UI Layout Operations
21
-
22
16
  export type LayoutOptionsOperation = BaseLayoutOperation & {
23
- op: LayoutOperationTypes.OPTIONS,
24
- options: Record<string, unknown>,
17
+ op: LayoutOperationTypes.OPTIONS;
18
+ options: Record<string, unknown>;
25
19
  };
26
-
27
20
  export interface LayoutComponentProps {
28
- component: React.ComponentType,
21
+ component: React.ComponentType;
29
22
  }
30
-
31
23
  export interface LayoutElementProps {
32
- element: ReactNode,
24
+ element: ReactNode;
33
25
  }
34
-
35
- export type LayoutRendererProps = (
36
- LayoutComponentProps | LayoutElementProps
37
- );
38
-
26
+ export type LayoutRendererProps = (LayoutComponentProps | LayoutElementProps);
39
27
  export type LayoutReplaceOperation = BaseLayoutOperation & LayoutRendererProps & {
40
- op: LayoutOperationTypes.REPLACE,
28
+ op: LayoutOperationTypes.REPLACE;
41
29
  };
42
-
43
- // Aggregate UI Layout Operations
44
-
45
30
  export type LayoutOperation = LayoutOptionsOperation | LayoutReplaceOperation;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Base UI Layout Operations
3
+ *
4
+ * "Layout" operations are a sub-type of UI operations which affect the layout component of a UI
5
+ * slot. They have no effect on the widgets loaded into a UI slot.
6
+ */
7
+ export var LayoutOperationTypes;
8
+ (function (LayoutOperationTypes) {
9
+ LayoutOperationTypes["OPTIONS"] = "layoutOptions";
10
+ LayoutOperationTypes["REPLACE"] = "layoutReplace";
11
+ })(LayoutOperationTypes || (LayoutOperationTypes = {}));
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../runtime/slots/layout/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,iDAAyB,CAAA;IACzB,iDAAyB,CAAA;AAC3B,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B","sourcesContent":["/**\n * Base UI Layout Operations\n *\n * \"Layout\" operations are a sub-type of UI operations which affect the layout component of a UI\n * slot. They have no effect on the widgets loaded into a UI slot.\n */\n\nimport { ReactNode } from 'react';\nimport { BaseSlotOperation } from '../types';\n\nexport enum LayoutOperationTypes {\n OPTIONS = 'layoutOptions',\n REPLACE = 'layoutReplace',\n}\n\nexport interface BaseLayoutOperation extends BaseSlotOperation {\n op: LayoutOperationTypes,\n}\n\n// Concrete UI Layout Operations\n\nexport type LayoutOptionsOperation = BaseLayoutOperation & {\n op: LayoutOperationTypes.OPTIONS,\n options: Record<string, unknown>,\n};\n\nexport interface LayoutComponentProps {\n component: React.ComponentType,\n}\n\nexport interface LayoutElementProps {\n element: ReactNode,\n}\n\nexport type LayoutRendererProps = (\n LayoutComponentProps | LayoutElementProps\n);\n\nexport type LayoutReplaceOperation = BaseLayoutOperation & LayoutRendererProps & {\n op: LayoutOperationTypes.REPLACE,\n};\n\n// Aggregate UI Layout Operations\n\nexport type LayoutOperation = LayoutOptionsOperation | LayoutReplaceOperation;\n"]}
@@ -0,0 +1,5 @@
1
+ import { SlotOperation } from '../types';
2
+ import { LayoutOperation, LayoutOptionsOperation, LayoutReplaceOperation } from './types';
3
+ export declare function isLayoutOperation(operation: SlotOperation): operation is LayoutOperation;
4
+ export declare function isLayoutOptionsOperation(operation: SlotOperation): operation is LayoutOptionsOperation;
5
+ export declare function isLayoutReplaceOperation(operation: SlotOperation): operation is LayoutReplaceOperation;