document.addEventListener("DOMContentLoaded", function(event) {
const sourceCode = $('#sourcecode');
if (sourceCode.length) {
let originalCode = '';
let disableFull = false;
const Cookies = require('js-cookie')
const cookieName = 'p3x-gitlist-codemirror-size'
const currentSizing = Cookies.get(cookieName)
const codeCodeMirroNormal = $('#p3x-gitlist-file-codemirror');
const codeCodeMirrorBig = $('#p3x-gitlist-file-codemirror-exceeded')
const value = sourceCode.text();
const maxSize = window.gitlist.codemirror_full_limit;
const size = Math.ceil(value.length / 1024);
const createCodeMirror = () => {
if (size > maxSize) {
disableFull = true;
codeCodeMirroNormal.hide();
codeCodeMirrorBig.show();
} else {
codeCodeMirroNormal.show();
}
const mode = sourceCode.attr('language');
const pre = sourceCode.get(0);
const codeMirror = $('.CodeMirror');
const buttonScroll = $('#p3x-gitlist-file-button-scroll');
const buttonFull = $('#p3x-gitlist-file-button-full');
const buttonEdit = $('#p3x-gitlist-file-button-edit');
const buttonEditCancel = $('#p3x-gitlist-file-button-edit-cancel');
const buttonEditSave = $('#p3x-gitlist-file-button-edit-save')
// const buttonEditRow = $('#p3x-gitlist-file-button-edit-row');
const codeMirrorHeight = 300;
buttonEditCancel.hide();
buttonEditSave.hide();
buttonEdit.click(() => {
// buttonEditRow.show();
buttonEdit.hide();
buttonEditCancel.show();
buttonEditSave.show();
gitlist.viewer.setOption('readOnly', false)
originalCode = gitlist.viewer.getValue()
gitlist.viewer.focus();
$.snackbar({
content: 'Editing',
})
})
buttonEditCancel.click(() => {
// buttonEditRow.hide();
buttonEdit.show();
buttonEditSave.hide();
buttonEditCancel.hide();
gitlist.viewer.setValue(originalCode)
gitlist.viewer.setOption('readOnly', true)
$.snackbar({
content: 'Cancelled editing',
})
})
buttonEditSave.click(() => {
// buttonEditRow.show();
$.snackbar({
content: 'Not implemented.',
})
})
const setScroll = () => {
buttonFull.removeClass('active')
buttonScroll.addClass('active')
codeMirror.css('height', codeMirrorHeight)
gitlist.viewer.setSize(null, codeMirrorHeight);
if (!disableFull) {
Cookies.set(cookieName, 'scroll', window.gitlist.cookieSettings)
}
}
buttonScroll.click(setScroll)
const setFull = () => {
buttonScroll.removeClass('active')
buttonFull.addClass('active')
codeMirror.css('height', 'auto')
gitlist.viewer.setSize(null, '100%');
Cookies.set(cookieName, 'full', window.gitlist.cookieSettings)
}
buttonFull.click(setFull)
gitlist.viewer = CodeMirror(function(elt) {
pre.parentNode.replaceChild(elt, pre);
}, {
value: value,
lineNumbers: true,
matchBrackets: true,
lineWrapping: true,
readOnly: true,
mode: mode,
theme: window.gitlist.getActualThemeCodemirror(),
});
if (currentSizing === 'full' && !disableFull) {
setFull()
} else {
setScroll()
}
if (location.search.includes('edit=1')) {
setTimeout(() => {
buttonEdit.click();
}, 500)
}
}
createCodeMirror();
}
})