49 lines
1.7 KiB
JavaScript
Executable File
49 lines
1.7 KiB
JavaScript
Executable File
marked.setOptions({
|
|
breaks: true,
|
|
});
|
|
|
|
$(document).ready(function() {
|
|
/* if there is editorText in sessionStorage, load that into
|
|
* the editor, otherwise load the default text into the editor */
|
|
if (sessionStorage.hasOwnProperty('editorText')) {
|
|
$('#editor').val(sessionStorage.editorText);
|
|
} else {
|
|
$('#editor').val(defaultText);
|
|
};
|
|
|
|
// render the editor contents to the preview element
|
|
$('#preview').html(marked($('#editor').val()));
|
|
|
|
/* on every input event in the editor, store the editor
|
|
* contents in sessionStorage and also render the contents
|
|
* of the editor to the preview element */
|
|
$('#editor').on('input',function() {
|
|
sessionStorage.setItem('editorText',$(this).val());
|
|
$('#preview').html(marked($(this).val()));
|
|
});
|
|
|
|
// handle eraseButton
|
|
$('#eraseButton').click(function() {
|
|
$('#editor').val('');
|
|
sessionStorage.setItem('editorText',$('#editor').val());
|
|
$('#preview').html(marked($('#editor').val()));
|
|
});
|
|
|
|
// handle reloadButton
|
|
$('#reloadButton').click(function() {
|
|
$('#editor').val(defaultText);
|
|
sessionStorage.setItem('editorText',defaultText);
|
|
$('#preview').html(marked(defaultText));
|
|
});
|
|
|
|
$('#editor').on('scroll', scrollSync);
|
|
});
|
|
|
|
const scrollSync = () => {
|
|
const editorScrollable = document.getElementById('editor').scrollHeight - $('#editor').height();
|
|
const previewScrollable = document.getElementById('preview').scrollHeight - $('#preview').height();
|
|
const editorScrollRatio = $('#editor').scrollTop() === 0 ? 0 : $('#editor').scrollTop() / editorScrollable;
|
|
const previewScrollPosition = previewScrollable * editorScrollRatio;
|
|
$('#preview').scrollTop(previewScrollPosition);
|
|
};
|