From eb5e7ba0d10cf559d73335102513b4c5783e239b Mon Sep 17 00:00:00 2001 From: Yukai Huang Date: Thu, 5 Jan 2017 16:17:28 +0800 Subject: [PATCH] Convert slide.js to es6 --- public/js/slide.js | 64 ++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/public/js/slide.js b/public/js/slide.js index 1ff388a..63cf64c 100644 --- a/public/js/slide.js +++ b/public/js/slide.js @@ -1,67 +1,65 @@ require('../css/extra.css'); require('../css/site.css'); -var extraModule = require('./extra'); -var md = extraModule.md; -var updateLastChange = extraModule.updateLastChange; -var finishView = extraModule.finishView; +import { md, updateLastChange, finishView } from './extra'; -var preventXSS = require('./render').preventXSS; +import { preventXSS } from './render'; -var body = $(".slides").text(); +const body = $(".slides").text(); createtime = lastchangeui.time.attr('data-createtime'); lastchangetime = lastchangeui.time.attr('data-updatetime'); updateLastChange(); -var url = window.location.pathname; -$('.ui-edit').attr('href', url + '/edit'); +const url = window.location.pathname; +$('.ui-edit').attr('href', `${url}/edit`); -$(document).ready(function () { +$(document).ready(() => { //tooltip $('[data-toggle="tooltip"]').tooltip(); }); function extend() { - var target = {}; - for (var i = 0; i < arguments.length; i++) { - var source = arguments[i]; - for (var key in source) { + const target = {}; + + for (const source of arguments) { + for (const 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 + '/build/reveal.js/lib/js/classList.js', - condition: function() { +const deps = [{ + src: `${serverurl}/build/reveal.js/lib/js/classList.js`, + condition() { return !document.body.classList; } }, { - src: serverurl + '/js/reveal-markdown.js', - callback: function () { - var slideOptions = { + src: `${serverurl}/js/reveal-markdown.js`, + callback() { + const slideOptions = { separator: '^(\r\n?|\n)---(\r\n?|\n)$', verticalSeparator: '^(\r\n?|\n)----(\r\n?|\n)$' }; - var slides = RevealMarkdown.slidify(body, slideOptions); + const slides = RevealMarkdown.slidify(body, slideOptions); $(".slides").html(slides); RevealMarkdown.initialize(); $(".slides").show(); } }, { - src: serverurl + '/build/reveal.js/plugin/notes/notes.js', + src: `${serverurl}/build/reveal.js/plugin/notes/notes.js`, async: true, - condition: function() { + condition() { return !!document.body.classList; } }]; // default options to init reveal.js -var defaultOptions = { +const defaultOptions = { controls: true, progress: true, slideNumber: true, @@ -72,10 +70,10 @@ var defaultOptions = { }; // options from yaml meta -var meta = JSON.parse($("#meta").text()); +const meta = JSON.parse($("#meta").text()); var options = meta.slideOptions || {}; -var view = $('.reveal'); +const view = $('.reveal'); //text language if (meta.lang && typeof meta.lang == "string") { @@ -97,24 +95,24 @@ if (typeof meta.breaks === 'boolean' && !meta.breaks) { } // options from URL query string -var queryOptions = Reveal.getQueryHash() || {}; +const queryOptions = Reveal.getQueryHash() || {}; var options = extend(defaultOptions, options, queryOptions); Reveal.initialize(options); -window.viewAjaxCallback = function () { +window.viewAjaxCallback = () => { Reveal.layout(); }; function renderSlide(event) { if (window.location.search.match( /print-pdf/gi )) { - var slides = $('.slides'); + const slides = $('.slides'); var title = document.title; finishView(slides); document.title = title; Reveal.layout(); } else { - var markdown = $(event.currentSlide); + const markdown = $(event.currentSlide); if (!markdown.attr('data-rendered')) { var title = document.title; finishView(markdown); @@ -125,16 +123,16 @@ function renderSlide(event) { } } -Reveal.addEventListener('ready', function (event) { +Reveal.addEventListener('ready', event => { renderSlide(event); - var markdown = $(event.currentSlide); + const markdown = $(event.currentSlide); // force browser redraw - setTimeout(function () { + setTimeout(() => { markdown.hide().show(0); }, 0); }); Reveal.addEventListener('slidechanged', renderSlide); -var isMacLike = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false; +const isMacLike = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false; if (!isMacLike) $('.container').addClass('hidescrollbar');