{"version":3,"file":"js/6055.3474256d0152dbb2.js","mappings":"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","sources":["webpack://@sazka/web/../../node_modules/desandro-matches-selector/matches-selector.js","webpack://@sazka/web/../../node_modules/ev-emitter/ev-emitter.js","webpack://@sazka/web/../../node_modules/fizzy-ui-utils/utils.js","webpack://@sazka/web/../../node_modules/flickity/js/add-remove-cell.js","webpack://@sazka/web/../../node_modules/flickity/js/animate.js","webpack://@sazka/web/../../node_modules/flickity/js/cell.js","webpack://@sazka/web/../../node_modules/flickity/js/drag.js","webpack://@sazka/web/../../node_modules/flickity/js/flickity.js","webpack://@sazka/web/../../node_modules/flickity/js/index.js","webpack://@sazka/web/../../node_modules/flickity/js/lazyload.js","webpack://@sazka/web/../../node_modules/flickity/js/page-dots.js","webpack://@sazka/web/../../node_modules/flickity/js/player.js","webpack://@sazka/web/../../node_modules/flickity/js/prev-next-button.js","webpack://@sazka/web/../../node_modules/flickity/js/slide.js","webpack://@sazka/web/../../node_modules/get-size/get-size.js","webpack://@sazka/web/../../node_modules/unidragger/unidragger.js","webpack://@sazka/web/../../node_modules/unipointer/unipointer.js"],"sourcesContent":["/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n } );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils',\n ], function( utils ) {\n return factory( window, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x -= this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 ) + '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown &&\n Math.round( this.x * 100 ) == Math.round( previousX * 100 );\n if ( isResting ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i = 0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i = 0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n ], function( getSize ) {\n return factory( window, getSize );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n this.element.style[ this.parent.originSide ] = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n this.element.style.transform = '';\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n\n var adjustedX = this.parent.options.percentPosition ?\n x * sideOffset * ( this.parent.size.innerWidth / this.size.width ) :\n x * sideOffset;\n\n this.element.style.transform = 'translateX(' +\n this.parent.getPositionValue( adjustedX ) + ')';\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n */\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n","// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( dist, minDist ) {\n return dist <= minDist;\n } : function( dist, minDist ) {\n return dist < minDist;\n };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment,\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n if ( instance ) instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i = index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match( /^(\\d+)%$/ );\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i = 0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i = 0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if ( !this.isActive || this.isAnimating || this.isDragging ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n } );\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n} ) );\n","/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n} )( window, function factory( Flickity ) {\n return Flickity;\n} );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n } );\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity',\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg' );\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path' );\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30,\n },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n","// slide\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n } );\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n } );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\nreturn Slide;\n\n} ) );\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","/*!\n * Unidragger v2.4.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n for ( var i=0; i < this.handles.length; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isAdd );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if ( window.PointerEvent ) {\n handle.style.touchAction = touchAction;\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n var isCursorNode = cursorNodes[ event.target.nodeName ];\n var isClickType = clickTypes[ event.target.type ];\n var isOkay = !isCursorNode || isClickType;\n if ( !isOkay ) {\n this._pointerReset();\n }\n return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n var focused = document.activeElement;\n // do not blur body for IE10, metafizzy/flickity#117\n var canBlur = focused && focused.blur && focused != document.body;\n if ( canBlur ) {\n focused.blur();\n }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n };\n // start drag if pointer has moved far enough to start drag\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n this._dragStart( event, pointer );\n }\n return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n if ( this.isDragging ) {\n this._dragEnd( event, pointer );\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick( event, pointer );\n }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n // do not drag if not dragging yet\n if ( !this.isDragging ) {\n return;\n }\n\n this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout( function() {\n delete this.isPreventingClicks;\n }.bind( this ) );\n\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\n\n this.staticClick( event, pointer );\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout( function() {\n delete this.isIgnoringMouseUp;\n }.bind( this ), 400 );\n }\n};\n\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\n}));\n","/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ( 'ontouchstart' in window ) {\n // HACK prefer Touch Events as you can preventDefault on touchstart to\n // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n startEvent = 'touchstart';\n } else if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n }\n elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n"],"names":["window","factory","matchesMethod","ElemProto","Element","prototype","matches","matchesSelector","prefixes","i","length","prefix","method","elem","selector","global","EvEmitter","proto","on","eventName","listener","events","this","_events","listeners","indexOf","push","once","onceEvents","_onceEvents","onceListeners","off","index","splice","emitEvent","args","slice","isOnce","apply","allOff","utils","a","b","prop","num","div","arraySlice","Array","makeArray","obj","isArray","undefined","isArrayLike","call","removeFrom","ary","getParent","parentNode","document","body","getQueryElement","querySelector","handleEvent","event","type","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","methodName","threshold","timeoutName","timeout","clearTimeout","arguments","_this","setTimeout","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","console","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","jQuery","options","attr","getAttribute","JSON","parse","error","className","instance","data","Flickity","getCellsFragment","cells","fragment","createDocumentFragment","cell","appendChild","element","insert","_makeCells","len","isAppend","slider","insertCellElement","insertBefore","endCells","_sizeCells","cellChange","append","prepend","remove","getCells","minCellIndex","Math","min","cellSizeChange","getCell","getSize","changedCellIndex","isPositioningSlider","prevSelectedElem","selectedElement","_positionCells","_getWrapShiftCells","setGallerySize","selectedIndex","getCellSlideIndex","slides","select","positionSliderAtSelected","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","x","integratePhysics","positionSlider","settle","requestAnimationFrame","wrapAround","modulo","slideableWidth","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","getPositionValue","style","transform","firstSlide","positionX","target","progress","slidesWidth","dispatchEvent","selectedSlide","velocity","position","percentPosition","round","size","innerWidth","isResting","isPointerDown","isFreeScrolling","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","shift","cellShift","wrapShift","outerWidth","getFrictionFactor","force","isDraggable","dragVelocity","dragX","dragForce","applyForce","dragDown","distance","selectedAttraction","Cell","parent","create","setAttribute","originSide","destroy","unselect","side","removeAttribute","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","width","cellAlign","sideOffset","adjustedX","classList","add","removeChild","Unidragger","extend","defaults","draggable","dragThreshold","createMethods","_touchActionValue","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","viewport","bindHandles","unbindHandles","bindDrag","unbindDrag","pointerDown","pointer","isOkay","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","activeElement","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","pageX","pageY","_bindPostStartEvents","focusNodes","INPUT","TEXTAREA","SELECT","pageXOffset","y","pageYOffset","isFocusNode","nodeName","focus","isTouchStart","isTouchPointer","pointerType","preventDefault","hasDragStarted","moveVector","abs","pointerUp","isTouchScrolling","_dragPointerUp","pointerDone","removeEventListener","dragStart","dragStartPosition","startAnimation","pointerMove","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","max","endBound","getLastSlide","dragMoveTime","Date","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","isDragSelect","getSlideDistance","positiveResting","_getClosestResting","negativeResting","increment","minDistance","Infinity","condition","contain","dist","minDist","isWrapAround","slideIndex","slide","wrap","floor","delta","staticClick","clickedCell","getParentCell","cellElem","cellIndex","onscroll","scroll","scrollMoveX","scrollMoveY","_pointerDone","Slide","animatePrototype","getComputedStyle","moveElements","toElem","GUID","instances","queryElement","flickityGUID","option","$element","constructor","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","resize","id","guid","createElement","_createSlider","watchCSS","activate","opts","isActive","cellElems","_filterFindCellElements","children","reloadCells","tabIndex","selectInitialIndex","isInitActivated","cellSelector","positionCells","map","getLastCell","maxCellHeight","cellX","startCell","outerHeight","updateSlides","_containSlides","isOriginLeft","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","addCell","updateSelectedSlide","groupCells","number","parseInt","percentMatch","percent","_init","reposition","setCellAlign","cellAlignShorthands","center","left","right","shorthand","height","adaptiveHeight","_unshiftCells","gapX","_getGapCells","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","emitArgs","$event","jQEvent","Event","trigger","isWrap","isInstant","_wrapSelect","prevIndex","isWrapping","wrapIndex","backWrapDelta","forewardWrapDelta","previous","next","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","initialIndex","queryCell","selectCell","value","getAdjacentCellElements","adjCount","uiChange","childUIPointerDown","onresize","isDragging","watchOption","afterContent","content","deactivate","onkeydown","isNotFocused","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","preventScroll","scrollTo","removeData","bridget","setJQuery","jq","getCellLazyImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","src","srcset","onload","complete","onerror","Unipointer","PageDots","Object","holder","dots","handleClick","onClick","bind","setDots","bindStartEvent","unbindStartEvent","addDots","removeDots","count","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","isPageHidden","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","svgURI","PrevNextButton","getArrowMovements","shape","x0","x1","y1","x2","y2","x3","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","path","pathMovements","arrowShape","onclick","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","lastCell","lastMargin","getStyleSize","parseFloat","isValid","isNaN","noop","logError","message","measurements","measurementsLength","getZeroSize","innerHeight","measurement","getStyle","isBoxSizeOuter","isSetup","setup","padding","borderStyle","borderWidth","boxSizing","documentElement","nodeType","display","offsetWidth","offsetHeight","isBorderBox","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","_bindHandles","isAdd","bindMethod","touchAction","handle","_bindStartEvent","PointerEvent","cursorNodes","OPTION","clickTypes","radio","checkbox","button","submit","image","file","isCursorNode","isClickType","_pointerReset","focused","canBlur","blur","_dragStart","_dragEnd","_staticClick","isPreventingClicks","isIgnoringMouseUp","getPointerPoint","startEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointerId","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","onmouseup","_pointerUp","onpointerup","ontouchend","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel"],"sourceRoot":""}