bootstrap.jsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import React from 'react';
  2. import loggerFactory from '@alias/logger';
  3. import Xss from '@commons/service/xss';
  4. import HeaderSearchBox from './components/HeaderSearchBox';
  5. import PersonalDropdown from './components/Navbar/PersonalDropdown';
  6. import StaffCredit from './components/StaffCredit/StaffCredit';
  7. import AppContainer from './services/AppContainer';
  8. import WebsocketContainer from './services/WebsocketContainer';
  9. const logger = loggerFactory('growi:app');
  10. if (!window) {
  11. window = {};
  12. }
  13. // setup xss library
  14. const xss = new Xss();
  15. window.xss = xss;
  16. // create unstated container instance
  17. const appContainer = new AppContainer();
  18. // eslint-disable-next-line no-unused-vars
  19. const websocketContainer = new WebsocketContainer(appContainer);
  20. logger.info('unstated containers have been initialized');
  21. appContainer.initPlugins();
  22. appContainer.injectToWindow();
  23. /**
  24. * define components
  25. * key: id of element
  26. * value: React Element
  27. */
  28. const componentMappings = {
  29. 'search-top': <HeaderSearchBox />,
  30. 'search-sidebar': <HeaderSearchBox crowi={appContainer} />,
  31. 'personal-dropdown': <PersonalDropdown />,
  32. 'staff-credit': <StaffCredit />,
  33. };
  34. export { appContainer, componentMappings };