{"version":3,"file":"753.chunk-90619.js","mappings":"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","sources":["webpack://motion-entertainment/./node_modules/desandro-matches-selector/matches-selector.js","webpack://motion-entertainment/./node_modules/ev-emitter/ev-emitter.js","webpack://motion-entertainment/./node_modules/fizzy-ui-utils/utils.js","webpack://motion-entertainment/./node_modules/flickity-as-nav-for/as-nav-for.js","webpack://motion-entertainment/./node_modules/flickity-fade/flickity-fade.js","webpack://motion-entertainment/./node_modules/flickity/js/add-remove-cell.js","webpack://motion-entertainment/./node_modules/flickity/js/animate.js","webpack://motion-entertainment/./node_modules/flickity/js/cell.js","webpack://motion-entertainment/./node_modules/flickity/js/drag.js","webpack://motion-entertainment/./node_modules/flickity/js/flickity.js","webpack://motion-entertainment/./node_modules/flickity/js/index.js","webpack://motion-entertainment/./node_modules/flickity/js/lazyload.js","webpack://motion-entertainment/./node_modules/flickity/js/page-dots.js","webpack://motion-entertainment/./node_modules/flickity/js/player.js","webpack://motion-entertainment/./node_modules/flickity/js/prev-next-button.js","webpack://motion-entertainment/./node_modules/flickity/js/slide.js","webpack://motion-entertainment/./node_modules/get-size/get-size.js","webpack://motion-entertainment/./node_modules/unidragger/unidragger.js","webpack://motion-entertainment/./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","/*!\n * Flickity asNavFor v2.0.1\n * enable asNavFor for Flickity\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 if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'fizzy-ui-utils/utils'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( Flickity, utils ) {\n\n'use strict';\n\n// -------------------------- asNavFor prototype -------------------------- //\n\n// Flickity.defaults.asNavFor = null;\n\nFlickity.createMethods.push('_createAsNavFor');\n\nvar proto = Flickity.prototype;\n\nproto._createAsNavFor = function() {\n this.on( 'activate', this.activateAsNavFor );\n this.on( 'deactivate', this.deactivateAsNavFor );\n this.on( 'destroy', this.destroyAsNavFor );\n\n var asNavForOption = this.options.asNavFor;\n if ( !asNavForOption ) {\n return;\n }\n // HACK do async, give time for other flickity to be initalized\n var _this = this;\n setTimeout( function initNavCompanion() {\n _this.setNavCompanion( asNavForOption );\n });\n};\n\nproto.setNavCompanion = function( elem ) {\n elem = utils.getQueryElement( elem );\n var companion = Flickity.data( elem );\n // stop if no companion or companion is self\n if ( !companion || companion == this ) {\n return;\n }\n\n this.navCompanion = companion;\n // companion select\n var _this = this;\n this.onNavCompanionSelect = function() {\n _this.navCompanionSelect();\n };\n companion.on( 'select', this.onNavCompanionSelect );\n // click\n this.on( 'staticClick', this.onNavStaticClick );\n\n this.navCompanionSelect( true );\n};\n\nproto.navCompanionSelect = function( isInstant ) {\n if ( !this.navCompanion ) {\n return;\n }\n // select slide that matches first cell of slide\n var selectedCell = this.navCompanion.selectedCells[0];\n var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\n var lastIndex = firstIndex + this.navCompanion.selectedCells.length - 1;\n var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\n this.navCompanion.cellAlign ) );\n this.selectCell( selectIndex, false, isInstant );\n // set nav selected class\n this.removeNavSelectedElements();\n // stop if companion has more cells than this one\n if ( selectIndex >= this.cells.length ) {\n return;\n }\n\n var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\n this.navSelectedElements = selectedCells.map( function( cell ) {\n return cell.element;\n });\n this.changeNavSelectedClass('add');\n};\n\nfunction lerp( a, b, t ) {\n return ( b - a ) * t + a;\n}\n\nproto.changeNavSelectedClass = function( method ) {\n this.navSelectedElements.forEach( function( navElem ) {\n navElem.classList[ method ]('is-nav-selected');\n });\n};\n\nproto.activateAsNavFor = function() {\n this.navCompanionSelect( true );\n};\n\nproto.removeNavSelectedElements = function() {\n if ( !this.navSelectedElements ) {\n return;\n }\n this.changeNavSelectedClass('remove');\n delete this.navSelectedElements;\n};\n\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\n if ( typeof cellIndex == 'number' ) {\n this.navCompanion.selectCell( cellIndex );\n }\n};\n\nproto.deactivateAsNavFor = function() {\n this.removeNavSelectedElements();\n};\n\nproto.destroyAsNavFor = function() {\n if ( !this.navCompanion ) {\n return;\n }\n this.navCompanion.off( 'select', this.onNavCompanionSelect );\n this.off( 'staticClick', this.onNavStaticClick );\n delete this.navCompanion;\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n","/**\n * Flickity fade v1.0.0\n * Fade between Flickity slides\n */\n\n/* jshint browser: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'fizzy-ui-utils/utils',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( this, function factory( Flickity, utils ) {\n\n// ---- Slide ---- //\n\nvar Slide = Flickity.Slide;\n\nvar slideUpdateTarget = Slide.prototype.updateTarget;\nSlide.prototype.updateTarget = function() {\n slideUpdateTarget.apply( this, arguments );\n if ( !this.parent.options.fade ) {\n return;\n }\n // position cells at selected target\n var slideTargetX = this.target - this.x;\n var firstCellX = this.cells[0].x;\n this.cells.forEach( function( cell ) {\n var targetX = cell.x - firstCellX - slideTargetX;\n cell.renderPosition( targetX );\n });\n};\n\nSlide.prototype.setOpacity = function( alpha ) {\n this.cells.forEach( function( cell ) {\n cell.element.style.opacity = alpha;\n });\n};\n\n// ---- Flickity ---- //\n\nvar proto = Flickity.prototype;\n\nFlickity.createMethods.push('_createFade');\n\nproto._createFade = function() {\n this.fadeIndex = this.selectedIndex;\n this.prevSelectedIndex = this.selectedIndex;\n this.on( 'select', this.onSelectFade );\n this.on( 'dragEnd', this.onDragEndFade );\n this.on( 'settle', this.onSettleFade );\n this.on( 'activate', this.onActivateFade );\n this.on( 'deactivate', this.onDeactivateFade );\n};\n\nvar updateSlides = proto.updateSlides;\nproto.updateSlides = function() {\n updateSlides.apply( this, arguments );\n if ( !this.options.fade ) {\n return;\n }\n // set initial opacity\n this.slides.forEach( function( slide, i ) {\n var alpha = i == this.selectedIndex ? 1 : 0;\n slide.setOpacity( alpha );\n }, this );\n};\n\n/* ---- events ---- */\n\nproto.onSelectFade = function() {\n // in case of resize, keep fadeIndex within current count\n this.fadeIndex = Math.min( this.prevSelectedIndex, this.slides.length - 1 );\n this.prevSelectedIndex = this.selectedIndex;\n};\n\nproto.onSettleFade = function() {\n delete this.didDragEnd;\n if ( !this.options.fade ) {\n return;\n }\n // set full and 0 opacity on selected & faded slides\n this.selectedSlide.setOpacity( 1 );\n var fadedSlide = this.slides[ this.fadeIndex ];\n if ( fadedSlide && this.fadeIndex != this.selectedIndex ) {\n this.slides[ this.fadeIndex ].setOpacity( 0 );\n }\n};\n\nproto.onDragEndFade = function() {\n // set flag\n this.didDragEnd = true;\n};\n\nproto.onActivateFade = function() {\n if ( this.options.fade ) {\n this.element.classList.add('is-fade');\n }\n};\n\nproto.onDeactivateFade = function() {\n if ( !this.options.fade ) {\n return;\n }\n this.element.classList.remove('is-fade');\n // reset opacity\n this.slides.forEach( function( slide ) {\n slide.setOpacity('');\n });\n};\n\n/* ---- position & fading ---- */\n\nvar positionSlider = proto.positionSlider;\nproto.positionSlider = function() {\n if ( !this.options.fade ) {\n positionSlider.apply( this, arguments );\n return;\n }\n\n this.fadeSlides();\n this.dispatchScrollEvent();\n};\n\nvar positionSliderAtSelected = proto.positionSliderAtSelected;\nproto.positionSliderAtSelected = function() {\n if ( this.options.fade ) {\n // position fade slider at origin\n this.setTranslateX( 0 );\n }\n positionSliderAtSelected.apply( this, arguments );\n};\n\nproto.fadeSlides = function() {\n if ( this.slides.length < 2 ) {\n return;\n }\n // get slides to fade-in & fade-out\n var indexes = this.getFadeIndexes();\n var fadeSlideA = this.slides[ indexes.a ];\n var fadeSlideB = this.slides[ indexes.b ];\n var distance = this.wrapDifference( fadeSlideA.target, fadeSlideB.target );\n var progress = this.wrapDifference( fadeSlideA.target, -this.x );\n progress = progress / distance;\n\n fadeSlideA.setOpacity( 1 - progress );\n fadeSlideB.setOpacity( progress );\n\n // hide previous slide\n var fadeHideIndex = indexes.a;\n if ( this.isDragging ) {\n fadeHideIndex = progress > 0.5 ? indexes.a : indexes.b;\n }\n var isNewHideIndex = this.fadeHideIndex != undefined &&\n this.fadeHideIndex != fadeHideIndex &&\n this.fadeHideIndex != indexes.a &&\n this.fadeHideIndex != indexes.b;\n if ( isNewHideIndex ) {\n // new fadeHideSlide set, hide previous\n this.slides[ this.fadeHideIndex ].setOpacity( 0 );\n }\n this.fadeHideIndex = fadeHideIndex;\n};\n\nproto.getFadeIndexes = function() {\n if ( !this.isDragging && !this.didDragEnd ) {\n return {\n a: this.fadeIndex,\n b: this.selectedIndex,\n };\n }\n if ( this.options.wrapAround ) {\n return this.getFadeDragWrapIndexes();\n } else {\n return this.getFadeDragLimitIndexes();\n }\n};\n\nproto.getFadeDragWrapIndexes = function() {\n var distances = this.slides.map( function( slide, i ) {\n return this.getSlideDistance( -this.x, i );\n }, this );\n var absDistances = distances.map( function( distance ) {\n return Math.abs( distance );\n });\n var minDistance = Math.min.apply( Math, absDistances );\n var closestIndex = absDistances.indexOf( minDistance );\n var distance = distances[ closestIndex ];\n var len = this.slides.length;\n\n var delta = distance >= 0 ? 1 : -1;\n return {\n a: closestIndex,\n b: utils.modulo( closestIndex + delta, len ),\n };\n};\n\nproto.getFadeDragLimitIndexes = function() {\n // calculate closest previous slide\n var dragIndex = 0;\n for ( var i=0; i < this.slides.length - 1; i++ ) {\n var slide = this.slides[i];\n if ( -this.x < slide.target ) {\n break;\n }\n dragIndex = i;\n }\n return {\n a: dragIndex,\n b: dragIndex + 1,\n };\n};\n\nproto.wrapDifference = function( a, b ) {\n var diff = b - a;\n\n if ( !this.options.wrapAround ) {\n return diff;\n }\n\n var diffPlus = diff + this.slideableWidth;\n var diffMinus = diff - this.slideableWidth;\n if ( Math.abs( diffPlus ) < Math.abs( diff ) ) {\n diff = diffPlus;\n }\n if ( Math.abs( diffMinus ) < Math.abs( diff ) ) {\n diff = diffMinus;\n }\n return diff;\n};\n\n// ---- wrapAround ---- //\n\nvar _getWrapShiftCells = proto._getWrapShiftCells;\nproto._getWrapShiftCells = function() {\n if ( !this.options.fade ) {\n _getWrapShiftCells.apply( this, arguments );\n }\n};\n\nvar shiftWrapCells = proto.shiftWrapCells;\nproto.shiftWrapCells = function() {\n if ( !this.options.fade ) {\n shiftWrapCells.apply( this, arguments );\n }\n};\n\nreturn Flickity;\n\n}));\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\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 /* jshint strict: false */\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 tranforms 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 /* jshint strict: false */\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};\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.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 side = this.parent.originSide;\n this.element.style[ side ] = this.parent.getPositionValue( x );\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 /* jshint strict: false */\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\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\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 // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n // #457, RubaXa/Sortable#973\n if ( isTouch && !isTouchmoveScrollCanceled ) {\n window.addEventListener( 'touchmove', function() {} );\n isTouchmoveScrollCanceled = true;\n }\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 /* jshint strict: false */\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 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 if ( !this.isActive ) {\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.2.1\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-2020 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\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 /* jshint strict: false*/\n return Flickity;\n} );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\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 'source[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 /* jshint strict: false */\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 /* jshint strict: false */\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 /* jshint strict: false */\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 /* jshint strict: false */\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","method","elem","selector","EvEmitter","proto","on","eventName","listener","events","this","_events","listeners","indexOf","push","once","onceEvents","_onceEvents","off","index","splice","emitEvent","args","slice","onceListeners","apply","allOff","utils","a","b","prop","num","div","arraySlice","Array","makeArray","obj","isArray","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","createMethods","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavForOption","asNavFor","setNavCompanion","companion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","isInstant","selectedCell","selectedCells","firstIndex","cells","lastIndex","selectIndex","Math","floor","t","cellAlign","selectCell","removeNavSelectedElements","navSelectedElements","map","cell","element","changeNavSelectedClass","navElem","classList","pointer","cellElement","cellIndex","Slide","slideUpdateTarget","updateTarget","parent","fade","slideTargetX","target","x","firstCellX","targetX","renderPosition","setOpacity","alpha","style","opacity","_createFade","fadeIndex","selectedIndex","prevSelectedIndex","onSelectFade","onDragEndFade","onSettleFade","onActivateFade","onDeactivateFade","updateSlides","slides","slide","min","didDragEnd","selectedSlide","add","remove","positionSlider","fadeSlides","dispatchScrollEvent","positionSliderAtSelected","setTranslateX","indexes","getFadeIndexes","fadeSlideA","fadeSlideB","distance","wrapDifference","progress","fadeHideIndex","isDragging","undefined","wrapAround","getFadeDragWrapIndexes","getFadeDragLimitIndexes","distances","getSlideDistance","absDistances","abs","minDistance","closestIndex","len","delta","modulo","dragIndex","diff","diffPlus","slideableWidth","diffMinus","_getWrapShiftCells","shiftWrapCells","insert","_makeCells","fragment","createDocumentFragment","appendChild","getCellsFragment","isAppend","slider","insertCellElement","insertBefore","endCells","_sizeCells","cellChange","append","prepend","getCells","minCellIndex","cellSizeChange","getCell","getSize","changedCellIndex","isPositioningSlider","prevSelectedElem","selectedElement","_positionCells","setGallerySize","getCellSlideIndex","select","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","settle","requestAnimationFrame","is3d","cursorPosition","rightToLeft","translateX","getPositionValue","transform","firstSlide","positionX","slidesWidth","dispatchEvent","velocity","position","percentPosition","round","size","innerWidth","isPointerDown","isFreeScrolling","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","shift","cellShift","wrapShift","outerWidth","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","selectedAttraction","Cell","create","setAttribute","destroy","unselect","side","originSide","removeAttribute","setPosition","setDefaultTarget","marginProperty","width","removeChild","Unidragger","extend","defaults","draggable","dragThreshold","_touchActionValue","isTouch","isTouchmoveScrollCanceled","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","viewport","bindHandles","unbindHandles","bindDrag","unbindDrag","pointerDown","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","activeElement","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","pageX","pageY","_bindPostStartEvents","focusNodes","INPUT","TEXTAREA","SELECT","pageXOffset","y","pageYOffset","nodeName","focus","isTouchStart","isTouchPointer","pointerType","isFocusNode","preventDefault","hasDragStarted","moveVector","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","positiveResting","_getClosestResting","negativeResting","increment","Infinity","condition","contain","dist","minDist","isWrapAround","slideIndex","wrap","staticClick","clickedCell","getParentCell","cellElem","onscroll","scroll","scrollMoveX","scrollMoveY","_pointerDone","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","_filterFindCellElements","children","reloadCells","tabIndex","selectInitialIndex","isInitActivated","cellSelector","positionCells","getLastCell","maxCellHeight","cellX","startCell","outerHeight","_containSlides","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","_wrapSelect","prevIndex","wrapIndex","backWrapDelta","forewardWrapDelta","previous","next","unselectSelectedSlide","selectedElements","getCellElements","initialIndex","queryCell","value","getAdjacentCellElements","adjCount","cellElems","uiChange","childUIPointerDown","onresize","content","deactivate","onkeydown","isNotFocused","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","preventScroll","scrollTo","removeData","bridget","setJQuery","jq","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","lazyloadAttr","srcAttr","srcsetAttr","imgs","getCellLazyImages","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","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","svgURI","PrevNextButton","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","shape","path","pathMovements","arrowShape","x0","x1","y1","x2","y2","x3","onclick","enable","disabled","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","isOriginLeft","lastCell","lastMargin","getStyleSize","parseFloat","isNaN","logError","message","measurements","measurementsLength","getStyle","isBoxSizeOuter","isSetup","padding","borderStyle","borderWidth","boxSizing","documentElement","setup","nodeType","display","innerHeight","getZeroSize","offsetWidth","offsetHeight","isBorderBox","measurement","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","isOkay","_pointerReset","focused","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":""}