summaryrefslogtreecommitdiff
path: root/public/js/slide.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/js/slide.js')
-rw-r--r--public/js/slide.js195
1 files changed, 98 insertions, 97 deletions
diff --git a/public/js/slide.js b/public/js/slide.js
index 63cf64c6..e743bb55 100644
--- a/public/js/slide.js
+++ b/public/js/slide.js
@@ -1,138 +1,139 @@
-require('../css/extra.css');
-require('../css/site.css');
+/* eslint-env browser, jquery */
+/* global serverurl, Reveal */
-import { md, updateLastChange, finishView } from './extra';
+require('../css/extra.css')
+require('../css/site.css')
-import { preventXSS } from './render';
+import { md, updateLastChange, finishView } from './extra'
-const body = $(".slides").text();
+const body = $('.slides').text()
-createtime = lastchangeui.time.attr('data-createtime');
-lastchangetime = lastchangeui.time.attr('data-updatetime');
-updateLastChange();
-const url = window.location.pathname;
-$('.ui-edit').attr('href', `${url}/edit`);
+window.createtime = window.lastchangeui.time.attr('data-createtime')
+window.lastchangetime = window.lastchangeui.time.attr('data-updatetime')
+updateLastChange()
+const url = window.location.pathname
+$('.ui-edit').attr('href', `${url}/edit`)
$(document).ready(() => {
- //tooltip
- $('[data-toggle="tooltip"]').tooltip();
-});
-
-function extend() {
- const target = {};
-
- for (const source of arguments) {
- for (const key in source) {
- if (source.hasOwnProperty(key)) {
- target[key] = source[key];
- }
- }
+ // tooltip
+ $('[data-toggle="tooltip"]').tooltip()
+})
+
+function extend () {
+ const target = {}
+
+ for (const source of arguments) {
+ for (const key in source) {
+ if (source.hasOwnProperty(key)) {
+ target[key] = source[key]
+ }
}
+ }
- return target;
+ return target
}
// Optional libraries used to extend on reveal.js
const deps = [{
- src: `${serverurl}/build/reveal.js/lib/js/classList.js`,
- condition() {
- return !document.body.classList;
- }
+ src: `${serverurl}/build/reveal.js/lib/js/classList.js`,
+ condition () {
+ return !document.body.classList
+ }
}, {
- src: `${serverurl}/js/reveal-markdown.js`,
- callback() {
- const slideOptions = {
- separator: '^(\r\n?|\n)---(\r\n?|\n)$',
- verticalSeparator: '^(\r\n?|\n)----(\r\n?|\n)$'
- };
- const slides = RevealMarkdown.slidify(body, slideOptions);
- $(".slides").html(slides);
- RevealMarkdown.initialize();
- $(".slides").show();
+ src: `${serverurl}/js/reveal-markdown.js`,
+ callback () {
+ const slideOptions = {
+ separator: '^(\r\n?|\n)---(\r\n?|\n)$',
+ verticalSeparator: '^(\r\n?|\n)----(\r\n?|\n)$'
}
+ const slides = window.RevealMarkdown.slidify(body, slideOptions)
+ $('.slides').html(slides)
+ window.RevealMarkdown.initialize()
+ $('.slides').show()
+ }
}, {
- src: `${serverurl}/build/reveal.js/plugin/notes/notes.js`,
- async: true,
- condition() {
- return !!document.body.classList;
- }
-}];
+ src: `${serverurl}/build/reveal.js/plugin/notes/notes.js`,
+ async: true,
+ condition () {
+ return !!document.body.classList
+ }
+}]
// default options to init reveal.js
const defaultOptions = {
- controls: true,
- progress: true,
- slideNumber: true,
- history: true,
- center: true,
- transition: 'none',
- dependencies: deps
-};
+ controls: true,
+ progress: true,
+ slideNumber: true,
+ history: true,
+ center: true,
+ transition: 'none',
+ dependencies: deps
+}
// options from yaml meta
-const meta = JSON.parse($("#meta").text());
-var options = meta.slideOptions || {};
+const meta = JSON.parse($('#meta').text())
+var options = meta.slideOptions || {}
-const view = $('.reveal');
+const view = $('.reveal')
-//text language
-if (meta.lang && typeof meta.lang == "string") {
- view.attr('lang', meta.lang);
+// text language
+if (meta.lang && typeof meta.lang === 'string') {
+ view.attr('lang', meta.lang)
} else {
- view.removeAttr('lang');
+ view.removeAttr('lang')
}
-//text direction
-if (meta.dir && typeof meta.dir == "string" && meta.dir == "rtl") {
- options.rtl = true;
+// text direction
+if (meta.dir && typeof meta.dir === 'string' && meta.dir === 'rtl') {
+ options.rtl = true
} else {
- options.rtl = false;
+ options.rtl = false
}
-//breaks
+// breaks
if (typeof meta.breaks === 'boolean' && !meta.breaks) {
- md.options.breaks = false;
+ md.options.breaks = false
} else {
- md.options.breaks = true;
+ md.options.breaks = true
}
// options from URL query string
-const queryOptions = Reveal.getQueryHash() || {};
+const queryOptions = Reveal.getQueryHash() || {}
-var options = extend(defaultOptions, options, queryOptions);
-Reveal.initialize(options);
+options = extend(defaultOptions, options, queryOptions)
+Reveal.initialize(options)
window.viewAjaxCallback = () => {
- Reveal.layout();
-};
-
-function renderSlide(event) {
- if (window.location.search.match( /print-pdf/gi )) {
- const slides = $('.slides');
- var title = document.title;
- finishView(slides);
- document.title = title;
- Reveal.layout();
- } else {
- const markdown = $(event.currentSlide);
- if (!markdown.attr('data-rendered')) {
- var title = document.title;
- finishView(markdown);
- markdown.attr('data-rendered', 'true');
- document.title = title;
- Reveal.layout();
- }
+ Reveal.layout()
+}
+
+function renderSlide (event) {
+ if (window.location.search.match(/print-pdf/gi)) {
+ const slides = $('.slides')
+ let title = document.title
+ finishView(slides)
+ document.title = title
+ Reveal.layout()
+ } else {
+ const markdown = $(event.currentSlide)
+ if (!markdown.attr('data-rendered')) {
+ let title = document.title
+ finishView(markdown)
+ markdown.attr('data-rendered', 'true')
+ document.title = title
+ Reveal.layout()
}
+ }
}
Reveal.addEventListener('ready', event => {
- renderSlide(event);
- const markdown = $(event.currentSlide);
+ renderSlide(event)
+ const markdown = $(event.currentSlide)
// force browser redraw
- setTimeout(() => {
- markdown.hide().show(0);
- }, 0);
-});
-Reveal.addEventListener('slidechanged', renderSlide);
+ setTimeout(() => {
+ markdown.hide().show(0)
+ }, 0)
+})
+Reveal.addEventListener('slidechanged', renderSlide)
-const isMacLike = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;
+const isMacLike = !!navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i)
-if (!isMacLike) $('.container').addClass('hidescrollbar');
+if (!isMacLike) $('.container').addClass('hidescrollbar')