Skip to content

Commit 6fbfffe

Browse files
Cherrglunny
authored andcommitted
wiki - editor - enable side-by-side button (#7242)
* wiki - enable side-by-side button in editor and add some delay so side-by-side live preview is updated * every 10th keypress * if keypress < 10 -> apter no input for 1 sec affects #5436 Signed-off-by: Michael Gnehr <[email protected]> * decrease timeinterval user need to stop before rendering is triggered Signed-off-by: Michael Gnehr <[email protected]> * removed not needed code with simpleMDE placeholder Signed-off-by: Michael Gnehr <[email protected]> * run highlight.js on markdown preview Signed-off-by: Michael Gnehr <[email protected]> * fix white border around side-by-side preview Signed-off-by: Michael Gnehr <[email protected]>
1 parent 11208f3 commit 6fbfffe

File tree

5 files changed

+48
-17
lines changed

5 files changed

+48
-17
lines changed

public/css/theme-arc-green.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ footer{background:#2e323e;border-top:1px solid #313131}
101101
.markdown:not(code) table thead tr:nth-child(2n-1){background-color:#464c5d!important}
102102
.markdown:not(code) table td,.markdown:not(code) table th{border-color:#4c505c!important}
103103
.repository.file.editor.edit,.repository.wiki.new .CodeMirror{border-right:1px solid rgba(187,187,187,.6);border-left:1px solid rgba(187,187,187,.6);border-bottom:1px solid rgba(187,187,187,.6)}
104-
.repository.file.editor.edit .editor-preview,.repository.file.editor.edit .editor-preview-side,.repository.wiki.new .CodeMirror .editor-preview,.repository.wiki.new .CodeMirror .editor-preview-side{background:#353945}
105-
.repository.file.editor.edit .editor-preview .markdown:not(code).ui.segment,.repository.file.editor.edit .editor-preview-side .markdown:not(code).ui.segment,.repository.wiki.new .CodeMirror .editor-preview .markdown:not(code).ui.segment,.repository.wiki.new .CodeMirror .editor-preview-side .markdown:not(code).ui.segment{border-width:0}
104+
.repository.file.editor.edit .editor-preview,.repository.file.editor.edit .editor-preview-side,.repository.file.editor.edit+.editor-preview-side,.repository.wiki.new .CodeMirror .editor-preview,.repository.wiki.new .CodeMirror .editor-preview-side,.repository.wiki.new .CodeMirror+.editor-preview-side{background:#353945}
105+
.repository.file.editor.edit .editor-preview .markdown:not(code).ui.segment,.repository.file.editor.edit .editor-preview-side .markdown:not(code).ui.segment,.repository.file.editor.edit+.editor-preview-side .markdown:not(code).ui.segment,.repository.wiki.new .CodeMirror .editor-preview .markdown:not(code).ui.segment,.repository.wiki.new .CodeMirror .editor-preview-side .markdown:not(code).ui.segment,.repository.wiki.new .CodeMirror+.editor-preview-side .markdown:not(code).ui.segment{border-width:0}
106106
.ui.dropdown .menu{background:#2c303a}
107107
.ui.dropdown .menu>.message:not(.ui){color:#636363}
108108
.ui.input{color:#dbdbdb}

public/js/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/js/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web_src/js/index.js

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,6 +1134,8 @@ function initTeamSettings() {
11341134

11351135
function initWikiForm() {
11361136
const $editArea = $('.repository.wiki textarea#edit_area');
1137+
let sideBySideChanges = 0;
1138+
let sideBySideTimeout = null;
11371139
if ($editArea.length > 0) {
11381140
const simplemde = new SimpleMDE({
11391141
autoDownloadFontAwesome: false,
@@ -1142,18 +1144,46 @@ function initWikiForm() {
11421144
previewRender(plainText, preview) { // Async method
11431145
setTimeout(() => {
11441146
// FIXME: still send render request when return back to edit mode
1145-
$.post($editArea.data('url'), {
1146-
_csrf: csrf,
1147-
mode: 'gfm',
1148-
context: $editArea.data('context'),
1149-
text: plainText
1150-
}, (data) => {
1151-
preview.innerHTML = `<div class="markdown ui segment">${data}</div>`;
1152-
emojify.run($('.editor-preview')[0]);
1153-
});
1147+
const render = function () {
1148+
sideBySideChanges = 0;
1149+
if (sideBySideTimeout != null) {
1150+
clearTimeout(sideBySideTimeout);
1151+
sideBySideTimeout = null;
1152+
}
1153+
$.post($editArea.data('url'), {
1154+
_csrf: csrf,
1155+
mode: 'gfm',
1156+
context: $editArea.data('context'),
1157+
text: plainText
1158+
},
1159+
(data) => {
1160+
preview.innerHTML = `<div class="markdown ui segment">${data}</div>`;
1161+
emojify.run($('.editor-preview')[0]);
1162+
$(preview).find('pre code').each((_, e) => {
1163+
hljs.highlightBlock(e);
1164+
});
1165+
});
1166+
};
1167+
if (!simplemde.isSideBySideActive()) {
1168+
render();
1169+
} else {
1170+
// delay preview by keystroke counting
1171+
sideBySideChanges++;
1172+
if (sideBySideChanges > 10) {
1173+
render();
1174+
}
1175+
// or delay preview by timeout
1176+
if (sideBySideTimeout != null) {
1177+
clearTimeout(sideBySideTimeout);
1178+
sideBySideTimeout = null;
1179+
}
1180+
sideBySideTimeout = setTimeout(render, 600);
1181+
}
11541182
}, 0);
1155-
1156-
return 'Loading...';
1183+
if (!simplemde.isSideBySideActive()) {
1184+
return 'Loading...';
1185+
}
1186+
return preview.innerHTML;
11571187
},
11581188
renderingConfig: {
11591189
singleLineBreaks: false
@@ -1199,7 +1229,7 @@ function initWikiForm() {
11991229
}, '|',
12001230
'unordered-list', 'ordered-list', '|',
12011231
'link', 'image', 'table', 'horizontal-rule', '|',
1202-
'clean-block', 'preview', 'fullscreen']
1232+
'clean-block', 'preview', 'fullscreen', 'side-by-side']
12031233
});
12041234
$(simplemde.codemirror.getInputField()).addClass('js-quick-submit');
12051235
}

web_src/less/themes/arc-green.less

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,8 @@ a.ui.basic.green.label:hover {
553553
border-bottom: 1px solid rgba(187, 187, 187, 0.6);
554554

555555
.editor-preview,
556-
.editor-preview-side {
556+
.editor-preview-side,
557+
& + .editor-preview-side {
557558
background: #353945;
558559

559560
.markdown:not(code).ui.segment {

0 commit comments

Comments
 (0)