2016-02-29 19:31:32 +01:00
|
|
|
$(function() {
|
|
|
|
|
2017-03-03 04:16:49 +01:00
|
|
|
function slideSeparatorLines(text) {
|
|
|
|
var lines = text.split('\n');
|
2016-02-29 19:31:32 +01:00
|
|
|
|
2017-03-03 04:16:49 +01:00
|
|
|
var separatorLineNumbers = [];
|
2016-02-29 19:31:32 +01:00
|
|
|
|
2017-03-03 04:16:49 +01:00
|
|
|
for (i = 0; i < lines.length; i++) {
|
|
|
|
var line = lines[i];
|
|
|
|
if (line === '---') {
|
|
|
|
separatorLineNumbers.push(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return separatorLineNumbers;
|
2016-02-29 19:31:32 +01:00
|
|
|
}
|
|
|
|
|
2017-03-03 04:16:49 +01:00
|
|
|
function currentCursorSlide(cursorLine) {
|
|
|
|
var text = ace.edit("editor").getValue();
|
|
|
|
var separatorPositions = slideSeparatorLines(text);
|
|
|
|
var slideNumber = separatorPositions.length;
|
|
|
|
separatorPositions.every(function(pos, num) {
|
|
|
|
if (pos >= cursorLine) {
|
|
|
|
slideNumber = num;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
return slideNumber;
|
|
|
|
}
|
2016-02-29 19:31:32 +01:00
|
|
|
|
|
|
|
|
2017-03-03 04:16:49 +01:00
|
|
|
var editor = ace.edit("editor");
|
|
|
|
editor.setTheme("ace/theme/chrome");
|
|
|
|
editor.getSession().setMode("ace/mode/markdown");
|
|
|
|
editor.getSession().setUseWrapMode(true);
|
|
|
|
editor.setShowPrintMargin(true);
|
2016-02-29 19:31:32 +01:00
|
|
|
|
2017-03-03 04:16:49 +01:00
|
|
|
$.get('/slides.md', function(data) {
|
|
|
|
editor.setValue(data, -1);
|
|
|
|
});
|
|
|
|
|
|
|
|
ace.edit('editor').getSession().selection.on('changeCursor', function(e) {
|
|
|
|
var cursorRow = ace.edit('editor').getCursorPosition().row;
|
|
|
|
var currentSlide = currentCursorSlide(cursorRow);
|
|
|
|
$('#slides-frame')[0].contentWindow.postMessage(JSON.stringify({
|
|
|
|
method: 'slide',
|
|
|
|
args: [currentSlide]
|
|
|
|
}), window.location.origin);
|
|
|
|
});
|
|
|
|
});
|