import React from 'react'; import ReactDOM from 'react-dom'; import Crowi from './util/Crowi'; import CrowiRenderer from './util/CrowiRenderer'; import HeaderSearchBox from './components/HeaderSearchBox'; import SearchPage from './components/SearchPage'; import PageListSearch from './components/PageListSearch'; import PageHistory from './components/PageHistory'; import PageComments from './components/PageComments'; import PageCommentFormBehavior from './components/PageCommentFormBehavior'; import PageAttachment from './components/PageAttachment'; import SeenUserList from './components/SeenUserList'; import RevisionPath from './components/Page/RevisionPath'; import RevisionUrl from './components/Page/RevisionUrl'; import BookmarkButton from './components/BookmarkButton'; if (!window) { window = {}; } const mainContent = document.querySelector('#content-main'); let pageId = null; let pageRevisionId = null; let pageRevisionCreatedAt = null; let pagePath; let pageContent = null; if (mainContent !== null) { pageId = mainContent.attributes['data-page-id'].value; pageRevisionId = mainContent.attributes['data-page-revision-id'].value; pageRevisionCreatedAt = +mainContent.attributes['data-page-revision-created'].value; pagePath = mainContent.attributes['data-path'].value; const rawText = document.getElementById('raw-text-original'); if (rawText) { pageContent = rawText.innerHTML; } } // FIXME const crowi = new Crowi({ me: $('body').data('current-username'), csrfToken: $('body').data('csrftoken'), }, window); window.crowi = crowi; crowi.setConfig(JSON.parse(document.getElementById('crowi-context-hydrate').textContent || '{}')); crowi.fetchUsers(); const crowiRenderer = new CrowiRenderer(crowi); window.crowiRenderer = crowiRenderer; // FIXME var isEnabledPlugins = $('body').data('plugin-enabled'); if (isEnabledPlugins) { var crowiPlugin = window.crowiPlugin; crowiPlugin.installAll(crowi, crowiRenderer); } /** * define components * key: id of element * value: React Element */ const componentMappings = { 'search-top': , 'search-page': , 'page-list-search': , 'page-comments-list': , 'page-attachment': , //'revision-history': , 'seen-user-list': , 'bookmark-button': , }; // additional definitions if pagePath exists if (pagePath) { componentMappings['revision-path'] = ; componentMappings['revision-url'] = ; } let componentInstances = {}; Object.keys(componentMappings).forEach((key) => { const elem = document.getElementById(key); if (elem) { componentInstances[key] = ReactDOM.render(componentMappings[key], elem); } }); // render components with refs to another component const elem = document.getElementById('page-comment-form-behavior'); if (elem) { ReactDOM.render(, elem); } // うわーもうー $('a[data-toggle="tab"][href="#revision-history"]').on('show.bs.tab', function() { ReactDOM.render(, document.getElementById('revision-history')); });