hyla 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +8 -8
  2. data/Rakefile +6 -2
  3. data/bin/hyla +3 -2
  4. data/lib/hyla/commands/generate.rb +43 -41
  5. data/lib/hyla/configuration.rb +1 -1
  6. data/lib/hyla/project.rb +1 -1
  7. data/lib/resources/assets/revealjs-redhat/image/collapsed.png +0 -0
  8. data/lib/resources/assets/revealjs-redhat/image/expanded.png +0 -0
  9. data/lib/resources/assets/revealjs-redhat/lib/css/conference.css +663 -0
  10. data/lib/resources/assets/revealjs-redhat/lib/css/font-awesome-4.3.0.css +2886 -1098
  11. data/lib/resources/assets/revealjs-redhat/lib/css/gpe.css +746 -180
  12. data/lib/resources/assets/revealjs-redhat/lib/css/print/pdf.css +32 -65
  13. data/lib/resources/assets/revealjs-redhat/lib/css/theme-output.css +1509 -395
  14. data/lib/resources/assets/revealjs-redhat/lib/css/theme-v2-liberation.css +4332 -1366
  15. data/lib/resources/assets/revealjs-redhat/lib/css/theme-v2-overpass.css +4320 -1364
  16. data/lib/resources/assets/revealjs-redhat/lib/js/debug/gpe.js +8 -8
  17. data/lib/resources/assets/revealjs-redhat/lib/js/debug/reveal.js +129 -91
  18. data/lib/resources/assets/revealjs-redhat/lib/js/gpe.min.js +3 -3
  19. data/lib/resources/assets/revealjs-redhat/lib/js/reveal.min.js +18 -13
  20. data/lib/resources/assets/revealjs/css/theme/conference-redhat.css +14 -6
  21. data/lib/resources/assets/revealjs/css/theme/old-gpe.css +670 -181
  22. data/lib/resources/assets/revealjs/js/{reveal.js → debug/reveal.js} +1619 -492
  23. data/lib/resources/assets/revealjs/js/reveal.min.js +342 -9
  24. data/lib/resources/assets/revealjs/lib/css/font-awesome-4.3.0.css +2886 -1098
  25. data/lib/resources/assets/sass/conference.scss +589 -0
  26. data/lib/resources/assets/sass/new-gpe.scss +79 -0
  27. data/lib/resources/backends/slim/revealjs-redhat/block_paragraph.html.slim +18 -6
  28. data/lib/resources/backends/slim/revealjs-redhat/block_ulist.html.slim +25 -9
  29. data/lib/resources/backends/slim/revealjs/document.html.slim +1 -1
  30. data/lib/templates/course/audio.txt +2 -2
  31. data/lib/templates/course/cover.txt +19 -7
  32. data/lib/templates/course/footer.txt +1 -3
  33. data/lib/templates/course/index.txt +2 -2
  34. data/lib/templates/course/labinstructions.txt +1 -3
  35. data/lib/templates/course/objectives.txt +1 -12
  36. data/lib/templates/course/summary.txt +1 -8
  37. metadata +7 -3
@@ -2,27 +2,27 @@
2
2
  /* Module GPE
3
3
  /**************************************************************/
4
4
  var GPE = {
5
- prepareList: function () {
6
- $('#expList').find('li:has(ul)')
5
+ list: function () {
6
+ $('#expandlist > li')
7
7
  .click(function (event) {
8
8
  if (this == event.target) {
9
9
  $(this).toggleClass('expanded');
10
- $(this).children('ul').toggle('medium');
10
+ $(this).find('ul').toggle('medium');
11
11
  }
12
12
  return false;
13
13
  })
14
14
  .addClass('collapsed')
15
- .children('ul').hide();
15
+ .find('ul').hide();
16
16
 
17
- //Create the button funtionality
18
- $('#expandList')
17
+ //Create the button functionality
18
+ $('#expandall')
19
19
  .unbind('click')
20
20
  .click(function () {
21
21
  $('.collapsed').addClass('expanded');
22
22
  $('.collapsed').children().show('medium');
23
23
  })
24
24
 
25
- $('#collapseList')
25
+ $('#collapseall')
26
26
  .unbind('click')
27
27
  .click(function () {
28
28
  $('.collapsed').removeClass('expanded');
@@ -58,7 +58,7 @@ var GPE = {
58
58
  $(document).ready(function () {
59
59
 
60
60
  // Check expandable and collapsable lists
61
- GPE.prepareList();
61
+ GPE.list();
62
62
 
63
63
  // Add click event for <a href where id=popuplink and audio-file
64
64
  $("a[id][audio-file]").click(function () {
@@ -2,6 +2,7 @@
2
2
  * reveal.js
3
3
  * http://lab.hakim.se/reveal-js
4
4
  * MIT licensed
5
+ * Version 3.1.0
5
6
  *
6
7
  * Copyright (C) 2015 Hakim El Hattab, http://hakim.se
7
8
  */
@@ -30,7 +31,7 @@
30
31
  VERTICAL_SLIDES_SELECTOR = '.slides>section.present>section',
31
32
  HOME_SLIDE_SELECTOR = '.slides>section:first-of-type',
32
33
 
33
- // Configurations defaults, can be overridden at initialization time
34
+ // Configuration defaults, can be overridden at initialization time
34
35
  config = {
35
36
 
36
37
  // The "normal" size of the presentation, aspect ratio will be preserved
@@ -41,10 +42,6 @@
41
42
  // Factor of the display size that should remain empty around the content
42
43
  margin: 0.1,
43
44
 
44
- // Top and Left margins to reposition the slides
45
- marginTop: '',
46
- marginLeft: '',
47
-
48
45
  // Bounds for smallest/largest possible scale to apply to content
49
46
  minScale: 0.2,
50
47
  maxScale: 1.5,
@@ -242,14 +239,18 @@
242
239
  if( !features.transforms2d && !features.transforms3d ) {
243
240
  document.body.setAttribute( 'class', 'no-transforms' );
244
241
 
245
- // Since JS won't be running any further, we need to load all
246
- // images that were intended to lazy load now
247
- var images = document.getElementsByTagName( 'img' );
248
- for( var i = 0, len = images.length; i < len; i++ ) {
249
- var image = images[i];
250
- if( image.getAttribute( 'data-src' ) ) {
251
- image.setAttribute( 'src', image.getAttribute( 'data-src' ) );
252
- image.removeAttribute( 'data-src' );
242
+ // Since JS won't be running any further, we load all lazy
243
+ // loading elements upfront
244
+ var images = toArray( document.getElementsByTagName( 'img' ) ),
245
+ iframes = toArray( document.getElementsByTagName( 'iframe' ) );
246
+
247
+ var lazyLoadable = images.concat( iframes );
248
+
249
+ for( var i = 0, len = lazyLoadable.length; i < len; i++ ) {
250
+ var element = lazyLoadable[i];
251
+ if( element.getAttribute( 'data-src' ) ) {
252
+ element.setAttribute( 'src', element.getAttribute( 'data-src' ) );
253
+ element.removeAttribute( 'data-src' );
253
254
  }
254
255
  }
255
256
 
@@ -290,16 +291,16 @@
290
291
  function checkCapabilities() {
291
292
 
292
293
  features.transforms3d = 'WebkitPerspective' in document.body.style ||
293
- 'MozPerspective' in document.body.style ||
294
- 'msPerspective' in document.body.style ||
295
- 'OPerspective' in document.body.style ||
296
- 'perspective' in document.body.style;
294
+ 'MozPerspective' in document.body.style ||
295
+ 'msPerspective' in document.body.style ||
296
+ 'OPerspective' in document.body.style ||
297
+ 'perspective' in document.body.style;
297
298
 
298
299
  features.transforms2d = 'WebkitTransform' in document.body.style ||
299
- 'MozTransform' in document.body.style ||
300
- 'msTransform' in document.body.style ||
301
- 'OTransform' in document.body.style ||
302
- 'transform' in document.body.style;
300
+ 'MozTransform' in document.body.style ||
301
+ 'msTransform' in document.body.style ||
302
+ 'OTransform' in document.body.style ||
303
+ 'transform' in document.body.style;
303
304
 
304
305
  features.requestAnimationFrameMethod = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;
305
306
  features.requestAnimationFrame = typeof features.requestAnimationFrameMethod === 'function';
@@ -735,14 +736,14 @@
735
736
  // the same.
736
737
  if( data.background || data.backgroundColor || data.backgroundImage || data.backgroundVideo || data.backgroundIframe ) {
737
738
  element.setAttribute( 'data-background-hash', data.background +
738
- data.backgroundSize +
739
- data.backgroundImage +
740
- data.backgroundVideo +
741
- data.backgroundIframe +
742
- data.backgroundColor +
743
- data.backgroundRepeat +
744
- data.backgroundPosition +
745
- data.backgroundTransition );
739
+ data.backgroundSize +
740
+ data.backgroundImage +
741
+ data.backgroundVideo +
742
+ data.backgroundIframe +
743
+ data.backgroundColor +
744
+ data.backgroundRepeat +
745
+ data.backgroundPosition +
746
+ data.backgroundTransition );
746
747
  }
747
748
 
748
749
  // Additional and optional background properties
@@ -1136,7 +1137,7 @@
1136
1137
  }
1137
1138
 
1138
1139
  /**
1139
- * Measures the distance in pixels between point a and point b.
1140
+ * Converts various color input formats to an {r:0,g:0,b:0} object.
1140
1141
  *
1141
1142
  * @param {String} color The string representation of a color,
1142
1143
  * the following formats are supported:
@@ -1533,21 +1534,15 @@
1533
1534
  // Prefer zooming in desktop Chrome so that content remains crisp
1534
1535
  if( !isMobileDevice && /chrome/i.test( navigator.userAgent ) && typeof dom.slides.style.zoom !== 'undefined' ) {
1535
1536
  dom.slides.style.zoom = scale;
1536
- dom.slides.style.marginTop = config.marginTop;
1537
- dom.slides.style.marginLeft = config.marginLeft;
1538
1537
  transformSlides( { layout: '' } );
1539
1538
  }
1540
1539
  // Apply scale transform as a fallback
1541
1540
  else {
1542
- // dom.slides.style.left = '50%';
1543
- // dom.slides.style.top = '44%';
1544
- // dom.slides.style.bottom = 'auto';
1545
- // dom.slides.style.right = 'auto';
1546
- dom.slides.style.marginTop = config.marginTop;
1547
- dom.slides.style.marginLeft = config.marginLeft;
1548
- dom.slides.style.marginBottom = 'auto';
1549
- dom.slides.style.marginRight = 'auto';
1550
- transformSlides( { layout: 'translate(-50%, -50%) scale('+ scale +') translate(50%, 50%)' } );
1541
+ dom.slides.style.left = '50%';
1542
+ dom.slides.style.top = '50%';
1543
+ dom.slides.style.bottom = 'auto';
1544
+ dom.slides.style.right = 'auto';
1545
+ transformSlides( { layout: 'translate(-50%, -50%) scale('+ scale +')' } );
1551
1546
  }
1552
1547
  }
1553
1548
 
@@ -1635,7 +1630,7 @@
1635
1630
  };
1636
1631
 
1637
1632
  // Reduce available space by margin
1638
- size.presentationWidth -= ( size.presentationHeight * config.margin );
1633
+ size.presentationWidth -= ( size.presentationWidth * config.margin );
1639
1634
  size.presentationHeight -= ( size.presentationHeight * config.margin );
1640
1635
 
1641
1636
  // Slide width may be a percentage of available width
@@ -2203,6 +2198,7 @@
2203
2198
  updateSlidesVisibility();
2204
2199
 
2205
2200
  formatEmbeddedContent();
2201
+ startEmbeddedContent( currentSlide );
2206
2202
 
2207
2203
  if( isOverview() ) {
2208
2204
  layoutOverview();
@@ -2485,12 +2481,10 @@
2485
2481
  format = config.slideNumber;
2486
2482
  }
2487
2483
 
2488
- var totalSlides = getTotalSlides();
2489
-
2490
2484
  dom.slideNumber.innerHTML = format.replace( /h/g, indexh )
2491
2485
  .replace( /v/g, indexv )
2492
- .replace( /c/g, Math.round( getProgress() * totalSlides ) + 1 )
2493
- .replace( /t/g, totalSlides + 1 );
2486
+ .replace( /c/g, getSlidePastCount() + 1 )
2487
+ .replace( /t/g, getTotalSlides() );
2494
2488
  }
2495
2489
 
2496
2490
  }
@@ -2731,7 +2725,7 @@
2731
2725
  slide.style.display = 'block';
2732
2726
 
2733
2727
  // Media elements with data-src attributes
2734
- toArray( slide.querySelectorAll( 'img[data-src], video[data-src], audio[data-src], iframe[data-src]' ) ).forEach( function( element ) {
2728
+ toArray( slide.querySelectorAll( 'img[data-src], video[data-src], audio[data-src]' ) ).forEach( function( element ) {
2735
2729
  element.setAttribute( 'src', element.getAttribute( 'data-src' ) );
2736
2730
  element.removeAttribute( 'data-src' );
2737
2731
  } );
@@ -2878,21 +2872,22 @@
2878
2872
  */
2879
2873
  function formatEmbeddedContent() {
2880
2874
 
2875
+ var _appendParamToIframeSource = function( sourceAttribute, sourceURL, param ) {
2876
+ toArray( dom.slides.querySelectorAll( 'iframe['+ sourceAttribute +'*="'+ sourceURL +'"]' ) ).forEach( function( el ) {
2877
+ var src = el.getAttribute( sourceAttribute );
2878
+ if( src && src.indexOf( param ) === -1 ) {
2879
+ el.setAttribute( sourceAttribute, src + ( !/\?/.test( src ) ? '?' : '&' ) + param );
2880
+ }
2881
+ });
2882
+ };
2883
+
2881
2884
  // YouTube frames must include "?enablejsapi=1"
2882
- toArray( dom.slides.querySelectorAll( 'iframe[src*="youtube.com/embed/"]' ) ).forEach( function( el ) {
2883
- var src = el.getAttribute( 'src' );
2884
- if( !/enablejsapi\=1/gi.test( src ) ) {
2885
- el.setAttribute( 'src', src + ( !/\?/.test( src ) ? '?' : '&' ) + 'enablejsapi=1' );
2886
- }
2887
- });
2885
+ _appendParamToIframeSource( 'src', 'youtube.com/embed/', 'enablejsapi=1' );
2886
+ _appendParamToIframeSource( 'data-src', 'youtube.com/embed/', 'enablejsapi=1' );
2888
2887
 
2889
2888
  // Vimeo frames must include "?api=1"
2890
- toArray( dom.slides.querySelectorAll( 'iframe[src*="player.vimeo.com/"]' ) ).forEach( function( el ) {
2891
- var src = el.getAttribute( 'src' );
2892
- if( !/api\=1/gi.test( src ) ) {
2893
- el.setAttribute( 'src', src + ( !/\?/.test( src ) ? '?' : '&' ) + 'api=1' );
2894
- }
2895
- });
2889
+ _appendParamToIframeSource( 'src', 'player.vimeo.com/', 'api=1' );
2890
+ _appendParamToIframeSource( 'data-src', 'player.vimeo.com/', 'api=1' );
2896
2891
 
2897
2892
  }
2898
2893
 
@@ -2912,29 +2907,47 @@
2912
2907
 
2913
2908
  // HTML5 media elements
2914
2909
  toArray( slide.querySelectorAll( 'video, audio' ) ).forEach( function( el ) {
2915
- if( el.hasAttribute( 'data-autoplay' ) ) {
2910
+ if( el.hasAttribute( 'data-autoplay' ) && typeof el.play === 'function' ) {
2916
2911
  el.play();
2917
2912
  }
2918
2913
  } );
2919
2914
 
2920
- // iframe embeds
2921
- toArray( slide.querySelectorAll( 'iframe' ) ).forEach( function( el ) {
2922
- el.contentWindow.postMessage( 'slide:start', '*' );
2923
- });
2915
+ // Normal iframes
2916
+ toArray( slide.querySelectorAll( 'iframe[src]' ) ).forEach( function( el ) {
2917
+ startEmbeddedIframe( { target: el } );
2918
+ } );
2924
2919
 
2925
- // YouTube embeds
2926
- toArray( slide.querySelectorAll( 'iframe[src*="youtube.com/embed/"]' ) ).forEach( function( el ) {
2927
- if( el.hasAttribute( 'data-autoplay' ) ) {
2928
- el.contentWindow.postMessage( '{"event":"command","func":"playVideo","args":""}', '*' );
2920
+ // Lazy loading iframes
2921
+ toArray( slide.querySelectorAll( 'iframe[data-src]' ) ).forEach( function( el ) {
2922
+ if( el.getAttribute( 'src' ) !== el.getAttribute( 'data-src' ) ) {
2923
+ el.removeEventListener( 'load', startEmbeddedIframe ); // remove first to avoid dupes
2924
+ el.addEventListener( 'load', startEmbeddedIframe );
2925
+ el.setAttribute( 'src', el.getAttribute( 'data-src' ) );
2929
2926
  }
2930
- });
2927
+ } );
2928
+ }
2931
2929
 
2932
- // Vimeo embeds
2933
- toArray( slide.querySelectorAll( 'iframe[src*="player.vimeo.com/"]' ) ).forEach( function( el ) {
2934
- if( el.hasAttribute( 'data-autoplay' ) ) {
2935
- el.contentWindow.postMessage( '{"method":"play"}', '*' );
2936
- }
2937
- });
2930
+ }
2931
+
2932
+ /**
2933
+ * "Starts" the content of an embedded iframe using the
2934
+ * postmessage API.
2935
+ */
2936
+ function startEmbeddedIframe( event ) {
2937
+
2938
+ var iframe = event.target;
2939
+
2940
+ // YouTube postMessage API
2941
+ if( /youtube\.com\/embed\//.test( iframe.getAttribute( 'src' ) ) && iframe.hasAttribute( 'data-autoplay' ) ) {
2942
+ iframe.contentWindow.postMessage( '{"event":"command","func":"playVideo","args":""}', '*' );
2943
+ }
2944
+ // Vimeo postMessage API
2945
+ else if( /player\.vimeo\.com\//.test( iframe.getAttribute( 'src' ) ) && iframe.hasAttribute( 'data-autoplay' ) ) {
2946
+ iframe.contentWindow.postMessage( '{"method":"play"}', '*' );
2947
+ }
2948
+ // Generic postMessage API
2949
+ else {
2950
+ iframe.contentWindow.postMessage( 'slide:start', '*' );
2938
2951
  }
2939
2952
 
2940
2953
  }
@@ -2948,43 +2961,51 @@
2948
2961
  if( slide && slide.parentNode ) {
2949
2962
  // HTML5 media elements
2950
2963
  toArray( slide.querySelectorAll( 'video, audio' ) ).forEach( function( el ) {
2951
- if( !el.hasAttribute( 'data-ignore' ) ) {
2964
+ if( !el.hasAttribute( 'data-ignore' ) && typeof el.pause === 'function' ) {
2952
2965
  el.pause();
2953
2966
  }
2954
2967
  } );
2955
2968
 
2956
- // iframe embeds
2969
+ // Generic postMessage API for non-lazy loaded iframes
2957
2970
  toArray( slide.querySelectorAll( 'iframe' ) ).forEach( function( el ) {
2958
2971
  el.contentWindow.postMessage( 'slide:stop', '*' );
2972
+ el.removeEventListener( 'load', startEmbeddedIframe );
2959
2973
  });
2960
2974
 
2961
- // YouTube embeds
2975
+ // YouTube postMessage API
2962
2976
  toArray( slide.querySelectorAll( 'iframe[src*="youtube.com/embed/"]' ) ).forEach( function( el ) {
2963
2977
  if( !el.hasAttribute( 'data-ignore' ) && typeof el.contentWindow.postMessage === 'function' ) {
2964
2978
  el.contentWindow.postMessage( '{"event":"command","func":"pauseVideo","args":""}', '*' );
2965
2979
  }
2966
2980
  });
2967
2981
 
2968
- // Vimeo embeds
2982
+ // Vimeo postMessage API
2969
2983
  toArray( slide.querySelectorAll( 'iframe[src*="player.vimeo.com/"]' ) ).forEach( function( el ) {
2970
2984
  if( !el.hasAttribute( 'data-ignore' ) && typeof el.contentWindow.postMessage === 'function' ) {
2971
2985
  el.contentWindow.postMessage( '{"method":"pause"}', '*' );
2972
2986
  }
2973
2987
  });
2988
+
2989
+ // Lazy loading iframes
2990
+ toArray( slide.querySelectorAll( 'iframe[data-src]' ) ).forEach( function( el ) {
2991
+ // Only removing the src doesn't actually unload the frame
2992
+ // in all browsers (Firefox) so we set it to blank first
2993
+ el.setAttribute( 'src', 'about:blank' );
2994
+ el.removeAttribute( 'src' );
2995
+ } );
2974
2996
  }
2975
2997
 
2976
2998
  }
2977
2999
 
2978
3000
  /**
2979
- * Returns a value ranging from 0-1 that represents
2980
- * how far into the presentation we have navigated.
3001
+ * Returns the number of past slides. This can be used as a global
3002
+ * flattened index for slides.
2981
3003
  */
2982
- function getProgress() {
3004
+ function getSlidePastCount() {
2983
3005
 
2984
3006
  var horizontalSlides = toArray( dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ) );
2985
3007
 
2986
- // The number of past and total slides
2987
- var totalCount = getTotalSlides();
3008
+ // The number of past slides
2988
3009
  var pastCount = 0;
2989
3010
 
2990
3011
  // Step through all slides and count the past ones
@@ -3016,6 +3037,20 @@
3016
3037
 
3017
3038
  }
3018
3039
 
3040
+ return pastCount;
3041
+
3042
+ }
3043
+
3044
+ /**
3045
+ * Returns a value ranging from 0-1 that represents
3046
+ * how far into the presentation we have navigated.
3047
+ */
3048
+ function getProgress() {
3049
+
3050
+ // The number of past and total slides
3051
+ var totalCount = getTotalSlides();
3052
+ var pastCount = getSlidePastCount();
3053
+
3019
3054
  if( currentSlide ) {
3020
3055
 
3021
3056
  var allFragments = currentSlide.querySelectorAll( '.fragment' );
@@ -3500,14 +3535,17 @@
3500
3535
 
3501
3536
  // If there are media elements with data-autoplay,
3502
3537
  // automatically set the autoSlide duration to the
3503
- // length of that media
3504
- toArray( currentSlide.querySelectorAll( 'video, audio' ) ).forEach( function( el ) {
3505
- if( el.hasAttribute( 'data-autoplay' ) ) {
3506
- if( autoSlide && el.duration * 1000 > autoSlide ) {
3507
- autoSlide = ( el.duration * 1000 ) + 1000;
3538
+ // length of that media. Not applicable if the slide
3539
+ // is divided up into fragments.
3540
+ if( currentSlide.querySelectorAll( '.fragment' ).length === 0 ) {
3541
+ toArray( currentSlide.querySelectorAll( 'video, audio' ) ).forEach( function( el ) {
3542
+ if( el.hasAttribute( 'data-autoplay' ) ) {
3543
+ if( autoSlide && el.duration * 1000 > autoSlide ) {
3544
+ autoSlide = ( el.duration * 1000 ) + 1000;
3545
+ }
3508
3546
  }
3509
- }
3510
- } );
3547
+ } );
3548
+ }
3511
3549
 
3512
3550
  // Cue the next auto-slide if:
3513
3551
  // - There is an autoSlide value
@@ -1,3 +1,3 @@
1
- var GPE={prepareList:function(){$('#expList').find('li:has(ul)').click(function(event){if(this==event.target){$(this).toggleClass('expanded');$(this).children('ul').toggle('medium');}
2
- return false;}).addClass('collapsed').children('ul').hide();$('#expandList').unbind('click').click(function(){$('.collapsed').addClass('expanded');$('.collapsed').children().show('medium');})
3
- $('#collapseList').unbind('click').click(function(){$('.collapsed').removeClass('expanded');$('.collapsed').children().hide('medium');})},popuplink:function(audio_file){window.open(audio_file,'audio','resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=400,height=200');return false},moveAudioBlock:function(){$('section').each(function(){var $this=$(this);var $audio=$this.find('.audioblock');var $audioHtml=$audio.html();if($audioHtml!=null){$this.removeData($audioHtml);$audio.prependTo($this);}});}};$(document).ready(function(){GPE.prepareList();$("a[id][audio-file]").click(function(){GPE.popuplink($(this).attr('audio-file'))});GPE.moveAudioBlock();});
1
+ var GPE={list:function(){$('#expandlist > li').click(function(event){if(this==event.target){$(this).toggleClass('expanded');$(this).find('ul').toggle('medium');}
2
+ return false;}).addClass('collapsed').find('ul').hide();$('#expandall').unbind('click').click(function(){$('.collapsed').addClass('expanded');$('.collapsed').children().show('medium');})
3
+ $('#collapseall').unbind('click').click(function(){$('.collapsed').removeClass('expanded');$('.collapsed').children().hide('medium');})},popuplink:function(audio_file){window.open(audio_file,'audio','resizable=yes,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no,width=400,height=200');return false},moveAudioBlock:function(){$('section').each(function(){var $this=$(this);var $audio=$this.find('.audioblock');var $audioHtml=$audio.html();if($audioHtml!=null){$this.removeData($audioHtml);$audio.prependTo($this);}});}};$(document).ready(function(){GPE.list();$("a[id][audio-file]").click(function(){GPE.popuplink($(this).attr('audio-file'))});GPE.moveAudioBlock();});
@@ -1,4 +1,4 @@
1
- (function(root,factory){if(typeof define==='function'&&define.amd){define(function(){root.Reveal=factory();return root.Reveal;});}else if(typeof exports==='object'){module.exports=factory();}else{root.Reveal=factory();}}(this,function(){'use strict';var Reveal;var SLIDES_SELECTOR='.slides section',HORIZONTAL_SLIDES_SELECTOR='.slides>section',VERTICAL_SLIDES_SELECTOR='.slides>section.present>section',HOME_SLIDE_SELECTOR='.slides>section:first-of-type',config={width:960,height:700,margin:0.1,marginTop:'',marginLeft:'',minScale:0.2,maxScale:1.5,controls:true,progress:true,slideNumber:false,history:false,keyboard:true,keyboardCondition:null,overview:true,center:true,touch:true,loop:false,rtl:false,fragments:true,embedded:false,help:true,pause:true,autoSlide:0,autoSlideStoppable:true,mouseWheel:false,rollingLinks:false,hideAddressBar:true,previewLinks:false,postMessage:true,postMessageEvents:false,focusBodyOnPageVisibilityChange:true,transition:'slide',transitionSpeed:'default',backgroundTransition:'fade',parallaxBackgroundImage:'',parallaxBackgroundSize:'',parallaxBackgroundHorizontal:null,parallaxBackgroundVertical:null,viewDistance:3,dependencies:[]},loaded=false,overview=false,indexh,indexv,previousSlide,currentSlide,previousBackground,state=[],scale=1,slidesTransform={layout:'',overview:''},dom={},features={},isMobileDevice,lastMouseWheelStep=0,writeURLTimeout=0,eventsAreBound=false,autoSlide=0,autoSlidePlayer,autoSlideTimeout=0,autoSlideStartTime=-1,autoSlidePaused=false,touch={startX:0,startY:0,startSpan:0,startCount:0,captured:false,threshold:40},keyboardShortcuts={'N , SPACE':'Next slide','P':'Previous slide','&#8592; , H':'Navigate left','&#8594; , L':'Navigate right','&#8593; , K':'Navigate up','&#8595; , J':'Navigate down','Home':'First slide','End':'Last slide','B , .':'Pause','F':'Fullscreen','ESC, O':'Slide overview'};function initialize(options){checkCapabilities();if(!features.transforms2d&&!features.transforms3d){document.body.setAttribute('class','no-transforms');var images=document.getElementsByTagName('img');for(var i=0,len=images.length;i<len;i++){var image=images[i];if(image.getAttribute('data-src')){image.setAttribute('src',image.getAttribute('data-src'));image.removeAttribute('data-src');}}
1
+ (function(root,factory){if(typeof define==='function'&&define.amd){define(function(){root.Reveal=factory();return root.Reveal;});}else if(typeof exports==='object'){module.exports=factory();}else{root.Reveal=factory();}}(this,function(){'use strict';var Reveal;var SLIDES_SELECTOR='.slides section',HORIZONTAL_SLIDES_SELECTOR='.slides>section',VERTICAL_SLIDES_SELECTOR='.slides>section.present>section',HOME_SLIDE_SELECTOR='.slides>section:first-of-type',config={width:960,height:700,margin:0.1,minScale:0.2,maxScale:1.5,controls:true,progress:true,slideNumber:false,history:false,keyboard:true,keyboardCondition:null,overview:true,center:true,touch:true,loop:false,rtl:false,fragments:true,embedded:false,help:true,pause:true,autoSlide:0,autoSlideStoppable:true,mouseWheel:false,rollingLinks:false,hideAddressBar:true,previewLinks:false,postMessage:true,postMessageEvents:false,focusBodyOnPageVisibilityChange:true,transition:'slide',transitionSpeed:'default',backgroundTransition:'fade',parallaxBackgroundImage:'',parallaxBackgroundSize:'',parallaxBackgroundHorizontal:null,parallaxBackgroundVertical:null,viewDistance:3,dependencies:[]},loaded=false,overview=false,indexh,indexv,previousSlide,currentSlide,previousBackground,state=[],scale=1,slidesTransform={layout:'',overview:''},dom={},features={},isMobileDevice,lastMouseWheelStep=0,writeURLTimeout=0,eventsAreBound=false,autoSlide=0,autoSlidePlayer,autoSlideTimeout=0,autoSlideStartTime=-1,autoSlidePaused=false,touch={startX:0,startY:0,startSpan:0,startCount:0,captured:false,threshold:40},keyboardShortcuts={'N , SPACE':'Next slide','P':'Previous slide','&#8592; , H':'Navigate left','&#8594; , L':'Navigate right','&#8593; , K':'Navigate up','&#8595; , J':'Navigate down','Home':'First slide','End':'Last slide','B , .':'Pause','F':'Fullscreen','ESC, O':'Slide overview'};function initialize(options){checkCapabilities();if(!features.transforms2d&&!features.transforms3d){document.body.setAttribute('class','no-transforms');var images=toArray(document.getElementsByTagName('img')),iframes=toArray(document.getElementsByTagName('iframe'));var lazyLoadable=images.concat(iframes);for(var i=0,len=lazyLoadable.length;i<len;i++){var element=lazyLoadable[i];if(element.getAttribute('data-src')){element.setAttribute('src',element.getAttribute('data-src'));element.removeAttribute('data-src');}}
2
2
  return;}
3
3
  dom.wrapper=document.querySelector('.reveal');dom.slides=document.querySelector('.reveal .slides');window.addEventListener('load',layout,false);var query=Reveal.getQueryHash();if(typeof query['dependencies']!=='undefined')delete query['dependencies'];extend(config,options);extend(config,query);hideAddressBar();load();}
4
4
  function checkCapabilities(){features.transforms3d='WebkitPerspective'in document.body.style||'MozPerspective'in document.body.style||'msPerspective'in document.body.style||'OPerspective'in document.body.style||'perspective'in document.body.style;features.transforms2d='WebkitTransform'in document.body.style||'MozTransform'in document.body.style||'msTransform'in document.body.style||'OTransform'in document.body.style||'transform'in document.body.style;features.requestAnimationFrameMethod=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame;features.requestAnimationFrame=typeof features.requestAnimationFrameMethod==='function';features.canvas=!!document.createElement('canvas').getContext;features.touch=!!('ontouchstart'in window);features.overviewTransitions=!/Version\/[\d\.]+.*Safari/.test(navigator.userAgent);isMobileDevice=/(iphone|ipod|ipad|android)/gi.test(navigator.userAgent);}
@@ -108,8 +108,8 @@ function showHelp(){if(config.help){closeOverlay();dom.overlay=document.createEl
108
108
  html+='</table>';dom.overlay.innerHTML=['<header>','<a class="close" href="#"><span class="icon"></span></a>','</header>','<div class="viewport">','<div class="viewport-inner">'+html+'</div>','</div>'].join('');dom.overlay.querySelector('.close').addEventListener('click',function(event){closeOverlay();event.preventDefault();},false);setTimeout(function(){dom.overlay.classList.add('visible');},1);}}
109
109
  function closeOverlay(){if(dom.overlay){dom.overlay.parentNode.removeChild(dom.overlay);dom.overlay=null;}}
110
110
  function layout(){if(dom.wrapper&&!isPrintingPDF()){var size=getComputedSlideSize();var slidePadding=20;layoutSlideContents(config.width,config.height,slidePadding);dom.slides.style.width=size.width+'px';dom.slides.style.height=size.height+'px';scale=Math.min(size.presentationWidth/size.width,size.presentationHeight/size.height);scale=Math.max(scale,config.minScale);scale=Math.min(scale,config.maxScale);if(scale===1){dom.slides.style.zoom='';dom.slides.style.left='';dom.slides.style.top='';dom.slides.style.bottom='';dom.slides.style.right='';transformSlides({layout:''});}
111
- else{if(!isMobileDevice&&/chrome/i.test(navigator.userAgent)&&typeof dom.slides.style.zoom!=='undefined'){dom.slides.style.zoom=scale;dom.slides.style.marginTop=config.marginTop;dom.slides.style.marginLeft=config.marginLeft;transformSlides({layout:''});}
112
- else{dom.slides.style.marginTop=config.marginTop;dom.slides.style.marginLeft=config.marginLeft;dom.slides.style.marginBottom='auto';dom.slides.style.marginRight='auto';transformSlides({layout:'translate(-50%, -50%) scale('+scale+') translate(50%, 50%)'});}}
111
+ else{if(!isMobileDevice&&/chrome/i.test(navigator.userAgent)&&typeof dom.slides.style.zoom!=='undefined'){dom.slides.style.zoom=scale;transformSlides({layout:''});}
112
+ else{dom.slides.style.left='50%';dom.slides.style.top='50%';dom.slides.style.bottom='auto';dom.slides.style.right='auto';transformSlides({layout:'translate(-50%, -50%) scale('+scale+')'});}}
113
113
  var slides=toArray(dom.wrapper.querySelectorAll(SLIDES_SELECTOR));for(var i=0,len=slides.length;i<len;i++){var slide=slides[i];if(slide.style.display==='none'){continue;}
114
114
  if(config.center||slide.classList.contains('center')){if(slide.classList.contains('stack')){slide.style.top=0;}
115
115
  else{slide.style.top=Math.max(((size.height-getAbsoluteHeight(slide))/2)-slidePadding,0)+'px';}}
@@ -117,7 +117,7 @@ else{slide.style.top='';}}
117
117
  updateProgress();updateParallax();}}
118
118
  function layoutSlideContents(width,height,padding){toArray(dom.slides.querySelectorAll('section > .stretch')).forEach(function(element){var remainingHeight=getRemainingHeight(element,height);if(/(img|video)/gi.test(element.nodeName)){var nw=element.naturalWidth||element.videoWidth,nh=element.naturalHeight||element.videoHeight;var es=Math.min(width/nw,remainingHeight/nh);element.style.width=(nw*es)+'px';element.style.height=(nh*es)+'px';}
119
119
  else{element.style.width=width+'px';element.style.height=remainingHeight+'px';}});}
120
- function getComputedSlideSize(presentationWidth,presentationHeight){var size={width:config.width,height:config.height,presentationWidth:presentationWidth||dom.wrapper.offsetWidth,presentationHeight:presentationHeight||dom.wrapper.offsetHeight};size.presentationWidth-=(size.presentationHeight*config.margin);size.presentationHeight-=(size.presentationHeight*config.margin);if(typeof size.width==='string'&&/%$/.test(size.width)){size.width=parseInt(size.width,10)/100*size.presentationWidth;}
120
+ function getComputedSlideSize(presentationWidth,presentationHeight){var size={width:config.width,height:config.height,presentationWidth:presentationWidth||dom.wrapper.offsetWidth,presentationHeight:presentationHeight||dom.wrapper.offsetHeight};size.presentationWidth-=(size.presentationWidth*config.margin);size.presentationHeight-=(size.presentationHeight*config.margin);if(typeof size.width==='string'&&/%$/.test(size.width)){size.width=parseInt(size.width,10)/100*size.presentationWidth;}
121
121
  if(typeof size.height==='string'&&/%$/.test(size.height)){size.height=parseInt(size.height,10)/100*size.presentationHeight;}
122
122
  return size;}
123
123
  function setPreviousVerticalIndex(stack,v){if(typeof stack==='object'&&typeof stack.setAttribute==='function'){stack.setAttribute('data-previous-indexv',v||0);}}
@@ -155,7 +155,7 @@ else{previousSlide=null;}
155
155
  if(previousSlide){previousSlide.classList.remove('present');previousSlide.setAttribute('aria-hidden','true');if(dom.wrapper.querySelector(HOME_SLIDE_SELECTOR).classList.contains('present')){setTimeout(function(){var slides=toArray(dom.wrapper.querySelectorAll(HORIZONTAL_SLIDES_SELECTOR+'.stack')),i;for(i in slides){if(slides[i]){setPreviousVerticalIndex(slides[i],0);}}},0);}}
156
156
  if(slideChanged||!previousSlide){stopEmbeddedContent(previousSlide);startEmbeddedContent(currentSlide);}
157
157
  dom.statusDiv.textContent=currentSlide.textContent;updateControls();updateProgress();updateBackground();updateParallax();updateSlideNumber();writeURL();cueAutoSlide();}
158
- function sync(){removeEventListeners();addEventListeners();layout();autoSlide=config.autoSlide;cueAutoSlide();createBackgrounds();writeURL();sortAllFragments();updateControls();updateProgress();updateBackground(true);updateSlideNumber();updateSlidesVisibility();formatEmbeddedContent();if(isOverview()){layoutOverview();}}
158
+ function sync(){removeEventListeners();addEventListeners();layout();autoSlide=config.autoSlide;cueAutoSlide();createBackgrounds();writeURL();sortAllFragments();updateControls();updateProgress();updateBackground(true);updateSlideNumber();updateSlidesVisibility();formatEmbeddedContent();startEmbeddedContent(currentSlide);if(isOverview()){layoutOverview();}}
159
159
  function resetVerticalSlides(){var horizontalSlides=toArray(dom.wrapper.querySelectorAll(HORIZONTAL_SLIDES_SELECTOR));horizontalSlides.forEach(function(horizontalSlide){var verticalSlides=toArray(horizontalSlide.querySelectorAll('section'));verticalSlides.forEach(function(verticalSlide,y){if(y>0){verticalSlide.classList.remove('present');verticalSlide.classList.remove('past');verticalSlide.classList.add('future');verticalSlide.setAttribute('aria-hidden','true');}});});}
160
160
  function sortAllFragments(){var horizontalSlides=toArray(dom.wrapper.querySelectorAll(HORIZONTAL_SLIDES_SELECTOR));horizontalSlides.forEach(function(horizontalSlide){var verticalSlides=toArray(horizontalSlide.querySelectorAll('section'));verticalSlides.forEach(function(verticalSlide,y){sortFragments(verticalSlide.querySelectorAll('.fragment'));});if(verticalSlides.length===0)sortFragments(horizontalSlide.querySelectorAll('.fragment'));});}
161
161
  function updateSlides(selector,index){var slides=toArray(dom.wrapper.querySelectorAll(selector)),slidesLength=slides.length;var printMode=isPrintingPDF();if(slidesLength){if(config.loop){index%=slidesLength;if(index<0){index=slidesLength+index;}}
@@ -175,7 +175,7 @@ if(verticalSlidesLength){var oy=getPreviousVerticalIndex(horizontalSlide);for(va
175
175
  else{hideSlide(verticalSlide);}}}}}}
176
176
  function updateProgress(){if(config.progress&&dom.progressbar){dom.progressbar.style.width=getProgress()*dom.wrapper.offsetWidth+'px';}}
177
177
  function updateSlideNumber(){if(config.slideNumber&&dom.slideNumber){var format='c';if(typeof config.slideNumber==='string'){format=config.slideNumber;}
178
- var totalSlides=getTotalSlides();dom.slideNumber.innerHTML=format.replace(/h/g,indexh).replace(/v/g,indexv).replace(/c/g,Math.round(getProgress()*totalSlides)+1).replace(/t/g,totalSlides+1);}}
178
+ dom.slideNumber.innerHTML=format.replace(/h/g,indexh).replace(/v/g,indexv).replace(/c/g,getSlidePastCount()+1).replace(/t/g,getTotalSlides());}}
179
179
  function updateControls(){var routes=availableRoutes();var fragments=availableFragments();dom.controlsLeft.concat(dom.controlsRight).concat(dom.controlsUp).concat(dom.controlsDown).concat(dom.controlsPrev).concat(dom.controlsNext).forEach(function(node){node.classList.remove('enabled');node.classList.remove('fragmented');});if(routes.left)dom.controlsLeft.forEach(function(el){el.classList.add('enabled');});if(routes.right)dom.controlsRight.forEach(function(el){el.classList.add('enabled');});if(routes.up)dom.controlsUp.forEach(function(el){el.classList.add('enabled');});if(routes.down)dom.controlsDown.forEach(function(el){el.classList.add('enabled');});if(routes.left||routes.up)dom.controlsPrev.forEach(function(el){el.classList.add('enabled');});if(routes.right||routes.down)dom.controlsNext.forEach(function(el){el.classList.add('enabled');});if(currentSlide){if(fragments.prev)dom.controlsPrev.forEach(function(el){el.classList.add('fragmented','enabled');});if(fragments.next)dom.controlsNext.forEach(function(el){el.classList.add('fragmented','enabled');});if(isVerticalSlide(currentSlide)){if(fragments.prev)dom.controlsUp.forEach(function(el){el.classList.add('fragmented','enabled');});if(fragments.next)dom.controlsDown.forEach(function(el){el.classList.add('fragmented','enabled');});}
180
180
  else{if(fragments.prev)dom.controlsLeft.forEach(function(el){el.classList.add('fragmented','enabled');});if(fragments.next)dom.controlsRight.forEach(function(el){el.classList.add('fragmented','enabled');});}}}
181
181
  function updateBackground(includeAll){var currentBackground=null;var horizontalPast=config.rtl?'future':'past',horizontalFuture=config.rtl?'past':'future';toArray(dom.background.childNodes).forEach(function(backgroundh,h){backgroundh.classList.remove('past');backgroundh.classList.remove('present');backgroundh.classList.remove('future');if(h<indexh){backgroundh.classList.add(horizontalPast);}
@@ -198,7 +198,7 @@ else{horizontalOffsetMultiplier=(backgroundWidth-slideWidth)/(horizontalSlideCou
198
198
  horizontalOffset=horizontalOffsetMultiplier*indexh*-1;var slideHeight=dom.background.offsetHeight,verticalSlideCount=verticalSlides.length,verticalOffsetMultiplier,verticalOffset;if(typeof config.parallaxBackgroundVertical==='number'){verticalOffsetMultiplier=config.parallaxBackgroundVertical;}
199
199
  else{verticalOffsetMultiplier=(backgroundHeight-slideHeight)/(verticalSlideCount-1);}
200
200
  verticalOffset=verticalSlideCount>0?verticalOffsetMultiplier*indexv*1:0;dom.background.style.backgroundPosition=horizontalOffset+'px '+-verticalOffset+'px';}}
201
- function showSlide(slide){slide.style.display='block';toArray(slide.querySelectorAll('img[data-src], video[data-src], audio[data-src], iframe[data-src]')).forEach(function(element){element.setAttribute('src',element.getAttribute('data-src'));element.removeAttribute('data-src');});toArray(slide.querySelectorAll('video, audio')).forEach(function(media){var sources=0;toArray(media.querySelectorAll('source[data-src]')).forEach(function(source){source.setAttribute('src',source.getAttribute('data-src'));source.removeAttribute('data-src');sources+=1;});if(sources>0){media.load();}});var indices=getIndices(slide);var background=getSlideBackground(indices.h,indices.v);if(background){background.style.display='block';if(background.hasAttribute('data-loaded')===false){background.setAttribute('data-loaded','true');var backgroundImage=slide.getAttribute('data-background-image'),backgroundVideo=slide.getAttribute('data-background-video'),backgroundVideoLoop=slide.hasAttribute('data-background-video-loop'),backgroundIframe=slide.getAttribute('data-background-iframe');if(backgroundImage){background.style.backgroundImage='url('+backgroundImage+')';}
201
+ function showSlide(slide){slide.style.display='block';toArray(slide.querySelectorAll('img[data-src], video[data-src], audio[data-src]')).forEach(function(element){element.setAttribute('src',element.getAttribute('data-src'));element.removeAttribute('data-src');});toArray(slide.querySelectorAll('video, audio')).forEach(function(media){var sources=0;toArray(media.querySelectorAll('source[data-src]')).forEach(function(source){source.setAttribute('src',source.getAttribute('data-src'));source.removeAttribute('data-src');sources+=1;});if(sources>0){media.load();}});var indices=getIndices(slide);var background=getSlideBackground(indices.h,indices.v);if(background){background.style.display='block';if(background.hasAttribute('data-loaded')===false){background.setAttribute('data-loaded','true');var backgroundImage=slide.getAttribute('data-background-image'),backgroundVideo=slide.getAttribute('data-background-video'),backgroundVideoLoop=slide.hasAttribute('data-background-video-loop'),backgroundIframe=slide.getAttribute('data-background-iframe');if(backgroundImage){background.style.backgroundImage='url('+backgroundImage+')';}
202
202
  else if(backgroundVideo&&!isSpeakerNotes()){var video=document.createElement('video');if(backgroundVideoLoop){video.setAttribute('loop','');}
203
203
  backgroundVideo.split(',').forEach(function(source){video.innerHTML+='<source src="'+source+'">';});background.appendChild(video);}
204
204
  else if(backgroundIframe){var iframe=document.createElement('iframe');iframe.setAttribute('src',backgroundIframe);iframe.style.width='100%';iframe.style.height='100%';iframe.style.maxHeight='100%';iframe.style.maxWidth='100%';background.appendChild(iframe);}}}}
@@ -207,14 +207,18 @@ function availableRoutes(){var horizontalSlides=dom.wrapper.querySelectorAll(HOR
207
207
  return routes;}
208
208
  function availableFragments(){if(currentSlide&&config.fragments){var fragments=currentSlide.querySelectorAll('.fragment');var hiddenFragments=currentSlide.querySelectorAll('.fragment:not(.visible)');return{prev:fragments.length-hiddenFragments.length>0,next:!!hiddenFragments.length};}
209
209
  else{return{prev:false,next:false};}}
210
- function formatEmbeddedContent(){toArray(dom.slides.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(el){var src=el.getAttribute('src');if(!/enablejsapi\=1/gi.test(src)){el.setAttribute('src',src+(!/\?/.test(src)?'?':'&')+'enablejsapi=1');}});toArray(dom.slides.querySelectorAll('iframe[src*="player.vimeo.com/"]')).forEach(function(el){var src=el.getAttribute('src');if(!/api\=1/gi.test(src)){el.setAttribute('src',src+(!/\?/.test(src)?'?':'&')+'api=1');}});}
211
- function startEmbeddedContent(slide){if(slide&&!isSpeakerNotes()){toArray(slide.querySelectorAll('img[src$=".gif"]')).forEach(function(el){el.setAttribute('src',el.getAttribute('src'));});toArray(slide.querySelectorAll('video, audio')).forEach(function(el){if(el.hasAttribute('data-autoplay')){el.play();}});toArray(slide.querySelectorAll('iframe')).forEach(function(el){el.contentWindow.postMessage('slide:start','*');});toArray(slide.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(el){if(el.hasAttribute('data-autoplay')){el.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}','*');}});toArray(slide.querySelectorAll('iframe[src*="player.vimeo.com/"]')).forEach(function(el){if(el.hasAttribute('data-autoplay')){el.contentWindow.postMessage('{"method":"play"}','*');}});}}
212
- function stopEmbeddedContent(slide){if(slide&&slide.parentNode){toArray(slide.querySelectorAll('video, audio')).forEach(function(el){if(!el.hasAttribute('data-ignore')){el.pause();}});toArray(slide.querySelectorAll('iframe')).forEach(function(el){el.contentWindow.postMessage('slide:stop','*');});toArray(slide.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(el){if(!el.hasAttribute('data-ignore')&&typeof el.contentWindow.postMessage==='function'){el.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}','*');}});toArray(slide.querySelectorAll('iframe[src*="player.vimeo.com/"]')).forEach(function(el){if(!el.hasAttribute('data-ignore')&&typeof el.contentWindow.postMessage==='function'){el.contentWindow.postMessage('{"method":"pause"}','*');}});}}
213
- function getProgress(){var horizontalSlides=toArray(dom.wrapper.querySelectorAll(HORIZONTAL_SLIDES_SELECTOR));var totalCount=getTotalSlides();var pastCount=0;mainLoop:for(var i=0;i<horizontalSlides.length;i++){var horizontalSlide=horizontalSlides[i];var verticalSlides=toArray(horizontalSlide.querySelectorAll('section'));for(var j=0;j<verticalSlides.length;j++){if(verticalSlides[j].classList.contains('present')){break mainLoop;}
210
+ function formatEmbeddedContent(){var _appendParamToIframeSource=function(sourceAttribute,sourceURL,param){toArray(dom.slides.querySelectorAll('iframe['+sourceAttribute+'*="'+sourceURL+'"]')).forEach(function(el){var src=el.getAttribute(sourceAttribute);if(src&&src.indexOf(param)===-1){el.setAttribute(sourceAttribute,src+(!/\?/.test(src)?'?':'&')+param);}});};_appendParamToIframeSource('src','youtube.com/embed/','enablejsapi=1');_appendParamToIframeSource('data-src','youtube.com/embed/','enablejsapi=1');_appendParamToIframeSource('src','player.vimeo.com/','api=1');_appendParamToIframeSource('data-src','player.vimeo.com/','api=1');}
211
+ function startEmbeddedContent(slide){if(slide&&!isSpeakerNotes()){toArray(slide.querySelectorAll('img[src$=".gif"]')).forEach(function(el){el.setAttribute('src',el.getAttribute('src'));});toArray(slide.querySelectorAll('video, audio')).forEach(function(el){if(el.hasAttribute('data-autoplay')&&typeof el.play==='function'){el.play();}});toArray(slide.querySelectorAll('iframe[src]')).forEach(function(el){startEmbeddedIframe({target:el});});toArray(slide.querySelectorAll('iframe[data-src]')).forEach(function(el){if(el.getAttribute('src')!==el.getAttribute('data-src')){el.removeEventListener('load',startEmbeddedIframe);el.addEventListener('load',startEmbeddedIframe);el.setAttribute('src',el.getAttribute('data-src'));}});}}
212
+ function startEmbeddedIframe(event){var iframe=event.target;if(/youtube\.com\/embed\//.test(iframe.getAttribute('src'))&&iframe.hasAttribute('data-autoplay')){iframe.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}','*');}
213
+ else if(/player\.vimeo\.com\//.test(iframe.getAttribute('src'))&&iframe.hasAttribute('data-autoplay')){iframe.contentWindow.postMessage('{"method":"play"}','*');}
214
+ else{iframe.contentWindow.postMessage('slide:start','*');}}
215
+ function stopEmbeddedContent(slide){if(slide&&slide.parentNode){toArray(slide.querySelectorAll('video, audio')).forEach(function(el){if(!el.hasAttribute('data-ignore')&&typeof el.pause==='function'){el.pause();}});toArray(slide.querySelectorAll('iframe')).forEach(function(el){el.contentWindow.postMessage('slide:stop','*');el.removeEventListener('load',startEmbeddedIframe);});toArray(slide.querySelectorAll('iframe[src*="youtube.com/embed/"]')).forEach(function(el){if(!el.hasAttribute('data-ignore')&&typeof el.contentWindow.postMessage==='function'){el.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}','*');}});toArray(slide.querySelectorAll('iframe[src*="player.vimeo.com/"]')).forEach(function(el){if(!el.hasAttribute('data-ignore')&&typeof el.contentWindow.postMessage==='function'){el.contentWindow.postMessage('{"method":"pause"}','*');}});toArray(slide.querySelectorAll('iframe[data-src]')).forEach(function(el){el.setAttribute('src','about:blank');el.removeAttribute('src');});}}
216
+ function getSlidePastCount(){var horizontalSlides=toArray(dom.wrapper.querySelectorAll(HORIZONTAL_SLIDES_SELECTOR));var pastCount=0;mainLoop:for(var i=0;i<horizontalSlides.length;i++){var horizontalSlide=horizontalSlides[i];var verticalSlides=toArray(horizontalSlide.querySelectorAll('section'));for(var j=0;j<verticalSlides.length;j++){if(verticalSlides[j].classList.contains('present')){break mainLoop;}
214
217
  pastCount++;}
215
218
  if(horizontalSlide.classList.contains('present')){break;}
216
219
  if(horizontalSlide.classList.contains('stack')===false){pastCount++;}}
217
- if(currentSlide){var allFragments=currentSlide.querySelectorAll('.fragment');if(allFragments.length>0){var visibleFragments=currentSlide.querySelectorAll('.fragment.visible');var fragmentWeight=0.9;pastCount+=(visibleFragments.length/allFragments.length)*fragmentWeight;}}
220
+ return pastCount;}
221
+ function getProgress(){var totalCount=getTotalSlides();var pastCount=getSlidePastCount();if(currentSlide){var allFragments=currentSlide.querySelectorAll('.fragment');if(allFragments.length>0){var visibleFragments=currentSlide.querySelectorAll('.fragment.visible');var fragmentWeight=0.9;pastCount+=(visibleFragments.length/allFragments.length)*fragmentWeight;}}
218
222
  return pastCount/(totalCount-1);}
219
223
  function isSpeakerNotes(){return!!window.location.search.match(/receiver/gi);}
220
224
  function readURL(){var hash=window.location.hash;var bits=hash.slice(2).split('/'),name=hash.replace(/#|\//gi,'');if(isNaN(parseInt(bits[0],10))&&name.length){var element;if(/^[a-zA-Z][\w:.-]*$/.test(name)){element=document.getElementById(name);}
@@ -258,7 +262,8 @@ function cueAutoSlide(){cancelAutoSlide();if(currentSlide){var currentFragment=c
258
262
  else if(slideAutoSlide){autoSlide=parseInt(slideAutoSlide,10);}
259
263
  else if(parentAutoSlide){autoSlide=parseInt(parentAutoSlide,10);}
260
264
  else{autoSlide=config.autoSlide;}
261
- toArray(currentSlide.querySelectorAll('video, audio')).forEach(function(el){if(el.hasAttribute('data-autoplay')){if(autoSlide&&el.duration*1000>autoSlide){autoSlide=(el.duration*1000)+1000;}}});if(autoSlide&&!autoSlidePaused&&!isPaused()&&!isOverview()&&(!Reveal.isLastSlide()||availableFragments().next||config.loop===true)){autoSlideTimeout=setTimeout(navigateNext,autoSlide);autoSlideStartTime=Date.now();}
265
+ if(currentSlide.querySelectorAll('.fragment').length===0){toArray(currentSlide.querySelectorAll('video, audio')).forEach(function(el){if(el.hasAttribute('data-autoplay')){if(autoSlide&&el.duration*1000>autoSlide){autoSlide=(el.duration*1000)+1000;}}});}
266
+ if(autoSlide&&!autoSlidePaused&&!isPaused()&&!isOverview()&&(!Reveal.isLastSlide()||availableFragments().next||config.loop===true)){autoSlideTimeout=setTimeout(navigateNext,autoSlide);autoSlideStartTime=Date.now();}
262
267
  if(autoSlidePlayer){autoSlidePlayer.setPlaying(autoSlideTimeout!==-1);}}}
263
268
  function cancelAutoSlide(){clearTimeout(autoSlideTimeout);autoSlideTimeout=-1;}
264
269
  function pauseAutoSlide(){if(autoSlide&&!autoSlidePaused){autoSlidePaused=true;dispatchEvent('autoslidepaused');clearTimeout(autoSlideTimeout);if(autoSlidePlayer){autoSlidePlayer.setPlaying(false);}}}