summary refs log tree commit diff stats
path: root/geschichte/js/controllers/overview.js
diff options
context:
space:
mode:
Diffstat (limited to 'geschichte/js/controllers/overview.js')
-rw-r--r--geschichte/js/controllers/overview.js255
1 files changed, 0 insertions, 255 deletions
diff --git a/geschichte/js/controllers/overview.js b/geschichte/js/controllers/overview.js
deleted file mode 100644
index 30e4c63..0000000
--- a/geschichte/js/controllers/overview.js
+++ /dev/null
@@ -1,255 +0,0 @@
-import { SLIDES_SELECTOR } from '../utils/constants.js'
-import { extend, queryAll, transformElement } from '../utils/util.js'
-
-/**
- * Handles all logic related to the overview mode
- * (birds-eye view of all slides).
- */
-export default class Overview {
-
-	constructor( Reveal ) {
-
-		this.Reveal = Reveal;
-
-		this.active = false;
-
-		this.onSlideClicked = this.onSlideClicked.bind( this );
-
-	}
-
-	/**
-	 * Displays the overview of slides (quick nav) by scaling
-	 * down and arranging all slide elements.
-	 */
-	activate() {
-
-		// Only proceed if enabled in config
-		if( this.Reveal.getConfig().overview && !this.isActive() ) {
-
-			this.active = true;
-
-			this.Reveal.getRevealElement().classList.add( 'overview' );
-
-			// Don't auto-slide while in overview mode
-			this.Reveal.cancelAutoSlide();
-
-			// Move the backgrounds element into the slide container to
-			// that the same scaling is applied
-			this.Reveal.getSlidesElement().appendChild( this.Reveal.getBackgroundsElement() );
-
-			// Clicking on an overview slide navigates to it
-			queryAll( this.Reveal.getRevealElement(), SLIDES_SELECTOR ).forEach( slide => {
-				if( !slide.classList.contains( 'stack' ) ) {
-					slide.addEventListener( 'click', this.onSlideClicked, true );
-				}
-			} );
-
-			// Calculate slide sizes
-			const margin = 70;
-			const slideSize = this.Reveal.getComputedSlideSize();
-			this.overviewSlideWidth = slideSize.width + margin;
-			this.overviewSlideHeight = slideSize.height + margin;
-
-			// Reverse in RTL mode
-			if( this.Reveal.getConfig().rtl ) {
-				this.overviewSlideWidth = -this.overviewSlideWidth;
-			}
-
-			this.Reveal.updateSlidesVisibility();
-
-			this.layout();
-			this.update();
-
-			this.Reveal.layout();
-
-			const indices = this.Reveal.getIndices();
-
-			// Notify observers of the overview showing
-			this.Reveal.dispatchEvent({
-				type: 'overviewshown',
-				data: {
-					'indexh': indices.h,
-					'indexv': indices.v,
-					'currentSlide': this.Reveal.getCurrentSlide()
-				}
-			});
-
-		}
-
-	}
-
-	/**
-	 * Uses CSS transforms to position all slides in a grid for
-	 * display inside of the overview mode.
-	 */
-	layout() {
-
-		// Layout slides
-		this.Reveal.getHorizontalSlides().forEach( ( hslide, h ) => {
-			hslide.setAttribute( 'data-index-h', h );
-			transformElement( hslide, 'translate3d(' + ( h * this.overviewSlideWidth ) + 'px, 0, 0)' );
-
-			if( hslide.classList.contains( 'stack' ) ) {
-
-				queryAll( hslide, 'section' ).forEach( ( vslide, v ) => {
-					vslide.setAttribute( 'data-index-h', h );
-					vslide.setAttribute( 'data-index-v', v );
-
-					transformElement( vslide, 'translate3d(0, ' + ( v * this.overviewSlideHeight ) + 'px, 0)' );
-				} );
-
-			}
-		} );
-
-		// Layout slide backgrounds
-		Array.from( this.Reveal.getBackgroundsElement().childNodes ).forEach( ( hbackground, h ) => {
-			transformElement( hbackground, 'translate3d(' + ( h * this.overviewSlideWidth ) + 'px, 0, 0)' );
-
-			queryAll( hbackground, '.slide-background' ).forEach( ( vbackground, v ) => {
-				transformElement( vbackground, 'translate3d(0, ' + ( v * this.overviewSlideHeight ) + 'px, 0)' );
-			} );
-		} );
-
-	}
-
-	/**
-	 * Moves the overview viewport to the current slides.
-	 * Called each time the current slide changes.
-	 */
-	update() {
-
-		const vmin = Math.min( window.innerWidth, window.innerHeight );
-		const scale = Math.max( vmin / 5, 150 ) / vmin;
-		const indices = this.Reveal.getIndices();
-
-		this.Reveal.transformSlides( {
-			overview: [
-				'scale('+ scale +')',
-				'translateX('+ ( -indices.h * this.overviewSlideWidth ) +'px)',
-				'translateY('+ ( -indices.v * this.overviewSlideHeight ) +'px)'
-			].join( ' ' )
-		} );
-
-	}
-
-	/**
-	 * Exits the slide overview and enters the currently
-	 * active slide.
-	 */
-	deactivate() {
-
-		// Only proceed if enabled in config
-		if( this.Reveal.getConfig().overview ) {
-
-			this.active = false;
-
-			this.Reveal.getRevealElement().classList.remove( 'overview' );
-
-			// Temporarily add a class so that transitions can do different things
-			// depending on whether they are exiting/entering overview, or just
-			// moving from slide to slide
-			this.Reveal.getRevealElement().classList.add( 'overview-deactivating' );
-
-			setTimeout( () => {
-				this.Reveal.getRevealElement().classList.remove( 'overview-deactivating' );
-			}, 1 );
-
-			// Move the background element back out
-			this.Reveal.getRevealElement().appendChild( this.Reveal.getBackgroundsElement() );
-
-			// Clean up changes made to slides
-			queryAll( this.Reveal.getRevealElement(), SLIDES_SELECTOR ).forEach( slide => {
-				transformElement( slide, '' );
-
-				slide.removeEventListener( 'click', this.onSlideClicked, true );
-			} );
-
-			// Clean up changes made to backgrounds
-			queryAll( this.Reveal.getBackgroundsElement(), '.slide-background' ).forEach( background => {
-				transformElement( background, '' );
-			} );
-
-			this.Reveal.transformSlides( { overview: '' } );
-
-			const indices = this.Reveal.getIndices();
-
-			this.Reveal.slide( indices.h, indices.v );
-			this.Reveal.layout();
-			this.Reveal.cueAutoSlide();
-
-			// Notify observers of the overview hiding
-			this.Reveal.dispatchEvent({
-				type: 'overviewhidden',
-				data: {
-					'indexh': indices.h,
-					'indexv': indices.v,
-					'currentSlide': this.Reveal.getCurrentSlide()
-				}
-			});
-
-		}
-	}
-
-	/**
-	 * Toggles the slide overview mode on and off.
-	 *
-	 * @param {Boolean} [override] Flag which overrides the
-	 * toggle logic and forcibly sets the desired state. True means
-	 * overview is open, false means it's closed.
-	 */
-	toggle( override ) {
-
-		if( typeof override === 'boolean' ) {
-			override ? this.activate() : this.deactivate();
-		}
-		else {
-			this.isActive() ? this.deactivate() : this.activate();
-		}
-
-	}
-
-	/**
-	 * Checks if the overview is currently active.
-	 *
-	 * @return {Boolean} true if the overview is active,
-	 * false otherwise
-	 */
-	isActive() {
-
-		return this.active;
-
-	}
-
-	/**
-	 * Invoked when a slide is and we're in the overview.
-	 *
-	 * @param {object} event
-	 */
-	onSlideClicked( event ) {
-
-		if( this.isActive() ) {
-			event.preventDefault();
-
-			let element = event.target;
-
-			while( element && !element.nodeName.match( /section/gi ) ) {
-				element = element.parentNode;
-			}
-
-			if( element && !element.classList.contains( 'disabled' ) ) {
-
-				this.deactivate();
-
-				if( element.nodeName.match( /section/gi ) ) {
-					let h = parseInt( element.getAttribute( 'data-index-h' ), 10 ),
-						v = parseInt( element.getAttribute( 'data-index-v' ), 10 );
-
-					this.Reveal.slide( h, v );
-				}
-
-			}
-		}
-
-	}
-
-}
\ No newline at end of file