{"mappings":"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","sources":["node_modules/flickity/js/flickity.js","node_modules/ev-emitter/ev-emitter.js","node_modules/get-size/get-size.js","node_modules/fizzy-ui-utils/utils.js","node_modules/desandro-matches-selector/matches-selector.js","node_modules/flickity/js/cell.js","node_modules/flickity/js/slide.js","node_modules/flickity/js/animate.js","node_modules/flickity/js/drag.js","node_modules/unidragger/unidragger.js","node_modules/unipointer/unipointer.js","node_modules/flickity/js/prev-next-button.js","node_modules/flickity/js/page-dots.js","node_modules/flickity/js/player.js","node_modules/flickity/js/add-remove-cell.js","node_modules/flickity/js/lazyload.js","node_modules/flickity/js/index.js","src/js/main.js"],"sourcesContent":["// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n if ( instance ) instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i = index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match( /^(\\d+)%$/ );\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i = 0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i = 0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if ( !this.isActive || this.isAnimating || this.isDragging ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n } );\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n} ) );\n","/**\n * 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 * 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 * 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 * 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","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n ], function( getSize ) {\n return factory( window, getSize );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n this.element.style[ this.parent.originSide ] = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n this.element.style.transform = '';\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n\n var adjustedX = this.parent.options.percentPosition ?\n x * sideOffset * ( this.parent.size.innerWidth / this.size.width ) :\n x * sideOffset;\n\n this.element.style.transform = 'translateX(' +\n this.parent.getPositionValue( adjustedX ) + ')';\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n */\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n","// slide\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n } );\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n } );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\nreturn Slide;\n\n} ) );\n","// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils',\n ], function( utils ) {\n return factory( window, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x -= this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 ) + '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown &&\n Math.round( this.x * 100 ) == Math.round( previousX * 100 );\n if ( isResting ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i = 0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i = 0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n","// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( dist, minDist ) {\n return dist <= minDist;\n } : function( dist, minDist ) {\n return dist < minDist;\n };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment,\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","/*!\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","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg' );\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path' );\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30,\n },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity',\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n } );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n } );\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n} )( window, function factory( Flickity ) {\n return Flickity;\n} );\n","const Flickity = require(\"flickity\");\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function (event) {\r\n preCheck();\r\n});\r\n\r\nlet isMobile;\r\nfunction preCheck() {\r\n isMobile = window.innerWidth < 1024;\r\n isModernBrowser = \"visibilityState\" in document;\r\n init();\r\n window.addEventListener('resize', init);\r\n}\r\nfunction init() {\r\n isMobile = window.innerWidth < 1024; // Update isMobile on resize\r\n if (isMobile) {\r\n navigationMobile.init();\r\n searchMobile.init();\r\n }\r\n iframeTitle.init();\r\n navigationDesktop.init();\r\n accordions2023.init();\r\n tabs2023.init();\r\n statsAnimated.init();\r\n promoBlockPopUp.init();\r\n banner__hp__2023.init();\r\n imageTransition.init();\r\n smoothScroll.init();\r\n scrollToTargetWithOffset.init();\r\n skipToMainContent.init();\r\n ar2023.init();\r\n\r\n}\r\n\r\nvar ar2023 = {\r\n init: function(){\r\n\r\n setTimeout(() => {\r\n const arArrow = document.querySelector('.banner__ar__2023 .arrow_floating');\r\n const imgTopAr = document.querySelector(\".banner__ar__2023 .image-top\");\r\n if (arArrow){\r\n arArrow.classList.add('new-class');\r\n }\r\n if (imgTopAr){\r\n imgTopAr.classList.add(\"new-class\");\r\n }\r\n }, 500);\r\n function showScrollingDiv() {\r\n const arNavFixed2023 = document.querySelector(\".ar__2023__nav\");\r\n const arBanner2023 = document.querySelector('.banner__ar__2023, .banner__wrapper__2023');\r\n \r\n const bannerBottom = arBanner2023.offsetTop + arBanner2023.offsetHeight;\r\n const scrollPosition = window.scrollY;\r\n \r\n // Instantly reserve space for the nav by adjusting the top margin of the body\r\n const navHeight = arNavFixed2023.offsetHeight; // Calculate nav height outside of the if-statement for efficiency\r\n \r\n if (scrollPosition >= bannerBottom) {\r\n document.body.style.paddingTop = `${navHeight}px`; // Instant space reservation\r\n arNavFixed2023.classList.add('fixed-nav');\r\n } else {\r\n document.body.style.paddingTop = 0; // Remove space reservation when not needed\r\n arNavFixed2023.classList.remove('fixed-nav');\r\n }\r\n }\r\n \r\n window.addEventListener('scroll', showScrollingDiv);\r\n\r\n },\r\n}\r\n\r\n\r\nvar skipToMainContent = {\r\n init: function(){\r\n const skipLink = document.querySelector('.skip-link');\r\n if(skipLink){\r\n\r\n skipLink.addEventListener('click', function(event) {\r\n event.preventDefault();\r\n let targetId = this.getAttribute('href').substring(1);\r\n let targetElement = document.getElementById(targetId);\r\n if (targetElement) {\r\n targetElement.tabIndex = -1;\r\n targetElement.focus();\r\n }\r\n });\r\n }\r\n\r\n },\r\n}\r\n\r\nvar iframeTitle = {\r\n init: function(){\r\n function getVimeoVideoInfo(videoId, accessToken, iframe) {\r\n // Vimeo API endpoint for video information\r\n var apiUrl = `https://api.vimeo.com/videos/${videoId}`;\r\n // Make a fetch request to the Vimeo API\r\n fetch(apiUrl, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': `Bearer ${accessToken}`\r\n }\r\n })\r\n .then(response => response.json())\r\n .then(data => {\r\n // Extract the video title from the API response\r\n var videoTitle = data.name;\r\n iframe.title = videoTitle;\r\n //console.log(\"Video title for Vimeo video: \" + videoTitle);\r\n })\r\n .catch(error => console.error('Error fetching video details from Vimeo:', error));\r\n }\r\n // Loop through each iframe using for...of\r\n var videoFrames = document.getElementsByClassName('video-frame');\r\n for (const iframe of videoFrames) {\r\n // Extract the Vimeo video ID from the data-vimeo-id attribute\r\n var vimeoVideoId = iframe.getAttribute('data-vimeo-id');\r\n // Call the function to get video information from Vimeo\r\n getVimeoVideoInfo(vimeoVideoId, 'e0ada91619642d6fcf1351d9c82c9d02', iframe);\r\n //console.log(\"Vimeo id: \" + vimeoVideoId);\r\n }\r\n },\r\n}\r\n\r\nvar searchMobile = {\r\n init: function(){\r\n const search = document.querySelector(\".icon__search\");\r\n search.addEventListener(\"click\", function () {\r\n search.classList.toggle(\"is-open\");\r\n let expanded = search.getAttribute('aria-expanded') === 'true' || false;\r\n search.setAttribute('aria-expanded', !expanded);\r\n document.querySelector(\".search__navigation\").hidden = expanded;\r\n document.querySelector(\".search__navigation\").classList.toggle(\"is-open\");\r\n });\r\n },\r\n};\r\n\r\n\r\nvar navigationMobile = {\r\n init: function () {\r\n const pageHeader = document.querySelector(\".main__navigation\");\r\n const toggleMenu = pageHeader.querySelector(\".mobile__menu__button\");\r\n const menuWrapper = pageHeader.querySelector(\".menu-wrapper\");\r\n const level1Links = pageHeader.querySelectorAll(\".level-1 > li > button\");\r\n const listWrapper2 = pageHeader.querySelector(\r\n \".list-wrapper:nth-child(2)\"\r\n );\r\n const listWrapper3 = pageHeader.querySelector(\r\n \".list-wrapper:nth-child(3)\"\r\n );\r\n const listWrapper4 = pageHeader.querySelector(\r\n \".list-wrapper:nth-child(4)\"\r\n );\r\n const subMenuWrapper2 = listWrapper2.querySelector(\".sub-menu-wrapper\");\r\n const subMenuWrapper3 = listWrapper3.querySelector(\".sub-menu-wrapper\");\r\n const subMenuWrapper4 = listWrapper4.querySelector(\".sub-menu-wrapper\");\r\n const backOneLevelBtns = pageHeader.querySelectorAll(\".back-one-level\");\r\n const isVisibleClass = \"is-visible\";\r\n const isActiveClass = \"is-active\";\r\n const search = document.querySelector(\".icon__search\");\r\n\r\n search.addEventListener(\"click\", function () {\r\n search.classList.toggle(\"is-open\");\r\n document\r\n .querySelector(\".search__navigation\")\r\n .classList.toggle(\"is-open\");\r\n if (search.className.includes(\"is-open\")) {\r\n menuWrapper.classList.remove(isVisibleClass);\r\n toggleMenu.classList.remove(isVisibleClass);\r\n toggleMenu.innerText = \"Menu\";\r\n }\r\n });\r\n\r\n toggleMenu.addEventListener(\"click\", function () {\r\n menuWrapper.classList.toggle(isVisibleClass);\r\n search.classList.remove(\"is-open\");\r\n document\r\n .querySelector(\".search__navigation\")\r\n .classList.remove(\"is-open\");\r\n if (!this.classList.contains(isVisibleClass)) {\r\n toggleMenu.innerText = \"Close\";\r\n toggleMenu.classList.add(isVisibleClass);\r\n listWrapper2.classList.remove(isVisibleClass);\r\n listWrapper3.classList.remove(isVisibleClass);\r\n listWrapper4.classList.remove(isVisibleClass);\r\n const menuLinks = menuWrapper.querySelectorAll(\"button\");\r\n for (const menuLink of menuLinks) {\r\n menuLink.classList.remove(isActiveClass);\r\n }\r\n } else {\r\n toggleMenu.innerText = \"Menu\";\r\n toggleMenu.classList.remove(isVisibleClass);\r\n }\r\n });\r\n\r\n for (const level1Link of level1Links) {\r\n level1Link.addEventListener(\"click\", function (e) {\r\n const siblingList = level1Link.nextElementSibling;\r\n if (siblingList) {\r\n e.preventDefault();\r\n this.classList.add(isActiveClass);\r\n const cloneSiblingList = siblingList.cloneNode(true);\r\n subMenuWrapper2.innerHTML = \"\";\r\n subMenuWrapper2.append(cloneSiblingList);\r\n listWrapper2.classList.add(isVisibleClass);\r\n }\r\n });\r\n }\r\n\r\n listWrapper2.addEventListener(\"click\", function (e) {\r\n const target = e.target;\r\n if (\r\n target.tagName.toLowerCase() === \"button\" &&\r\n target.nextElementSibling\r\n ) {\r\n const siblingList = target.nextElementSibling;\r\n e.preventDefault();\r\n target.classList.add(isActiveClass);\r\n const cloneSiblingList = siblingList.cloneNode(true);\r\n subMenuWrapper3.innerHTML = \"\";\r\n subMenuWrapper3.append(cloneSiblingList);\r\n listWrapper3.classList.add(isVisibleClass);\r\n }\r\n });\r\n listWrapper3.addEventListener(\"click\", function (e) {\r\n const target = e.target;\r\n if (\r\n target.tagName.toLowerCase() === \"button\" &&\r\n target.nextElementSibling\r\n ) {\r\n const siblingList = target.nextElementSibling;\r\n e.preventDefault();\r\n target.classList.add(isActiveClass);\r\n const cloneSiblingList = siblingList.cloneNode(true);\r\n subMenuWrapper4.innerHTML = \"\";\r\n subMenuWrapper4.append(cloneSiblingList);\r\n listWrapper4.classList.add(isVisibleClass);\r\n }\r\n });\r\n\r\n for (const backOneLevelBtn of backOneLevelBtns) {\r\n backOneLevelBtn.addEventListener(\"click\", function () {\r\n const parent = this.closest(\".list-wrapper\");\r\n parent.classList.remove(isVisibleClass);\r\n parent.previousElementSibling\r\n .querySelector(\".is-active\")\r\n .classList.remove(isActiveClass);\r\n });\r\n }\r\n \r\n },\r\n};\r\n\r\n\r\nvar navigationDesktop = {\r\n init: function () {\r\n const openMenu = document.querySelectorAll(\".main__menu__item__holder__nested\");\r\n const mainMenuNav = document.querySelector(\".main__menu\")\r\n const closeMenu = document.querySelectorAll(\".close__nav\");\r\n const closeMenuBottom = document.querySelectorAll(\".close__nav__bottom\");\r\n const search = document.querySelector(\".icon__search\");\r\n const closeSearch = document.querySelector(\".close__search_2023\");\r\n const openLeveltwo = document.querySelectorAll(\".has_sub_menu_level_two\");\r\n const openLevelthree = document.querySelectorAll(\".has_sub_menu_level_three\");\r\n const sub__menu__main = document.querySelectorAll(\".sub__menu__main\");\r\n navCards = false;\r\n\r\n for (const [elemIndex, elem] of openMenu.entries()) {\r\n elem.addEventListener(\"click\", function () {\r\n\r\n for (const element of openMenu) { \r\n\r\n if (element === elem && !element.classList.contains(\"is__active\")) {\r\n element.classList.add(\"is__active\");\r\n mainMenuNav.classList.add(\"is__active\");\r\n document.querySelector(\".search__navigation\").classList.remove(\"is-open\");\r\n element.parentElement.querySelector(\".close__nav\").classList.remove(\"is__active\");\r\n search.classList.remove(\"is-open\");\r\n document.querySelectorAll('.menu__nav__cards').forEach(menu__nav__cards => {\r\n if(navCards){\r\n menu__nav__cards.classList.remove(\"not__active\");\r\n }\r\n });\r\n for (const item of element.parentElement.querySelectorAll(\".sub__menu__main .is__active\")) {\r\n item.classList.remove(\"is__active\");\r\n }\r\n } else if (element === elem && element.classList.contains(\"is__active\")) {\r\n mainMenuNav.classList.remove(\"is__active\");\r\n element.classList.remove(\"is__active\");\r\n }\r\n else {\r\n element.classList.remove(\"is__active\");\r\n mainMenuNav.classList.remove(\"is__active\");\r\n }\r\n }\r\n\r\n for (const [index, megaMenu] of sub__menu__main.entries()) {\r\n if (index == elemIndex && !megaMenu.classList.contains(\"is__active\")) {\r\n megaMenu.classList.add(\"is__active\");\r\n mainMenuNav.classList.add(\"is__active\");\r\n } else {\r\n megaMenu.classList.remove(\"is__active\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n // level two\r\n for (const [levelTwoIndex, levelTwo] of openLeveltwo.entries()) {\r\n const menu__nav__cards = levelTwo.closest('.main__menu__item').querySelector('.menu__nav__cards')\r\n\r\n levelTwo.querySelector(\"button\").addEventListener(\"click\", function () {\r\n for (const [levelTwoIndexItem, levelTwoItem] of document.querySelectorAll(\".sub__menu__level_two\").entries()) {\r\n if (levelTwoIndexItem == levelTwoIndex && !levelTwoItem.classList.contains(\"is__active\")) {\r\n levelTwoItem.classList.add(\"is__active\");\r\n //menu__nav__cards.style.visibility = \"hidden\";\r\n if(navCards){\r\n menu__nav__cards.classList.add(\"not__active\");\r\n }\r\n }\r\n else if (levelTwoIndexItem == levelTwoIndex && levelTwoItem.classList.contains(\"is__active\")){\r\n //menu__nav__cards.style.visibility = \"visible\";\r\n if(navCards){\r\n menu__nav__cards.classList.remove(\"not__active\");\r\n }\r\n levelTwoItem.classList.remove(\"is__active\");\r\n for (const [levelThreeIndexItem, levelThreeItem] of document.querySelectorAll(\".sub__menu__level_three\").entries()) {\r\n levelThreeItem.classList.remove(\"is__active\");\r\n }\r\n } \r\n else {\r\n levelTwoItem.classList.remove(\"is__active\");\r\n for (const [levelThreeIndexItem, levelThreeItem] of document.querySelectorAll(\".sub__menu__level_three\").entries()) {\r\n levelThreeItem.classList.remove(\"is__active\");\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n //level three\r\n for (const [levelThreeIndex, levelThree] of openLevelthree.entries()) {\r\n \r\n levelThree.addEventListener(\"click\", function () {\r\n for (const [levelThreeIndexItem, levelThreeItem] of document\r\n .querySelectorAll(\".sub__menu__level_three\")\r\n .entries()) {\r\n if (\r\n levelThreeIndexItem == levelThreeIndex &&\r\n !levelThreeItem.classList.contains(\"is__active\")\r\n ) {\r\n levelThreeItem.classList.add(\"is__active\");\r\n } else {\r\n levelThreeItem.classList.remove(\"is__active\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n // close menu button\r\n for (const closeButton of closeMenu) {\r\n const menu__nav__cards = closeButton.closest('.main__menu__item').querySelector('.menu__nav__cards')\r\n\r\n closeButton.addEventListener(\"click\", function () {\r\n closeButton.classList.toggle(\"is__active\");\r\n if (closeButton.className.includes(\"is__active\")) { \r\n mainMenuNav.classList.remove(\"is__active\");\r\n //menu__nav__cards.style.visibility = \"visible\";\r\n\r\n if(menu__nav__cards != null){\r\n menu__nav__cards.classList.remove(\"not__active\");\r\n }\r\n\r\n closeButton.closest(\".sub__menu__main\").classList.remove(\"is__active\");\r\n closeButton.closest(\".main__menu__item\").querySelector(\".main__menu__item__holder\").classList.remove(\"is__active\");\r\n }\r\n });\r\n }\r\n\r\n // close bottom menu button\r\n for (const closeButton of closeMenuBottom) {\r\n closeButton.addEventListener(\"click\", function () {\r\n closeButton.classList.toggle(\"is__active\");\r\n if (closeButton.className.includes(\"is__active\")) {\r\n mainMenuNav.classList.remove(\"is__active\");\r\n\r\n closeButton.closest(\".sub__menu__main\").classList.remove(\"is__active\");\r\n closeButton.closest(\".main__menu__item\").querySelector(\".main__menu__item__holder\").classList.remove(\"is__active\");\r\n }\r\n });\r\n }\r\n closeSearch.addEventListener(\"click\", function () {\r\n document.querySelector(\".search__navigation\").classList.toggle(\"is-open\");\r\n search.classList.toggle(\"is-open\");\r\n\r\n });\r\n // search button\r\n search.addEventListener(\"click\", function () {\r\n search.classList.toggle(\"is-open\");\r\n let expanded = search.getAttribute('aria-expanded') === 'true' || false;\r\n search.setAttribute('aria-expanded', !expanded);\r\n document.querySelector(\".search__navigation\").hidden = expanded;\r\n\r\n document.querySelector(\".search__navigation\").classList.toggle(\"is-open\");\r\n if (search.className.includes(\"is-open\")) {\r\n mainMenuNav.classList.remove(\"is__active\");\r\n\r\n document.querySelectorAll(\".sub__menu__main.is__active\").forEach(menu => {\r\n menu.classList.remove(\"is__active\");\r\n })\r\n document.querySelectorAll(\".main__menu__item__holder.is__active\").forEach(menu => {\r\n menu.classList.remove(\"is__active\");\r\n })\r\n document.querySelectorAll('.menu__nav__cards').forEach(menu__nav__cards => {\r\n menu__nav__cards.classList.remove(\"not__active\");\r\n\r\n });\r\n }\r\n });\r\n },\r\n};\r\n\r\n\r\nvar scrollToTargetWithOffset = {\r\n init: function(){\r\n // Check if the URL contains an anchor (hash)\r\n if (window.location.hash) {\r\n // Get the target element by the anchor (hash)\r\n var targetElement = document.querySelector(window.location.hash); \r\n if (targetElement) {\r\n var offset = 90; // Adjust this value based on the height of your top navigation\r\n var targetPosition = targetElement.getBoundingClientRect().top + window.scrollY - offset; \r\n // Scroll smoothly to the target position\r\n window.scrollTo({\r\n top: targetPosition,\r\n behavior: 'smooth'\r\n });\r\n }\r\n }\r\n },\r\n};\r\n\r\nsmoothScroll = {\r\n init: function(){\r\n// Get all anchor elements with href containing #\r\nconst anchorLinks = document.querySelectorAll('a[href*=\"#\"]:not(.content-modal-trigger):not(.close_promo_block a):not(.content__tabs_2023_link)');\r\n\r\n// Iterate through each anchor link and add a click event listener\r\nanchorLinks.forEach(function (anchorLink) {\r\n anchorLink.addEventListener('click', function (event) {\r\n // Prevent the default behavior of the anchor link\r\n event.preventDefault();\r\n\r\n // Get the target element's ID from the href attribute\r\n const targetId = this.hash.substring(1);\r\n\r\n // Find the target element by its ID\r\n const targetElement = document.getElementById(targetId);\r\n console.log(targetId);\r\n if (targetElement) {\r\n // Calculate the scroll position by subtracting 160 pixels\r\n const scrollPosition = targetElement.offsetTop - 90;\r\n\r\n // Smooth scroll to the target element\r\n window.scrollTo({\r\n top: scrollPosition,\r\n behavior: 'smooth'\r\n });\r\n }\r\n });\r\n });\r\n\r\n},\r\n};\r\n\r\n\r\n\r\n\r\nimageTransition = {\r\ninit: function(){\r\n window.onscroll = function(){\r\n const elem = document.querySelectorAll(\".image_colspan_9 .fit-cover\");\r\n for(const element of elem){\r\n if(element.getBoundingClientRect().top <= 200){\r\n // for(const other of elem){\r\n // other.classList.remove(\"move-left-active\")\r\n // }\r\n element.classList.add(\"move-left-active\")\r\n }\r\n }\r\n }\r\n },\r\n};\r\n\r\n var banner__hp__2023 = {\r\n init: function () {\r\n\r\n const banner__hp__2023 = document.querySelector(\".banner__hp__2023, .banner__wrapper__2023\");\r\n if(banner__hp__2023 != null){\r\n window.addEventListener(\"load\", () => {\r\n setTimeout(() => {\r\n banner__hp__2023.classList.add(\"is__active\");\r\n }, 500);\r\n }); \r\n }\r\n },\r\n };\r\n\r\nvar promoBlockPopUp = {\r\n init: function () {\r\n const pop__up__box = document.querySelectorAll(\".pop__up__box\");\r\n const close_promo_block = document.querySelector(\".close_promo_block p\");\r\n for (const item of pop__up__box){\r\n item.addEventListener('click', () => {\r\n const { popupTrigger } = item.dataset\r\n const popupModal = item.closest(\".promo__block__2023\").querySelector(`[data-popup-modal=\"${popupTrigger}\"]`)\r\n popupModal.classList.add('is__active');\r\n popupModal.querySelector('.close_promo_block p').addEventListener('click', () => {\r\n popupModal.classList.remove('is__active')\r\n })\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n },\r\n\r\n};\r\n\r\n\r\nvar statsAnimated = {\r\n init: function () {\r\n // if (document.querySelector('.facts-section').length) {\r\n // let a = 0;\r\n // document.querySelector(window).scroll(function () {\r\n // console.log(oTop);\r\n // const oTop = document.querySelector('.facts-section').offset().top - window.innerHeight;\r\n // if (a === 0 && document.querySelector(window).scrollTop() > oTop) {\r\n // document.querySelector('.counter-value-no-decimal').forEach(function () {\r\n // let $this = document.querySelector(this);\r\n // this({ Counter: 0 }).animate({ Counter: $this.textContent }, {\r\n // duration: 2000,\r\n // easing: 'swing',\r\n // step: function () {\r\n // $this.textContent=this.Counter.toFixed(0);\r\n // }\r\n // });\r\n // });\r\n // document.querySelector('.counter-value').forEach(function () {\r\n // let $this = document.querySelector(this);\r\n // this({ Counter: 0 }).animate({ Counter: $this.textContent }, {\r\n // duration: 2000,\r\n // easing: 'swing',\r\n // step: function () {\r\n // $this.textContent=this.Counter.toFixed(2);\r\n // }\r\n // });\r\n // });\r\n // a = 1;\r\n // }\r\n // });\r\n // };\r\n },\r\n};\r\nvar tabs2023 = {\r\n init: function () {\r\n const tabContainers = document.querySelectorAll(\".tab-container\");\r\n tabContainers.forEach((tabContainer, i) => {\r\n const tabs = tabContainer.querySelectorAll(\".tab\");\r\n const tabContent = tabContainer.querySelectorAll(\".tab-content\");\r\n tabs.forEach((tab, i) => {\r\n tab.addEventListener(\"click\", function () {\r\n tabs.forEach(tab => tab.classList.remove(\"active\"));\r\n this.classList.add(\"active\");\r\n tabContent.forEach(content => content.classList.add(\"hidden\"));\r\n tabContent[i].classList.remove(\"hidden\");\r\n });\r\n });\r\n })\r\n },\r\n};\r\n\r\nvar accordions2023 = {\r\n init: function () {\r\n \r\n// Function to handle opening an accordion\r\nconst openAccordion = (accordion) => {\r\n const content = accordion.querySelector(\".accordion__content\");\r\n accordion.classList.add(\"accordion__active\");\r\n content.style.maxHeight = content.scrollHeight + \"px\";\r\n accordion.setAttribute(\"aria-expanded\", \"true\");\r\n // Set elementPosition to false to prevent scrolling\r\n const elementPosition = false;\r\n\r\n if (elementPosition !== false) {\r\n const scrollToPosition =\r\n accordion.getBoundingClientRect().top -\r\n document.body.getBoundingClientRect().top -\r\n 150;\r\n window.scrollTo({ top: scrollToPosition, behavior: \"smooth\" });\r\n }\r\n\r\n // Ensure a smooth transition by setting transition timing consistently\r\n setTimeout(() => {\r\n content.style.transition = \"max-height 0.3s ease\"; // Adjust the duration and timing function as needed\r\n }, 0);\r\n};\r\n\r\n// Function to handle closing an accordion\r\nconst closeAccordion = (accordion) => {\r\n const content = accordion.querySelector(\".accordion__content\");\r\n content.style.transition = \"max-height 0.3s ease\"; // Adjust the duration and timing function as needed\r\n accordion.classList.remove(\"accordion__active\");\r\n content.style.maxHeight = null;\r\n accordion.setAttribute(\"aria-expanded\", \"false\");\r\n};\r\n\r\n// Function to check if any accordion is open within a wrapper\r\nconst isAnyAccordionOpen = (wrapper) => {\r\n const accordionsInWrapper = wrapper.querySelectorAll(\".accordion_2023\");\r\n return Array.from(accordionsInWrapper).some((accordion) =>\r\n accordion.classList.contains(\"accordion__active\")\r\n );\r\n};\r\n\r\n// Get all buttons with the common class\r\nconst accordionButtons = document.querySelectorAll(\".accordion_buttons_open_collpase\");\r\n\r\n// Function to handle opening all accordions within a wrapper\r\nconst handleOpenAll = (wrapperId) => {\r\n const wrapper = document.getElementById(wrapperId);\r\n const accordionsInWrapper = wrapper.querySelectorAll(\".accordion_2023\");\r\n accordionsInWrapper.forEach((accordion) => openAccordion(accordion));\r\n toggleButtonsVisibility(wrapper);\r\n};\r\n\r\n// Function to handle closing all accordions within a wrapper\r\nconst handleCloseAll = (wrapperId) => {\r\n const wrapper = document.getElementById(wrapperId);\r\n const accordionsInWrapper = wrapper.querySelectorAll(\".accordion_2023\");\r\n accordionsInWrapper.forEach((accordion) => closeAccordion(accordion));\r\n toggleButtonsVisibility(wrapper);\r\n};\r\n\r\n// Function to toggle visibility of buttons based on accordion state within a wrapper\r\nconst toggleButtonsVisibility = (wrapper) => {\r\n const expandAllButton = wrapper.querySelector(\".accordion_buttons_open_collpase[data-action='expand']\");\r\n const collapseAllButton = wrapper.querySelector(\".accordion_buttons_open_collpase[data-action='collapse']\");\r\n\r\n if (expandAllButton && collapseAllButton) {\r\n const anyAccordionOpen = isAnyAccordionOpen(wrapper);\r\n\r\n expandAllButton.style.display = anyAccordionOpen ? \"none\" : \"block\";\r\n collapseAllButton.style.display = anyAccordionOpen ? \"block\" : \"none\";\r\n }\r\n};\r\n\r\n// Initially, hide the \"Collapse All\" button if all accordions are initially collapsed\r\ndocument.querySelectorAll(\".accordions_wrapper_2023\").forEach((wrapper) => {\r\n const collapseAllButton = wrapper.querySelector(\".accordion_buttons_open_collpase[data-action='collapse']\");\r\n if (collapseAllButton) {\r\n collapseAllButton.style.display = isAnyAccordionOpen(wrapper) ? \"block\" : \"none\";\r\n }\r\n});\r\n\r\n// Attach click event handlers to all buttons\r\naccordionButtons.forEach((button) => {\r\n button.onclick = () => {\r\n const wrapper = button.closest(\".accordions_wrapper_2023\");\r\n const action = button.getAttribute(\"data-action\");\r\n\r\n if (action === \"expand\") {\r\n handleOpenAll(wrapper.id);\r\n } else if (action === \"collapse\") {\r\n handleCloseAll(wrapper.id);\r\n }\r\n };\r\n});\r\n\r\n// Attach click event handlers to individual accordions\r\ndocument.querySelectorAll(\".accordion_2023\").forEach((accordion) => {\r\n const intro = accordion.querySelector(\".accordion__intro\");\r\n const content = accordion.querySelector(\".accordion__content\");\r\n\r\n intro.onclick = () => {\r\n\r\n const wrapper = accordion.closest(\".accordions_wrapper_2023\");\r\n\r\n if (content.style.maxHeight) {\r\n closeAccordion(accordion);\r\n } else {\r\n if (!accordion.classList.contains(\"open_close_one_by_one\")) {\r\n const accordionsInWrapper = wrapper.querySelectorAll(\".accordion_2023\");\r\n accordionsInWrapper.forEach((acc) => closeAccordion(acc));\r\n }\r\n openAccordion(accordion);\r\n }\r\n\r\n // Delay toggling buttons visibility to ensure the correct state\r\n setTimeout(() => toggleButtonsVisibility(wrapper), 0);\r\n };\r\n});\r\n\r\n // Initially, toggle the visibility of buttons based on the accordion state for each wrapper\r\n document.querySelectorAll(\".accordions_wrapper_2023\").forEach((wrapper) => {\r\n toggleButtonsVisibility(wrapper);\r\n });\r\n\r\n },\r\n};\r\n\r\n\r\n"],"names":["window1","factory","define","amd","EvEmitter","getSize","utils","Cell","Slide","animatePrototype","module","exports","parcelRequire","_Flickity","Flickity","fizzyUIUtils","window","jQuery","getComputedStyle","console","moveElements","elems","toElem","makeArray","length","appendChild","shift","GUID","instances","element","options","queryElement","getQueryElement","this","flickityGUID","instance","option","$element","extend","constructor","defaults","_create","error","accessibility","cellAlign","freeScrollFriction","friction","namespaceJQueryEvents","percentPosition","resize","selectedAttraction","setGallerySize","createMethods","proto","prototype","id","guid","eventName","selectedIndex","restingFrames","x","velocity","originSide","rightToLeft","viewport","document","createElement","className","_createSlider","watchCSS","addEventListener","on","listener","forEach","method","activate","opts","isActive","classList","add","_filterFindCellElements","children","slider","reloadCells","tabIndex","emitEvent","selectInitialIndex","isInitActivated","dispatchEvent","style","filterFindElements","cellSelector","cells","_makeCells","positionCells","_getWrapShiftCells","map","cellElem","getLastCell","getLastSlide","slides","_sizeCells","_positionCells","index","maxCellHeight","cellX","startCell","size","outerWidth","len","i","cell","setPosition","Math","max","outerHeight","slideableWidth","updateSlides","_containSlides","slidesWidth","target","slide","push","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","call","updateTarget","addCell","updateSelectedSlide","groupCells","number","parseInt","percentMatch","match","percent","innerWidth","_init","reposition","positionSliderAtSelected","setCellAlign","cursorPosition","cellAlignShorthands","center","left","right","shorthand","height","adaptiveHeight","selectedSlide","wrapAround","_unshiftCells","beforeShiftCells","afterShiftCells","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","endBound","min","type","event","args","emitArgs","concat","$event","jQEvent","Event","trigger","select","isWrap","isInstant","_wrapSelect","modulo","prevIndex","startAnimation","wrapIndex","delta","abs","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","selectedElement","unselect","initialIndex","queryCell","selectCell","value","getCellSlideIndex","indexOf","getCell","elem","getCells","getParentCell","getParent","getAdjacentCellElements","adjCount","undefined","cellElems","slideIndex","selector","querySelector","uiChange","childUIPointerDown","preventDefault","focus","onresize","debounceMethod","isAnimating","isDragging","content","deactivate","onkeydown","isNotFocused","activeElement","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","remove","destroy","removeChild","removeAttribute","removeEventListener","allOff","removeData","data","htmlInit","bridget","setJQuery","jq","global","events","_events","listeners","once","onceEvents","_onceEvents","off","splice","slice","onceListeners","apply","getStyleSize","num","parseFloat","isNaN","logError","message","measurements","measurementsLength","getStyle","isBoxSizeOuter","isSetup","div","width","padding","borderStyle","borderWidth","boxSizing","body","documentElement","round","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","matchesSelector","a","b","prop","arraySlice","Array","obj","isArray","removeFrom","ary","parentNode","handleEvent","ffElems","HTMLElement","childElems","querySelectorAll","_class","methodName","threshold","timeoutName","timeout","clearTimeout","arguments","_this","setTimeout","docReady","callback","readyState","toDashed","str","replace","$1","$2","toLowerCase","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","dataOptionsAttr","attr","getAttribute","JSON","parse","matchesMethod","ElemProto","Element","matches","prefixes","parent","create","position","setAttribute","side","transform","renderPosition","setDefaultTarget","marginProperty","sideOffset","adjustedX","getPositionValue","wrapShift","isOriginLeft","lastCell","lastMargin","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","requestAnimationFrame","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","translateX","firstSlide","positionX","progress","isPointerDown","isFreeScrolling","beforeGap","_shiftCells","afterGap","gap","cellShift","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","Unidragger","draggable","dragThreshold","_touchActionValue","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","bindHandles","unbindHandles","bindDrag","unbindDrag","pointerDown","pointer","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","pageX","pageY","_bindPostStartEvents","focusNodes","INPUT","TEXTAREA","SELECT","y","nodeName","isTouchStart","isTouchPointer","pointerType","isFocusNode","hasDragStarted","moveVector","pointerUp","isTouchScrolling","_dragPointerUp","pointerDone","dragStart","dragStartPosition","pointerMove","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","dragMoveTime","Date","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","dist","minDist","isWrapAround","wrap","floor","staticClick","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","_pointerDone","Unipointer","Object","_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","bind","onclick","isIgnoringMouseUp","getPointerPoint","bindStartEvent","unbindStartEvent","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","svgURI","PrevNextButton","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","shape","path","pathMovements","arrowShape","x0","x1","y1","x2","y2","x3","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PageDots","holder","dots","handleClick","onClick","setDots","addDots","removeDots","count","fragment","createDocumentFragment","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","insert","getCellsFragment","isAppend","insertCellElement","insertBefore","endCells","cellChange","append","prepend","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","getCellLazyImages","src","srcset","onload","complete","onerror","$54b47fc030b7b21e$var$isMobile","$54b47fc030b7b21e$var$init","$54b47fc030b7b21e$var$navigationMobile","init","$54b47fc030b7b21e$var$searchMobile","$54b47fc030b7b21e$var$iframeTitle","$54b47fc030b7b21e$var$navigationDesktop","$54b47fc030b7b21e$var$accordions2023","$54b47fc030b7b21e$var$tabs2023","$54b47fc030b7b21e$var$statsAnimated","$54b47fc030b7b21e$var$promoBlockPopUp","$54b47fc030b7b21e$var$banner__hp__2023","imageTransition","smoothScroll","$54b47fc030b7b21e$var$scrollToTargetWithOffset","$54b47fc030b7b21e$var$skipToMainContent","$54b47fc030b7b21e$var$ar2023","$6466308c71ced2f5$exports","isModernBrowser","arArrow","imgTopAr","arNavFixed2023","arBanner2023","bannerBottom","offsetTop","scrollPosition","scrollY","navHeight","skipLink","targetId","substring","targetElement","getElementById","getVimeoVideoInfo","videoId","accessToken","iframe","fetch","headers","Authorization","then","response","json","videoTitle","name","title","catch","videoFrames","getElementsByClassName","search","toggle","expanded","pageHeader","toggleMenu","menuWrapper","level1Links","listWrapper2","listWrapper3","listWrapper4","subMenuWrapper2","subMenuWrapper3","subMenuWrapper4","backOneLevelBtns","isVisibleClass","isActiveClass","includes","innerText","contains","menuLinks","menuLink","level1Link","e","siblingList","nextElementSibling","cloneSiblingList","cloneNode","innerHTML","tagName","backOneLevelBtn","closest","previousElementSibling","openMenu","mainMenuNav","closeMenu","closeMenuBottom","closeSearch","openLeveltwo","openLevelthree","sub__menu__main","navCards","elemIndex","entries","parentElement","menu__nav__cards","item","megaMenu","levelTwoIndex","levelTwo","levelTwoIndexItem","levelTwoItem","levelThreeIndexItem","levelThreeItem","levelThreeIndexItem1","levelThreeItem1","levelThreeIndex","levelThree","closeButton","menu__nav__cards1","closeButton1","menu","location","hash","targetPosition","getBoundingClientRect","top","behavior","anchorLink","log","banner__hp__2023","pop__up__box","popupTrigger","dataset","popupModal","tabContainer","tabs","tabContent","tab","openAccordion","accordion","maxHeight","scrollHeight","transition","closeAccordion","isAnyAccordionOpen","wrapper","accordionsInWrapper","from","some","accordionButtons","toggleButtonsVisibility","expandAllButton","collapseAllButton","anyAccordionOpen","action","wrapperId","handleOpenAll","handleCloseAll","intro","acc"],"version":3,"file":"banner.b60b3fd2.js.map"}