Website Summary Files Commits Branches @commit @diff @stats
path: root / layouts / partials / layout / javascript.html
diff options
context:
space:
mode:
Commitad823cc4d72edbab10f0dadf99b30df91c3f7c50 (patch)
Author
 Dimitar Trendafilov <trendafilov.dn@gmail.com>
2020-08-16 08:38:04 +0300
Committer
 Dimitar Trendafilov <trendafilov.dn@gmail.com>
2020-08-16 08:38:04 +0300
Files6666a19acc2316d6ad5ad00291066d6d6fd42a5b /layouts/partials/layout/javascript.html
IPL-ad823cc4d72edbab10f0dadf99b30df91c3f7c50.tar
IPL-ad823cc4d72edbab10f0dadf99b30df91c3f7c50.tar.gz
IPL-ad823cc4d72edbab10f0dadf99b30df91c3f7c50.zip
Squashed 'website/themes/reveal-hugo/' content from commit ff9f389
git-subtree-dir: website/themes/reveal-hugo git-subtree-split: ff9f389743ae2fe5c5cc6101455db0616e8548e2
1 files changed, 63 insertions, 0 deletions
-rw-r--r--layouts/partials/layout/javascript.html63
diff --git a/layouts/partials/layout/javascript.html b/layouts/partials/layout/javascript.html
new file mode 100644
index 0000000..fe99cb9
--- /dev/null
+++ b/layouts/partials/layout/javascript.html
@@ -0,0 +1,63 @@
+<!-- polyfill needed for IE11 and below -->
+<script type="text/javascript" src={{ "reveal-hugo/object-assign.js" | relURL }}></script>
+<!-- Printing and PDF exports -->
+<!-- use Hugo to create the right path for the print stylesheet, then conditionally include it -->
+{{- $reveal_location := $.Param "reveal_hugo.reveal_cdn" | default "reveal-js" -}}
+<a href="{{ printf "%s/css/print/" $reveal_location | relURL }}" id="print-location" style="display: none;"></a>
+<script type="text/javascript">
+ var printLocationElement = document.getElementById('print-location');
+ var link = document.createElement('link');
+ link.rel = 'stylesheet';
+ link.type = 'text/css';
+ link.href = printLocationElement.href + (window.location.search.match(/print-pdf/gi) ? 'pdf.css' : 'paper.css');
+ document.getElementsByTagName('head')[0].appendChild(link);
+</script>
+<!-- output Hugo parameters into JavaScript to be used when initializing Reveal.js -->
+<script type="application/json" id="reveal-hugo-site-params">{{ jsonify .Site.Params.reveal_hugo | safeJS }}</script>
+<script type="application/json" id="reveal-hugo-page-params">{{ jsonify .Page.Params.reveal_hugo | safeJS }}</script>
+<!-- load Reveal.js javascripts -->
+<script src="{{ printf "%s/js/reveal.js" $reveal_location | relURL }}"></script>
+<!-- load Reveal.js plugins -->
+<script type="text/javascript">
+ // Hugo lowercases all params and Reveal.js needs camelcase
+ // So params in Hugo must be stored in snakecase and we camelize them here
+ function camelize(map) {
+ if (map) {
+ Object.keys(map).forEach(function(k) {
+ newK = k.replace(/(\_\w)/g, function(m) { return m[1].toUpperCase() });
+ if (newK != k) {
+ map[newK] = map[k];
+ delete map[k];
+ }
+ });
+ }
+ return map;
+ }
+ // pattern inspired by https://github.com/RealOrangeOne/hugo-theme-revealjs
+ var revealHugoDefaults = { center: true, controls: true, history: true, progress: true, transition: "slide" };
+ var revealHugoSiteParams = JSON.parse(document.getElementById('reveal-hugo-site-params').innerHTML);
+ var revealHugoPageParams = JSON.parse(document.getElementById('reveal-hugo-page-params').innerHTML);
+ // See all options - https://github.com/hakimel/reveal.js#configuration
+ var options = Object.assign({},
+ camelize(revealHugoDefaults),
+ camelize(revealHugoSiteParams),
+ camelize(revealHugoPageParams));
+ Reveal.initialize(options);
+</script>
+<!-- load Reveal.js plugins after Reveal.js is initialized -->
+{{ if $.Param "reveal_hugo.load_default_plugins" | default true }}
+ {{ $default_plugins := slice "plugin/markdown/marked.js" "plugin/markdown/markdown.js" "plugin/highlight/highlight.js" "plugin/zoom-js/zoom.js" }}
+ {{ range $default_plugins }}
+ <script type="text/javascript" src="{{ printf "%s/%s" $reveal_location . | relURL }}"></script>
+ {{ end }}
+ <!-- always use local version of the notes plugin since HTML file it requires isn't on CDN -->
+ <script type="text/javascript" src="{{ "reveal-js/plugin/notes/notes.js" | relURL }}"></script>
+{{ end }}
+<!-- load custom plugins locally only (not CDN since many plugins won't exist there) -->
+{{ range $.Param "reveal_hugo.plugins" }}
+<script type="text/javascript" src="{{ . | relURL }}"></script>
+{{ end }}
+{{- $custom_js := $.Param "reveal_hugo.custom_js" -}}
+{{- if $custom_js -}}
+<script type="text/javascript" src="{{ $custom_js | relURL }}"></script>
+{{- end -}}