|
@@ -27,8 +27,16 @@ export default class AutoAnimate {
|
|
|
// Clean up after prior animations
|
|
|
this.reset();
|
|
|
|
|
|
- // Ensure that both slides are auto-animate targets
|
|
|
- if( fromSlide.hasAttribute( 'data-auto-animate' ) && toSlide.hasAttribute( 'data-auto-animate' ) ) {
|
|
|
+ let allSlides = this.Reveal.getSlides();
|
|
|
+ let toSlideIndex = allSlides.indexOf( toSlide );
|
|
|
+ let fromSlideIndex = allSlides.indexOf( fromSlide );
|
|
|
+
|
|
|
+ // Ensure that both slides are auto-animate targets with the same data-auto-animate-id value
|
|
|
+ // (including null if absent on both) and that data-auto-animate-restart isn't set on the
|
|
|
+ // physically latter slide (independent of slide direction)
|
|
|
+ if( fromSlide.hasAttribute( 'data-auto-animate' ) && toSlide.hasAttribute( 'data-auto-animate' )
|
|
|
+ && fromSlide.getAttribute( 'data-auto-animate-id' ) === toSlide.getAttribute( 'data-auto-animate-id' )
|
|
|
+ && !( toSlideIndex > fromSlideIndex ? toSlide : fromSlide ).hasAttribute( 'data-auto-animate-restart' ) ) {
|
|
|
|
|
|
// Create a new auto-animate sheet
|
|
|
this.autoAnimateStyleSheet = this.autoAnimateStyleSheet || createStyleSheet();
|
|
@@ -40,8 +48,7 @@ export default class AutoAnimate {
|
|
|
toSlide.dataset.autoAnimate = 'pending';
|
|
|
|
|
|
// Flag the navigation direction, needed for fragment buildup
|
|
|
- let allSlides = this.Reveal.getSlides();
|
|
|
- animationOptions.slideDirection = allSlides.indexOf( toSlide ) > allSlides.indexOf( fromSlide ) ? 'forward' : 'backward';
|
|
|
+ animationOptions.slideDirection = toSlideIndex > fromSlideIndex ? 'forward' : 'backward';
|
|
|
|
|
|
// Inject our auto-animate styles for this transition
|
|
|
let css = this.getAutoAnimatableElements( fromSlide, toSlide ).map( elements => {
|