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'));
});