bootstrap.jsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import React from 'react';
  2. import loggerFactory from '@alias/logger';
  3. import Xss from '@commons/service/xss';
  4. import SearchTop from './components/Navbar/SearchTop';
  5. import NavbarToggler from './components/Navbar/NavbarToggler';
  6. import PersonalDropdown from './components/Navbar/PersonalDropdown';
  7. import Sidebar from './components/Sidebar';
  8. import ShareLinkAlert from './components/Page/ShareLinkAlert';
  9. import StaffCredit from './components/StaffCredit/StaffCredit';
  10. import AppContainer from './services/AppContainer';
  11. import WebsocketContainer from './services/WebsocketContainer';
  12. import PageCreateButton from './components/Navbar/PageCreateButton';
  13. import PageCreateModal from './components/PageCreateModal';
  14. const logger = loggerFactory('growi:app');
  15. if (!window) {
  16. window = {};
  17. }
  18. // setup xss library
  19. const xss = new Xss();
  20. window.xss = xss;
  21. // create unstated container instance
  22. const appContainer = new AppContainer();
  23. // eslint-disable-next-line no-unused-vars
  24. const websocketContainer = new WebsocketContainer(appContainer);
  25. logger.info('unstated containers have been initialized');
  26. appContainer.init();
  27. appContainer.injectToWindow();
  28. /**
  29. * define components
  30. * key: id of element
  31. * value: React Element
  32. */
  33. const componentMappings = {
  34. 'grw-navbar-toggler': <NavbarToggler />,
  35. 'grw-search-top': <SearchTop />,
  36. 'personal-dropdown': <PersonalDropdown />,
  37. 'create-page-button': <PageCreateButton />,
  38. 'create-page-button-icon': <PageCreateButton isIcon />,
  39. 'page-create-modal': <PageCreateModal />,
  40. 'grw-sidebar-wrapper': <Sidebar />,
  41. 'share-link-alert': <ShareLinkAlert />,
  42. 'staff-credit': <StaffCredit />,
  43. };
  44. export { appContainer, componentMappings };