Update to make slide mode support all extra syntax and change it's rendering engine

This commit is contained in:
Wu Cheng-Han 2016-07-02 16:09:26 +08:00
parent 160b51d16a
commit d39f1fc700
7 changed files with 376 additions and 87 deletions

View file

@ -5,27 +5,15 @@
*/
(function( root, factory ) {
if( typeof exports === 'object' ) {
module.exports = factory( require( './marked' ) );
module.exports = factory();
}
else {
// Browser globals (root is window)
root.RevealMarkdown = factory( root.marked );
root.RevealMarkdown = factory();
root.RevealMarkdown.initialize();
}
}( this, function( marked ) {
if( typeof marked === 'undefined' ) {
throw 'The reveal.js Markdown plugin requires marked to be loaded';
}
if( typeof hljs !== 'undefined' ) {
marked.setOptions({
highlight: function( lang, code ) {
return hljs.highlightAuto( lang, code ).value;
}
});
}
}( this, function() {
var DEFAULT_SLIDE_SEPARATOR = '^\r?\n---\r?\n$',
DEFAULT_NOTES_SEPARATOR = 'note:',
DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '\\\.element\\\s*?(.+?)$',
@ -364,10 +352,10 @@
var notes = section.querySelector( 'aside.notes' );
var markdown = getMarkdownFromSlide( section );
var rendered = marked( markdown );
rendered = preventXSS(rendered);
section.innerHTML = rendered;
var rendered = md.render(markdown);
rendered = preventXSS(rendered);
var result = postProcess(rendered);
section.innerHTML = result[0].outerHTML;
addAttributes( section, section, null, section.getAttribute( 'data-element-attributes' ) ||
section.parentNode.getAttribute( 'data-element-attributes' ) ||
DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR,

65
public/js/slide.js Normal file
View file

@ -0,0 +1,65 @@
var body = $(".slides").html();
$(".slides").html(S(body).unescapeHTML().s);
function extend() {
var target = {};
for (var i = 0; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (source.hasOwnProperty(key)) {
target[key] = source[key];
}
}
}
return target;
}
// Optional libraries used to extend on reveal.js
var deps = [{
src: serverurl + '/vendor/reveal.js/lib/js/classList.js',
condition: function() {
return !document.body.classList;
}
}, {
src: serverurl + '/js/reveal-markdown.js',
condition: function() {
return !!document.querySelector('[data-markdown]');
}
}, {
src: serverurl + '/vendor/reveal.js/plugin/notes/notes.js',
async: true,
condition: function() {
return !!document.body.classList;
}
}];
// default options to init reveal.js
var defaultOptions = {
controls: true,
progress: true,
slideNumber: true,
history: true,
center: true,
transition: 'none',
dependencies: deps
};
// options from URL query string
var queryOptions = Reveal.getQueryHash() || {};
var options = extend(defaultOptions, queryOptions);
Reveal.initialize(options);
viewAjaxCallback = function () {
Reveal.layout();
};
function renderSlide() {
var title = document.title;
finishView($(event.currentSlide));
document.title = title;
Reveal.layout();
}
Reveal.addEventListener('ready', renderSlide);
Reveal.addEventListener('slidechanged', renderSlide);