@artistanbul/frontend-component-header-sumac 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +93 -0
- package/README.rst +193 -0
- package/dist/Avatar.js +43 -0
- package/dist/Avatar.js.map +1 -0
- package/dist/Header.js +130 -0
- package/dist/Header.js.map +1 -0
- package/dist/Header.messages.js +110 -0
- package/dist/Header.messages.js.map +1 -0
- package/dist/Header.test.jsx +104 -0
- package/dist/Icons.js +52 -0
- package/dist/Icons.js.map +1 -0
- package/dist/Logo.js +28 -0
- package/dist/Logo.js.map +1 -0
- package/dist/Menu/Menu.js +321 -0
- package/dist/Menu/Menu.js.map +1 -0
- package/dist/Menu/index.js +3 -0
- package/dist/Menu/index.js.map +1 -0
- package/dist/Menu/menu.scss +45 -0
- package/dist/__snapshots__/Header.test.jsx.snap +445 -0
- package/dist/desktop-header/DesktopHeader.js +174 -0
- package/dist/desktop-header/DesktopHeader.js.map +1 -0
- package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js +51 -0
- package/dist/desktop-header/DesktopHeaderMainOrSecondaryMenu.js.map +1 -0
- package/dist/desktop-header/DesktopHeaderUserMenu.js +49 -0
- package/dist/desktop-header/DesktopHeaderUserMenu.js.map +1 -0
- package/dist/desktop-header/DesktopLoggedOutItems.js +22 -0
- package/dist/desktop-header/DesktopLoggedOutItems.js.map +1 -0
- package/dist/generic/messages.js +15 -0
- package/dist/generic/messages.js.map +1 -0
- package/dist/i18n/index.js +2 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/images/omnikampus/artistanbul-logo.png +0 -0
- package/dist/images/omnikampus/omnikampus-just-logo.png +0 -0
- package/dist/images/omnikampus/omnikampus-logo.png +0 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/index.scss +248 -0
- package/dist/learning-header/AnonymousUserMenu.js +25 -0
- package/dist/learning-header/AnonymousUserMenu.js.map +1 -0
- package/dist/learning-header/AuthenticatedUserDropdown.js +57 -0
- package/dist/learning-header/AuthenticatedUserDropdown.js.map +1 -0
- package/dist/learning-header/LearningHeader.js +61 -0
- package/dist/learning-header/LearningHeader.js.map +1 -0
- package/dist/learning-header/LearningHeaderCourseInfo.js +24 -0
- package/dist/learning-header/LearningHeaderCourseInfo.js.map +1 -0
- package/dist/learning-header/LearningHeaderHelpLink.js +13 -0
- package/dist/learning-header/LearningHeaderHelpLink.js.map +1 -0
- package/dist/learning-header/LearningHeaderUserMenuItems.js +20 -0
- package/dist/learning-header/LearningHeaderUserMenuItems.js.map +1 -0
- package/dist/learning-header/LearningLoggedOutButtons.js +24 -0
- package/dist/learning-header/LearningLoggedOutButtons.js.map +1 -0
- package/dist/learning-header/messages.js +40 -0
- package/dist/learning-header/messages.js.map +1 -0
- package/dist/mobile-header/MobileHeader.js +192 -0
- package/dist/mobile-header/MobileHeader.js.map +1 -0
- package/dist/mobile-header/MobileHeaderMainMenu.js +46 -0
- package/dist/mobile-header/MobileHeaderMainMenu.js.map +1 -0
- package/dist/mobile-header/MobileHeaderUserMenu.js +38 -0
- package/dist/mobile-header/MobileHeaderUserMenu.js.map +1 -0
- package/dist/mobile-header/MobileLoggedOutItems.js +27 -0
- package/dist/mobile-header/MobileLoggedOutItems.js.map +1 -0
- package/dist/plugin-slots/CourseInfoSlot/README.md +125 -0
- package/dist/plugin-slots/CourseInfoSlot/images/add_custom_components_before_and_after_course_info.png +0 -0
- package/dist/plugin-slots/CourseInfoSlot/images/replace_course_info_with_custom_component.png +0 -0
- package/dist/plugin-slots/CourseInfoSlot/images/replace_course_title.png +0 -0
- package/dist/plugin-slots/CourseInfoSlot/index.js +31 -0
- package/dist/plugin-slots/CourseInfoSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopHeaderSlot/README.md +41 -0
- package/dist/plugin-slots/DesktopHeaderSlot/images/desktop_header_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopHeaderSlot/index.js +15 -0
- package/dist/plugin-slots/DesktopHeaderSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/README.md +134 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/images/desktop_logged_out_items_modify_items.png +0 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js +19 -0
- package/dist/plugin-slots/DesktopLoggedOutItemsSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/README.md +134 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/images/desktop_main_menu_modify_items.png +0 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/index.js +19 -0
- package/dist/plugin-slots/DesktopMainMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/README.md +129 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/images/desktop_secondary_menu_modify_items.png +0 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js +19 -0
- package/dist/plugin-slots/DesktopSecondaryMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/README.md +141 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_component.png +0 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/images/desktop_user_menu_modify_items.png +0 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/index.js +19 -0
- package/dist/plugin-slots/DesktopUserMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/LearningHelpSlot/README.md +41 -0
- package/dist/plugin-slots/LearningHelpSlot/images/learning_help_custom_component.png +0 -0
- package/dist/plugin-slots/LearningHelpSlot/index.js +10 -0
- package/dist/plugin-slots/LearningHelpSlot/index.js.map +1 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/README.md +132 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_component.png +0 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/images/learning_logged_out_items_modified_items.png +0 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js +17 -0
- package/dist/plugin-slots/LearningLoggedOutItemsSlot/index.js.map +1 -0
- package/dist/plugin-slots/LearningUserMenuSlot/README.md +130 -0
- package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_component.png +0 -0
- package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/LearningUserMenuSlot/images/learning_user_menu_modified_items.png +0 -0
- package/dist/plugin-slots/LearningUserMenuSlot/index.js +17 -0
- package/dist/plugin-slots/LearningUserMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/LogoSlot/README.md +69 -0
- package/dist/plugin-slots/LogoSlot/index.js +26 -0
- package/dist/plugin-slots/LogoSlot/index.js.map +1 -0
- package/dist/plugin-slots/MobileHeaderSlot/README.md +41 -0
- package/dist/plugin-slots/MobileHeaderSlot/images/mobile_header_custom_component.png +0 -0
- package/dist/plugin-slots/MobileHeaderSlot/index.js +15 -0
- package/dist/plugin-slots/MobileHeaderSlot/index.js.map +1 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/README.md +134 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_component.png +0 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/images/mobile_logged_out_items_modify_items.png +0 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js +19 -0
- package/dist/plugin-slots/MobileLoggedOutItemsSlot/index.js.map +1 -0
- package/dist/plugin-slots/MobileMainMenuSlot/README.md +134 -0
- package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_component.png +0 -0
- package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/MobileMainMenuSlot/images/mobile_main_menu_modify_items.png +0 -0
- package/dist/plugin-slots/MobileMainMenuSlot/index.js +19 -0
- package/dist/plugin-slots/MobileMainMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/MobileUserMenuSlot/README.md +142 -0
- package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_component.png +0 -0
- package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_custom_components_before_after.png +0 -0
- package/dist/plugin-slots/MobileUserMenuSlot/images/mobile_user_menu_modify_items.png +0 -0
- package/dist/plugin-slots/MobileUserMenuSlot/index.js +19 -0
- package/dist/plugin-slots/MobileUserMenuSlot/index.js.map +1 -0
- package/dist/plugin-slots/README.md +15 -0
- package/dist/setupTest.js +125 -0
- package/dist/studio-header/BrandNav.js +24 -0
- package/dist/studio-header/BrandNav.js.map +1 -0
- package/dist/studio-header/CourseLockUp.js +46 -0
- package/dist/studio-header/CourseLockUp.js.map +1 -0
- package/dist/studio-header/HeaderBody.js +143 -0
- package/dist/studio-header/HeaderBody.js.map +1 -0
- package/dist/studio-header/MobileHeader.js +79 -0
- package/dist/studio-header/MobileHeader.js.map +1 -0
- package/dist/studio-header/MobileMenu.js +46 -0
- package/dist/studio-header/MobileMenu.js.map +1 -0
- package/dist/studio-header/NavDropdownMenu.js +32 -0
- package/dist/studio-header/NavDropdownMenu.js.map +1 -0
- package/dist/studio-header/StudioHeader.js +79 -0
- package/dist/studio-header/StudioHeader.js.map +1 -0
- package/dist/studio-header/StudioHeader.scss +49 -0
- package/dist/studio-header/UserMenu.js +55 -0
- package/dist/studio-header/UserMenu.js.map +1 -0
- package/dist/studio-header/index.js +3 -0
- package/dist/studio-header/index.js.map +1 -0
- package/dist/studio-header/messages.js +55 -0
- package/dist/studio-header/messages.js.map +1 -0
- package/dist/studio-header/utils.js +26 -0
- package/dist/studio-header/utils.js.map +1 -0
- package/dist/test-utils.js +26 -0
- package/dist/test-utils.js.map +1 -0
- package/package.json +79 -0
Binary file
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { PluginSlot } from '@openedx/frontend-plugin-framework';
|
3
|
+
import MobileHeaderUserMenu, { mobileHeaderUserMenuDataShape } from '../../mobile-header/MobileHeaderUserMenu';
|
4
|
+
var MobileUserMenuSlot = function MobileUserMenuSlot(_ref) {
|
5
|
+
var menu = _ref.menu;
|
6
|
+
return /*#__PURE__*/React.createElement(PluginSlot, {
|
7
|
+
id: "mobile_user_menu_slot",
|
8
|
+
slotOptions: {
|
9
|
+
mergeProps: true
|
10
|
+
}
|
11
|
+
}, /*#__PURE__*/React.createElement(MobileHeaderUserMenu, {
|
12
|
+
menu: menu
|
13
|
+
}));
|
14
|
+
};
|
15
|
+
MobileUserMenuSlot.propTypes = {
|
16
|
+
menu: mobileHeaderUserMenuDataShape
|
17
|
+
};
|
18
|
+
export default MobileUserMenuSlot;
|
19
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PluginSlot","MobileHeaderUserMenu","mobileHeaderUserMenuDataShape","MobileUserMenuSlot","_ref","menu","createElement","id","slotOptions","mergeProps","propTypes"],"sources":["../../../src/plugin-slots/MobileUserMenuSlot/index.jsx"],"sourcesContent":["import React from 'react';\nimport { PluginSlot } from '@openedx/frontend-plugin-framework';\nimport MobileHeaderUserMenu, { mobileHeaderUserMenuDataShape } from '../../mobile-header/MobileHeaderUserMenu';\n\nconst MobileUserMenuSlot = ({\n menu,\n}) => (\n <PluginSlot\n id=\"mobile_user_menu_slot\"\n slotOptions={{\n mergeProps: true,\n }}\n >\n <MobileHeaderUserMenu menu={menu} />\n </PluginSlot>\n);\n\nMobileUserMenuSlot.propTypes = {\n menu: mobileHeaderUserMenuDataShape,\n};\n\nexport default MobileUserMenuSlot;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,QAAQ,oCAAoC;AAC/D,OAAOC,oBAAoB,IAAIC,6BAA6B,QAAQ,0CAA0C;AAE9G,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA;EAAA,IACtBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;EAAA,oBAEJN,KAAA,CAAAO,aAAA,CAACN,UAAU;IACTO,EAAE,EAAC,uBAAuB;IAC1BC,WAAW,EAAE;MACXC,UAAU,EAAE;IACd;EAAE,gBAEFV,KAAA,CAAAO,aAAA,CAACL,oBAAoB;IAACI,IAAI,EAAEA;EAAK,CAAE,CACzB,CAAC;AAAA,CACd;AAEDF,kBAAkB,CAACO,SAAS,GAAG;EAC7BL,IAAI,EAAEH;AACR,CAAC;AAED,eAAeC,kBAAkB","ignoreList":[]}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# `frontend-component-header` Plugin Slots
|
2
|
+
|
3
|
+
* [`logo_slot`](./LogoSlot/)
|
4
|
+
* [`desktop_main_menu_slot`](./DesktopMainMenuSlot/)
|
5
|
+
* [`desktop_secondary_menu_slot`](./DesktopSecondaryMenuSlot/)
|
6
|
+
* [`mobile_main_menu_slot`](./MobileMainMenuSlot/)
|
7
|
+
* [`course_info_slot`](./CourseInfoSlot/)
|
8
|
+
* [`learning_help_slot`](./LearningHelpSlot/)
|
9
|
+
* [`desktop_logged_out_items_slot`](./DesktopLoggedOutItemsSlot/)
|
10
|
+
* [`mobile_logged_out_items_slot`](./MobileLoggedOutItemsSlot/)
|
11
|
+
* [`mobile_user_menu_slot`](./MobileUserMenuSlot/)
|
12
|
+
* [`desktop_user_menu_slot`](./DesktopUserMenuSlot/)
|
13
|
+
* [`learning_user_menu_slot`](./LearningUserMenuSlot/)
|
14
|
+
* [`learning_logged_out_items_slot`](./LearningLoggedOutItemsSlot/)
|
15
|
+
* [`desktop_header_slot`](./DesktopHeaderSlot/)
|
@@ -0,0 +1,125 @@
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
2
|
+
|
3
|
+
import React from 'react';
|
4
|
+
import PropTypes from 'prop-types';
|
5
|
+
import '@testing-library/jest-dom';
|
6
|
+
import '@testing-library/jest-dom/extend-expect';
|
7
|
+
import 'babel-polyfill';
|
8
|
+
import 'jest-chain';
|
9
|
+
import { getConfig, mergeConfig } from '@edx/frontend-platform';
|
10
|
+
import { configure as configureLogging } from '@edx/frontend-platform/logging';
|
11
|
+
import { configure as configureI18n } from '@edx/frontend-platform/i18n';
|
12
|
+
import { configure as configureAuth, MockAuthService } from '@edx/frontend-platform/auth';
|
13
|
+
import { render as rtlRender } from '@testing-library/react';
|
14
|
+
import { IntlProvider } from 'react-intl';
|
15
|
+
import AppProvider from '@edx/frontend-platform/react/AppProvider';
|
16
|
+
import appMessages from './i18n';
|
17
|
+
|
18
|
+
// These configuration values are usually set in webpack's EnvironmentPlugin however
|
19
|
+
// Jest does not use webpack so we need to set these so for testing
|
20
|
+
process.env.ACCESS_TOKEN_COOKIE_NAME = 'edx-jwt-cookie-header-payload';
|
21
|
+
process.env.ACCOUNT_PROFILE_URL = 'http://localhost:1995';
|
22
|
+
process.env.ACCOUNT_SETTINGS_URL = 'http://localhost:1997';
|
23
|
+
process.env.BASE_URL = 'localhost:1995';
|
24
|
+
process.env.CREDENTIALS_BASE_URL = 'http://localhost:18150';
|
25
|
+
process.env.CSRF_TOKEN_API_PATH = '/csrf/api/v1/token';
|
26
|
+
process.env.ECOMMERCE_BASE_URL = 'http://localhost:18130';
|
27
|
+
process.env.LANGUAGE_PREFERENCE_COOKIE_NAME = 'openedx-language-preference';
|
28
|
+
process.env.LMS_BASE_URL = 'http://localhost:18000';
|
29
|
+
process.env.LOGIN_URL = 'http://localhost:18000/login';
|
30
|
+
process.env.LOGOUT_URL = 'http://localhost:18000/logout';
|
31
|
+
process.env.MARKETING_SITE_BASE_URL = 'http://localhost:18000';
|
32
|
+
process.env.ORDER_HISTORY_URL = 'localhost:1996/orders';
|
33
|
+
process.env.REFRESH_ACCESS_TOKEN_ENDPOINT = 'http://localhost:18000/login_refresh';
|
34
|
+
process.env.SEGMENT_KEY = 'segment_whoa';
|
35
|
+
process.env.SITE_NAME = 'edX';
|
36
|
+
process.env.USER_INFO_COOKIE_NAME = 'edx-user-info';
|
37
|
+
process.env.LOGO_URL = 'https://edx-cdn.org/v3/default/logo.svg';
|
38
|
+
process.env.LOGO_TRADEMARK_URL = 'https://edx-cdn.org/v3/default/logo-trademark.svg';
|
39
|
+
process.env.LOGO_WHITE_URL = 'https://edx-cdn.org/v3/default/logo-white.svg';
|
40
|
+
process.env.FAVICON_URL = 'https://edx-cdn.org/v3/default/favicon.ico';
|
41
|
+
|
42
|
+
class MockLoggingService {
|
43
|
+
logInfo = jest.fn();
|
44
|
+
|
45
|
+
logError = jest.fn();
|
46
|
+
}
|
47
|
+
|
48
|
+
export const authenticatedUser = {
|
49
|
+
userId: 'abc123',
|
50
|
+
username: 'Mock User',
|
51
|
+
roles: [],
|
52
|
+
administrator: false,
|
53
|
+
};
|
54
|
+
|
55
|
+
export function initializeMockApp() {
|
56
|
+
mergeConfig({
|
57
|
+
INSIGHTS_BASE_URL: process.env.INSIGHTS_BASE_URL || null,
|
58
|
+
STUDIO_BASE_URL: process.env.STUDIO_BASE_URL || null,
|
59
|
+
TWITTER_URL: process.env.TWITTER_URL || null,
|
60
|
+
BASE_URL: process.env.BASE_URL || null,
|
61
|
+
LMS_BASE_URL: process.env.LMS_BASE_URL || null,
|
62
|
+
LOGIN_URL: process.env.LOGIN_URL || null,
|
63
|
+
LOGOUT_URL: process.env.LOGOUT_URL || null,
|
64
|
+
REFRESH_ACCESS_TOKEN_ENDPOINT: process.env.REFRESH_ACCESS_TOKEN_ENDPOINT || null,
|
65
|
+
ACCESS_TOKEN_COOKIE_NAME: process.env.ACCESS_TOKEN_COOKIE_NAME || null,
|
66
|
+
CSRF_TOKEN_API_PATH: process.env.CSRF_TOKEN_API_PATH || null,
|
67
|
+
LOGO_URL: process.env.LOGO_URL || null,
|
68
|
+
SITE_NAME: process.env.SITE_NAME || null,
|
69
|
+
|
70
|
+
authenticatedUser: {
|
71
|
+
userId: 'abc123',
|
72
|
+
username: 'Mock User',
|
73
|
+
roles: [],
|
74
|
+
administrator: false,
|
75
|
+
},
|
76
|
+
});
|
77
|
+
|
78
|
+
const loggingService = configureLogging(MockLoggingService, {
|
79
|
+
config: getConfig(),
|
80
|
+
});
|
81
|
+
const authService = configureAuth(MockAuthService, {
|
82
|
+
config: getConfig(),
|
83
|
+
loggingService,
|
84
|
+
});
|
85
|
+
|
86
|
+
// i18n doesn't have a service class to return.
|
87
|
+
configureI18n({
|
88
|
+
config: getConfig(),
|
89
|
+
loggingService,
|
90
|
+
messages: [appMessages],
|
91
|
+
});
|
92
|
+
|
93
|
+
return { loggingService, authService };
|
94
|
+
}
|
95
|
+
|
96
|
+
function render(
|
97
|
+
ui,
|
98
|
+
{
|
99
|
+
store = null,
|
100
|
+
...renderOptions
|
101
|
+
} = {},
|
102
|
+
) {
|
103
|
+
const Wrapper = ({ children }) => (
|
104
|
+
// eslint-disable-next-line react/jsx-filename-extension
|
105
|
+
<IntlProvider locale="en">
|
106
|
+
<AppProvider store={store}>
|
107
|
+
{children}
|
108
|
+
</AppProvider>
|
109
|
+
</IntlProvider>
|
110
|
+
);
|
111
|
+
|
112
|
+
Wrapper.propTypes = {
|
113
|
+
children: PropTypes.node.isRequired,
|
114
|
+
};
|
115
|
+
|
116
|
+
return rtlRender(ui, { wrapper: Wrapper, ...renderOptions });
|
117
|
+
}
|
118
|
+
|
119
|
+
// Re-export everything.
|
120
|
+
export * from '@testing-library/react';
|
121
|
+
|
122
|
+
// Override `render` method.
|
123
|
+
export {
|
124
|
+
render,
|
125
|
+
};
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import PropTypes from 'prop-types';
|
3
|
+
import { Link } from 'react-router-dom';
|
4
|
+
import omnikampusLogo from "../images/omnikampus/omnikampus-just-logo.png";
|
5
|
+
var BrandNav = function BrandNav(_ref) {
|
6
|
+
var studioBaseUrl = _ref.studioBaseUrl,
|
7
|
+
logo = _ref.logo,
|
8
|
+
logoAltText = _ref.logoAltText;
|
9
|
+
return /*#__PURE__*/React.createElement(Link, {
|
10
|
+
to: studioBaseUrl,
|
11
|
+
className: "studio-logo"
|
12
|
+
}, /*#__PURE__*/React.createElement("img", {
|
13
|
+
src: omnikampusLogo,
|
14
|
+
alt: logoAltText,
|
15
|
+
className: "d-block logo"
|
16
|
+
}));
|
17
|
+
};
|
18
|
+
BrandNav.propTypes = {
|
19
|
+
studioBaseUrl: PropTypes.string.isRequired,
|
20
|
+
logo: PropTypes.string.isRequired,
|
21
|
+
logoAltText: PropTypes.string.isRequired
|
22
|
+
};
|
23
|
+
export default BrandNav;
|
24
|
+
//# sourceMappingURL=BrandNav.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"BrandNav.js","names":["React","PropTypes","Link","omnikampusLogo","BrandNav","_ref","studioBaseUrl","logo","logoAltText","createElement","to","className","src","alt","propTypes","string","isRequired"],"sources":["../../src/studio-header/BrandNav.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\n\nimport omnikampusLogo from \"../images/omnikampus/omnikampus-just-logo.png\"\n\nconst BrandNav = ({\n studioBaseUrl,\n logo,\n logoAltText,\n}) => (\n <Link to={studioBaseUrl} className='studio-logo'>\n <img\n src={omnikampusLogo}\n alt={logoAltText}\n className=\"d-block logo\"\n />\n </Link>\n);\n\nBrandNav.propTypes = {\n studioBaseUrl: PropTypes.string.isRequired,\n logo: PropTypes.string.isRequired,\n logoAltText: PropTypes.string.isRequired,\n};\n\nexport default BrandNav;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,OAAOC,cAAc,MAAM,+CAA+C;AAE1E,IAAMC,QAAQ,GAAG,SAAXA,QAAQA,CAAAC,IAAA;EAAA,IACZC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IACbC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IACJC,WAAW,GAAAH,IAAA,CAAXG,WAAW;EAAA,oBAEXR,KAAA,CAAAS,aAAA,CAACP,IAAI;IAACQ,EAAE,EAAEJ,aAAc;IAACK,SAAS,EAAC;EAAa,gBAC9CX,KAAA,CAAAS,aAAA;IACEG,GAAG,EAAET,cAAe;IACpBU,GAAG,EAAEL,WAAY;IACjBG,SAAS,EAAC;EAAc,CACzB,CACG,CAAC;AAAA,CACR;AAEDP,QAAQ,CAACU,SAAS,GAAG;EACnBR,aAAa,EAAEL,SAAS,CAACc,MAAM,CAACC,UAAU;EAC1CT,IAAI,EAAEN,SAAS,CAACc,MAAM,CAACC,UAAU;EACjCR,WAAW,EAAEP,SAAS,CAACc,MAAM,CAACC;AAChC,CAAC;AAED,eAAeZ,QAAQ","ignoreList":[]}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import PropTypes from 'prop-types';
|
3
|
+
import { injectIntl, intlShape } from '@edx/frontend-platform/i18n';
|
4
|
+
import { OverlayTrigger, Tooltip } from '@openedx/paragon';
|
5
|
+
import { Link } from 'react-router-dom';
|
6
|
+
import messages from './messages';
|
7
|
+
var CourseLockUp = function CourseLockUp(_ref) {
|
8
|
+
var outlineLink = _ref.outlineLink,
|
9
|
+
org = _ref.org,
|
10
|
+
number = _ref.number,
|
11
|
+
title = _ref.title,
|
12
|
+
intl = _ref.intl;
|
13
|
+
return /*#__PURE__*/React.createElement(OverlayTrigger, {
|
14
|
+
placement: "bottom",
|
15
|
+
overlay: /*#__PURE__*/React.createElement(Tooltip, {
|
16
|
+
id: "course-lock-up"
|
17
|
+
}, title)
|
18
|
+
}, /*#__PURE__*/React.createElement(Link, {
|
19
|
+
className: "course-title-lockup mr-2",
|
20
|
+
to: outlineLink,
|
21
|
+
"aria-label": intl.formatMessage(messages['header.label.courseOutline']),
|
22
|
+
"data-testid": "course-lock-up-block"
|
23
|
+
}, /*#__PURE__*/React.createElement("span", {
|
24
|
+
className: "d-block small m-0 text-gray-800",
|
25
|
+
"data-testid": "course-org-number"
|
26
|
+
}, org, " ", number), /*#__PURE__*/React.createElement("span", {
|
27
|
+
className: "d-block m-0 font-weight-bold text-gray-800",
|
28
|
+
"data-testid": "course-title"
|
29
|
+
}, title)));
|
30
|
+
};
|
31
|
+
CourseLockUp.propTypes = {
|
32
|
+
number: PropTypes.string,
|
33
|
+
org: PropTypes.string,
|
34
|
+
title: PropTypes.string,
|
35
|
+
outlineLink: PropTypes.string,
|
36
|
+
// injected
|
37
|
+
intl: intlShape.isRequired
|
38
|
+
};
|
39
|
+
CourseLockUp.defaultProps = {
|
40
|
+
number: null,
|
41
|
+
org: null,
|
42
|
+
title: null,
|
43
|
+
outlineLink: null
|
44
|
+
};
|
45
|
+
export default injectIntl(CourseLockUp);
|
46
|
+
//# sourceMappingURL=CourseLockUp.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"CourseLockUp.js","names":["React","PropTypes","injectIntl","intlShape","OverlayTrigger","Tooltip","Link","messages","CourseLockUp","_ref","outlineLink","org","number","title","intl","createElement","placement","overlay","id","className","to","formatMessage","propTypes","string","isRequired","defaultProps"],"sources":["../../src/studio-header/CourseLockUp.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, intlShape } from '@edx/frontend-platform/i18n';\nimport {\n OverlayTrigger,\n Tooltip,\n} from '@openedx/paragon';\nimport { Link } from 'react-router-dom';\n\nimport messages from './messages';\n\nconst CourseLockUp = ({\n outlineLink,\n org,\n number,\n title,\n // injected\n intl,\n}) => (\n <OverlayTrigger\n placement=\"bottom\"\n overlay={(\n <Tooltip id=\"course-lock-up\">\n {title}\n </Tooltip>\n )}\n >\n <Link\n className=\"course-title-lockup mr-2\"\n to={outlineLink}\n aria-label={intl.formatMessage(messages['header.label.courseOutline'])}\n data-testid=\"course-lock-up-block\"\n >\n <span className=\"d-block small m-0 text-gray-800\" data-testid=\"course-org-number\">{org} {number}</span>\n <span className=\"d-block m-0 font-weight-bold text-gray-800\" data-testid=\"course-title\">{title}</span>\n </Link>\n </OverlayTrigger>\n);\n\nCourseLockUp.propTypes = {\n number: PropTypes.string,\n org: PropTypes.string,\n title: PropTypes.string,\n outlineLink: PropTypes.string,\n // injected\n intl: intlShape.isRequired,\n};\n\nCourseLockUp.defaultProps = {\n number: null,\n org: null,\n title: null,\n outlineLink: null,\n};\n\nexport default injectIntl(CourseLockUp);\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,UAAU,EAAEC,SAAS,QAAQ,6BAA6B;AACnE,SACEC,cAAc,EACdC,OAAO,QACF,kBAAkB;AACzB,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,OAAOC,QAAQ,MAAM,YAAY;AAEjC,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAAC,IAAA;EAAA,IAChBC,WAAW,GAAAD,IAAA,CAAXC,WAAW;IACXC,GAAG,GAAAF,IAAA,CAAHE,GAAG;IACHC,MAAM,GAAAH,IAAA,CAANG,MAAM;IACNC,KAAK,GAAAJ,IAAA,CAALI,KAAK;IAELC,IAAI,GAAAL,IAAA,CAAJK,IAAI;EAAA,oBAEJd,KAAA,CAAAe,aAAA,CAACX,cAAc;IACbY,SAAS,EAAC,QAAQ;IAClBC,OAAO,eACLjB,KAAA,CAAAe,aAAA,CAACV,OAAO;MAACa,EAAE,EAAC;IAAgB,GACzBL,KACM;EACT,gBAEFb,KAAA,CAAAe,aAAA,CAACT,IAAI;IACHa,SAAS,EAAC,0BAA0B;IACpCC,EAAE,EAAEV,WAAY;IAChB,cAAYI,IAAI,CAACO,aAAa,CAACd,QAAQ,CAAC,4BAA4B,CAAC,CAAE;IACvE,eAAY;EAAsB,gBAElCP,KAAA,CAAAe,aAAA;IAAMI,SAAS,EAAC,iCAAiC;IAAC,eAAY;EAAmB,GAAER,GAAG,EAAC,GAAC,EAACC,MAAa,CAAC,eACvGZ,KAAA,CAAAe,aAAA;IAAMI,SAAS,EAAC,4CAA4C;IAAC,eAAY;EAAc,GAAEN,KAAY,CACjG,CACQ,CAAC;AAAA,CAClB;AAEDL,YAAY,CAACc,SAAS,GAAG;EACvBV,MAAM,EAAEX,SAAS,CAACsB,MAAM;EACxBZ,GAAG,EAAEV,SAAS,CAACsB,MAAM;EACrBV,KAAK,EAAEZ,SAAS,CAACsB,MAAM;EACvBb,WAAW,EAAET,SAAS,CAACsB,MAAM;EAC7B;EACAT,IAAI,EAAEX,SAAS,CAACqB;AAClB,CAAC;AAEDhB,YAAY,CAACiB,YAAY,GAAG;EAC1Bb,MAAM,EAAE,IAAI;EACZD,GAAG,EAAE,IAAI;EACTE,KAAK,EAAE,IAAI;EACXH,WAAW,EAAE;AACf,CAAC;AAED,eAAeR,UAAU,CAACM,YAAY,CAAC","ignoreList":[]}
|
@@ -0,0 +1,143 @@
|
|
1
|
+
var _excluded = ["className"];
|
2
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
3
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
4
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
5
|
+
import React from 'react';
|
6
|
+
import PropTypes from 'prop-types';
|
7
|
+
import { useIntl } from '@edx/frontend-platform/i18n';
|
8
|
+
import classNames from 'classnames';
|
9
|
+
import { ActionRow, Button, Container, Icon, IconButton, Nav, Row } from '@openedx/paragon';
|
10
|
+
import { Close, MenuIcon, Search } from '@openedx/paragon/icons';
|
11
|
+
import CourseLockUp from './CourseLockUp';
|
12
|
+
import UserMenu from './UserMenu';
|
13
|
+
import BrandNav from './BrandNav';
|
14
|
+
import NavDropdownMenu from './NavDropdownMenu';
|
15
|
+
import messages from './messages';
|
16
|
+
var HeaderBody = function HeaderBody(_ref) {
|
17
|
+
var logo = _ref.logo,
|
18
|
+
logoAltText = _ref.logoAltText,
|
19
|
+
number = _ref.number,
|
20
|
+
org = _ref.org,
|
21
|
+
title = _ref.title,
|
22
|
+
username = _ref.username,
|
23
|
+
isAdmin = _ref.isAdmin,
|
24
|
+
studioBaseUrl = _ref.studioBaseUrl,
|
25
|
+
logoutUrl = _ref.logoutUrl,
|
26
|
+
authenticatedUserAvatar = _ref.authenticatedUserAvatar,
|
27
|
+
isMobile = _ref.isMobile,
|
28
|
+
setModalPopupTarget = _ref.setModalPopupTarget,
|
29
|
+
toggleModalPopup = _ref.toggleModalPopup,
|
30
|
+
isModalPopupOpen = _ref.isModalPopupOpen,
|
31
|
+
isHiddenMainMenu = _ref.isHiddenMainMenu,
|
32
|
+
mainMenuDropdowns = _ref.mainMenuDropdowns,
|
33
|
+
outlineLink = _ref.outlineLink,
|
34
|
+
searchButtonAction = _ref.searchButtonAction,
|
35
|
+
containerProps = _ref.containerProps;
|
36
|
+
var intl = useIntl();
|
37
|
+
var renderBrandNav = /*#__PURE__*/React.createElement(BrandNav, {
|
38
|
+
studioBaseUrl: studioBaseUrl,
|
39
|
+
logo: logo,
|
40
|
+
logoAltText: logoAltText
|
41
|
+
});
|
42
|
+
var _ref2 = containerProps || {},
|
43
|
+
containerClassName = _ref2.className,
|
44
|
+
restContainerProps = _objectWithoutProperties(_ref2, _excluded);
|
45
|
+
return /*#__PURE__*/React.createElement(Container, _extends({
|
46
|
+
size: "xl",
|
47
|
+
className: classNames('px-2.5', containerClassName)
|
48
|
+
}, restContainerProps), /*#__PURE__*/React.createElement(ActionRow, {
|
49
|
+
as: "header"
|
50
|
+
}, isHiddenMainMenu ? /*#__PURE__*/React.createElement(Row, {
|
51
|
+
className: "flex-nowrap ml-4"
|
52
|
+
}, renderBrandNav) : /*#__PURE__*/React.createElement(React.Fragment, null, isMobile ? /*#__PURE__*/React.createElement(Button, {
|
53
|
+
ref: setModalPopupTarget,
|
54
|
+
className: "d-inline-flex align-items-center",
|
55
|
+
variant: "tertiary",
|
56
|
+
onClick: toggleModalPopup,
|
57
|
+
iconBefore: isModalPopupOpen ? Close : MenuIcon,
|
58
|
+
"data-testid": "mobile-menu-button"
|
59
|
+
}, "Menu") : /*#__PURE__*/React.createElement("div", {
|
60
|
+
className: "w-25"
|
61
|
+
}, /*#__PURE__*/React.createElement(Row, {
|
62
|
+
className: "m-0 flex-nowrap"
|
63
|
+
}, renderBrandNav, /*#__PURE__*/React.createElement(CourseLockUp, {
|
64
|
+
outlineLink: outlineLink,
|
65
|
+
number: number,
|
66
|
+
org: org,
|
67
|
+
title: title
|
68
|
+
}))), isMobile ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ActionRow.Spacer, null), renderBrandNav) : /*#__PURE__*/React.createElement(Nav, {
|
69
|
+
"data-testid": "desktop-menu",
|
70
|
+
className: "ml-2"
|
71
|
+
}, mainMenuDropdowns.map(function (dropdown) {
|
72
|
+
var id = dropdown.id,
|
73
|
+
buttonTitle = dropdown.buttonTitle,
|
74
|
+
items = dropdown.items;
|
75
|
+
return /*#__PURE__*/React.createElement(NavDropdownMenu, {
|
76
|
+
key: id,
|
77
|
+
id: id,
|
78
|
+
buttonTitle: buttonTitle,
|
79
|
+
items: items
|
80
|
+
});
|
81
|
+
}))), /*#__PURE__*/React.createElement(ActionRow.Spacer, null), searchButtonAction && /*#__PURE__*/React.createElement(Nav, null, /*#__PURE__*/React.createElement(IconButton, {
|
82
|
+
src: Search,
|
83
|
+
iconAs: Icon,
|
84
|
+
onClick: searchButtonAction,
|
85
|
+
"aria-label": intl.formatMessage(messages['header.label.search.nav']),
|
86
|
+
alt: intl.formatMessage(messages['header.label.search.nav'])
|
87
|
+
})), /*#__PURE__*/React.createElement(Nav, null, /*#__PURE__*/React.createElement(UserMenu, {
|
88
|
+
username: username,
|
89
|
+
studioBaseUrl: studioBaseUrl,
|
90
|
+
logoutUrl: logoutUrl,
|
91
|
+
authenticatedUserAvatar: authenticatedUserAvatar,
|
92
|
+
isAdmin: isAdmin
|
93
|
+
}))));
|
94
|
+
};
|
95
|
+
HeaderBody.propTypes = {
|
96
|
+
studioBaseUrl: PropTypes.string.isRequired,
|
97
|
+
logoutUrl: PropTypes.string.isRequired,
|
98
|
+
setModalPopupTarget: PropTypes.func,
|
99
|
+
toggleModalPopup: PropTypes.func,
|
100
|
+
isModalPopupOpen: PropTypes.bool,
|
101
|
+
number: PropTypes.string,
|
102
|
+
org: PropTypes.string,
|
103
|
+
title: PropTypes.string,
|
104
|
+
logo: PropTypes.string,
|
105
|
+
logoAltText: PropTypes.string,
|
106
|
+
authenticatedUserAvatar: PropTypes.string,
|
107
|
+
username: PropTypes.string,
|
108
|
+
isAdmin: PropTypes.bool,
|
109
|
+
isMobile: PropTypes.bool,
|
110
|
+
isHiddenMainMenu: PropTypes.bool,
|
111
|
+
mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({
|
112
|
+
id: PropTypes.string,
|
113
|
+
buttonTitle: PropTypes.node,
|
114
|
+
items: PropTypes.arrayOf(PropTypes.shape({
|
115
|
+
href: PropTypes.string,
|
116
|
+
title: PropTypes.node
|
117
|
+
}))
|
118
|
+
})),
|
119
|
+
outlineLink: PropTypes.string,
|
120
|
+
searchButtonAction: PropTypes.func,
|
121
|
+
containerProps: PropTypes.shape(Container.propTypes)
|
122
|
+
};
|
123
|
+
HeaderBody.defaultProps = {
|
124
|
+
setModalPopupTarget: null,
|
125
|
+
toggleModalPopup: null,
|
126
|
+
isModalPopupOpen: false,
|
127
|
+
logo: null,
|
128
|
+
logoAltText: null,
|
129
|
+
number: '',
|
130
|
+
org: '',
|
131
|
+
title: '',
|
132
|
+
authenticatedUserAvatar: null,
|
133
|
+
username: null,
|
134
|
+
isAdmin: false,
|
135
|
+
isMobile: false,
|
136
|
+
isHiddenMainMenu: false,
|
137
|
+
mainMenuDropdowns: [],
|
138
|
+
outlineLink: null,
|
139
|
+
searchButtonAction: null,
|
140
|
+
containerProps: {}
|
141
|
+
};
|
142
|
+
export default HeaderBody;
|
143
|
+
//# sourceMappingURL=HeaderBody.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"HeaderBody.js","names":["React","PropTypes","useIntl","classNames","ActionRow","Button","Container","Icon","IconButton","Nav","Row","Close","MenuIcon","Search","CourseLockUp","UserMenu","BrandNav","NavDropdownMenu","messages","HeaderBody","_ref","logo","logoAltText","number","org","title","username","isAdmin","studioBaseUrl","logoutUrl","authenticatedUserAvatar","isMobile","setModalPopupTarget","toggleModalPopup","isModalPopupOpen","isHiddenMainMenu","mainMenuDropdowns","outlineLink","searchButtonAction","containerProps","intl","renderBrandNav","createElement","_ref2","containerClassName","className","restContainerProps","_objectWithoutProperties","_excluded","_extends","size","as","Fragment","ref","variant","onClick","iconBefore","Spacer","map","dropdown","id","buttonTitle","items","key","src","iconAs","formatMessage","alt","propTypes","string","isRequired","func","bool","arrayOf","shape","node","href","defaultProps"],"sources":["../../src/studio-header/HeaderBody.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useIntl } from '@edx/frontend-platform/i18n';\nimport classNames from 'classnames';\nimport {\n ActionRow,\n Button,\n Container,\n Icon,\n IconButton,\n Nav,\n Row,\n} from '@openedx/paragon';\nimport { Close, MenuIcon, Search } from '@openedx/paragon/icons';\n\nimport CourseLockUp from './CourseLockUp';\nimport UserMenu from './UserMenu';\nimport BrandNav from './BrandNav';\nimport NavDropdownMenu from './NavDropdownMenu';\nimport messages from './messages';\n\nconst HeaderBody = ({\n logo,\n logoAltText,\n number,\n org,\n title,\n username,\n isAdmin,\n studioBaseUrl,\n logoutUrl,\n authenticatedUserAvatar,\n isMobile,\n setModalPopupTarget,\n toggleModalPopup,\n isModalPopupOpen,\n isHiddenMainMenu,\n mainMenuDropdowns,\n outlineLink,\n searchButtonAction,\n containerProps,\n}) => {\n const intl = useIntl();\n\n const renderBrandNav = (\n <BrandNav\n {...{\n studioBaseUrl,\n logo,\n logoAltText,\n }}\n />\n );\n\n const { className: containerClassName, ...restContainerProps } = containerProps || {};\n\n return (\n <Container\n size=\"xl\"\n className={classNames('px-2.5', containerClassName)}\n {...restContainerProps}\n >\n <ActionRow as=\"header\">\n {isHiddenMainMenu ? (\n <Row className=\"flex-nowrap ml-4\">\n {renderBrandNav}\n </Row>\n ) : (\n <>\n {isMobile ? (\n <Button\n ref={setModalPopupTarget}\n className=\"d-inline-flex align-items-center\"\n variant=\"tertiary\"\n onClick={toggleModalPopup}\n iconBefore={isModalPopupOpen ? Close : MenuIcon}\n data-testid=\"mobile-menu-button\"\n >\n Menu\n </Button>\n ) : (\n <div className=\"w-25\">\n <Row className=\"m-0 flex-nowrap\">\n {renderBrandNav}\n <CourseLockUp\n {...{\n outlineLink,\n number,\n org,\n title,\n }}\n />\n </Row>\n </div>\n )}\n {isMobile ? (\n <>\n <ActionRow.Spacer />\n {renderBrandNav}\n </>\n ) : (\n <Nav data-testid=\"desktop-menu\" className=\"ml-2\">\n {mainMenuDropdowns.map(dropdown => {\n const { id, buttonTitle, items } = dropdown;\n return (\n <NavDropdownMenu\n key={id}\n {...{\n id, buttonTitle, items,\n }}\n />\n );\n })}\n </Nav>\n )}\n </>\n )}\n <ActionRow.Spacer />\n {searchButtonAction && (\n <Nav>\n <IconButton\n src={Search}\n iconAs={Icon}\n onClick={searchButtonAction}\n aria-label={intl.formatMessage(messages['header.label.search.nav'])}\n alt={intl.formatMessage(messages['header.label.search.nav'])}\n />\n </Nav>\n )}\n <Nav>\n <UserMenu\n {...{\n username,\n studioBaseUrl,\n logoutUrl,\n authenticatedUserAvatar,\n isAdmin,\n }}\n />\n </Nav>\n </ActionRow>\n </Container>\n );\n};\n\nHeaderBody.propTypes = {\n studioBaseUrl: PropTypes.string.isRequired,\n logoutUrl: PropTypes.string.isRequired,\n setModalPopupTarget: PropTypes.func,\n toggleModalPopup: PropTypes.func,\n isModalPopupOpen: PropTypes.bool,\n number: PropTypes.string,\n org: PropTypes.string,\n title: PropTypes.string,\n logo: PropTypes.string,\n logoAltText: PropTypes.string,\n authenticatedUserAvatar: PropTypes.string,\n username: PropTypes.string,\n isAdmin: PropTypes.bool,\n isMobile: PropTypes.bool,\n isHiddenMainMenu: PropTypes.bool,\n mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n buttonTitle: PropTypes.node,\n items: PropTypes.arrayOf(PropTypes.shape({\n href: PropTypes.string,\n title: PropTypes.node,\n })),\n })),\n outlineLink: PropTypes.string,\n searchButtonAction: PropTypes.func,\n containerProps: PropTypes.shape(Container.propTypes),\n};\n\nHeaderBody.defaultProps = {\n setModalPopupTarget: null,\n toggleModalPopup: null,\n isModalPopupOpen: false,\n logo: null,\n logoAltText: null,\n number: '',\n org: '',\n title: '',\n authenticatedUserAvatar: null,\n username: null,\n isAdmin: false,\n isMobile: false,\n isHiddenMainMenu: false,\n mainMenuDropdowns: [],\n outlineLink: null,\n searchButtonAction: null,\n containerProps: {},\n};\n\nexport default HeaderBody;\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
var _excluded = ["mainMenuDropdowns"];
|
2
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
3
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
4
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
5
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
6
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
7
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
8
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
9
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
10
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
|
11
|
+
import React, { useState } from 'react';
|
12
|
+
import PropTypes from 'prop-types';
|
13
|
+
import { useToggle, ModalPopup } from '@openedx/paragon';
|
14
|
+
import HeaderBody from './HeaderBody';
|
15
|
+
import MobileMenu from './MobileMenu';
|
16
|
+
var MobileHeader = function MobileHeader(_ref) {
|
17
|
+
var mainMenuDropdowns = _ref.mainMenuDropdowns,
|
18
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
19
|
+
var _useToggle = useToggle(false),
|
20
|
+
_useToggle2 = _slicedToArray(_useToggle, 4),
|
21
|
+
isOpen = _useToggle2[0],
|
22
|
+
close = _useToggle2[2],
|
23
|
+
toggle = _useToggle2[3];
|
24
|
+
var _useState = useState(null),
|
25
|
+
_useState2 = _slicedToArray(_useState, 2),
|
26
|
+
target = _useState2[0],
|
27
|
+
setTarget = _useState2[1];
|
28
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HeaderBody, _extends({}, props, {
|
29
|
+
isMobile: true,
|
30
|
+
setModalPopupTarget: setTarget,
|
31
|
+
toggleModalPopup: toggle,
|
32
|
+
isModalPopupOpen: isOpen
|
33
|
+
})), /*#__PURE__*/React.createElement(ModalPopup, {
|
34
|
+
hasArrow: true,
|
35
|
+
placement: "bottom",
|
36
|
+
positionRef: target,
|
37
|
+
isOpen: isOpen,
|
38
|
+
onClose: close,
|
39
|
+
onEscapeKey: close,
|
40
|
+
className: "mobile-menu-container"
|
41
|
+
}, /*#__PURE__*/React.createElement(MobileMenu, {
|
42
|
+
mainMenuDropdowns: mainMenuDropdowns
|
43
|
+
})));
|
44
|
+
};
|
45
|
+
MobileHeader.propTypes = {
|
46
|
+
studioBaseUrl: PropTypes.string.isRequired,
|
47
|
+
logoutUrl: PropTypes.string.isRequired,
|
48
|
+
number: PropTypes.string,
|
49
|
+
org: PropTypes.string,
|
50
|
+
title: PropTypes.string,
|
51
|
+
logo: PropTypes.string,
|
52
|
+
logoAltText: PropTypes.string,
|
53
|
+
authenticatedUserAvatar: PropTypes.string,
|
54
|
+
username: PropTypes.string,
|
55
|
+
isAdmin: PropTypes.bool,
|
56
|
+
mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({
|
57
|
+
id: PropTypes.string,
|
58
|
+
buttonTitle: PropTypes.node,
|
59
|
+
items: PropTypes.arrayOf(PropTypes.shape({
|
60
|
+
href: PropTypes.string,
|
61
|
+
title: PropTypes.node
|
62
|
+
}))
|
63
|
+
})),
|
64
|
+
outlineLink: PropTypes.string
|
65
|
+
};
|
66
|
+
MobileHeader.defaultProps = {
|
67
|
+
logo: null,
|
68
|
+
logoAltText: null,
|
69
|
+
number: null,
|
70
|
+
org: null,
|
71
|
+
title: null,
|
72
|
+
authenticatedUserAvatar: null,
|
73
|
+
username: null,
|
74
|
+
isAdmin: false,
|
75
|
+
mainMenuDropdowns: [],
|
76
|
+
outlineLink: null
|
77
|
+
};
|
78
|
+
export default MobileHeader;
|
79
|
+
//# sourceMappingURL=MobileHeader.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"MobileHeader.js","names":["React","useState","PropTypes","useToggle","ModalPopup","HeaderBody","MobileMenu","MobileHeader","_ref","mainMenuDropdowns","props","_objectWithoutProperties","_excluded","_useToggle","_useToggle2","_slicedToArray","isOpen","close","toggle","_useState","_useState2","target","setTarget","createElement","Fragment","_extends","isMobile","setModalPopupTarget","toggleModalPopup","isModalPopupOpen","hasArrow","placement","positionRef","onClose","onEscapeKey","className","propTypes","studioBaseUrl","string","isRequired","logoutUrl","number","org","title","logo","logoAltText","authenticatedUserAvatar","username","isAdmin","bool","arrayOf","shape","id","buttonTitle","node","items","href","outlineLink","defaultProps"],"sources":["../../src/studio-header/MobileHeader.jsx"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useToggle, ModalPopup } from '@openedx/paragon';\nimport HeaderBody from './HeaderBody';\nimport MobileMenu from './MobileMenu';\n\nconst MobileHeader = ({\n mainMenuDropdowns,\n ...props\n}) => {\n const [isOpen, , close, toggle] = useToggle(false);\n const [target, setTarget] = useState(null);\n\n return (\n <>\n <HeaderBody\n {...props}\n isMobile\n setModalPopupTarget={setTarget}\n toggleModalPopup={toggle}\n isModalPopupOpen={isOpen}\n />\n <ModalPopup\n hasArrow\n placement=\"bottom\"\n positionRef={target}\n isOpen={isOpen}\n onClose={close}\n onEscapeKey={close}\n className=\"mobile-menu-container\"\n >\n <MobileMenu {...{ mainMenuDropdowns }} />\n </ModalPopup>\n </>\n );\n};\n\nMobileHeader.propTypes = {\n studioBaseUrl: PropTypes.string.isRequired,\n logoutUrl: PropTypes.string.isRequired,\n number: PropTypes.string,\n org: PropTypes.string,\n title: PropTypes.string,\n logo: PropTypes.string,\n logoAltText: PropTypes.string,\n authenticatedUserAvatar: PropTypes.string,\n username: PropTypes.string,\n isAdmin: PropTypes.bool,\n mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n buttonTitle: PropTypes.node,\n items: PropTypes.arrayOf(PropTypes.shape({\n href: PropTypes.string,\n title: PropTypes.node,\n })),\n })),\n outlineLink: PropTypes.string,\n};\n\nMobileHeader.defaultProps = {\n logo: null,\n logoAltText: null,\n number: null,\n org: null,\n title: null,\n authenticatedUserAvatar: null,\n username: null,\n isAdmin: false,\n mainMenuDropdowns: [],\n outlineLink: null,\n};\n\nexport default MobileHeader;\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import PropTypes from 'prop-types';
|
3
|
+
import { Collapsible } from '@openedx/paragon';
|
4
|
+
import { Link } from 'react-router-dom';
|
5
|
+
var MobileMenu = function MobileMenu(_ref) {
|
6
|
+
var mainMenuDropdowns = _ref.mainMenuDropdowns;
|
7
|
+
return /*#__PURE__*/React.createElement("div", {
|
8
|
+
className: "ml-4 p-2 bg-light-100 border border-gray-200 small rounded",
|
9
|
+
"data-testid": "mobile-menu"
|
10
|
+
}, /*#__PURE__*/React.createElement("div", null, mainMenuDropdowns.map(function (dropdown) {
|
11
|
+
var id = dropdown.id,
|
12
|
+
buttonTitle = dropdown.buttonTitle,
|
13
|
+
items = dropdown.items;
|
14
|
+
return /*#__PURE__*/React.createElement(Collapsible, {
|
15
|
+
className: "border-light-100",
|
16
|
+
title: buttonTitle,
|
17
|
+
key: id
|
18
|
+
}, /*#__PURE__*/React.createElement("ul", {
|
19
|
+
className: "p-0",
|
20
|
+
style: {
|
21
|
+
listStyleType: 'none'
|
22
|
+
}
|
23
|
+
}, items.map(function (item) {
|
24
|
+
return /*#__PURE__*/React.createElement("li", {
|
25
|
+
className: "mobile-menu-item"
|
26
|
+
}, /*#__PURE__*/React.createElement(Link, {
|
27
|
+
to: item.href
|
28
|
+
}, item.title));
|
29
|
+
})));
|
30
|
+
})));
|
31
|
+
};
|
32
|
+
MobileMenu.propTypes = {
|
33
|
+
mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({
|
34
|
+
id: PropTypes.string,
|
35
|
+
buttonTitle: PropTypes.node,
|
36
|
+
items: PropTypes.arrayOf(PropTypes.shape({
|
37
|
+
href: PropTypes.string,
|
38
|
+
title: PropTypes.node
|
39
|
+
}))
|
40
|
+
}))
|
41
|
+
};
|
42
|
+
MobileMenu.defaultProps = {
|
43
|
+
mainMenuDropdowns: []
|
44
|
+
};
|
45
|
+
export default MobileMenu;
|
46
|
+
//# sourceMappingURL=MobileMenu.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"MobileMenu.js","names":["React","PropTypes","Collapsible","Link","MobileMenu","_ref","mainMenuDropdowns","createElement","className","map","dropdown","id","buttonTitle","items","title","key","style","listStyleType","item","to","href","propTypes","arrayOf","shape","string","node","defaultProps"],"sources":["../../src/studio-header/MobileMenu.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Collapsible } from '@openedx/paragon';\nimport { Link } from 'react-router-dom';\n\nconst MobileMenu = ({ mainMenuDropdowns }) => (\n <div\n className=\"ml-4 p-2 bg-light-100 border border-gray-200 small rounded\"\n data-testid=\"mobile-menu\"\n >\n <div>\n {mainMenuDropdowns.map(dropdown => {\n const { id, buttonTitle, items } = dropdown;\n return (\n <Collapsible\n className=\"border-light-100\"\n title={buttonTitle}\n key={id}\n >\n <ul className=\"p-0\" style={{ listStyleType: 'none' }}>\n {items.map(item => (\n <li className=\"mobile-menu-item\">\n <Link to={item.href}>\n {item.title}\n </Link>\n </li>\n ))}\n </ul>\n </Collapsible>\n );\n })}\n </div>\n </div>\n);\n\nMobileMenu.propTypes = {\n mainMenuDropdowns: PropTypes.arrayOf(PropTypes.shape({\n id: PropTypes.string,\n buttonTitle: PropTypes.node,\n items: PropTypes.arrayOf(PropTypes.shape({\n href: PropTypes.string,\n title: PropTypes.node,\n })),\n })),\n};\nMobileMenu.defaultProps = {\n mainMenuDropdowns: [],\n};\n\nexport default MobileMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAAC,IAAA;EAAA,IAAMC,iBAAiB,GAAAD,IAAA,CAAjBC,iBAAiB;EAAA,oBACrCN,KAAA,CAAAO,aAAA;IACEC,SAAS,EAAC,4DAA4D;IACtE,eAAY;EAAa,gBAEzBR,KAAA,CAAAO,aAAA,cACGD,iBAAiB,CAACG,GAAG,CAAC,UAAAC,QAAQ,EAAI;IACjC,IAAQC,EAAE,GAAyBD,QAAQ,CAAnCC,EAAE;MAAEC,WAAW,GAAYF,QAAQ,CAA/BE,WAAW;MAAEC,KAAK,GAAKH,QAAQ,CAAlBG,KAAK;IAC9B,oBACEb,KAAA,CAAAO,aAAA,CAACL,WAAW;MACVM,SAAS,EAAC,kBAAkB;MAC5BM,KAAK,EAAEF,WAAY;MACnBG,GAAG,EAAEJ;IAAG,gBAERX,KAAA,CAAAO,aAAA;MAAIC,SAAS,EAAC,KAAK;MAACQ,KAAK,EAAE;QAAEC,aAAa,EAAE;MAAO;IAAE,GAClDJ,KAAK,CAACJ,GAAG,CAAC,UAAAS,IAAI;MAAA,oBACblB,KAAA,CAAAO,aAAA;QAAIC,SAAS,EAAC;MAAkB,gBAC9BR,KAAA,CAAAO,aAAA,CAACJ,IAAI;QAACgB,EAAE,EAAED,IAAI,CAACE;MAAK,GACjBF,IAAI,CAACJ,KACF,CACJ,CAAC;IAAA,CACN,CACC,CACO,CAAC;EAElB,CAAC,CACE,CACF,CAAC;AAAA,CACP;AAEDV,UAAU,CAACiB,SAAS,GAAG;EACrBf,iBAAiB,EAAEL,SAAS,CAACqB,OAAO,CAACrB,SAAS,CAACsB,KAAK,CAAC;IACnDZ,EAAE,EAAEV,SAAS,CAACuB,MAAM;IACpBZ,WAAW,EAAEX,SAAS,CAACwB,IAAI;IAC3BZ,KAAK,EAAEZ,SAAS,CAACqB,OAAO,CAACrB,SAAS,CAACsB,KAAK,CAAC;MACvCH,IAAI,EAAEnB,SAAS,CAACuB,MAAM;MACtBV,KAAK,EAAEb,SAAS,CAACwB;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;AACDrB,UAAU,CAACsB,YAAY,GAAG;EACxBpB,iBAAiB,EAAE;AACrB,CAAC;AAED,eAAeF,UAAU","ignoreList":[]}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import PropTypes from 'prop-types';
|
3
|
+
import { Dropdown, DropdownButton } from '@openedx/paragon';
|
4
|
+
import { Link } from 'react-router-dom';
|
5
|
+
var NavDropdownMenu = function NavDropdownMenu(_ref) {
|
6
|
+
var id = _ref.id,
|
7
|
+
buttonTitle = _ref.buttonTitle,
|
8
|
+
items = _ref.items;
|
9
|
+
return /*#__PURE__*/React.createElement(DropdownButton, {
|
10
|
+
id: id,
|
11
|
+
title: buttonTitle,
|
12
|
+
variant: "outline-primary",
|
13
|
+
className: "mr-2"
|
14
|
+
}, items.map(function (item) {
|
15
|
+
return /*#__PURE__*/React.createElement(Dropdown.Item, {
|
16
|
+
as: Link,
|
17
|
+
key: "".concat(item.title, "-dropdown-item"),
|
18
|
+
to: item.href,
|
19
|
+
className: "small"
|
20
|
+
}, item.title);
|
21
|
+
}));
|
22
|
+
};
|
23
|
+
NavDropdownMenu.propTypes = {
|
24
|
+
id: PropTypes.string.isRequired,
|
25
|
+
buttonTitle: PropTypes.node.isRequired,
|
26
|
+
items: PropTypes.arrayOf(PropTypes.shape({
|
27
|
+
href: PropTypes.string.isRequired,
|
28
|
+
title: PropTypes.node.isRequired
|
29
|
+
})).isRequired
|
30
|
+
};
|
31
|
+
export default NavDropdownMenu;
|
32
|
+
//# sourceMappingURL=NavDropdownMenu.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"NavDropdownMenu.js","names":["React","PropTypes","Dropdown","DropdownButton","Link","NavDropdownMenu","_ref","id","buttonTitle","items","createElement","title","variant","className","map","item","Item","as","key","concat","to","href","propTypes","string","isRequired","node","arrayOf","shape"],"sources":["../../src/studio-header/NavDropdownMenu.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Dropdown,\n DropdownButton,\n} from '@openedx/paragon';\nimport { Link } from 'react-router-dom';\n\nconst NavDropdownMenu = ({\n id,\n buttonTitle,\n items,\n}) => (\n <DropdownButton\n id={id}\n title={buttonTitle}\n variant=\"outline-primary\"\n className=\"mr-2\"\n >\n {items.map(item => (\n <Dropdown.Item\n as={Link}\n key={`${item.title}-dropdown-item`}\n to={item.href}\n className=\"small\"\n >\n {item.title}\n </Dropdown.Item>\n ))}\n </DropdownButton>\n);\n\nNavDropdownMenu.propTypes = {\n id: PropTypes.string.isRequired,\n buttonTitle: PropTypes.node.isRequired,\n items: PropTypes.arrayOf(PropTypes.shape({\n href: PropTypes.string.isRequired,\n title: PropTypes.node.isRequired,\n })).isRequired,\n};\n\nexport default NavDropdownMenu;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SACEC,QAAQ,EACRC,cAAc,QACT,kBAAkB;AACzB,SAASC,IAAI,QAAQ,kBAAkB;AAEvC,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAAC,IAAA;EAAA,IACnBC,EAAE,GAAAD,IAAA,CAAFC,EAAE;IACFC,WAAW,GAAAF,IAAA,CAAXE,WAAW;IACXC,KAAK,GAAAH,IAAA,CAALG,KAAK;EAAA,oBAELT,KAAA,CAAAU,aAAA,CAACP,cAAc;IACbI,EAAE,EAAEA,EAAG;IACPI,KAAK,EAAEH,WAAY;IACnBI,OAAO,EAAC,iBAAiB;IACzBC,SAAS,EAAC;EAAM,GAEfJ,KAAK,CAACK,GAAG,CAAC,UAAAC,IAAI;IAAA,oBACbf,KAAA,CAAAU,aAAA,CAACR,QAAQ,CAACc,IAAI;MACZC,EAAE,EAAEb,IAAK;MACTc,GAAG,KAAAC,MAAA,CAAKJ,IAAI,CAACJ,KAAK,mBAAiB;MACnCS,EAAE,EAAEL,IAAI,CAACM,IAAK;MACdR,SAAS,EAAC;IAAO,GAEhBE,IAAI,CAACJ,KACO,CAAC;EAAA,CACjB,CACa,CAAC;AAAA,CAClB;AAEDN,eAAe,CAACiB,SAAS,GAAG;EAC1Bf,EAAE,EAAEN,SAAS,CAACsB,MAAM,CAACC,UAAU;EAC/BhB,WAAW,EAAEP,SAAS,CAACwB,IAAI,CAACD,UAAU;EACtCf,KAAK,EAAER,SAAS,CAACyB,OAAO,CAACzB,SAAS,CAAC0B,KAAK,CAAC;IACvCN,IAAI,EAAEpB,SAAS,CAACsB,MAAM,CAACC,UAAU;IACjCb,KAAK,EAAEV,SAAS,CAACwB,IAAI,CAACD;EACxB,CAAC,CAAC,CAAC,CAACA;AACN,CAAC;AAED,eAAenB,eAAe","ignoreList":[]}
|