commit
3e99709c0c
3 changed files with 87 additions and 44 deletions
|
@ -1,54 +1,51 @@
|
||||||
$(function() {
|
$(function() {
|
||||||
|
|
||||||
function slideSeparatorLines(text) {
|
function slideSeparatorLines(text) {
|
||||||
var lines = text.split('\n');
|
var lines = text.split('\n');
|
||||||
|
|
||||||
var separatorLineNumbers = [];
|
var separatorLineNumbers = [];
|
||||||
|
|
||||||
for (i = 0; i < lines.length; i++) {
|
for (i = 0; i < lines.length; i++) {
|
||||||
var line = lines[i];
|
var line = lines[i];
|
||||||
if (line === '---') {
|
if (line === '---') {
|
||||||
separatorLineNumbers.push(i);
|
separatorLineNumbers.push(i);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return separatorLineNumbers;
|
||||||
}
|
}
|
||||||
|
|
||||||
return separatorLineNumbers;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
function currentCursorSlide(cursorLine) {
|
|
||||||
var text = ace.edit("editor").getValue();
|
var editor = ace.edit("editor");
|
||||||
var separatorPositions = slideSeparatorLines(text);
|
editor.setTheme("ace/theme/chrome");
|
||||||
var slideNumber = separatorPositions.length;
|
editor.getSession().setMode("ace/mode/markdown");
|
||||||
separatorPositions.every(function(pos, num) {
|
editor.getSession().setUseWrapMode(true);
|
||||||
if (pos >= cursorLine) {
|
editor.setShowPrintMargin(true);
|
||||||
slideNumber = num;
|
|
||||||
return false;
|
$.get('/slides.md', function(data) {
|
||||||
}
|
editor.setValue(data, -1);
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
return slideNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
ace.edit('editor').getSession().selection.on('changeCursor', function(e) {
|
||||||
var editor = ace.edit("editor");
|
var cursorRow = ace.edit('editor').getCursorPosition().row;
|
||||||
editor.setTheme("ace/theme/chrome");
|
var currentSlide = currentCursorSlide(cursorRow);
|
||||||
editor.getSession().setMode("ace/mode/markdown");
|
$('#slides-frame')[0].contentWindow.postMessage(JSON.stringify({
|
||||||
editor.getSession().setUseWrapMode(true);
|
method: 'slide',
|
||||||
editor.setShowPrintMargin(true);
|
args: [currentSlide]
|
||||||
|
}), window.location.origin);
|
||||||
$.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);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ function isPreview() {
|
||||||
function initializeReveal() {
|
function initializeReveal() {
|
||||||
// Full list of configuration options available at:
|
// Full list of configuration options available at:
|
||||||
// https://github.com/hakimel/reveal.js#configuration
|
// https://github.com/hakimel/reveal.js#configuration
|
||||||
|
|
||||||
Reveal.initialize({
|
Reveal.initialize({
|
||||||
controls: true,
|
controls: true,
|
||||||
progress: true,
|
progress: true,
|
||||||
|
@ -70,6 +71,8 @@ function initializeReveal() {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
themesCtrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
function highlightAnyCodeBlocks() {
|
function highlightAnyCodeBlocks() {
|
||||||
|
@ -112,6 +115,47 @@ function externalLinksInNewWindow() {
|
||||||
insertMarkdownReference();
|
insertMarkdownReference();
|
||||||
initializeReveal();
|
initializeReveal();
|
||||||
|
|
||||||
|
function themesCtrl() {
|
||||||
|
var defaultTheme = "black.css",
|
||||||
|
currentTheme = localStorage.getItem('theme?') ||
|
||||||
|
defaultTheme;
|
||||||
|
|
||||||
|
function setTheme(theme) {
|
||||||
|
cssEl = $("#theme");
|
||||||
|
cssEl.attr("href", "/static/reveal.js/css/theme/" + theme);
|
||||||
|
localStorage.setItem('theme?', theme);
|
||||||
|
}
|
||||||
|
setTheme(currentTheme);
|
||||||
|
|
||||||
|
if (!isPreview()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var availableThemes = [
|
||||||
|
"black.css",
|
||||||
|
"beige.css",
|
||||||
|
"blood.css",
|
||||||
|
"league.css",
|
||||||
|
"moon.css",
|
||||||
|
"night.css",
|
||||||
|
"serif.css",
|
||||||
|
"simple.css",
|
||||||
|
"sky.css",
|
||||||
|
"solarized.css",
|
||||||
|
"white.css",
|
||||||
|
];
|
||||||
|
themeEl = $("#themes");
|
||||||
|
availableThemes.forEach(function(theme) {
|
||||||
|
elem = $("<option value=" + theme + ">" + theme + "</option>");
|
||||||
|
themeEl.append(elem);
|
||||||
|
})
|
||||||
|
themeEl.val(currentTheme);
|
||||||
|
themeEl.change(function() {
|
||||||
|
val = themeEl.val()
|
||||||
|
setTheme(val);
|
||||||
|
});
|
||||||
|
themeEl.attr("hidden", false);
|
||||||
|
}
|
||||||
|
|
||||||
// Monkey patch Reveal so we can reload markdown through an
|
// Monkey patch Reveal so we can reload markdown through an
|
||||||
// inter window message (using the reveal rpc api)
|
// inter window message (using the reveal rpc api)
|
||||||
// (yes, reveal has an rpc api!)
|
// (yes, reveal has an rpc api!)
|
||||||
|
|
|
@ -36,6 +36,8 @@
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
<select id="themes" hidden="true" style="float:right;">
|
||||||
|
</select>
|
||||||
<div class="reveal">
|
<div class="reveal">
|
||||||
<div class="slides"></div>
|
<div class="slides"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue