{"version":3,"sources":["00_objectfit.js","01_flickity.js","02_lity.js","03_scrollto.js"],"names":["edgeVersion","edgePartialSupport","objectFit","objectFitPolyfill","window","navigator","userAgent","match","parseInt","document","documentElement","style","$media","$container","parentNode","styles","getComputedStyle","position","getPropertyValue","overflow","display","clientHeight","height","className","indexOf","checkParentContainer","constraints","max-width","max-height","min-width","min-height","top","right","bottom","left","margin-top","margin-right","margin-bottom","margin-left","property","checkMediaProperties","width","clientWidth","marginTop","marginLeft","media","Event","querySelectorAll","nodeName","length","i","mediaType","toLowerCase","complete","addEventListener","this","readyState","factory","define","amd","jQuery","module","exports","require","jQueryBridget","arraySlice","Array","prototype","slice","console","logError","message","error","namespace","PluginClass","$","option","opts","isPlainObject","options","extend","fn","arg0","$elems","methodName","args","returnValue","pluginMethodStr","each","elem","method","value","instance","data","charAt","apply","undefined","methodCall","call","arguments","_init","updateJQuery","bridget","global","EvEmitter","proto","on","eventName","listener","events","_events","listeners","push","once","onceEvents","_onceEvents","off","index","splice","emitEvent","onceListeners","allOff","getSize","getStyleSize","num","parseFloat","isNaN","measurements","measurementsLength","getStyle","isBoxSizeOuter","isSetup","div","body","createElement","padding","borderStyle","borderWidth","boxSizing","appendChild","Math","round","removeChild","setup","querySelector","nodeType","size","innerWidth","innerHeight","outerWidth","outerHeight","getZeroSize","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginRight","marginHeight","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","matchesSelector","matchesMethod","ElemProto","Element","matches","prefixes","selector","fizzyUIUtils","utils","a","b","prop","modulo","makeArray","obj","isArray","removeFrom","ary","getParent","getQueryElement","handleEvent","event","type","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","debounceMethod","_class","threshold","timeoutName","timeout","clearTimeout","_this","setTimeout","docReady","callback","toDashed","str","replace","$1","$2","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","attr","getAttribute","JSON","parse","Flickity","Cell","parent","element","create","setAttribute","x","shift","destroy","unselect","side","originSide","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","target","cellAlign","getPositionValue","select","classList","add","removeAttribute","remove","wrapShift","slideableWidth","Slide","isOriginLeft","cells","addCell","cell","beginMargin","max","firstMargin","endMargin","lastCell","getLastCell","lastMargin","slideWidth","getCellElements","map","animatePrototype","startAnimation","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","requestAnimationFrame","wrapAround","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","slider","transform","positionX","progress","firstSlide","slides","slidesWidth","dispatchEvent","positionSliderAtSelected","selectedSlide","velocity","percentPosition","isPointerDown","isFreeScrolling","selectedIndex","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","cellShift","_unshiftCells","getFrictionFactor","applyForce","force","getRestingPosition","dragForce","isDraggable","dragX","selectedAttraction","_Flickity","moveElements","toElem","GUID","instances","queryElement","flickityGUID","$element","constructor","defaults","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","resize","setGallerySize","createMethods","id","guid","viewport","_createSlider","watchCSS","activate","isActive","_filterFindCellElements","children","reloadCells","tabIndex","selectInitialIndex","isInitActivated","cellSelector","_makeCells","positionCells","_getWrapShiftCells","cellElem","getLastSlide","_sizeCells","_positionCells","maxCellHeight","startCell","cellX","len","updateSlides","_containSlides","slide","nextMargin","canCellFit","_getCanCellFit","updateSelectedSlide","groupCells","number","percentMatch","percent","reposition","setCellAlign","cellAlignShorthands","center","shorthand","adaptiveHeight","gapX","cellIndex","_getGapCells","increment","isRightToLeft","contentWidth","isContentSmaller","beginBound","endBound","contain","min","$event","jQEvent","emitArgs","trigger","isWrap","isInstant","prevIndex","_wrapSelect","wrapIndex","delta","abs","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","selectedCell","selectedElement","initialIndex","queryCell","selectCell","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","adjCount","cellElems","slideIndex","uiChange","childUIPointerDown","preventDefault","focus","onresize","content","deactivate","onkeydown","handler","isNotFocused","activeElement","keyboardHandlers","keyCode","37","leftMethod","39","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","removeEventListener","removeData","setJQuery","jq","Unipointer","Object","bindStartEvent","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","startEvent","PointerEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","pointerId","pointerDown","_bindPostStartEvents","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","pointerMove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerUp","_pointerReset","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","getPointerPoint","pageX","y","pageY","Unidragger","bindHandles","_bindHandles","unbindHandles","touchAction","_touchActionValue","handles","handle","okayPointerDown","pointerDownPointer","pointerDownBlur","cursorNodes","TEXTAREA","INPUT","SELECT","OPTION","clickTypes","radio","checkbox","submit","image","file","isCursorNode","isClickType","isOkay","focused","blur","moveVector","_dragPointerMove","_dragMove","isDragging","hasDragStarted","_dragStart","_dragPointerUp","_dragEnd","_staticClick","isPreventingClicks","dragStart","dragMove","bind","dragEnd","onclick","isIgnoringMouseUp","staticClick","draggable","dragThreshold","isTouch","isTouchmoveScrollCanceled","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","bindDrag","unbindDrag","_pointerDownPreventDefault","pointerDownFocus","pointerDownScroll","getScrollPosition","_pointerDownDefault","focusNodes","isTouchStart","isTouchPointer","pointerType","isFocusNode","isTouchScrolling","dragStartPosition","direction","originBound","previousDragX","dragMoveTime","Date","restingX","freeScroll","dragEndRestingSelect","dragEndBoostSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","d","md","isWrapAround","wrap","floor","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","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","isAppend","insertCellElement","endCells","getCellsFragment","insertBefore","cellChange","append","prepend","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","lazyloadAttr","srcAttr","srcsetAttr","imgs","getCellLazyImages","src","srcset","onload","onerror","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavForOption","asNavFor","setNavCompanion","companion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","firstIndex","selectIndex","t","companionCells","removeNavSelectedElements","navSelectedElements","changeNavSelectedClass","navElem","cellElement","imagesLoaded","ImagesLoaded","onAlways","queryElem","elements","getImages","jqDeferred","Deferred","check","images","addElementImages","addImage","background","addElementBackgroundImages","elementNodeTypes","childImgs","child","1","9","11","LoadingImage","Background","url","Image","reURL","exec","backgroundImage","addBackground","loadingImage","onProgress","progressedCount","hasAnyBroken","isLoaded","notify","debug","log","jqMethod","isComplete","getIsImageComplete","confirm","naturalWidth","proxyImage","unbindEvents","makeJQueryPlugin","promise","_createImagesLoaded","slideUpdateTarget","slideTargetX","firstCellX","fade","targetX","setOpacity","alpha","opacity","_createFade","fadeIndex","prevSelectedIndex","onSelectFade","onDragEndFade","onSettleFade","onActivateFade","onDeactivateFade","didDragEnd","fadeSlides","indexes","fadeSlideA","fadeSlideB","fadeHideIndex","getFadeIndexes","wrapDifference","getFadeDragWrapIndexes","getFadeDragLimitIndexes","distances","absDistances","closestIndex","dragIndex","diff","diffPlus","diffMinus","lity","Zepto","_win","_deferred","_html","_instances","_attrAriaHidden","_dataAriaHidden","_focusableElementsSelector","_defaultOptions","esc","handlers","imageHandler","inline","el","placeholder","hasHideClass","e","hasClass","one","before","closest","addClass","removeClass","after","youtube","_youtubeRegex","iframeHandler","transferHash","appendQueryParams","autoplay","parseQueryParams","vimeo","_vimeoRegex","googlemaps","_googlemapsRegex","output","facebookvideo","_facebookvideoRegex","iframe","template","_imageRegexp","_transitionEndEvent","transEndEventNames","WebkitTransition","MozTransition","OTransition","transition","name","transitionEnd","deferred","resolve","settings","currSettings","key","params","p","pairs","decodeURI","split","n","param","originalUrl","newUrl","pos","substr","failed","reject","desc","opener","winHeight","keydown","current","currentInstance","close","focusableElements","find","focusedIndex","shiftKey","get","handleTabKey","Lity","result","instanceToRegister","self","isReady","isClosed","proxy","css","instanceToRemove","grep","oldAttr","removeAttr","contains","always","preferredHandler","currentHandlers","currentHandler","test","appendTo","is","unshift","not","when","loader","empty","version","$scrollTo","duration","isWin","inArray","both","val","isFunction","axis","limit","onAfter","queue","offset","over","toff","win","contentWindow","$elem","targ","Pos","prev","margin","onAfterFirst","Dim","doc","ownerDocument","html","Tween","propHooks","scrollLeft","scrollTop","set","curr","interrupt","_last","now"],"mappings":"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","file":"header.js","sourcesContent":["/*----------------------------------------\n * objectFitPolyfill 2.3.0\n *\n * Basic, no-frills version -\n * Defaults to object-fit: cover and object-position: 50% 50%\n *\n * Made by Constance Chen\n * Released under the MIT license\n *\n * https://github.com/constancecchen/object-fit-polyfill\n *--------------------------------------*/\n\n(function() {\n 'use strict';\n\n // if the page is being rendered on the server, don't continue\n if (typeof window === 'undefined') return;\n\n // Workaround for Edge 16+, which only implemented object-fit for
tags\n // TODO: Keep an eye on Edge to determine which version has full final support\n var edgeVersion = window.navigator.userAgent.match(/Edge\\/(\\d{2})\\./);\n var edgePartialSupport = edgeVersion\n ? parseInt(edgeVersion[1], 10) >= 16\n : false;\n\n // If the browser does support object-fit, we don't need to continue\n var hasSupport = 'objectFit' in document.documentElement.style !== false;\n if (hasSupport && !edgePartialSupport) {\n window.objectFitPolyfill = function() {\n return false;\n };\n return;\n }\n\n /**\n * Check the container's parent element to make sure it will\n * correctly handle and clip absolutely positioned children\n *\n * @param {node} $container - parent element\n */\n var checkParentContainer = function($container) {\n var styles = window.getComputedStyle($container, null);\n var position = styles.getPropertyValue('position');\n var overflow = styles.getPropertyValue('overflow');\n var display = styles.getPropertyValue('display');\n\n if (!position || position === 'static') {\n $container.style.position = 'relative';\n }\n if (overflow !== 'hidden') {\n $container.style.overflow = 'hidden';\n }\n // Guesstimating that people want the parent to act like full width/height wrapper here.\n // Mostly attempts to target elements, which default to inline.\n if (!display || display === 'inline') {\n $container.style.display = 'block';\n }\n if ($container.clientHeight === 0) {\n $container.style.height = '100%';\n }\n\n // Add a CSS class hook, in case people need to override styles for any reason.\n if ($container.className.indexOf('object-fit-polyfill') === -1) {\n $container.className = $container.className + ' object-fit-polyfill';\n }\n };\n\n /**\n * Check for pre-set max-width/height, min-width/height,\n * positioning, or margins, which can mess up image calculations\n *\n * @param {node} $media - img/video element\n */\n var checkMediaProperties = function($media) {\n var styles = window.getComputedStyle($media, null);\n var constraints = {\n 'max-width': 'none',\n 'max-height': 'none',\n 'min-width': '0px',\n 'min-height': '0px',\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto',\n 'margin-top': '0px',\n 'margin-right': '0px',\n 'margin-bottom': '0px',\n 'margin-left': '0px',\n };\n\n for (var property in constraints) {\n var constraint = styles.getPropertyValue(property);\n\n if (constraint !== constraints[property]) {\n $media.style[property] = constraints[property];\n }\n }\n };\n\n /**\n * Calculate & set object-fit\n *\n * @param {node} $media - img/video/picture element\n */\n var objectFit = function($media) {\n // If necessary, make the parent container work with absolutely positioned elements\n var $container = $media.parentNode;\n checkParentContainer($container);\n\n // Check for any pre-set CSS which could mess up image calculations\n checkMediaProperties($media);\n\n // Mathematically figure out which side needs covering, and add CSS positioning & centering\n $media.style.position = 'absolute';\n $media.style.height = '100%';\n $media.style.width = 'auto';\n\n if ($media.clientWidth > $container.clientWidth) {\n $media.style.top = '0';\n $media.style.marginTop = '0';\n $media.style.left = '50%';\n $media.style.marginLeft = $media.clientWidth / -2 + 'px';\n } else {\n $media.style.width = '100%';\n $media.style.height = 'auto';\n $media.style.left = '0';\n $media.style.marginLeft = '0';\n $media.style.top = '50%';\n $media.style.marginTop = $media.clientHeight / -2 + 'px';\n }\n };\n\n /**\n * Initialize plugin\n *\n * @param {node} media - Optional specific DOM node(s) to be polyfilled\n */\n var objectFitPolyfill = function(media) {\n if (typeof media === 'undefined' || media instanceof Event) {\n // If left blank, or a default event, all media on the page will be polyfilled.\n media = document.querySelectorAll('[data-object-fit]');\n } else if (media && media.nodeName) {\n // If it's a single node, wrap it in an array so it works.\n media = [media];\n } else if (typeof media === 'object' && media.length && media[0].nodeName) {\n // If it's an array of DOM nodes (e.g. a jQuery selector), it's fine as-is.\n media = media;\n } else {\n // Otherwise, if it's invalid or an incorrect type, return false to let people know.\n return false;\n }\n\n for (var i = 0; i < media.length; i++) {\n if (!media[i].nodeName) continue;\n\n var mediaType = media[i].nodeName.toLowerCase();\n\n if (mediaType === 'img') {\n if (edgePartialSupport) continue; // Edge supports object-fit for images (but nothing else), so no need to polyfill\n\n if (media[i].complete) {\n objectFit(media[i]);\n } else {\n media[i].addEventListener('load', function() {\n objectFit(this);\n });\n }\n } else if (mediaType === 'video') {\n if (media[i].readyState > 0) {\n objectFit(media[i]);\n } else {\n media[i].addEventListener('loadedmetadata', function() {\n objectFit(this);\n });\n }\n } else {\n objectFit(media[i]);\n }\n }\n\n return true;\n };\n\n if (document.readyState === 'loading') {\n // Loading hasn't finished yet\n document.addEventListener('DOMContentLoaded', objectFitPolyfill);\n } else {\n // `DOMContentLoaded` has already fired\n objectFitPolyfill();\n }\n\n window.addEventListener('resize', objectFitPolyfill);\n\n window.objectFitPolyfill = objectFitPolyfill;\n})();","/*!\n * Flickity PACKAGED v2.2.1\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2019 Metafizzy\n */\n\n/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /* globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {\n return factory( window, jQuery );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('jquery')\n );\n } else {\n // browser global\n window.jQueryBridget = factory(\n window,\n window.jQuery\n );\n }\n\n}( window, function factory( window, jQuery ) {\n'use strict';\n\n// ----- utils ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// helper function for logging errors\n// $.error breaks jQuery chaining\nvar console = window.console;\nvar logError = typeof console == 'undefined' ? function() {} :\n function( message ) {\n console.error( message );\n };\n\n// ----- jQueryBridget ----- //\n\nfunction jQueryBridget( namespace, PluginClass, $ ) {\n $ = $ || jQuery || window.jQuery;\n if ( !$ ) {\n return;\n }\n\n // add option method -> $().plugin('option', {...})\n if ( !PluginClass.prototype.option ) {\n // option setter\n PluginClass.prototype.option = function( opts ) {\n // bail out if not an object\n if ( !$.isPlainObject( opts ) ){\n return;\n }\n this.options = $.extend( true, this.options, opts );\n };\n }\n\n // make jQuery plugin\n $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\n if ( typeof arg0 == 'string' ) {\n // method call $().plugin( 'methodName', { options } )\n // shift arguments by 1\n var args = arraySlice.call( arguments, 1 );\n return methodCall( this, arg0, args );\n }\n // just $().plugin({ options })\n plainCall( this, arg0 );\n return this;\n };\n\n // $().plugin('methodName')\n function methodCall( $elems, methodName, args ) {\n var returnValue;\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n\n $elems.each( function( i, elem ) {\n // get instance\n var instance = $.data( elem, namespace );\n if ( !instance ) {\n logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\n pluginMethodStr );\n return;\n }\n\n var method = instance[ methodName ];\n if ( !method || methodName.charAt(0) == '_' ) {\n logError( pluginMethodStr + ' is not a valid method' );\n return;\n }\n\n // apply method, get return value\n var value = method.apply( instance, args );\n // set return value if value is returned, use only first value\n returnValue = returnValue === undefined ? value : returnValue;\n });\n\n return returnValue !== undefined ? returnValue : $elems;\n }\n\n function plainCall( $elems, options ) {\n $elems.each( function( i, elem ) {\n var instance = $.data( elem, namespace );\n if ( instance ) {\n // set options & init\n instance.option( options );\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass( elem, options );\n $.data( elem, namespace, instance );\n }\n });\n }\n\n updateJQuery( $ );\n\n}\n\n// ----- updateJQuery ----- //\n\n// set $.bridget for v1 backwards compatibility\nfunction updateJQuery( $ ) {\n if ( !$ || ( $ && $.bridget ) ) {\n return;\n }\n $.bridget = jQueryBridget;\n}\n\nupdateJQuery( jQuery || window.jQuery );\n\n// ----- ----- //\n\nreturn jQueryBridget;\n\n}));\n\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( 'ev-emitter/ev-emitter',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\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/*!\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( 'get-size/get-size',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/**\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( 'desandro-matches-selector/matches-selector',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n\n/**\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( 'fizzy-ui-utils/utils',[\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\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n\n// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/cell',[\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\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var side = this.parent.originSide;\n this.element.style[ side ] = this.parent.getPositionValue( x );\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} factor - 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\n// slide\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/slide',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n });\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n });\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n });\n};\n\nreturn Slide;\n\n}));\n\n// animate\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/animate',[\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\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 = x - this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D tranforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\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\n// Flickity main\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/flickity',[\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\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts\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 or NodeList or HTMLElement} elems\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\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 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 = 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 or Number} elem\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\n * @returns {Flickity.Cell} item\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\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\n * @returns {Flickit.Cell} 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, Selector String, or Number} selector\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match(/^[#\\.]?[\\d\\/]/) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n if ( !this.isActive ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility ||isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#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} elem\n * @returns {Flickity}\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/*!\n * Unipointer v2.3.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( 'unipointer/unipointer',[\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\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 ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n } else if ( 'ontouchstart' in window ) {\n // Touch Events. iOS Safari\n startEvent = 'touchstart';\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\n/*!\n * Unidragger v2.3.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( 'unidragger/unidragger',[\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\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 this.pointerDownPointer = pointer;\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// drag\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/drag',[\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\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n // #457, RubaXa/Sortable#973\n if ( isTouch && !isTouchmoveScrollCanceled ) {\n window.addEventListener( 'touchmove', function() {});\n isTouchmoveScrollCanceled = true;\n }\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x = 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( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\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\n * @param {Integer} index - slide index\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// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/prev-next-button',[\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\n// page dots\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/page-dots',[\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\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\n// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/player',[\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\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\n// add, remove cell\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/add-remove-cell',[\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\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\n * @param {Integer} index\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\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 */\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\n// lazyload\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/lazyload',[\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 */\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/*!\n * Flickity v2.2.1\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2019 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/index',[\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n})( window, function factory( Flickity ) {\n /*jshint strict: false*/\n return Flickity;\n});\n\n/*!\n * Flickity asNavFor v2.0.2\n * enable asNavFor for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity-as-nav-for/as-nav-for',[\n 'flickity/js/index',\n 'fizzy-ui-utils/utils'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( Flickity, utils ) {\n\n\n\n// -------------------------- asNavFor prototype -------------------------- //\n\n// Flickity.defaults.asNavFor = null;\n\nFlickity.createMethods.push('_createAsNavFor');\n\nvar proto = Flickity.prototype;\n\nproto._createAsNavFor = function() {\n this.on( 'activate', this.activateAsNavFor );\n this.on( 'deactivate', this.deactivateAsNavFor );\n this.on( 'destroy', this.destroyAsNavFor );\n\n var asNavForOption = this.options.asNavFor;\n if ( !asNavForOption ) {\n return;\n }\n // HACK do async, give time for other flickity to be initalized\n var _this = this;\n setTimeout( function initNavCompanion() {\n _this.setNavCompanion( asNavForOption );\n });\n};\n\nproto.setNavCompanion = function( elem ) {\n elem = utils.getQueryElement( elem );\n var companion = Flickity.data( elem );\n // stop if no companion or companion is self\n if ( !companion || companion == this ) {\n return;\n }\n\n this.navCompanion = companion;\n // companion select\n var _this = this;\n this.onNavCompanionSelect = function() {\n _this.navCompanionSelect();\n };\n companion.on( 'select', this.onNavCompanionSelect );\n // click\n this.on( 'staticClick', this.onNavStaticClick );\n\n this.navCompanionSelect( true );\n};\n\nproto.navCompanionSelect = function( isInstant ) {\n // wait for companion & selectedCells first. #8\n var companionCells = this.navCompanion && this.navCompanion.selectedCells;\n if ( !companionCells ) {\n return;\n }\n // select slide that matches first cell of slide\n var selectedCell = companionCells[0];\n var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\n var lastIndex = firstIndex + companionCells.length - 1;\n var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\n this.navCompanion.cellAlign ) );\n this.selectCell( selectIndex, false, isInstant );\n // set nav selected class\n this.removeNavSelectedElements();\n // stop if companion has more cells than this one\n if ( selectIndex >= this.cells.length ) {\n return;\n }\n\n var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\n this.navSelectedElements = selectedCells.map( function( cell ) {\n return cell.element;\n });\n this.changeNavSelectedClass('add');\n};\n\nfunction lerp( a, b, t ) {\n return ( b - a ) * t + a;\n}\n\nproto.changeNavSelectedClass = function( method ) {\n this.navSelectedElements.forEach( function( navElem ) {\n navElem.classList[ method ]('is-nav-selected');\n });\n};\n\nproto.activateAsNavFor = function() {\n this.navCompanionSelect( true );\n};\n\nproto.removeNavSelectedElements = function() {\n if ( !this.navSelectedElements ) {\n return;\n }\n this.changeNavSelectedClass('remove');\n delete this.navSelectedElements;\n};\n\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\n if ( typeof cellIndex == 'number' ) {\n this.navCompanion.selectCell( cellIndex );\n }\n};\n\nproto.deactivateAsNavFor = function() {\n this.removeNavSelectedElements();\n};\n\nproto.destroyAsNavFor = function() {\n if ( !this.navCompanion ) {\n return;\n }\n this.navCompanion.off( 'select', this.onNavCompanionSelect );\n this.off( 'staticClick', this.onNavStaticClick );\n delete this.navCompanion;\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n\n/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) { 'use strict';\n // universal module definition\n\n /*global define: false, module: false, require: false */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'imagesloaded/imagesloaded',[\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.imagesLoaded = factory(\n window,\n window.EvEmitter\n );\n }\n\n})( typeof window !== 'undefined' ? window : this,\n\n// -------------------------- factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\n\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\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// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n if ( !( this instanceof ImagesLoaded ) ) {\n return new ImagesLoaded( elem, options, onAlways );\n }\n // use elem as selector string\n var queryElem = elem;\n if ( typeof elem == 'string' ) {\n queryElem = document.querySelectorAll( elem );\n }\n // bail if bad element\n if ( !queryElem ) {\n console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n return;\n }\n\n this.elements = makeArray( queryElem );\n this.options = extend( {}, this.options );\n // shift arguments if no options set\n if ( typeof options == 'function' ) {\n onAlways = options;\n } else {\n extend( this.options, options );\n }\n\n if ( onAlways ) {\n this.on( 'always', onAlways );\n }\n\n this.getImages();\n\n if ( $ ) {\n // add jQuery Deferred object\n this.jqDeferred = new $.Deferred();\n }\n\n // HACK check async to allow time to bind listeners\n setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n this.images = [];\n\n // filter & find items if we have an item selector\n this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n // filter siblings\n if ( elem.nodeName == 'IMG' ) {\n this.addImage( elem );\n }\n // get background image on element\n if ( this.options.background === true ) {\n this.addElementBackgroundImages( elem );\n }\n\n // find children\n // no non-element nodes, #143\n var nodeType = elem.nodeType;\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n return;\n }\n var childImgs = elem.querySelectorAll('img');\n // concat childElems to filterFound array\n for ( var i=0; i < childImgs.length; i++ ) {\n var img = childImgs[i];\n this.addImage( img );\n }\n\n // get child background images\n if ( typeof this.options.background == 'string' ) {\n var children = elem.querySelectorAll( this.options.background );\n for ( i=0; i < children.length; i++ ) {\n var child = children[i];\n this.addElementBackgroundImages( child );\n }\n }\n};\n\nvar elementNodeTypes = {\n 1: true,\n 9: true,\n 11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n return;\n }\n // get url inside url(\"...\")\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n var matches = reURL.exec( style.backgroundImage );\n while ( matches !== null ) {\n var url = matches && matches[2];\n if ( url ) {\n this.addBackground( url, elem );\n }\n matches = reURL.exec( style.backgroundImage );\n }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n var loadingImage = new LoadingImage( img );\n this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n var background = new Background( url, elem );\n this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n var _this = this;\n this.progressedCount = 0;\n this.hasAnyBroken = false;\n // complete if no images\n if ( !this.images.length ) {\n this.complete();\n return;\n }\n\n function onProgress( image, elem, message ) {\n // HACK - Chrome triggers event before object properties have changed. #83\n setTimeout( function() {\n _this.progress( image, elem, message );\n });\n }\n\n this.images.forEach( function( loadingImage ) {\n loadingImage.once( 'progress', onProgress );\n loadingImage.check();\n });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n this.progressedCount++;\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n // progress event\n this.emitEvent( 'progress', [ this, image, elem ] );\n if ( this.jqDeferred && this.jqDeferred.notify ) {\n this.jqDeferred.notify( this, image );\n }\n // check if completed\n if ( this.progressedCount == this.images.length ) {\n this.complete();\n }\n\n if ( this.options.debug && console ) {\n console.log( 'progress: ' + message, image, elem );\n }\n};\n\nImagesLoaded.prototype.complete = function() {\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\n this.isComplete = true;\n this.emitEvent( eventName, [ this ] );\n this.emitEvent( 'always', [ this ] );\n if ( this.jqDeferred ) {\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n this.jqDeferred[ jqMethod ]( this );\n }\n};\n\n// -------------------------- -------------------------- //\n\nfunction LoadingImage( img ) {\n this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n // If complete is true and browser supports natural sizes,\n // try to check for image status manually.\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n // report based on naturalWidth\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n return;\n }\n\n // If none of the checks above matched, simulate loading on detached element.\n this.proxyImage = new Image();\n this.proxyImage.addEventListener( 'load', this );\n this.proxyImage.addEventListener( 'error', this );\n // bind to image as well for Firefox. #191\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n // check for non-zero, non-undefined naturalWidth\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nLoadingImage.prototype.onload = function() {\n this.confirm( true, 'onload' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n this.confirm( false, 'onerror' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n this.proxyImage.removeEventListener( 'load', this );\n this.proxyImage.removeEventListener( 'error', this );\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n this.url = url;\n this.element = element;\n this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.img.src = this.url;\n // check if image is already complete\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n this.unbindEvents();\n }\n};\n\nBackground.prototype.unbindEvents = function() {\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n jQuery = jQuery || window.jQuery;\n if ( !jQuery ) {\n return;\n }\n // set local variable\n $ = jQuery;\n // $().imagesLoaded()\n $.fn.imagesLoaded = function( options, callback ) {\n var instance = new ImagesLoaded( this, options, callback );\n return instance.jqDeferred.promise( $(this) );\n };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// -------------------------- -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n\n/*!\n * Flickity imagesLoaded v2.0.0\n * enables imagesLoaded option for Flickity\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'imagesloaded/imagesloaded'\n ], function( Flickity, imagesLoaded ) {\n return factory( window, Flickity, imagesLoaded );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('flickity'),\n require('imagesloaded')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.imagesLoaded\n );\n }\n\n}( window, function factory( window, Flickity, imagesLoaded ) {\n'use strict';\n\nFlickity.createMethods.push('_createImagesLoaded');\n\nvar proto = Flickity.prototype;\n\nproto._createImagesLoaded = function() {\n this.on( 'activate', this.imagesLoaded );\n};\n\nproto.imagesLoaded = function() {\n if ( !this.options.imagesLoaded ) {\n return;\n }\n var _this = this;\n function onImagesLoadedProgress( instance, image ) {\n var cell = _this.getParentCell( image.img );\n _this.cellSizeChange( cell && cell.element );\n if ( !_this.options.freeScroll ) {\n _this.positionSliderAtSelected();\n }\n }\n imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\n};\n\nreturn Flickity;\n\n}));\n\n\n\n\n\n/**\n * Flickity fade v1.0.0\n * Fade between Flickity slides\n */\n\n/* jshint browser: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'fizzy-ui-utils/utils',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( this, function factory( Flickity, utils ) {\n\n// ---- Slide ---- //\n\nvar Slide = Flickity.Slide;\n\nvar slideUpdateTarget = Slide.prototype.updateTarget;\nSlide.prototype.updateTarget = function() {\n slideUpdateTarget.apply( this, arguments );\n if ( !this.parent.options.fade ) {\n return;\n }\n // position cells at selected target\n var slideTargetX = this.target - this.x;\n var firstCellX = this.cells[0].x;\n this.cells.forEach( function( cell ) {\n var targetX = cell.x - firstCellX - slideTargetX;\n cell.renderPosition( targetX );\n });\n};\n\nSlide.prototype.setOpacity = function( alpha ) {\n this.cells.forEach( function( cell ) {\n cell.element.style.opacity = alpha;\n });\n};\n\n// ---- Flickity ---- //\n\nvar proto = Flickity.prototype;\n\nFlickity.createMethods.push('_createFade');\n\nproto._createFade = function() {\n this.fadeIndex = this.selectedIndex;\n this.prevSelectedIndex = this.selectedIndex;\n this.on( 'select', this.onSelectFade );\n this.on( 'dragEnd', this.onDragEndFade );\n this.on( 'settle', this.onSettleFade );\n this.on( 'activate', this.onActivateFade );\n this.on( 'deactivate', this.onDeactivateFade );\n};\n\nvar updateSlides = proto.updateSlides;\nproto.updateSlides = function() {\n updateSlides.apply( this, arguments );\n if ( !this.options.fade ) {\n return;\n }\n // set initial opacity\n this.slides.forEach( function( slide, i ) {\n var alpha = i == this.selectedIndex ? 1 : 0;\n slide.setOpacity( alpha );\n }, this );\n};\n\n/* ---- events ---- */\n\nproto.onSelectFade = function() {\n // in case of resize, keep fadeIndex within current count\n this.fadeIndex = Math.min( this.prevSelectedIndex, this.slides.length - 1 );\n this.prevSelectedIndex = this.selectedIndex;\n};\n\nproto.onSettleFade = function() {\n delete this.didDragEnd;\n if ( !this.options.fade ) {\n return;\n }\n // set full and 0 opacity on selected & faded slides\n this.selectedSlide.setOpacity( 1 );\n var fadedSlide = this.slides[ this.fadeIndex ];\n if ( fadedSlide && this.fadeIndex != this.selectedIndex ) {\n this.slides[ this.fadeIndex ].setOpacity( 0 );\n }\n};\n\nproto.onDragEndFade = function() {\n // set flag\n this.didDragEnd = true;\n};\n\nproto.onActivateFade = function() {\n if ( this.options.fade ) {\n this.element.classList.add('is-fade');\n }\n};\n\nproto.onDeactivateFade = function() {\n if ( !this.options.fade ) {\n return;\n }\n this.element.classList.remove('is-fade');\n // reset opacity\n this.slides.forEach( function( slide ) {\n slide.setOpacity('');\n });\n};\n\n/* ---- position & fading ---- */\n\nvar positionSlider = proto.positionSlider;\nproto.positionSlider = function() {\n if ( !this.options.fade ) {\n positionSlider.apply( this, arguments );\n return;\n }\n\n this.fadeSlides();\n this.dispatchScrollEvent();\n};\n\nvar positionSliderAtSelected = proto.positionSliderAtSelected;\nproto.positionSliderAtSelected = function() {\n if ( this.options.fade ) {\n // position fade slider at origin\n this.setTranslateX( 0 );\n }\n positionSliderAtSelected.apply( this, arguments );\n};\n\nproto.fadeSlides = function() {\n if ( this.slides.length < 2 ) {\n return;\n }\n // get slides to fade-in & fade-out\n var indexes = this.getFadeIndexes();\n var fadeSlideA = this.slides[ indexes.a ];\n var fadeSlideB = this.slides[ indexes.b ];\n var distance = this.wrapDifference( fadeSlideA.target, fadeSlideB.target );\n var progress = this.wrapDifference( fadeSlideA.target, -this.x );\n // progress = progress / distance;\n progress = Math.abs(progress / distance);\n\n fadeSlideA.setOpacity( 1 - progress );\n fadeSlideB.setOpacity( progress );\n\n // hide previous slide\n var fadeHideIndex = indexes.a;\n if ( this.isDragging ) {\n fadeHideIndex = progress > 0.5 ? indexes.a : indexes.b;\n }\n var isNewHideIndex = this.fadeHideIndex != undefined &&\n this.fadeHideIndex != fadeHideIndex &&\n this.fadeHideIndex != indexes.a &&\n this.fadeHideIndex != indexes.b;\n if ( isNewHideIndex ) {\n // new fadeHideSlide set, hide previous\n this.slides[ this.fadeHideIndex ].setOpacity( 0 );\n }\n this.fadeHideIndex = fadeHideIndex;\n};\n\nproto.getFadeIndexes = function() {\n if ( !this.isDragging && !this.didDragEnd ) {\n return {\n a: this.fadeIndex,\n b: this.selectedIndex,\n };\n }\n if ( this.options.wrapAround ) {\n return this.getFadeDragWrapIndexes();\n } else {\n return this.getFadeDragLimitIndexes();\n }\n};\n\nproto.getFadeDragWrapIndexes = function() {\n var distances = this.slides.map( function( slide, i ) {\n return this.getSlideDistance( -this.x, i );\n }, this );\n var absDistances = distances.map( function( distance ) {\n return Math.abs( distance );\n });\n var minDistance = Math.min.apply( Math, absDistances );\n var closestIndex = absDistances.indexOf( minDistance );\n var distance = distances[ closestIndex ];\n var len = this.slides.length;\n\n var delta = distance >= 0 ? 1 : -1;\n return {\n a: closestIndex,\n b: utils.modulo( closestIndex + delta, len ),\n };\n};\n\nproto.getFadeDragLimitIndexes = function() {\n // calculate closest previous slide\n var dragIndex = 0;\n for ( var i=0; i < this.slides.length - 1; i++ ) {\n var slide = this.slides[i];\n if ( -this.x < slide.target ) {\n break;\n }\n dragIndex = i;\n }\n return {\n a: dragIndex,\n b: dragIndex + 1,\n };\n};\n\nproto.wrapDifference = function( a, b ) {\n var diff = b - a;\n\n if ( !this.options.wrapAround ) {\n return diff;\n }\n\n var diffPlus = diff + this.slideableWidth;\n var diffMinus = diff - this.slideableWidth;\n if ( Math.abs( diffPlus ) < Math.abs( diff ) ) {\n diff = diffPlus;\n }\n if ( Math.abs( diffMinus ) < Math.abs( diff ) ) {\n diff = diffMinus;\n }\n return diff;\n};\n\n// ---- wrapAround ---- //\n\nvar _getWrapShiftCells = proto._getWrapShiftCells;\nproto._getWrapShiftCells = function() {\n if ( !this.options.fade ) {\n _getWrapShiftCells.apply( this, arguments );\n }\n};\n\nvar shiftWrapCells = proto.shiftWrapCells;\nproto.shiftWrapCells = function() {\n if ( !this.options.fade ) {\n shiftWrapCells.apply( this, arguments );\n }\n};\n\nreturn Flickity;\n\n}));","/*! Lity - v2.4.1 - 2020-04-26\n* http://sorgalla.com/lity/\n* Copyright (c) 2015-2020 Jan Sorgalla; Licensed MIT */\n(function(window, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], function($) {\n return factory(window, $);\n });\n } else if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = factory(window, require('jquery'));\n } else {\n window.lity = factory(window, window.jQuery || window.Zepto);\n }\n}(typeof window !== \"undefined\" ? window : this, function(window, $) {\n 'use strict';\n\n var document = window.document;\n\n var _win = $(window);\n var _deferred = $.Deferred;\n var _html = $('html');\n var _instances = [];\n\n var _attrAriaHidden = 'aria-hidden';\n var _dataAriaHidden = 'lity-' + _attrAriaHidden;\n\n var _focusableElementsSelector = 'a[href],area[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),button:not([disabled]),iframe,object,embed,[contenteditable],[tabindex]:not([tabindex^=\"-\"])';\n\n var _defaultOptions = {\n esc: true,\n handler: null,\n handlers: {\n image: imageHandler,\n inline: inlineHandler,\n youtube: youtubeHandler,\n vimeo: vimeoHandler,\n googlemaps: googlemapsHandler,\n facebookvideo: facebookvideoHandler,\n iframe: iframeHandler\n },\n template: ''\n };\n\n var _imageRegexp = /(^data:image\\/)|(\\.(png|jpe?g|gif|svg|webp|bmp|ico|tiff?)(\\?\\S*)?$)/i;\n var _youtubeRegex = /(youtube(-nocookie)?\\.com|youtu\\.be)\\/(watch\\?v=|v\\/|u\\/|embed\\/?)?([\\w-]{11})(.*)?/i;\n var _vimeoRegex = /(vimeo(pro)?.com)\\/(?:[^\\d]+)?(\\d+)\\??(.*)?$/;\n var _googlemapsRegex = /((maps|www)\\.)?google\\.([^\\/\\?]+)\\/?((maps\\/?)?\\?)(.*)/i;\n var _facebookvideoRegex = /(facebook\\.com)\\/([a-z0-9_-]*)\\/videos\\/([0-9]*)(.*)?$/i;\n\n var _transitionEndEvent = (function() {\n var el = document.createElement('div');\n\n var transEndEventNames = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend'\n };\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return transEndEventNames[name];\n }\n }\n\n return false;\n })();\n\n function transitionEnd(element) {\n var deferred = _deferred();\n\n if (!_transitionEndEvent || !element.length) {\n deferred.resolve();\n } else {\n element.one(_transitionEndEvent, deferred.resolve);\n setTimeout(deferred.resolve, 500);\n }\n\n return deferred.promise();\n }\n\n function settings(currSettings, key, value) {\n if (arguments.length === 1) {\n return $.extend({}, currSettings);\n }\n\n if (typeof key === 'string') {\n if (typeof value === 'undefined') {\n return typeof currSettings[key] === 'undefined'\n ? null\n : currSettings[key];\n }\n\n currSettings[key] = value;\n } else {\n $.extend(currSettings, key);\n }\n\n return this;\n }\n\n function parseQueryParams(params) {\n var pairs = decodeURI(params.split('#')[0]).split('&');\n var obj = {}, p;\n\n for (var i = 0, n = pairs.length; i < n; i++) {\n if (!pairs[i]) {\n continue;\n }\n\n p = pairs[i].split('=');\n obj[p[0]] = p[1];\n }\n\n return obj;\n }\n\n function appendQueryParams(url, params) {\n return url + (url.indexOf('?') > -1 ? '&' : '?') + $.param(params);\n }\n\n function transferHash(originalUrl, newUrl) {\n var pos = originalUrl.indexOf('#');\n\n if (-1 === pos) {\n return newUrl;\n }\n\n if (pos > 0) {\n originalUrl = originalUrl.substr(pos);\n }\n\n return newUrl + originalUrl;\n }\n\n function error(msg) {\n return $('').append(msg);\n }\n\n function imageHandler(target, instance) {\n var desc = (instance.opener() && instance.opener().data('lity-desc')) || 'Image with no description';\n var img = $('
');\n var deferred = _deferred();\n var failed = function() {\n deferred.reject(error('Failed loading image'));\n };\n\n img\n .on('load', function() {\n if (this.naturalWidth === 0) {\n return failed();\n }\n\n deferred.resolve(img);\n })\n .on('error', failed)\n ;\n\n return deferred.promise();\n }\n\n imageHandler.test = function(target) {\n return _imageRegexp.test(target);\n };\n\n function inlineHandler(target, instance) {\n var el, placeholder, hasHideClass;\n\n try {\n el = $(target);\n } catch (e) {\n return false;\n }\n\n if (!el.length) {\n return false;\n }\n\n placeholder = $('');\n hasHideClass = el.hasClass('lity-hide');\n\n instance\n .element()\n .one('lity:remove', function() {\n placeholder\n .before(el)\n .remove()\n ;\n\n if (hasHideClass && !el.closest('.lity-content').length) {\n el.addClass('lity-hide');\n }\n })\n ;\n\n return el\n .removeClass('lity-hide')\n .after(placeholder)\n ;\n }\n\n function youtubeHandler(target) {\n var matches = _youtubeRegex.exec(target);\n\n if (!matches) {\n return false;\n }\n\n return iframeHandler(\n transferHash(\n target,\n appendQueryParams(\n 'https://www.youtube' + (matches[2] || '') + '.com/embed/' + matches[4],\n $.extend(\n {\n autoplay: 1\n },\n parseQueryParams(matches[5] || '')\n )\n )\n )\n );\n }\n\n function vimeoHandler(target) {\n var matches = _vimeoRegex.exec(target);\n\n if (!matches) {\n return false;\n }\n\n return iframeHandler(\n transferHash(\n target,\n appendQueryParams(\n 'https://player.vimeo.com/video/' + matches[3],\n $.extend(\n {\n autoplay: 1\n },\n parseQueryParams(matches[4] || '')\n )\n )\n )\n );\n }\n\n function facebookvideoHandler(target) {\n var matches = _facebookvideoRegex.exec(target);\n\n if (!matches) {\n return false;\n }\n\n if (0 !== target.indexOf('http')) {\n target = 'https:' + target;\n }\n\n return iframeHandler(\n transferHash(\n target,\n appendQueryParams(\n 'https://www.facebook.com/plugins/video.php?href=' + target,\n $.extend(\n {\n autoplay: 1\n },\n parseQueryParams(matches[4] || '')\n )\n )\n )\n );\n }\n\n function googlemapsHandler(target) {\n var matches = _googlemapsRegex.exec(target);\n\n if (!matches) {\n return false;\n }\n\n return iframeHandler(\n transferHash(\n target,\n appendQueryParams(\n 'https://www.google.' + matches[3] + '/maps?' + matches[6],\n {\n output: matches[6].indexOf('layer=c') > 0 ? 'svembed' : 'embed'\n }\n )\n )\n );\n }\n\n function iframeHandler(target) {\n return '';\n }\n\n function winHeight() {\n return document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : Math.round(_win.height());\n }\n\n function keydown(e) {\n var current = currentInstance();\n\n if (!current) {\n return;\n }\n\n // ESC key\n if (e.keyCode === 27 && !!current.options('esc')) {\n current.close();\n }\n\n // TAB key\n if (e.keyCode === 9) {\n handleTabKey(e, current);\n }\n }\n\n function handleTabKey(e, instance) {\n var focusableElements = instance.element().find(_focusableElementsSelector);\n var focusedIndex = focusableElements.index(document.activeElement);\n\n if (e.shiftKey && focusedIndex <= 0) {\n focusableElements.get(focusableElements.length - 1).focus();\n e.preventDefault();\n } else if (!e.shiftKey && focusedIndex === focusableElements.length - 1) {\n focusableElements.get(0).focus();\n e.preventDefault();\n }\n }\n\n function resize() {\n $.each(_instances, function(i, instance) {\n instance.resize();\n });\n }\n\n function registerInstance(instanceToRegister) {\n if (1 === _instances.unshift(instanceToRegister)) {\n _html.addClass('lity-active');\n\n _win\n .on({\n resize: resize,\n keydown: keydown\n })\n ;\n }\n\n $('body > *').not(instanceToRegister.element())\n .addClass('lity-hidden')\n .each(function() {\n var el = $(this);\n\n if (undefined !== el.data(_dataAriaHidden)) {\n return;\n }\n\n el.data(_dataAriaHidden, el.attr(_attrAriaHidden) || null);\n })\n .attr(_attrAriaHidden, 'true')\n ;\n }\n\n function removeInstance(instanceToRemove) {\n var show;\n\n instanceToRemove\n .element()\n .attr(_attrAriaHidden, 'true')\n ;\n\n if (1 === _instances.length) {\n _html.removeClass('lity-active');\n\n _win\n .off({\n resize: resize,\n keydown: keydown\n })\n ;\n }\n\n _instances = $.grep(_instances, function(instance) {\n return instanceToRemove !== instance;\n });\n\n if (!!_instances.length) {\n show = _instances[0].element();\n } else {\n show = $('.lity-hidden');\n }\n\n show\n .removeClass('lity-hidden')\n .each(function() {\n var el = $(this), oldAttr = el.data(_dataAriaHidden);\n\n if (!oldAttr) {\n el.removeAttr(_attrAriaHidden);\n } else {\n el.attr(_attrAriaHidden, oldAttr);\n }\n\n el.removeData(_dataAriaHidden);\n })\n ;\n }\n\n function currentInstance() {\n if (0 === _instances.length) {\n return null;\n }\n\n return _instances[0];\n }\n\n function factory(target, instance, handlers, preferredHandler) {\n var handler = 'inline', content;\n\n var currentHandlers = $.extend({}, handlers);\n\n if (preferredHandler && currentHandlers[preferredHandler]) {\n content = currentHandlers[preferredHandler](target, instance);\n handler = preferredHandler;\n } else {\n // Run inline and iframe handlers after all other handlers\n $.each(['inline', 'iframe'], function(i, name) {\n delete currentHandlers[name];\n\n currentHandlers[name] = handlers[name];\n });\n\n $.each(currentHandlers, function(name, currentHandler) {\n // Handler might be \"removed\" by setting callback to null\n if (!currentHandler) {\n return true;\n }\n\n if (\n currentHandler.test &&\n !currentHandler.test(target, instance)\n ) {\n return true;\n }\n\n content = currentHandler(target, instance);\n\n if (false !== content) {\n handler = name;\n return false;\n }\n });\n }\n\n return {handler: handler, content: content || ''};\n }\n\n function Lity(target, options, opener, activeElement) {\n var self = this;\n var result;\n var isReady = false;\n var isClosed = false;\n var element;\n var content;\n\n options = $.extend(\n {},\n _defaultOptions,\n options\n );\n\n element = $(options.template);\n\n // -- API --\n\n self.element = function() {\n return element;\n };\n\n self.opener = function() {\n return opener;\n };\n\n self.options = $.proxy(settings, self, options);\n self.handlers = $.proxy(settings, self, options.handlers);\n\n self.resize = function() {\n if (!isReady || isClosed) {\n return;\n }\n\n content\n .css('max-height', winHeight() + 'px')\n .trigger('lity:resize', [self])\n ;\n };\n\n self.close = function() {\n if (!isReady || isClosed) {\n return;\n }\n\n isClosed = true;\n\n removeInstance(self);\n\n var deferred = _deferred();\n\n // We return focus only if the current focus is inside this instance\n if (\n activeElement &&\n (\n document.activeElement === element[0] ||\n $.contains(element[0], document.activeElement)\n )\n ) {\n try {\n activeElement.focus();\n } catch (e) {\n // Ignore exceptions, eg. for SVG elements which can't be\n // focused in IE11\n }\n }\n\n content.trigger('lity:close', [self]);\n\n element\n .removeClass('lity-opened')\n .addClass('lity-closed')\n ;\n\n transitionEnd(content.add(element))\n .always(function() {\n content.trigger('lity:remove', [self]);\n element.remove();\n element = undefined;\n deferred.resolve();\n })\n ;\n\n return deferred.promise();\n };\n\n // -- Initialization --\n\n result = factory(target, self, options.handlers, options.handler);\n\n element\n .attr(_attrAriaHidden, 'false')\n .addClass('lity-loading lity-opened lity-' + result.handler)\n .appendTo('body')\n .focus()\n .on('click', '[data-lity-close]', function(e) {\n if ($(e.target).is('[data-lity-close]')) {\n self.close();\n }\n })\n .trigger('lity:open', [self])\n ;\n\n registerInstance(self);\n\n $.when(result.content)\n .always(ready)\n ;\n\n function ready(result) {\n content = $(result)\n .css('max-height', winHeight() + 'px')\n ;\n\n element\n .find('.lity-loader')\n .each(function() {\n var loader = $(this);\n\n transitionEnd(loader)\n .always(function() {\n loader.remove();\n })\n ;\n })\n ;\n\n element\n .removeClass('lity-loading')\n .find('.lity-content')\n .empty()\n .append(content)\n ;\n\n isReady = true;\n\n content\n .trigger('lity:ready', [self])\n ;\n }\n }\n\n function lity(target, options, opener) {\n if (!target.preventDefault) {\n opener = $(opener);\n } else {\n target.preventDefault();\n opener = $(this);\n target = opener.data('lity-target') || opener.attr('href') || opener.attr('src');\n }\n\n var instance = new Lity(\n target,\n $.extend(\n {},\n opener.data('lity-options') || opener.data('lity'),\n options\n ),\n opener,\n document.activeElement\n );\n\n if (!target.preventDefault) {\n return instance;\n }\n }\n\n lity.version = '2.4.1';\n lity.options = $.proxy(settings, lity, _defaultOptions);\n lity.handlers = $.proxy(settings, lity, _defaultOptions.handlers);\n lity.current = currentInstance;\n\n $(document).on('click.lity', '[data-lity]', lity);\n\n return lity;\n}));","/*!\n * jQuery.scrollTo\n * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler\n * Licensed under MIT\n * https://github.com/flesler/jquery.scrollTo\n * @projectDescription Lightweight, cross-browser and highly customizable animated scrolling with jQuery\n * @author Ariel Flesler\n * @version 2.1.2\n */\n;(function(factory) {\n\t'use strict';\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD\n\t\tdefine(['jquery'], factory);\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\t// CommonJS\n\t\tmodule.exports = factory(require('jquery'));\n\t} else {\n\t\t// Global\n\t\tfactory(jQuery);\n\t}\n})(function($) {\n\t'use strict';\n\n\tvar $scrollTo = $.scrollTo = function(target, duration, settings) {\n\t\treturn $(window).scrollTo(target, duration, settings);\n\t};\n\n\t$scrollTo.defaults = {\n\t\taxis:'xy',\n\t\tduration: 0,\n\t\tlimit:true\n\t};\n\n\tfunction isWin(elem) {\n\t\treturn !elem.nodeName ||\n\t\t\t$.inArray(elem.nodeName.toLowerCase(), ['iframe','#document','html','body']) !== -1;\n\t}\n\n\t$.fn.scrollTo = function(target, duration, settings) {\n\t\tif (typeof duration === 'object') {\n\t\t\tsettings = duration;\n\t\t\tduration = 0;\n\t\t}\n\t\tif (typeof settings === 'function') {\n\t\t\tsettings = { onAfter:settings };\n\t\t}\n\t\tif (target === 'max') {\n\t\t\ttarget = 9e9;\n\t\t}\n\n\t\tsettings = $.extend({}, $scrollTo.defaults, settings);\n\t\t// Speed is still recognized for backwards compatibility\n\t\tduration = duration || settings.duration;\n\t\t// Make sure the settings are given right\n\t\tvar queue = settings.queue && settings.axis.length > 1;\n\t\tif (queue) {\n\t\t\t// Let's keep the overall duration\n\t\t\tduration /= 2;\n\t\t}\n\t\tsettings.offset = both(settings.offset);\n\t\tsettings.over = both(settings.over);\n\n\t\treturn this.each(function() {\n\t\t\t// Null target yields nothing, just like jQuery does\n\t\t\tif (target === null) return;\n\n\t\t\tvar win = isWin(this),\n\t\t\t\telem = win ? this.contentWindow || window : this,\n\t\t\t\t$elem = $(elem),\n\t\t\t\ttarg = target,\n\t\t\t\tattr = {},\n\t\t\t\ttoff;\n\n\t\t\tswitch (typeof targ) {\n\t\t\t\t// A number will pass the regex\n\t\t\t\tcase 'number':\n\t\t\t\tcase 'string':\n\t\t\t\t\tif (/^([+-]=?)?\\d+(\\.\\d+)?(px|%)?$/.test(targ)) {\n\t\t\t\t\t\ttarg = both(targ);\n\t\t\t\t\t\t// We are done\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t// Relative/Absolute selector\n\t\t\t\t\ttarg = win ? $(targ) : $(targ, elem);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'object':\n\t\t\t\t\tif (targ.length === 0) return;\n\t\t\t\t\t// DOMElement / jQuery\n\t\t\t\t\tif (targ.is || targ.style) {\n\t\t\t\t\t\t// Get the real position of the target\n\t\t\t\t\t\ttoff = (targ = $(targ)).offset();\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar offset = $.isFunction(settings.offset) && settings.offset(elem, targ) || settings.offset;\n\n\t\t\t$.each(settings.axis.split(''), function(i, axis) {\n\t\t\t\tvar Pos\t= axis === 'x' ? 'Left' : 'Top',\n\t\t\t\t\tpos = Pos.toLowerCase(),\n\t\t\t\t\tkey = 'scroll' + Pos,\n\t\t\t\t\tprev = $elem[key](),\n\t\t\t\t\tmax = $scrollTo.max(elem, axis);\n\n\t\t\t\tif (toff) {// jQuery / DOMElement\n\t\t\t\t\tattr[key] = toff[pos] + (win ? 0 : prev - $elem.offset()[pos]);\n\n\t\t\t\t\t// If it's a dom element, reduce the margin\n\t\t\t\t\tif (settings.margin) {\n\t\t\t\t\t\tattr[key] -= parseInt(targ.css('margin'+Pos), 10) || 0;\n\t\t\t\t\t\tattr[key] -= parseInt(targ.css('border'+Pos+'Width'), 10) || 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tattr[key] += offset[pos] || 0;\n\n\t\t\t\t\tif (settings.over[pos]) {\n\t\t\t\t\t\t// Scroll to a fraction of its width/height\n\t\t\t\t\t\tattr[key] += targ[axis === 'x'?'width':'height']() * settings.over[pos];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar val = targ[pos];\n\t\t\t\t\t// Handle percentage values\n\t\t\t\t\tattr[key] = val.slice && val.slice(-1) === '%' ?\n\t\t\t\t\t\tparseFloat(val) / 100 * max\n\t\t\t\t\t\t: val;\n\t\t\t\t}\n\n\t\t\t\t// Number or 'number'\n\t\t\t\tif (settings.limit && /^\\d+$/.test(attr[key])) {\n\t\t\t\t\t// Check the limits\n\t\t\t\t\tattr[key] = attr[key] <= 0 ? 0 : Math.min(attr[key], max);\n\t\t\t\t}\n\n\t\t\t\t// Don't waste time animating, if there's no need.\n\t\t\t\tif (!i && settings.axis.length > 1) {\n\t\t\t\t\tif (prev === attr[key]) {\n\t\t\t\t\t\t// No animation needed\n\t\t\t\t\t\tattr = {};\n\t\t\t\t\t} else if (queue) {\n\t\t\t\t\t\t// Intermediate animation\n\t\t\t\t\t\tanimate(settings.onAfterFirst);\n\t\t\t\t\t\t// Don't animate this axis again in the next iteration.\n\t\t\t\t\t\tattr = {};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tanimate(settings.onAfter);\n\n\t\t\tfunction animate(callback) {\n\t\t\t\tvar opts = $.extend({}, settings, {\n\t\t\t\t\t// The queue setting conflicts with animate()\n\t\t\t\t\t// Force it to always be true\n\t\t\t\t\tqueue: true,\n\t\t\t\t\tduration: duration,\n\t\t\t\t\tcomplete: callback && function() {\n\t\t\t\t\t\tcallback.call(elem, targ, settings);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t$elem.animate(attr, opts);\n\t\t\t}\n\t\t});\n\t};\n\n\t// Max scrolling position, works on quirks mode\n\t// It only fails (not too badly) on IE, quirks mode.\n\t$scrollTo.max = function(elem, axis) {\n\t\tvar Dim = axis === 'x' ? 'Width' : 'Height',\n\t\t\tscroll = 'scroll'+Dim;\n\n\t\tif (!isWin(elem))\n\t\t\treturn elem[scroll] - $(elem)[Dim.toLowerCase()]();\n\n\t\tvar size = 'client' + Dim,\n\t\t\tdoc = elem.ownerDocument || elem.document,\n\t\t\thtml = doc.documentElement,\n\t\t\tbody = doc.body;\n\n\t\treturn Math.max(html[scroll], body[scroll]) - Math.min(html[size], body[size]);\n\t};\n\n\tfunction both(val) {\n\t\treturn $.isFunction(val) || $.isPlainObject(val) ? val : { top:val, left:val };\n\t}\n\n\t// Add special hooks so that window scroll properties can be animated\n\t$.Tween.propHooks.scrollLeft =\n\t$.Tween.propHooks.scrollTop = {\n\t\tget: function(t) {\n\t\t\treturn $(t.elem)[t.prop]();\n\t\t},\n\t\tset: function(t) {\n\t\t\tvar curr = this.get(t);\n\t\t\t// If interrupt is true and user scrolled, stop animating\n\t\t\tif (t.options.interrupt && t._last && t._last !== curr) {\n\t\t\t\treturn $(t.elem).stop();\n\t\t\t}\n\t\t\tvar next = Math.round(t.now);\n\t\t\t// Don't waste CPU\n\t\t\t// Browsers don't render floating point scroll\n\t\t\tif (curr !== next) {\n\t\t\t\t$(t.elem)[t.prop](next);\n\t\t\t\tt._last = this.get(t);\n\t\t\t}\n\t\t}\n\t};\n\n\t// AMD requirement\n\treturn $scrollTo;\n});"]}