From eb5e7ba0d10cf559d73335102513b4c5783e239b Mon Sep 17 00:00:00 2001
From: Yukai Huang <yukaihuangtw@gmail.com>
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');