/**
 * The default reveal.js config object.
 */
export default {

	// The "normal" size of the presentation, aspect ratio will be preserved
	// when the presentation is scaled to fit different resolutions
	width: 960,
	height: 700,

	// Factor of the display size that should remain empty around the content
	margin: 0.04,

	// Bounds for smallest/largest possible scale to apply to content
	minScale: 0.2,
	maxScale: 2.0,

	// Display presentation control arrows
	controls: true,

	// Help the user learn the controls by providing hints, for example by
	// bouncing the down arrow when they first encounter a vertical slide
	controlsTutorial: true,

	// Determines where controls appear, "edges" or "bottom-right"
	controlsLayout: 'bottom-right',

	// Visibility rule for backwards navigation arrows; "faded", "hidden"
	// or "visible"
	controlsBackArrows: 'faded',

	// Display a presentation progress bar
	progress: true,

	// Display the page number of the current slide
	// - true:    Show slide number
	// - false:   Hide slide number
	//
	// Can optionally be set as a string that specifies the number formatting:
	// - "h.v":	  Horizontal . vertical slide number (default)
	// - "h/v":	  Horizontal / vertical slide number
	// - "c":	  Flattened slide number
	// - "c/t":	  Flattened slide number / total slides
	//
	// Alternatively, you can provide a function that returns the slide
	// number for the current slide. The function should take in a slide
	// object and return an array with one string [slideNumber] or
	// three strings [n1,delimiter,n2]. See #formatSlideNumber().
	slideNumber: false,

	// Can be used to limit the contexts in which the slide number appears
	// - "all":      Always show the slide number
	// - "print":    Only when printing to PDF
	// - "speaker":  Only in the speaker view
	showSlideNumber: 'all',

	// Use 1 based indexing for # links to match slide number (default is zero
	// based)
	hashOneBasedIndex: false,

	// Add the current slide number to the URL hash so that reloading the
	// page/copying the URL will return you to the same slide
	hash: false,

	// Flags if we should monitor the hash and change slides accordingly
	respondToHashChanges: true,

	// Enable support for jump-to-slide navigation shortcuts
	jumpToSlide: true,

	// Push each slide change to the browser history.  Implies `hash: true`
	history: false,

	// Enable keyboard shortcuts for navigation
	keyboard: true,

	// Optional function that blocks keyboard events when retuning false
	//
	// If you set this to 'focused', we will only capture keyboard events
	// for embedded decks when they are in focus
	keyboardCondition: null,

	// Disables the default reveal.js slide layout (scaling and centering)
	// so that you can use custom CSS layout
	disableLayout: false,

	// Enable the slide overview mode
	overview: true,

	// Vertical centering of slides
	center: true,

	// Enables touch navigation on devices with touch input
	touch: true,

	// Loop the presentation
	loop: false,

	// Change the presentation direction to be RTL
	rtl: false,

	// Changes the behavior of our navigation directions.
	//
	// "default"
	// Left/right arrow keys step between horizontal slides, up/down
	// arrow keys step between vertical slides. Space key steps through
	// all slides (both horizontal and vertical).
	//
	// "linear"
	// Removes the up/down arrows. Left/right arrows step through all
	// slides (both horizontal and vertical).
	//
	// "grid"
	// When this is enabled, stepping left/right from a vertical stack
	// to an adjacent vertical stack will land you at the same vertical
	// index.
	//
	// Consider a deck with six slides ordered in two vertical stacks:
	// 1.1    2.1
	// 1.2    2.2
	// 1.3    2.3
	//
	// If you're on slide 1.3 and navigate right, you will normally move
	// from 1.3 -> 2.1. If "grid" is used, the same navigation takes you
	// from 1.3 -> 2.3.
	navigationMode: 'default',

	// Randomizes the order of slides each time the presentation loads
	shuffle: false,

	// Turns fragments on and off globally
	fragments: true,

	// Flags whether to include the current fragment in the URL,
	// so that reloading brings you to the same fragment position
	fragmentInURL: true,

	// Flags if the presentation is running in an embedded mode,
	// i.e. contained within a limited portion of the screen
	embedded: false,

	// Flags if we should show a help overlay when the question-mark
	// key is pressed
	help: true,

	// Flags if it should be possible to pause the presentation (blackout)
	pause: true,

	// Flags if speaker notes should be visible to all viewers
	showNotes: false,

	// Flags if slides with data-visibility="hidden" should be kep visible
	showHiddenSlides: false,

	// Global override for autoplaying embedded media (video/audio/iframe)
	// - null:   Media will only autoplay if data-autoplay is present
	// - true:   All media will autoplay, regardless of individual setting
	// - false:  No media will autoplay, regardless of individual setting
	autoPlayMedia: null,

	// Global override for preloading lazy-loaded iframes
	// - null:   Iframes with data-src AND data-preload will be loaded when within
	//           the viewDistance, iframes with only data-src will be loaded when visible
	// - true:   All iframes with data-src will be loaded when within the viewDistance
	// - false:  All iframes with data-src will be loaded only when visible
	preloadIframes: null,

	// Can be used to globally disable auto-animation
	autoAnimate: true,

	// Optionally provide a custom element matcher that will be
	// used to dictate which elements we can animate between.
	autoAnimateMatcher: null,

	// Default settings for our auto-animate transitions, can be
	// overridden per-slide or per-element via data arguments
	autoAnimateEasing: 'ease',
	autoAnimateDuration: 1.0,
	autoAnimateUnmatched: true,

	// CSS properties that can be auto-animated. Position & scale
	// is matched separately so there's no need to include styles
	// like top/right/bottom/left, width/height or margin.
	autoAnimateStyles: [
		'opacity',
		'color',
		'background-color',
		'padding',
		'font-size',
		'line-height',
		'letter-spacing',
		'border-width',
		'border-color',
		'border-radius',
		'outline',
		'outline-offset'
	],

	// Controls automatic progression to the next slide
	// - 0:      Auto-sliding only happens if the data-autoslide HTML attribute
	//           is present on the current slide or fragment
	// - 1+:     All slides will progress automatically at the given interval
	// - false:  No auto-sliding, even if data-autoslide is present
	autoSlide: 0,

	// Stop auto-sliding after user input
	autoSlideStoppable: true,

	// Use this method for navigation when auto-sliding (defaults to navigateNext)
	autoSlideMethod: null,

	// Specify the average time in seconds that you think you will spend
	// presenting each slide. This is used to show a pacing timer in the
	// speaker view
	defaultTiming: null,

	// Enable slide navigation via mouse wheel
	mouseWheel: false,

	// Opens links in an iframe preview overlay
	// Add `data-preview-link` and `data-preview-link="false"` to customise each link
	// individually
	previewLinks: false,

	// Exposes the reveal.js API through window.postMessage
	postMessage: true,

	// Dispatches all reveal.js events to the parent window through postMessage
	postMessageEvents: false,

	// Focuses body when page changes visibility to ensure keyboard shortcuts work
	focusBodyOnPageVisibilityChange: true,

	// Transition style
	transition: 'slide', // none/fade/slide/convex/concave/zoom

	// Transition speed
	transitionSpeed: 'default', // default/fast/slow

	// Transition style for full page slide backgrounds
	backgroundTransition: 'fade', // none/fade/slide/convex/concave/zoom

	// Parallax background image
	parallaxBackgroundImage: '', // CSS syntax, e.g. "a.jpg"

	// Parallax background size
	parallaxBackgroundSize: '', // CSS syntax, e.g. "3000px 2000px"

	// Parallax background repeat
	parallaxBackgroundRepeat: '', // repeat/repeat-x/repeat-y/no-repeat/initial/inherit

	// Parallax background position
	parallaxBackgroundPosition: '', // CSS syntax, e.g. "top left"

	// Amount of pixels to move the parallax background per slide step
	parallaxBackgroundHorizontal: null,
	parallaxBackgroundVertical: null,

	// Can be used to initialize reveal.js in one of the following views:
	// - print:   Render the presentation so that it can be printed to PDF
	// - scroll:  Show the presentation as a tall scrollable page with scroll
	//            triggered animations
	view: null,

	// Adjusts the height of each slide in the scroll view.
	// - full:       Each slide is as tall as the viewport
	// - compact:    Slides are as small as possible, allowing multiple slides
	//               to be visible in parallel on tall devices
	scrollLayout: 'full',

	// Control how scroll snapping works in the scroll view.
	// - false:   	No snapping, scrolling is continuous
	// - proximity:  Snap when close to a slide
	// - mandatory:  Always snap to the closest slide
	//
	// Only applies to presentations in scroll view.
	scrollSnap: 'mandatory',

	// Enables and configure the scroll view progress bar.
	// - 'auto':    Show the scrollbar while scrolling, hide while idle
	// - true:      Always show the scrollbar
	// - false:     Never show the scrollbar
	scrollProgress: 'auto',

	// Automatically activate the scroll view when we the viewport falls
	// below the given width.
	scrollActivationWidth: 435,

	// The maximum number of pages a single slide can expand onto when printing
	// to PDF, unlimited by default
	pdfMaxPagesPerSlide: Number.POSITIVE_INFINITY,

	// Prints each fragment on a separate slide
	pdfSeparateFragments: true,

	// Offset used to reduce the height of content within exported PDF pages.
	// This exists to account for environment differences based on how you
	// print to PDF. CLI printing options, like phantomjs and wkpdf, can end
	// on precisely the total height of the document whereas in-browser
	// printing has to end one pixel before.
	pdfPageHeightOffset: -1,

	// Number of slides away from the current that are visible
	viewDistance: 3,

	// Number of slides away from the current that are visible on mobile
	// devices. It is advisable to set this to a lower number than
	// viewDistance in order to save resources.
	mobileViewDistance: 2,

	// The display mode that will be used to show slides
	display: 'block',

	// Hide cursor if inactive
	hideInactiveCursor: true,

	// Time before the cursor is hidden (in ms)
	hideCursorTime: 5000,

	// Should we automatically sort and set indices for fragments
	// at each sync? (See Reveal.sync)
	sortFragmentsOnSync: true,

	// Script dependencies to load
	dependencies: [],

	// Plugin objects to register and use for this presentation
	plugins: []

}