{"version":3,"sources":["flickity/flickity.pkgd.js","main.js","partials/_debouncer.js","partials/_events-slider.js","partials/_gallery.js","partials/_homepage-heading.js","partials/_hompage-calendar.js","partials/_landing-page-heading-slider.js","partials/_lazy-loading-image.js","partials/_load-more-btn.js","partials/_logos-slider.js","partials/_mega-menu.js","partials/_passed-festivals-slider.js","partials/_related-posts-slider.js","partials/_relators_list.js","partials/_searchbar.js","partials/_sidebar.js","partials/_string-is-null-or-whitespace.js","partials/_string-to-html-converter.js","partials/_sub-header.js","partials/_top-header.js"],"names":["window","factory","define","amd","jQuery","module","_typeof","exports","require","jQueryBridget","arraySlice","Array","prototype","slice","console","logError","message","error","namespace","PluginClass","$","option","opts","isPlainObject","this","options","extend","fn","arg0","each","i","elem","instance","data","_init","methodName","args","returnValue","pluginMethodStr","call","arguments","$elems","method","charAt","value","apply","undefined","updateJQuery","bridget","global","EvEmitter","proto","on","eventName","listener","events","_events","listeners","indexOf","push","once","onceEvents","_onceEvents","off","length","index","splice","emitEvent","onceListeners","allOff","getSize","getStyleSize","num","parseFloat","isNaN","measurements","measurementsLength","getStyle","style","getComputedStyle","isBoxSizeOuter","isSetup","div","document","createElement","width","padding","borderStyle","borderWidth","boxSizing","body","documentElement","appendChild","Math","round","removeChild","querySelector","nodeType","display","size","height","innerWidth","innerHeight","outerWidth","outerHeight","getZeroSize","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","matchesSelector","matchesMethod","ElemProto","Element","matches","prefixes","selector","fizzyUIUtils","utils","a","b","prop","makeArray","obj","isArray","removeFrom","ary","getParent","parentNode","getQueryElement","handleEvent","event","type","filterFindElements","elems","ffElems","forEach","HTMLElement","childElems","querySelectorAll","debounceMethod","_class","threshold","timeoutName","timeout","clearTimeout","_this","setTimeout","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","htmlInit","WidgetClass","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","attr","getAttribute","JSON","parse","className","Flickity","Cell","parent","element","create","position","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","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","requestAnimationFrame","wrapAround","modulo","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","slider","transform","positionX","firstSlide","slides","progress","slidesWidth","dispatchEvent","selectedSlide","velocity","percentPosition","isPointerDown","isFreeScrolling","selectedIndex","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","cellShift","getFrictionFactor","force","dragForce","isDraggable","dragX","applyForce","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","parseInt","percentMatch","percent","reposition","positionSliderAtSelected","setCellAlign","cellAlignShorthands","center","left","right","shorthand","adaptiveHeight","gapX","cellIndex","_unshiftCells","_getGapCells","increment","contentWidth","isContentSmaller","beginBound","endBound","contain","isRightToLeft","min","emitArgs","$event","jQEvent","Event","trigger","isWrap","isInstant","_wrapSelect","prevIndex","startAnimation","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","isNotFocused","activeElement","handler","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","nodeName","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","previousDragX","direction","originBound","dragMoveTime","Date","restingX","freeScroll","dragEndRestingSelect","getRestingPosition","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","insertCellElement","endCells","isAppend","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","complete","onerror","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavForOption","asNavFor","setNavCompanion","companion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","firstIndex","t","selectIndex","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","isComplete","jqMethod","getIsImageComplete","confirm","naturalWidth","proxyImage","unbindEvents","makeJQueryPlugin","promise","_createImagesLoaded","initSwitchLanguage","jsLazyLoadImages","initGallerySlider","initLogosSlider","initSidebar","initLoadMore","initEventsSlider","initPassedFestivalsSlider","initLandingPageHeadingSlider","initSearchBar","initHomePageHeadingSlider","initHomePageCalendar","initMegaMenu","initRelatedPostsSlider","iniSubHeader","initRelatorsList","debouncer","func","timeoutId","_this2","_len","_key","eventSlider","fetchSlidesJson","myHeaders","Headers","fetch","headers","then","response","text","result","jsonResponse","countslide","singleSlide","stringToHTML","createSlide","e","cloneNode","secondSlide","thirdSlide","createSlider","extractFirstParagraphOrFullText","htmlString","data_evento","firstSessionDate","substr","_id","eventUrl","headerImage","thumbnail","medium","eventCategoryColor","eventTypeName","title","description","homePageHeadingSlider","dateConstructor","currentMonth","getMonth","currentYear","getFullYear","months","previousButton","monthAndYear","showCalendar","nextNthMdays","schedule","year","mese","month","nthInMonth","dates","setDate","day","getDay","keys","reduce","getTime","sevenAway","getDate","firstDay","2","dayblank","tbl","getElementById","innerHTML","date","row","j","cellText","createTextNode","daysInMonth","_a","HTMLSpanElement","toString","href","span","fetchCalendarEvents","Month","Year","iMonth","iYear","calendarEventRequest","days","giorno","substring","eventCategoryColors","landingPageHeadingSlider","asyncImg","asyncBg","container","jsLazyLoad","lazyImgs","lazyImagesBG","notLazyNodes","_toConsumableArray","some","node","contains","lazyImage","getBoundingClientRect","top","bottom","resizeBg","filter","cardDeck","clickedButton","HTMLAnchorElement","nextPageUrl","parsedHTML","DOMParser","parseFromString","card","updatedButton","clonedNode","megaMenuContainer","megaMenuTogglerContainer","clientWidth","toggle","passedFestivalsSlider","relatedPostsSlider","relatorsList","fetchRelatorJson","secondLevelLocation","location","pathname","split","singleRelator","stringToHTML2","createRelator","lang","foto","photo","full","name","surname","searchbar","searchButton","userQuery","URLSearchParams","search","get","query","trim","isStringNullOrWhiteSpace","sidebar","childNodes","test","swipeGesture","subHeader","dataShow","touchMoveHandler","sessionStorage","getItem","addShow","setItem","removeShow","langIcon","dropdownMenuLanguage"],"mappings":"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","file":"scriptsbundle.js","sourcesContent":["/*!\r\n * Flickity PACKAGED v2.2.0\r\n * Touch, responsive, flickable carousels\r\n *\r\n * Licensed GPLv3 for open source use\r\n * or Flickity Commercial License for commercial use\r\n *\r\n * https://flickity.metafizzy.co\r\n * Copyright 2015-2018 Metafizzy\r\n */\r\n\r\n/**\r\n * Bridget makes jQuery widgets\r\n * v2.0.1\r\n * MIT license\r\n */\r\n\r\n/* jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /* globals define, module, require */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {\r\n return factory( window, jQuery );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('jquery')\r\n );\r\n } else {\r\n // browser global\r\n window.jQueryBridget = factory(\r\n window,\r\n window.jQuery\r\n );\r\n }\r\n\r\n}( window, function factory( window, jQuery ) {\r\n'use strict';\r\n\r\n// ----- utils ----- //\r\n\r\nvar arraySlice = Array.prototype.slice;\r\n\r\n// helper function for logging errors\r\n// $.error breaks jQuery chaining\r\nvar console = window.console;\r\nvar logError = typeof console == 'undefined' ? function() {} :\r\n function( message ) {\r\n console.error( message );\r\n };\r\n\r\n// ----- jQueryBridget ----- //\r\n\r\nfunction jQueryBridget( namespace, PluginClass, $ ) {\r\n $ = $ || jQuery || window.jQuery;\r\n if ( !$ ) {\r\n return;\r\n }\r\n\r\n // add option method -> $().plugin('option', {...})\r\n if ( !PluginClass.prototype.option ) {\r\n // option setter\r\n PluginClass.prototype.option = function( opts ) {\r\n // bail out if not an object\r\n if ( !$.isPlainObject( opts ) ){\r\n return;\r\n }\r\n this.options = $.extend( true, this.options, opts );\r\n };\r\n }\r\n\r\n // make jQuery plugin\r\n $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\r\n if ( typeof arg0 == 'string' ) {\r\n // method call $().plugin( 'methodName', { options } )\r\n // shift arguments by 1\r\n var args = arraySlice.call( arguments, 1 );\r\n return methodCall( this, arg0, args );\r\n }\r\n // just $().plugin({ options })\r\n plainCall( this, arg0 );\r\n return this;\r\n };\r\n\r\n // $().plugin('methodName')\r\n function methodCall( $elems, methodName, args ) {\r\n var returnValue;\r\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\r\n\r\n $elems.each( function( i, elem ) {\r\n // get instance\r\n var instance = $.data( elem, namespace );\r\n if ( !instance ) {\r\n logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\r\n pluginMethodStr );\r\n return;\r\n }\r\n\r\n var method = instance[ methodName ];\r\n if ( !method || methodName.charAt(0) == '_' ) {\r\n logError( pluginMethodStr + ' is not a valid method' );\r\n return;\r\n }\r\n\r\n // apply method, get return value\r\n var value = method.apply( instance, args );\r\n // set return value if value is returned, use only first value\r\n returnValue = returnValue === undefined ? value : returnValue;\r\n });\r\n\r\n return returnValue !== undefined ? returnValue : $elems;\r\n }\r\n\r\n function plainCall( $elems, options ) {\r\n $elems.each( function( i, elem ) {\r\n var instance = $.data( elem, namespace );\r\n if ( instance ) {\r\n // set options & init\r\n instance.option( options );\r\n instance._init();\r\n } else {\r\n // initialize new instance\r\n instance = new PluginClass( elem, options );\r\n $.data( elem, namespace, instance );\r\n }\r\n });\r\n }\r\n\r\n updateJQuery( $ );\r\n\r\n}\r\n\r\n// ----- updateJQuery ----- //\r\n\r\n// set $.bridget for v1 backwards compatibility\r\nfunction updateJQuery( $ ) {\r\n if ( !$ || ( $ && $.bridget ) ) {\r\n return;\r\n }\r\n $.bridget = jQueryBridget;\r\n}\r\n\r\nupdateJQuery( jQuery || window.jQuery );\r\n\r\n// ----- ----- //\r\n\r\nreturn jQueryBridget;\r\n\r\n}));\r\n\r\n/**\r\n * EvEmitter v1.1.0\r\n * Lil' event emitter\r\n * MIT License\r\n */\r\n\r\n/* jshint unused: true, undef: true, strict: true */\r\n\r\n( function( global, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */ /* globals define, module, window */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD - RequireJS\r\n define( 'ev-emitter/ev-emitter',factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS - Browserify, Webpack\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n global.EvEmitter = factory();\r\n }\r\n\r\n}( typeof window != 'undefined' ? window : this, function() {\r\n\r\n\r\n\r\nfunction EvEmitter() {}\r\n\r\nvar proto = EvEmitter.prototype;\r\n\r\nproto.on = function( eventName, listener ) {\r\n if ( !eventName || !listener ) {\r\n return;\r\n }\r\n // set events hash\r\n var events = this._events = this._events || {};\r\n // set listeners array\r\n var listeners = events[ eventName ] = events[ eventName ] || [];\r\n // only add once\r\n if ( listeners.indexOf( listener ) == -1 ) {\r\n listeners.push( listener );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.once = function( eventName, listener ) {\r\n if ( !eventName || !listener ) {\r\n return;\r\n }\r\n // add event\r\n this.on( eventName, listener );\r\n // set once flag\r\n // set onceEvents hash\r\n var onceEvents = this._onceEvents = this._onceEvents || {};\r\n // set onceListeners object\r\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\r\n // set flag\r\n onceListeners[ listener ] = true;\r\n\r\n return this;\r\n};\r\n\r\nproto.off = function( eventName, listener ) {\r\n var listeners = this._events && this._events[ eventName ];\r\n if ( !listeners || !listeners.length ) {\r\n return;\r\n }\r\n var index = listeners.indexOf( listener );\r\n if ( index != -1 ) {\r\n listeners.splice( index, 1 );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.emitEvent = function( eventName, args ) {\r\n var listeners = this._events && this._events[ eventName ];\r\n if ( !listeners || !listeners.length ) {\r\n return;\r\n }\r\n // copy over to avoid interference if .off() in listener\r\n listeners = listeners.slice(0);\r\n args = args || [];\r\n // once stuff\r\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\r\n\r\n for ( var i=0; i < listeners.length; i++ ) {\r\n var listener = listeners[i]\r\n var isOnce = onceListeners && onceListeners[ listener ];\r\n if ( isOnce ) {\r\n // remove listener\r\n // remove before trigger to prevent recursion\r\n this.off( eventName, listener );\r\n // unset once flag\r\n delete onceListeners[ listener ];\r\n }\r\n // trigger listener\r\n listener.apply( this, args );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.allOff = function() {\r\n delete this._events;\r\n delete this._onceEvents;\r\n};\r\n\r\nreturn EvEmitter;\r\n\r\n}));\r\n\r\n/*!\r\n * getSize v2.0.3\r\n * measure size of elements\r\n * MIT license\r\n */\r\n\r\n/* jshint browser: true, strict: true, undef: true, unused: true */\r\n/* globals console: false */\r\n\r\n( function( window, factory ) {\r\n /* jshint strict: false */ /* globals define, module */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'get-size/get-size',factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // browser global\r\n window.getSize = factory();\r\n }\r\n\r\n})( window, function factory() {\r\n'use strict';\r\n\r\n// -------------------------- helpers -------------------------- //\r\n\r\n// get a number from a string, not a percentage\r\nfunction getStyleSize( value ) {\r\n var num = parseFloat( value );\r\n // not a percent like '100%', and a number\r\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\r\n return isValid && num;\r\n}\r\n\r\nfunction noop() {}\r\n\r\nvar logError = typeof console == 'undefined' ? noop :\r\n function( message ) {\r\n console.error( message );\r\n };\r\n\r\n// -------------------------- measurements -------------------------- //\r\n\r\nvar measurements = [\r\n 'paddingLeft',\r\n 'paddingRight',\r\n 'paddingTop',\r\n 'paddingBottom',\r\n 'marginLeft',\r\n 'marginRight',\r\n 'marginTop',\r\n 'marginBottom',\r\n 'borderLeftWidth',\r\n 'borderRightWidth',\r\n 'borderTopWidth',\r\n 'borderBottomWidth'\r\n];\r\n\r\nvar measurementsLength = measurements.length;\r\n\r\nfunction getZeroSize() {\r\n var size = {\r\n width: 0,\r\n height: 0,\r\n innerWidth: 0,\r\n innerHeight: 0,\r\n outerWidth: 0,\r\n outerHeight: 0\r\n };\r\n for ( var i=0; i < measurementsLength; i++ ) {\r\n var measurement = measurements[i];\r\n size[ measurement ] = 0;\r\n }\r\n return size;\r\n}\r\n\r\n// -------------------------- getStyle -------------------------- //\r\n\r\n/**\r\n * getStyle, get style of element, check for Firefox bug\r\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\r\n */\r\nfunction getStyle( elem ) {\r\n var style = getComputedStyle( elem );\r\n if ( !style ) {\r\n logError( 'Style returned ' + style +\r\n '. Are you running this code in a hidden iframe on Firefox? ' +\r\n 'See https://bit.ly/getsizebug1' );\r\n }\r\n return style;\r\n}\r\n\r\n// -------------------------- setup -------------------------- //\r\n\r\nvar isSetup = false;\r\n\r\nvar isBoxSizeOuter;\r\n\r\n/**\r\n * setup\r\n * check isBoxSizerOuter\r\n * do on first getSize() rather than on page load for Firefox bug\r\n */\r\nfunction setup() {\r\n // setup once\r\n if ( isSetup ) {\r\n return;\r\n }\r\n isSetup = true;\r\n\r\n // -------------------------- box sizing -------------------------- //\r\n\r\n /**\r\n * Chrome & Safari measure the outer-width on style.width on border-box elems\r\n * IE11 & Firefox<29 measures the inner-width\r\n */\r\n var div = document.createElement('div');\r\n div.style.width = '200px';\r\n div.style.padding = '1px 2px 3px 4px';\r\n div.style.borderStyle = 'solid';\r\n div.style.borderWidth = '1px 2px 3px 4px';\r\n div.style.boxSizing = 'border-box';\r\n\r\n var body = document.body || document.documentElement;\r\n body.appendChild( div );\r\n var style = getStyle( div );\r\n // round value for browser zoom. desandro/masonry#928\r\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\r\n getSize.isBoxSizeOuter = isBoxSizeOuter;\r\n\r\n body.removeChild( div );\r\n}\r\n\r\n// -------------------------- getSize -------------------------- //\r\n\r\nfunction getSize( elem ) {\r\n setup();\r\n\r\n // use querySeletor if elem is string\r\n if ( typeof elem == 'string' ) {\r\n elem = document.querySelector( elem );\r\n }\r\n\r\n // do not proceed on non-objects\r\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\r\n return;\r\n }\r\n\r\n var style = getStyle( elem );\r\n\r\n // if hidden, everything is 0\r\n if ( style.display == 'none' ) {\r\n return getZeroSize();\r\n }\r\n\r\n var size = {};\r\n size.width = elem.offsetWidth;\r\n size.height = elem.offsetHeight;\r\n\r\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\r\n\r\n // get all measurements\r\n for ( var i=0; i < measurementsLength; i++ ) {\r\n var measurement = measurements[i];\r\n var value = style[ measurement ];\r\n var num = parseFloat( value );\r\n // any 'auto', 'medium' value will be 0\r\n size[ measurement ] = !isNaN( num ) ? num : 0;\r\n }\r\n\r\n var paddingWidth = size.paddingLeft + size.paddingRight;\r\n var paddingHeight = size.paddingTop + size.paddingBottom;\r\n var marginWidth = size.marginLeft + size.marginRight;\r\n var marginHeight = size.marginTop + size.marginBottom;\r\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\r\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\r\n\r\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\r\n\r\n // overwrite width and height if we can get it from style\r\n var styleWidth = getStyleSize( style.width );\r\n if ( styleWidth !== false ) {\r\n size.width = styleWidth +\r\n // add padding and border unless it's already including it\r\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\r\n }\r\n\r\n var styleHeight = getStyleSize( style.height );\r\n if ( styleHeight !== false ) {\r\n size.height = styleHeight +\r\n // add padding and border unless it's already including it\r\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\r\n }\r\n\r\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\r\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\r\n\r\n size.outerWidth = size.width + marginWidth;\r\n size.outerHeight = size.height + marginHeight;\r\n\r\n return size;\r\n}\r\n\r\nreturn getSize;\r\n\r\n});\r\n\r\n/**\r\n * matchesSelector v2.0.2\r\n * matchesSelector( element, '.selector' )\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n( function( window, factory ) {\r\n /*global define: false, module: false */\r\n 'use strict';\r\n // universal module definition\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'desandro-matches-selector/matches-selector',factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // browser global\r\n window.matchesSelector = factory();\r\n }\r\n\r\n}( window, function factory() {\r\n 'use strict';\r\n\r\n var matchesMethod = ( function() {\r\n var ElemProto = window.Element.prototype;\r\n // check for the standard method name first\r\n if ( ElemProto.matches ) {\r\n return 'matches';\r\n }\r\n // check un-prefixed\r\n if ( ElemProto.matchesSelector ) {\r\n return 'matchesSelector';\r\n }\r\n // check vendor prefixes\r\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\r\n\r\n for ( var i=0; i < prefixes.length; i++ ) {\r\n var prefix = prefixes[i];\r\n var method = prefix + 'MatchesSelector';\r\n if ( ElemProto[ method ] ) {\r\n return method;\r\n }\r\n }\r\n })();\r\n\r\n return function matchesSelector( elem, selector ) {\r\n return elem[ matchesMethod ]( selector );\r\n };\r\n\r\n}));\r\n\r\n/**\r\n * Fizzy UI utils v2.0.7\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, undef: true, unused: true, strict: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /*globals define, module, require */\r\n\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'fizzy-ui-utils/utils',[\r\n 'desandro-matches-selector/matches-selector'\r\n ], function( matchesSelector ) {\r\n return factory( window, matchesSelector );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('desandro-matches-selector')\r\n );\r\n } else {\r\n // browser global\r\n window.fizzyUIUtils = factory(\r\n window,\r\n window.matchesSelector\r\n );\r\n }\r\n\r\n}( window, function factory( window, matchesSelector ) {\r\n\r\n\r\n\r\nvar utils = {};\r\n\r\n// ----- extend ----- //\r\n\r\n// extends objects\r\nutils.extend = function( a, b ) {\r\n for ( var prop in b ) {\r\n a[ prop ] = b[ prop ];\r\n }\r\n return a;\r\n};\r\n\r\n// ----- modulo ----- //\r\n\r\nutils.modulo = function( num, div ) {\r\n return ( ( num % div ) + div ) % div;\r\n};\r\n\r\n// ----- makeArray ----- //\r\n\r\nvar arraySlice = Array.prototype.slice;\r\n\r\n// turn element or nodeList into an array\r\nutils.makeArray = function( obj ) {\r\n if ( Array.isArray( obj ) ) {\r\n // use object if already an array\r\n return obj;\r\n }\r\n // return empty array if undefined or null. #6\r\n if ( obj === null || obj === undefined ) {\r\n return [];\r\n }\r\n\r\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\r\n if ( isArrayLike ) {\r\n // convert nodeList to array\r\n return arraySlice.call( obj );\r\n }\r\n\r\n // array of single index\r\n return [ obj ];\r\n};\r\n\r\n// ----- removeFrom ----- //\r\n\r\nutils.removeFrom = function( ary, obj ) {\r\n var index = ary.indexOf( obj );\r\n if ( index != -1 ) {\r\n ary.splice( index, 1 );\r\n }\r\n};\r\n\r\n// ----- getParent ----- //\r\n\r\nutils.getParent = function( elem, selector ) {\r\n while ( elem.parentNode && elem != document.body ) {\r\n elem = elem.parentNode;\r\n if ( matchesSelector( elem, selector ) ) {\r\n return elem;\r\n }\r\n }\r\n};\r\n\r\n// ----- getQueryElement ----- //\r\n\r\n// use element as selector string\r\nutils.getQueryElement = function( elem ) {\r\n if ( typeof elem == 'string' ) {\r\n return document.querySelector( elem );\r\n }\r\n return elem;\r\n};\r\n\r\n// ----- handleEvent ----- //\r\n\r\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\r\nutils.handleEvent = function( event ) {\r\n var method = 'on' + event.type;\r\n if ( this[ method ] ) {\r\n this[ method ]( event );\r\n }\r\n};\r\n\r\n// ----- filterFindElements ----- //\r\n\r\nutils.filterFindElements = function( elems, selector ) {\r\n // make array of elems\r\n elems = utils.makeArray( elems );\r\n var ffElems = [];\r\n\r\n elems.forEach( function( elem ) {\r\n // check that elem is an actual element\r\n if ( !( elem instanceof HTMLElement ) ) {\r\n return;\r\n }\r\n // add elem if no selector\r\n if ( !selector ) {\r\n ffElems.push( elem );\r\n return;\r\n }\r\n // filter & find items if we have a selector\r\n // filter\r\n if ( matchesSelector( elem, selector ) ) {\r\n ffElems.push( elem );\r\n }\r\n // find children\r\n var childElems = elem.querySelectorAll( selector );\r\n // concat childElems to filterFound array\r\n for ( var i=0; i < childElems.length; i++ ) {\r\n ffElems.push( childElems[i] );\r\n }\r\n });\r\n\r\n return ffElems;\r\n};\r\n\r\n// ----- debounceMethod ----- //\r\n\r\nutils.debounceMethod = function( _class, methodName, threshold ) {\r\n threshold = threshold || 100;\r\n // original method\r\n var method = _class.prototype[ methodName ];\r\n var timeoutName = methodName + 'Timeout';\r\n\r\n _class.prototype[ methodName ] = function() {\r\n var timeout = this[ timeoutName ];\r\n clearTimeout( timeout );\r\n\r\n var args = arguments;\r\n var _this = this;\r\n this[ timeoutName ] = setTimeout( function() {\r\n method.apply( _this, args );\r\n delete _this[ timeoutName ];\r\n }, threshold );\r\n };\r\n};\r\n\r\n// ----- docReady ----- //\r\n\r\nutils.docReady = function( callback ) {\r\n var readyState = document.readyState;\r\n if ( readyState == 'complete' || readyState == 'interactive' ) {\r\n // do async to allow for other scripts to run. metafizzy/flickity#441\r\n setTimeout( callback );\r\n } else {\r\n document.addEventListener( 'DOMContentLoaded', callback );\r\n }\r\n};\r\n\r\n// ----- htmlInit ----- //\r\n\r\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\r\nutils.toDashed = function( str ) {\r\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\r\n return $1 + '-' + $2;\r\n }).toLowerCase();\r\n};\r\n\r\nvar console = window.console;\r\n/**\r\n * allow user to initialize classes via [data-namespace] or .js-namespace class\r\n * htmlInit( Widget, 'widgetName' )\r\n * options are parsed from data-namespace-options\r\n */\r\nutils.htmlInit = function( WidgetClass, namespace ) {\r\n utils.docReady( function() {\r\n var dashedNamespace = utils.toDashed( namespace );\r\n var dataAttr = 'data-' + dashedNamespace;\r\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\r\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\r\n var elems = utils.makeArray( dataAttrElems )\r\n .concat( utils.makeArray( jsDashElems ) );\r\n var dataOptionsAttr = dataAttr + '-options';\r\n var jQuery = window.jQuery;\r\n\r\n elems.forEach( function( elem ) {\r\n var attr = elem.getAttribute( dataAttr ) ||\r\n elem.getAttribute( dataOptionsAttr );\r\n var options;\r\n try {\r\n options = attr && JSON.parse( attr );\r\n } catch ( error ) {\r\n // log error, do not initialize\r\n if ( console ) {\r\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\r\n ': ' + error );\r\n }\r\n return;\r\n }\r\n // initialize\r\n var instance = new WidgetClass( elem, options );\r\n // make available via $().data('namespace')\r\n if ( jQuery ) {\r\n jQuery.data( elem, namespace, instance );\r\n }\r\n });\r\n\r\n });\r\n};\r\n\r\n// ----- ----- //\r\n\r\nreturn utils;\r\n\r\n}));\r\n\r\n// Flickity.Cell\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/cell',[\r\n 'get-size/get-size'\r\n ], function( getSize ) {\r\n return factory( window, getSize );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('get-size')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = window.Flickity || {};\r\n window.Flickity.Cell = factory(\r\n window,\r\n window.getSize\r\n );\r\n }\r\n\r\n}( window, function factory( window, getSize ) {\r\n\r\n\r\n\r\nfunction Cell( elem, parent ) {\r\n this.element = elem;\r\n this.parent = parent;\r\n\r\n this.create();\r\n}\r\n\r\nvar proto = Cell.prototype;\r\n\r\nproto.create = function() {\r\n this.element.style.position = 'absolute';\r\n this.element.setAttribute( 'aria-hidden', 'true' );\r\n this.x = 0;\r\n this.shift = 0;\r\n};\r\n\r\nproto.destroy = function() {\r\n // reset style\r\n this.unselect();\r\n this.element.style.position = '';\r\n var side = this.parent.originSide;\r\n this.element.style[ side ] = '';\r\n};\r\n\r\nproto.getSize = function() {\r\n this.size = getSize( this.element );\r\n};\r\n\r\nproto.setPosition = function( x ) {\r\n this.x = x;\r\n this.updateTarget();\r\n this.renderPosition( x );\r\n};\r\n\r\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\r\nproto.updateTarget = proto.setDefaultTarget = function() {\r\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\r\n this.target = this.x + this.size[ marginProperty ] +\r\n this.size.width * this.parent.cellAlign;\r\n};\r\n\r\nproto.renderPosition = function( x ) {\r\n // render position of cell with in slider\r\n var side = this.parent.originSide;\r\n this.element.style[ side ] = this.parent.getPositionValue( x );\r\n};\r\n\r\nproto.select = function() {\r\n this.element.classList.add('is-selected');\r\n this.element.removeAttribute('aria-hidden');\r\n};\r\n\r\nproto.unselect = function() {\r\n this.element.classList.remove('is-selected');\r\n this.element.setAttribute( 'aria-hidden', 'true' );\r\n};\r\n\r\n/**\r\n * @param {Integer} factor - 0, 1, or -1\r\n**/\r\nproto.wrapShift = function( shift ) {\r\n this.shift = shift;\r\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\r\n};\r\n\r\nproto.remove = function() {\r\n this.element.parentNode.removeChild( this.element );\r\n};\r\n\r\nreturn Cell;\r\n\r\n}));\r\n\r\n// slide\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/slide',factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // browser global\r\n window.Flickity = window.Flickity || {};\r\n window.Flickity.Slide = factory();\r\n }\r\n\r\n}( window, function factory() {\r\n'use strict';\r\n\r\nfunction Slide( parent ) {\r\n this.parent = parent;\r\n this.isOriginLeft = parent.originSide == 'left';\r\n this.cells = [];\r\n this.outerWidth = 0;\r\n this.height = 0;\r\n}\r\n\r\nvar proto = Slide.prototype;\r\n\r\nproto.addCell = function( cell ) {\r\n this.cells.push( cell );\r\n this.outerWidth += cell.size.outerWidth;\r\n this.height = Math.max( cell.size.outerHeight, this.height );\r\n // first cell stuff\r\n if ( this.cells.length == 1 ) {\r\n this.x = cell.x; // x comes from first cell\r\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\r\n this.firstMargin = cell.size[ beginMargin ];\r\n }\r\n};\r\n\r\nproto.updateTarget = function() {\r\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\r\n var lastCell = this.getLastCell();\r\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\r\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\r\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\r\n};\r\n\r\nproto.getLastCell = function() {\r\n return this.cells[ this.cells.length - 1 ];\r\n};\r\n\r\nproto.select = function() {\r\n this.cells.forEach( function( cell ) {\r\n cell.select();\r\n });\r\n};\r\n\r\nproto.unselect = function() {\r\n this.cells.forEach( function( cell ) {\r\n cell.unselect();\r\n });\r\n};\r\n\r\nproto.getCellElements = function() {\r\n return this.cells.map( function( cell ) {\r\n return cell.element;\r\n });\r\n};\r\n\r\nreturn Slide;\r\n\r\n}));\r\n\r\n// animate\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/animate',[\r\n 'fizzy-ui-utils/utils'\r\n ], function( utils ) {\r\n return factory( window, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = window.Flickity || {};\r\n window.Flickity.animatePrototype = factory(\r\n window,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, utils ) {\r\n\r\n\r\n\r\n// -------------------------- animate -------------------------- //\r\n\r\nvar proto = {};\r\n\r\nproto.startAnimation = function() {\r\n if ( this.isAnimating ) {\r\n return;\r\n }\r\n\r\n this.isAnimating = true;\r\n this.restingFrames = 0;\r\n this.animate();\r\n};\r\n\r\nproto.animate = function() {\r\n this.applyDragForce();\r\n this.applySelectedAttraction();\r\n\r\n var previousX = this.x;\r\n\r\n this.integratePhysics();\r\n this.positionSlider();\r\n this.settle( previousX );\r\n // animate next frame\r\n if ( this.isAnimating ) {\r\n var _this = this;\r\n requestAnimationFrame( function animateFrame() {\r\n _this.animate();\r\n });\r\n }\r\n};\r\n\r\nproto.positionSlider = function() {\r\n var x = this.x;\r\n // wrap position around\r\n if ( this.options.wrapAround && this.cells.length > 1 ) {\r\n x = utils.modulo( x, this.slideableWidth );\r\n x = x - this.slideableWidth;\r\n this.shiftWrapCells( x );\r\n }\r\n\r\n this.setTranslateX( x, this.isAnimating );\r\n this.dispatchScrollEvent();\r\n};\r\n\r\nproto.setTranslateX = function( x, is3d ) {\r\n x += this.cursorPosition;\r\n // reverse if right-to-left and using transform\r\n x = this.options.rightToLeft ? -x : x;\r\n var translateX = this.getPositionValue( x );\r\n // use 3D tranforms for hardware acceleration on iOS\r\n // but use 2D when settled, for better font-rendering\r\n this.slider.style.transform = is3d ?\r\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\r\n};\r\n\r\nproto.dispatchScrollEvent = function() {\r\n var firstSlide = this.slides[0];\r\n if ( !firstSlide ) {\r\n return;\r\n }\r\n var positionX = -this.x - firstSlide.target;\r\n var progress = positionX / this.slidesWidth;\r\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\r\n};\r\n\r\nproto.positionSliderAtSelected = function() {\r\n if ( !this.cells.length ) {\r\n return;\r\n }\r\n this.x = -this.selectedSlide.target;\r\n this.velocity = 0; // stop wobble\r\n this.positionSlider();\r\n};\r\n\r\nproto.getPositionValue = function( position ) {\r\n if ( this.options.percentPosition ) {\r\n // percent position, round to 2 digits, like 12.34%\r\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\r\n } else {\r\n // pixel positioning\r\n return Math.round( position ) + 'px';\r\n }\r\n};\r\n\r\nproto.settle = function( previousX ) {\r\n // keep track of frames where x hasn't moved\r\n if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\r\n this.restingFrames++;\r\n }\r\n // stop animating if resting for 3 or more frames\r\n if ( this.restingFrames > 2 ) {\r\n this.isAnimating = false;\r\n delete this.isFreeScrolling;\r\n // render position with translateX when settled\r\n this.positionSlider();\r\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\r\n }\r\n};\r\n\r\nproto.shiftWrapCells = function( x ) {\r\n // shift before cells\r\n var beforeGap = this.cursorPosition + x;\r\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\r\n // shift after cells\r\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\r\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\r\n};\r\n\r\nproto._shiftCells = function( cells, gap, shift ) {\r\n for ( var i=0; i < cells.length; i++ ) {\r\n var cell = cells[i];\r\n var cellShift = gap > 0 ? shift : 0;\r\n cell.wrapShift( cellShift );\r\n gap -= cell.size.outerWidth;\r\n }\r\n};\r\n\r\nproto._unshiftCells = function( cells ) {\r\n if ( !cells || !cells.length ) {\r\n return;\r\n }\r\n for ( var i=0; i < cells.length; i++ ) {\r\n cells[i].wrapShift( 0 );\r\n }\r\n};\r\n\r\n// -------------------------- physics -------------------------- //\r\n\r\nproto.integratePhysics = function() {\r\n this.x += this.velocity;\r\n this.velocity *= this.getFrictionFactor();\r\n};\r\n\r\nproto.applyForce = function( force ) {\r\n this.velocity += force;\r\n};\r\n\r\nproto.getFrictionFactor = function() {\r\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\r\n};\r\n\r\nproto.getRestingPosition = function() {\r\n // my thanks to Steven Wittens, who simplified this math greatly\r\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\r\n};\r\n\r\nproto.applyDragForce = function() {\r\n if ( !this.isDraggable || !this.isPointerDown ) {\r\n return;\r\n }\r\n // change the position to drag position by applying force\r\n var dragVelocity = this.dragX - this.x;\r\n var dragForce = dragVelocity - this.velocity;\r\n this.applyForce( dragForce );\r\n};\r\n\r\nproto.applySelectedAttraction = function() {\r\n // do not attract if pointer down or no slides\r\n var dragDown = this.isDraggable && this.isPointerDown;\r\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\r\n return;\r\n }\r\n var distance = this.selectedSlide.target * -1 - this.x;\r\n var force = distance * this.options.selectedAttraction;\r\n this.applyForce( force );\r\n};\r\n\r\nreturn proto;\r\n\r\n}));\r\n\r\n// Flickity main\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/flickity',[\r\n 'ev-emitter/ev-emitter',\r\n 'get-size/get-size',\r\n 'fizzy-ui-utils/utils',\r\n './cell',\r\n './slide',\r\n './animate'\r\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\r\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('ev-emitter'),\r\n require('get-size'),\r\n require('fizzy-ui-utils'),\r\n require('./cell'),\r\n require('./slide'),\r\n require('./animate')\r\n );\r\n } else {\r\n // browser global\r\n var _Flickity = window.Flickity;\r\n\r\n window.Flickity = factory(\r\n window,\r\n window.EvEmitter,\r\n window.getSize,\r\n window.fizzyUIUtils,\r\n _Flickity.Cell,\r\n _Flickity.Slide,\r\n _Flickity.animatePrototype\r\n );\r\n }\r\n\r\n}( window, function factory( window, EvEmitter, getSize,\r\n utils, Cell, Slide, animatePrototype ) {\r\n\r\n\r\n\r\n// vars\r\nvar jQuery = window.jQuery;\r\nvar getComputedStyle = window.getComputedStyle;\r\nvar console = window.console;\r\n\r\nfunction moveElements( elems, toElem ) {\r\n elems = utils.makeArray( elems );\r\n while ( elems.length ) {\r\n toElem.appendChild( elems.shift() );\r\n }\r\n}\r\n\r\n// -------------------------- Flickity -------------------------- //\r\n\r\n// globally unique identifiers\r\nvar GUID = 0;\r\n// internal store of all Flickity intances\r\nvar instances = {};\r\n\r\nfunction Flickity( element, options ) {\r\n var queryElement = utils.getQueryElement( element );\r\n if ( !queryElement ) {\r\n if ( console ) {\r\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\r\n }\r\n return;\r\n }\r\n this.element = queryElement;\r\n // do not initialize twice on same element\r\n if ( this.element.flickityGUID ) {\r\n var instance = instances[ this.element.flickityGUID ];\r\n instance.option( options );\r\n return instance;\r\n }\r\n\r\n // add jQuery\r\n if ( jQuery ) {\r\n this.$element = jQuery( this.element );\r\n }\r\n // options\r\n this.options = utils.extend( {}, this.constructor.defaults );\r\n this.option( options );\r\n\r\n // kick things off\r\n this._create();\r\n}\r\n\r\nFlickity.defaults = {\r\n accessibility: true,\r\n // adaptiveHeight: false,\r\n cellAlign: 'center',\r\n // cellSelector: undefined,\r\n // contain: false,\r\n freeScrollFriction: 0.075, // friction when free-scrolling\r\n friction: 0.28, // friction when selecting\r\n namespaceJQueryEvents: true,\r\n // initialIndex: 0,\r\n percentPosition: true,\r\n resize: true,\r\n selectedAttraction: 0.025,\r\n setGallerySize: true\r\n // watchCSS: false,\r\n // wrapAround: false\r\n};\r\n\r\n// hash of methods triggered on _create()\r\nFlickity.createMethods = [];\r\n\r\nvar proto = Flickity.prototype;\r\n// inherit EventEmitter\r\nutils.extend( proto, EvEmitter.prototype );\r\n\r\nproto._create = function() {\r\n // add id for Flickity.data\r\n var id = this.guid = ++GUID;\r\n this.element.flickityGUID = id; // expando\r\n instances[ id ] = this; // associate via id\r\n // initial properties\r\n this.selectedIndex = 0;\r\n // how many frames slider has been in same position\r\n this.restingFrames = 0;\r\n // initial physics properties\r\n this.x = 0;\r\n this.velocity = 0;\r\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\r\n // create viewport & slider\r\n this.viewport = document.createElement('div');\r\n this.viewport.className = 'flickity-viewport';\r\n this._createSlider();\r\n\r\n if ( this.options.resize || this.options.watchCSS ) {\r\n window.addEventListener( 'resize', this );\r\n }\r\n\r\n // add listeners from on option\r\n for ( var eventName in this.options.on ) {\r\n var listener = this.options.on[ eventName ];\r\n this.on( eventName, listener );\r\n }\r\n\r\n Flickity.createMethods.forEach( function( method ) {\r\n this[ method ]();\r\n }, this );\r\n\r\n if ( this.options.watchCSS ) {\r\n this.watchCSS();\r\n } else {\r\n this.activate();\r\n }\r\n\r\n};\r\n\r\n/**\r\n * set options\r\n * @param {Object} opts\r\n */\r\nproto.option = function( opts ) {\r\n utils.extend( this.options, opts );\r\n};\r\n\r\nproto.activate = function() {\r\n if ( this.isActive ) {\r\n return;\r\n }\r\n this.isActive = true;\r\n this.element.classList.add('flickity-enabled');\r\n if ( this.options.rightToLeft ) {\r\n this.element.classList.add('flickity-rtl');\r\n }\r\n\r\n this.getSize();\r\n // move initial cell elements so they can be loaded as cells\r\n var cellElems = this._filterFindCellElements( this.element.children );\r\n moveElements( cellElems, this.slider );\r\n this.viewport.appendChild( this.slider );\r\n this.element.appendChild( this.viewport );\r\n // get cells from children\r\n this.reloadCells();\r\n\r\n if ( this.options.accessibility ) {\r\n // allow element to focusable\r\n this.element.tabIndex = 0;\r\n // listen for key presses\r\n this.element.addEventListener( 'keydown', this );\r\n }\r\n\r\n this.emitEvent('activate');\r\n this.selectInitialIndex();\r\n // flag for initial activation, for using initialIndex\r\n this.isInitActivated = true;\r\n // ready event. #493\r\n this.dispatchEvent('ready');\r\n};\r\n\r\n// slider positions the cells\r\nproto._createSlider = function() {\r\n // slider element does all the positioning\r\n var slider = document.createElement('div');\r\n slider.className = 'flickity-slider';\r\n slider.style[ this.originSide ] = 0;\r\n this.slider = slider;\r\n};\r\n\r\nproto._filterFindCellElements = function( elems ) {\r\n return utils.filterFindElements( elems, this.options.cellSelector );\r\n};\r\n\r\n// goes through all children\r\nproto.reloadCells = function() {\r\n // collection of item elements\r\n this.cells = this._makeCells( this.slider.children );\r\n this.positionCells();\r\n this._getWrapShiftCells();\r\n this.setGallerySize();\r\n};\r\n\r\n/**\r\n * turn elements into Flickity.Cells\r\n * @param {Array or NodeList or HTMLElement} elems\r\n * @returns {Array} items - collection of new Flickity Cells\r\n */\r\nproto._makeCells = function( elems ) {\r\n var cellElems = this._filterFindCellElements( elems );\r\n\r\n // create new Flickity for collection\r\n var cells = cellElems.map( function( cellElem ) {\r\n return new Cell( cellElem, this );\r\n }, this );\r\n\r\n return cells;\r\n};\r\n\r\nproto.getLastCell = function() {\r\n return this.cells[ this.cells.length - 1 ];\r\n};\r\n\r\nproto.getLastSlide = function() {\r\n return this.slides[ this.slides.length - 1 ];\r\n};\r\n\r\n// positions all cells\r\nproto.positionCells = function() {\r\n // size all cells\r\n this._sizeCells( this.cells );\r\n // position all cells\r\n this._positionCells( 0 );\r\n};\r\n\r\n/**\r\n * position certain cells\r\n * @param {Integer} index - which cell to start with\r\n */\r\nproto._positionCells = function( index ) {\r\n index = index || 0;\r\n // also measure maxCellHeight\r\n // start 0 if positioning all cells\r\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\r\n var cellX = 0;\r\n // get cellX\r\n if ( index > 0 ) {\r\n var startCell = this.cells[ index - 1 ];\r\n cellX = startCell.x + startCell.size.outerWidth;\r\n }\r\n var len = this.cells.length;\r\n for ( var i=index; i < len; i++ ) {\r\n var cell = this.cells[i];\r\n cell.setPosition( cellX );\r\n cellX += cell.size.outerWidth;\r\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\r\n }\r\n // keep track of cellX for wrap-around\r\n this.slideableWidth = cellX;\r\n // slides\r\n this.updateSlides();\r\n // contain slides target\r\n this._containSlides();\r\n // update slidesWidth\r\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\r\n};\r\n\r\n/**\r\n * cell.getSize() on multiple cells\r\n * @param {Array} cells\r\n */\r\nproto._sizeCells = function( cells ) {\r\n cells.forEach( function( cell ) {\r\n cell.getSize();\r\n });\r\n};\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nproto.updateSlides = function() {\r\n this.slides = [];\r\n if ( !this.cells.length ) {\r\n return;\r\n }\r\n\r\n var slide = new Slide( this );\r\n this.slides.push( slide );\r\n var isOriginLeft = this.originSide == 'left';\r\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\r\n\r\n var canCellFit = this._getCanCellFit();\r\n\r\n this.cells.forEach( function( cell, i ) {\r\n // just add cell if first cell in slide\r\n if ( !slide.cells.length ) {\r\n slide.addCell( cell );\r\n return;\r\n }\r\n\r\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\r\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\r\n\r\n if ( canCellFit.call( this, i, slideWidth ) ) {\r\n slide.addCell( cell );\r\n } else {\r\n // doesn't fit, new slide\r\n slide.updateTarget();\r\n\r\n slide = new Slide( this );\r\n this.slides.push( slide );\r\n slide.addCell( cell );\r\n }\r\n }, this );\r\n // last slide\r\n slide.updateTarget();\r\n // update .selectedSlide\r\n this.updateSelectedSlide();\r\n};\r\n\r\nproto._getCanCellFit = function() {\r\n var groupCells = this.options.groupCells;\r\n if ( !groupCells ) {\r\n return function() {\r\n return false;\r\n };\r\n } else if ( typeof groupCells == 'number' ) {\r\n // group by number. 3 -> [0,1,2], [3,4,5], ...\r\n var number = parseInt( groupCells, 10 );\r\n return function( i ) {\r\n return ( i % number ) !== 0;\r\n };\r\n }\r\n // default, group by width of slide\r\n // parse '75%\r\n var percentMatch = typeof groupCells == 'string' &&\r\n groupCells.match(/^(\\d+)%$/);\r\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\r\n return function( i, slideWidth ) {\r\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\r\n };\r\n};\r\n\r\n// alias _init for jQuery plugin .flickity()\r\nproto._init =\r\nproto.reposition = function() {\r\n this.positionCells();\r\n this.positionSliderAtSelected();\r\n};\r\n\r\nproto.getSize = function() {\r\n this.size = getSize( this.element );\r\n this.setCellAlign();\r\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\r\n};\r\n\r\nvar cellAlignShorthands = {\r\n // cell align, then based on origin side\r\n center: {\r\n left: 0.5,\r\n right: 0.5\r\n },\r\n left: {\r\n left: 0,\r\n right: 1\r\n },\r\n right: {\r\n right: 0,\r\n left: 1\r\n }\r\n};\r\n\r\nproto.setCellAlign = function() {\r\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\r\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\r\n};\r\n\r\nproto.setGallerySize = function() {\r\n if ( this.options.setGallerySize ) {\r\n var height = this.options.adaptiveHeight && this.selectedSlide ?\r\n this.selectedSlide.height : this.maxCellHeight;\r\n this.viewport.style.height = height + 'px';\r\n }\r\n};\r\n\r\nproto._getWrapShiftCells = function() {\r\n // only for wrap-around\r\n if ( !this.options.wrapAround ) {\r\n return;\r\n }\r\n // unshift previous cells\r\n this._unshiftCells( this.beforeShiftCells );\r\n this._unshiftCells( this.afterShiftCells );\r\n // get before cells\r\n // initial gap\r\n var gapX = this.cursorPosition;\r\n var cellIndex = this.cells.length - 1;\r\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\r\n // get after cells\r\n // ending gap between last cell and end of gallery viewport\r\n gapX = this.size.innerWidth - this.cursorPosition;\r\n // start cloning at first cell, working forwards\r\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\r\n};\r\n\r\nproto._getGapCells = function( gapX, cellIndex, increment ) {\r\n // keep adding cells until the cover the initial gap\r\n var cells = [];\r\n while ( gapX > 0 ) {\r\n var cell = this.cells[ cellIndex ];\r\n if ( !cell ) {\r\n break;\r\n }\r\n cells.push( cell );\r\n cellIndex += increment;\r\n gapX -= cell.size.outerWidth;\r\n }\r\n return cells;\r\n};\r\n\r\n// ----- contain ----- //\r\n\r\n// contain cell targets so no excess sliding\r\nproto._containSlides = function() {\r\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\r\n return;\r\n }\r\n var isRightToLeft = this.options.rightToLeft;\r\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\r\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\r\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\r\n // content is less than gallery size\r\n var isContentSmaller = contentWidth < this.size.innerWidth;\r\n // bounds\r\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\r\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\r\n // contain each cell target\r\n this.slides.forEach( function( slide ) {\r\n if ( isContentSmaller ) {\r\n // all cells fit inside gallery\r\n slide.target = contentWidth * this.cellAlign;\r\n } else {\r\n // contain to bounds\r\n slide.target = Math.max( slide.target, beginBound );\r\n slide.target = Math.min( slide.target, endBound );\r\n }\r\n }, this );\r\n};\r\n\r\n// ----- ----- //\r\n\r\n/**\r\n * emits events via eventEmitter and jQuery events\r\n * @param {String} type - name of event\r\n * @param {Event} event - original event\r\n * @param {Array} args - extra arguments\r\n */\r\nproto.dispatchEvent = function( type, event, args ) {\r\n var emitArgs = event ? [ event ].concat( args ) : args;\r\n this.emitEvent( type, emitArgs );\r\n\r\n if ( jQuery && this.$element ) {\r\n // default trigger with type if no event\r\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\r\n var $event = type;\r\n if ( event ) {\r\n // create jQuery event\r\n var jQEvent = jQuery.Event( event );\r\n jQEvent.type = type;\r\n $event = jQEvent;\r\n }\r\n this.$element.trigger( $event, args );\r\n }\r\n};\r\n\r\n// -------------------------- select -------------------------- //\r\n\r\n/**\r\n * @param {Integer} index - index of the slide\r\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\r\n * @param {Boolean} isInstant - will immediately set position at selected cell\r\n */\r\nproto.select = function( index, isWrap, isInstant ) {\r\n if ( !this.isActive ) {\r\n return;\r\n }\r\n index = parseInt( index, 10 );\r\n this._wrapSelect( index );\r\n\r\n if ( this.options.wrapAround || isWrap ) {\r\n index = utils.modulo( index, this.slides.length );\r\n }\r\n // bail if invalid index\r\n if ( !this.slides[ index ] ) {\r\n return;\r\n }\r\n var prevIndex = this.selectedIndex;\r\n this.selectedIndex = index;\r\n this.updateSelectedSlide();\r\n if ( isInstant ) {\r\n this.positionSliderAtSelected();\r\n } else {\r\n this.startAnimation();\r\n }\r\n if ( this.options.adaptiveHeight ) {\r\n this.setGallerySize();\r\n }\r\n // events\r\n this.dispatchEvent( 'select', null, [ index ] );\r\n // change event if new index\r\n if ( index != prevIndex ) {\r\n this.dispatchEvent( 'change', null, [ index ] );\r\n }\r\n // old v1 event name, remove in v3\r\n this.dispatchEvent('cellSelect');\r\n};\r\n\r\n// wraps position for wrapAround, to move to closest slide. #113\r\nproto._wrapSelect = function( index ) {\r\n var len = this.slides.length;\r\n var isWrapping = this.options.wrapAround && len > 1;\r\n if ( !isWrapping ) {\r\n return index;\r\n }\r\n var wrapIndex = utils.modulo( index, len );\r\n // go to shortest\r\n var delta = Math.abs( wrapIndex - this.selectedIndex );\r\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\r\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\r\n if ( !this.isDragSelect && backWrapDelta < delta ) {\r\n index += len;\r\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\r\n index -= len;\r\n }\r\n // wrap position so slider is within normal area\r\n if ( index < 0 ) {\r\n this.x -= this.slideableWidth;\r\n } else if ( index >= len ) {\r\n this.x += this.slideableWidth;\r\n }\r\n};\r\n\r\nproto.previous = function( isWrap, isInstant ) {\r\n this.select( this.selectedIndex - 1, isWrap, isInstant );\r\n};\r\n\r\nproto.next = function( isWrap, isInstant ) {\r\n this.select( this.selectedIndex + 1, isWrap, isInstant );\r\n};\r\n\r\nproto.updateSelectedSlide = function() {\r\n var slide = this.slides[ this.selectedIndex ];\r\n // selectedIndex could be outside of slides, if triggered before resize()\r\n if ( !slide ) {\r\n return;\r\n }\r\n // unselect previous selected slide\r\n this.unselectSelectedSlide();\r\n // update new selected slide\r\n this.selectedSlide = slide;\r\n slide.select();\r\n this.selectedCells = slide.cells;\r\n this.selectedElements = slide.getCellElements();\r\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\r\n // Remove in v3?\r\n this.selectedCell = slide.cells[0];\r\n this.selectedElement = this.selectedElements[0];\r\n};\r\n\r\nproto.unselectSelectedSlide = function() {\r\n if ( this.selectedSlide ) {\r\n this.selectedSlide.unselect();\r\n }\r\n};\r\n\r\nproto.selectInitialIndex = function() {\r\n var initialIndex = this.options.initialIndex;\r\n // already activated, select previous selectedIndex\r\n if ( this.isInitActivated ) {\r\n this.select( this.selectedIndex, false, true );\r\n return;\r\n }\r\n // select with selector string\r\n if ( initialIndex && typeof initialIndex == 'string' ) {\r\n var cell = this.queryCell( initialIndex );\r\n if ( cell ) {\r\n this.selectCell( initialIndex, false, true );\r\n return;\r\n }\r\n }\r\n\r\n var index = 0;\r\n // select with number\r\n if ( initialIndex && this.slides[ initialIndex ] ) {\r\n index = initialIndex;\r\n }\r\n // select instantly\r\n this.select( index, false, true );\r\n};\r\n\r\n/**\r\n * select slide from number or cell element\r\n * @param {Element or Number} elem\r\n */\r\nproto.selectCell = function( value, isWrap, isInstant ) {\r\n // get cell\r\n var cell = this.queryCell( value );\r\n if ( !cell ) {\r\n return;\r\n }\r\n\r\n var index = this.getCellSlideIndex( cell );\r\n this.select( index, isWrap, isInstant );\r\n};\r\n\r\nproto.getCellSlideIndex = function( cell ) {\r\n // get index of slides that has cell\r\n for ( var i=0; i < this.slides.length; i++ ) {\r\n var slide = this.slides[i];\r\n var index = slide.cells.indexOf( cell );\r\n if ( index != -1 ) {\r\n return i;\r\n }\r\n }\r\n};\r\n\r\n// -------------------------- get cells -------------------------- //\r\n\r\n/**\r\n * get Flickity.Cell, given an Element\r\n * @param {Element} elem\r\n * @returns {Flickity.Cell} item\r\n */\r\nproto.getCell = function( elem ) {\r\n // loop through cells to get the one that matches\r\n for ( var i=0; i < this.cells.length; i++ ) {\r\n var cell = this.cells[i];\r\n if ( cell.element == elem ) {\r\n return cell;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * get collection of Flickity.Cells, given Elements\r\n * @param {Element, Array, NodeList} elems\r\n * @returns {Array} cells - Flickity.Cells\r\n */\r\nproto.getCells = function( elems ) {\r\n elems = utils.makeArray( elems );\r\n var cells = [];\r\n elems.forEach( function( elem ) {\r\n var cell = this.getCell( elem );\r\n if ( cell ) {\r\n cells.push( cell );\r\n }\r\n }, this );\r\n return cells;\r\n};\r\n\r\n/**\r\n * get cell elements\r\n * @returns {Array} cellElems\r\n */\r\nproto.getCellElements = function() {\r\n return this.cells.map( function( cell ) {\r\n return cell.element;\r\n });\r\n};\r\n\r\n/**\r\n * get parent cell from an element\r\n * @param {Element} elem\r\n * @returns {Flickit.Cell} cell\r\n */\r\nproto.getParentCell = function( elem ) {\r\n // first check if elem is cell\r\n var cell = this.getCell( elem );\r\n if ( cell ) {\r\n return cell;\r\n }\r\n // try to get parent cell elem\r\n elem = utils.getParent( elem, '.flickity-slider > *' );\r\n return this.getCell( elem );\r\n};\r\n\r\n/**\r\n * get cells adjacent to a slide\r\n * @param {Integer} adjCount - number of adjacent slides\r\n * @param {Integer} index - index of slide to start\r\n * @returns {Array} cells - array of Flickity.Cells\r\n */\r\nproto.getAdjacentCellElements = function( adjCount, index ) {\r\n if ( !adjCount ) {\r\n return this.selectedSlide.getCellElements();\r\n }\r\n index = index === undefined ? this.selectedIndex : index;\r\n\r\n var len = this.slides.length;\r\n if ( 1 + ( adjCount * 2 ) >= len ) {\r\n return this.getCellElements();\r\n }\r\n\r\n var cellElems = [];\r\n for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\r\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\r\n var slide = this.slides[ slideIndex ];\r\n if ( slide ) {\r\n cellElems = cellElems.concat( slide.getCellElements() );\r\n }\r\n }\r\n return cellElems;\r\n};\r\n\r\n/**\r\n * select slide from number or cell element\r\n * @param {Element, Selector String, or Number} selector\r\n */\r\nproto.queryCell = function( selector ) {\r\n if ( typeof selector == 'number' ) {\r\n // use number as index\r\n return this.cells[ selector ];\r\n }\r\n if ( typeof selector == 'string' ) {\r\n // do not select invalid selectors from hash: #123, #/. #791\r\n if ( selector.match(/^[#\\.]?[\\d\\/]/) ) {\r\n return;\r\n }\r\n // use string as selector, get element\r\n selector = this.element.querySelector( selector );\r\n }\r\n // get cell from element\r\n return this.getCell( selector );\r\n};\r\n\r\n// -------------------------- events -------------------------- //\r\n\r\nproto.uiChange = function() {\r\n this.emitEvent('uiChange');\r\n};\r\n\r\n// keep focus on element when child UI elements are clicked\r\nproto.childUIPointerDown = function( event ) {\r\n // HACK iOS does not allow touch events to bubble up?!\r\n if ( event.type != 'touchstart' ) {\r\n event.preventDefault();\r\n }\r\n this.focus();\r\n};\r\n\r\n// ----- resize ----- //\r\n\r\nproto.onresize = function() {\r\n this.watchCSS();\r\n this.resize();\r\n};\r\n\r\nutils.debounceMethod( Flickity, 'onresize', 150 );\r\n\r\nproto.resize = function() {\r\n if ( !this.isActive ) {\r\n return;\r\n }\r\n this.getSize();\r\n // wrap values\r\n if ( this.options.wrapAround ) {\r\n this.x = utils.modulo( this.x, this.slideableWidth );\r\n }\r\n this.positionCells();\r\n this._getWrapShiftCells();\r\n this.setGallerySize();\r\n this.emitEvent('resize');\r\n // update selected index for group slides, instant\r\n // TODO: position can be lost between groups of various numbers\r\n var selectedElement = this.selectedElements && this.selectedElements[0];\r\n this.selectCell( selectedElement, false, true );\r\n};\r\n\r\n// watches the :after property, activates/deactivates\r\nproto.watchCSS = function() {\r\n var watchOption = this.options.watchCSS;\r\n if ( !watchOption ) {\r\n return;\r\n }\r\n\r\n var afterContent = getComputedStyle( this.element, ':after' ).content;\r\n // activate if :after { content: 'flickity' }\r\n if ( afterContent.indexOf('flickity') != -1 ) {\r\n this.activate();\r\n } else {\r\n this.deactivate();\r\n }\r\n};\r\n\r\n// ----- keydown ----- //\r\n\r\n// go previous/next if left/right keys pressed\r\nproto.onkeydown = function( event ) {\r\n // only work if element is in focus\r\n var isNotFocused = document.activeElement && document.activeElement != this.element;\r\n if ( !this.options.accessibility ||isNotFocused ) {\r\n return;\r\n }\r\n\r\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\r\n if ( handler ) {\r\n handler.call( this );\r\n }\r\n};\r\n\r\nFlickity.keyboardHandlers = {\r\n // left arrow\r\n 37: function() {\r\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\r\n this.uiChange();\r\n this[ leftMethod ]();\r\n },\r\n // right arrow\r\n 39: function() {\r\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\r\n this.uiChange();\r\n this[ rightMethod ]();\r\n },\r\n};\r\n\r\n// ----- focus ----- //\r\n\r\nproto.focus = function() {\r\n // TODO remove scrollTo once focus options gets more support\r\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\r\n var prevScrollY = window.pageYOffset;\r\n this.element.focus({ preventScroll: true });\r\n // hack to fix scroll jump after focus, #76\r\n if ( window.pageYOffset != prevScrollY ) {\r\n window.scrollTo( window.pageXOffset, prevScrollY );\r\n }\r\n};\r\n\r\n// -------------------------- destroy -------------------------- //\r\n\r\n// deactivate all Flickity functionality, but keep stuff available\r\nproto.deactivate = function() {\r\n if ( !this.isActive ) {\r\n return;\r\n }\r\n this.element.classList.remove('flickity-enabled');\r\n this.element.classList.remove('flickity-rtl');\r\n this.unselectSelectedSlide();\r\n // destroy cells\r\n this.cells.forEach( function( cell ) {\r\n cell.destroy();\r\n });\r\n this.element.removeChild( this.viewport );\r\n // move child elements back into element\r\n moveElements( this.slider.children, this.element );\r\n if ( this.options.accessibility ) {\r\n this.element.removeAttribute('tabIndex');\r\n this.element.removeEventListener( 'keydown', this );\r\n }\r\n // set flags\r\n this.isActive = false;\r\n this.emitEvent('deactivate');\r\n};\r\n\r\nproto.destroy = function() {\r\n this.deactivate();\r\n window.removeEventListener( 'resize', this );\r\n this.allOff();\r\n this.emitEvent('destroy');\r\n if ( jQuery && this.$element ) {\r\n jQuery.removeData( this.element, 'flickity' );\r\n }\r\n delete this.element.flickityGUID;\r\n delete instances[ this.guid ];\r\n};\r\n\r\n// -------------------------- prototype -------------------------- //\r\n\r\nutils.extend( proto, animatePrototype );\r\n\r\n// -------------------------- extras -------------------------- //\r\n\r\n/**\r\n * get Flickity instance from element\r\n * @param {Element} elem\r\n * @returns {Flickity}\r\n */\r\nFlickity.data = function( elem ) {\r\n elem = utils.getQueryElement( elem );\r\n var id = elem && elem.flickityGUID;\r\n return id && instances[ id ];\r\n};\r\n\r\nutils.htmlInit( Flickity, 'flickity' );\r\n\r\nif ( jQuery && jQuery.bridget ) {\r\n jQuery.bridget( 'flickity', Flickity );\r\n}\r\n\r\n// set internal jQuery, for Webpack + jQuery v3, #478\r\nFlickity.setJQuery = function( jq ) {\r\n jQuery = jq;\r\n};\r\n\r\nFlickity.Cell = Cell;\r\nFlickity.Slide = Slide;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n/*!\r\n * Unipointer v2.3.0\r\n * base class for doing one thing with pointer event\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, undef: true, unused: true, strict: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */ /*global define, module, require */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'unipointer/unipointer',[\r\n 'ev-emitter/ev-emitter'\r\n ], function( EvEmitter ) {\r\n return factory( window, EvEmitter );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('ev-emitter')\r\n );\r\n } else {\r\n // browser global\r\n window.Unipointer = factory(\r\n window,\r\n window.EvEmitter\r\n );\r\n }\r\n\r\n}( window, function factory( window, EvEmitter ) {\r\n\r\n\r\n\r\nfunction noop() {}\r\n\r\nfunction Unipointer() {}\r\n\r\n// inherit EvEmitter\r\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\r\n\r\nproto.bindStartEvent = function( elem ) {\r\n this._bindStartEvent( elem, true );\r\n};\r\n\r\nproto.unbindStartEvent = function( elem ) {\r\n this._bindStartEvent( elem, false );\r\n};\r\n\r\n/**\r\n * Add or remove start event\r\n * @param {Boolean} isAdd - remove if falsey\r\n */\r\nproto._bindStartEvent = function( elem, isAdd ) {\r\n // munge isAdd, default to true\r\n isAdd = isAdd === undefined ? true : isAdd;\r\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\r\n\r\n // default to mouse events\r\n var startEvent = 'mousedown';\r\n if ( window.PointerEvent ) {\r\n // Pointer Events\r\n startEvent = 'pointerdown';\r\n } else if ( 'ontouchstart' in window ) {\r\n // Touch Events. iOS Safari\r\n startEvent = 'touchstart';\r\n }\r\n elem[ bindMethod ]( startEvent, this );\r\n};\r\n\r\n// trigger handler methods for events\r\nproto.handleEvent = function( event ) {\r\n var method = 'on' + event.type;\r\n if ( this[ method ] ) {\r\n this[ method ]( event );\r\n }\r\n};\r\n\r\n// returns the touch that we're keeping track of\r\nproto.getTouch = function( touches ) {\r\n for ( var i=0; i < touches.length; i++ ) {\r\n var touch = touches[i];\r\n if ( touch.identifier == this.pointerIdentifier ) {\r\n return touch;\r\n }\r\n }\r\n};\r\n\r\n// ----- start event ----- //\r\n\r\nproto.onmousedown = function( event ) {\r\n // dismiss clicks from right or middle buttons\r\n var button = event.button;\r\n if ( button && ( button !== 0 && button !== 1 ) ) {\r\n return;\r\n }\r\n this._pointerDown( event, event );\r\n};\r\n\r\nproto.ontouchstart = function( event ) {\r\n this._pointerDown( event, event.changedTouches[0] );\r\n};\r\n\r\nproto.onpointerdown = function( event ) {\r\n this._pointerDown( event, event );\r\n};\r\n\r\n/**\r\n * pointer start\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\nproto._pointerDown = function( event, pointer ) {\r\n // dismiss right click and other pointers\r\n // button = 0 is okay, 1-4 not\r\n if ( event.button || this.isPointerDown ) {\r\n return;\r\n }\r\n\r\n this.isPointerDown = true;\r\n // save pointer identifier to match up touch events\r\n this.pointerIdentifier = pointer.pointerId !== undefined ?\r\n // pointerId for pointer events, touch.indentifier for touch events\r\n pointer.pointerId : pointer.identifier;\r\n\r\n this.pointerDown( event, pointer );\r\n};\r\n\r\nproto.pointerDown = function( event, pointer ) {\r\n this._bindPostStartEvents( event );\r\n this.emitEvent( 'pointerDown', [ event, pointer ] );\r\n};\r\n\r\n// hash of events to be bound after start event\r\nvar postStartEvents = {\r\n mousedown: [ 'mousemove', 'mouseup' ],\r\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\r\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\r\n};\r\n\r\nproto._bindPostStartEvents = function( event ) {\r\n if ( !event ) {\r\n return;\r\n }\r\n // get proper events to match start event\r\n var events = postStartEvents[ event.type ];\r\n // bind events to node\r\n events.forEach( function( eventName ) {\r\n window.addEventListener( eventName, this );\r\n }, this );\r\n // save these arguments\r\n this._boundPointerEvents = events;\r\n};\r\n\r\nproto._unbindPostStartEvents = function() {\r\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\r\n if ( !this._boundPointerEvents ) {\r\n return;\r\n }\r\n this._boundPointerEvents.forEach( function( eventName ) {\r\n window.removeEventListener( eventName, this );\r\n }, this );\r\n\r\n delete this._boundPointerEvents;\r\n};\r\n\r\n// ----- move event ----- //\r\n\r\nproto.onmousemove = function( event ) {\r\n this._pointerMove( event, event );\r\n};\r\n\r\nproto.onpointermove = function( event ) {\r\n if ( event.pointerId == this.pointerIdentifier ) {\r\n this._pointerMove( event, event );\r\n }\r\n};\r\n\r\nproto.ontouchmove = function( event ) {\r\n var touch = this.getTouch( event.changedTouches );\r\n if ( touch ) {\r\n this._pointerMove( event, touch );\r\n }\r\n};\r\n\r\n/**\r\n * pointer move\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n * @private\r\n */\r\nproto._pointerMove = function( event, pointer ) {\r\n this.pointerMove( event, pointer );\r\n};\r\n\r\n// public\r\nproto.pointerMove = function( event, pointer ) {\r\n this.emitEvent( 'pointerMove', [ event, pointer ] );\r\n};\r\n\r\n// ----- end event ----- //\r\n\r\n\r\nproto.onmouseup = function( event ) {\r\n this._pointerUp( event, event );\r\n};\r\n\r\nproto.onpointerup = function( event ) {\r\n if ( event.pointerId == this.pointerIdentifier ) {\r\n this._pointerUp( event, event );\r\n }\r\n};\r\n\r\nproto.ontouchend = function( event ) {\r\n var touch = this.getTouch( event.changedTouches );\r\n if ( touch ) {\r\n this._pointerUp( event, touch );\r\n }\r\n};\r\n\r\n/**\r\n * pointer up\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n * @private\r\n */\r\nproto._pointerUp = function( event, pointer ) {\r\n this._pointerDone();\r\n this.pointerUp( event, pointer );\r\n};\r\n\r\n// public\r\nproto.pointerUp = function( event, pointer ) {\r\n this.emitEvent( 'pointerUp', [ event, pointer ] );\r\n};\r\n\r\n// ----- pointer done ----- //\r\n\r\n// triggered on pointer up & pointer cancel\r\nproto._pointerDone = function() {\r\n this._pointerReset();\r\n this._unbindPostStartEvents();\r\n this.pointerDone();\r\n};\r\n\r\nproto._pointerReset = function() {\r\n // reset properties\r\n this.isPointerDown = false;\r\n delete this.pointerIdentifier;\r\n};\r\n\r\nproto.pointerDone = noop;\r\n\r\n// ----- pointer cancel ----- //\r\n\r\nproto.onpointercancel = function( event ) {\r\n if ( event.pointerId == this.pointerIdentifier ) {\r\n this._pointerCancel( event, event );\r\n }\r\n};\r\n\r\nproto.ontouchcancel = function( event ) {\r\n var touch = this.getTouch( event.changedTouches );\r\n if ( touch ) {\r\n this._pointerCancel( event, touch );\r\n }\r\n};\r\n\r\n/**\r\n * pointer cancel\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n * @private\r\n */\r\nproto._pointerCancel = function( event, pointer ) {\r\n this._pointerDone();\r\n this.pointerCancel( event, pointer );\r\n};\r\n\r\n// public\r\nproto.pointerCancel = function( event, pointer ) {\r\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\r\n};\r\n\r\n// ----- ----- //\r\n\r\n// utility function for getting x/y coords from event\r\nUnipointer.getPointerPoint = function( pointer ) {\r\n return {\r\n x: pointer.pageX,\r\n y: pointer.pageY\r\n };\r\n};\r\n\r\n// ----- ----- //\r\n\r\nreturn Unipointer;\r\n\r\n}));\r\n\r\n/*!\r\n * Unidragger v2.3.0\r\n * Draggable base class\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, unused: true, undef: true, strict: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /*globals define, module, require */\r\n\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'unidragger/unidragger',[\r\n 'unipointer/unipointer'\r\n ], function( Unipointer ) {\r\n return factory( window, Unipointer );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('unipointer')\r\n );\r\n } else {\r\n // browser global\r\n window.Unidragger = factory(\r\n window,\r\n window.Unipointer\r\n );\r\n }\r\n\r\n}( window, function factory( window, Unipointer ) {\r\n\r\n\r\n\r\n// -------------------------- Unidragger -------------------------- //\r\n\r\nfunction Unidragger() {}\r\n\r\n// inherit Unipointer & EvEmitter\r\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\r\n\r\n// ----- bind start ----- //\r\n\r\nproto.bindHandles = function() {\r\n this._bindHandles( true );\r\n};\r\n\r\nproto.unbindHandles = function() {\r\n this._bindHandles( false );\r\n};\r\n\r\n/**\r\n * Add or remove start event\r\n * @param {Boolean} isAdd\r\n */\r\nproto._bindHandles = function( isAdd ) {\r\n // munge isAdd, default to true\r\n isAdd = isAdd === undefined ? true : isAdd;\r\n // bind each handle\r\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\r\n var touchAction = isAdd ? this._touchActionValue : '';\r\n for ( var i=0; i < this.handles.length; i++ ) {\r\n var handle = this.handles[i];\r\n this._bindStartEvent( handle, isAdd );\r\n handle[ bindMethod ]( 'click', this );\r\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\r\n if ( window.PointerEvent ) {\r\n handle.style.touchAction = touchAction;\r\n }\r\n }\r\n};\r\n\r\n// prototype so it can be overwriteable by Flickity\r\nproto._touchActionValue = 'none';\r\n\r\n// ----- start event ----- //\r\n\r\n/**\r\n * pointer start\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\nproto.pointerDown = function( event, pointer ) {\r\n var isOkay = this.okayPointerDown( event );\r\n if ( !isOkay ) {\r\n return;\r\n }\r\n // track start event position\r\n this.pointerDownPointer = pointer;\r\n\r\n event.preventDefault();\r\n this.pointerDownBlur();\r\n // bind move and end events\r\n this._bindPostStartEvents( event );\r\n this.emitEvent( 'pointerDown', [ event, pointer ] );\r\n};\r\n\r\n// nodes that have text fields\r\nvar cursorNodes = {\r\n TEXTAREA: true,\r\n INPUT: true,\r\n SELECT: true,\r\n OPTION: true,\r\n};\r\n\r\n// input types that do not have text fields\r\nvar clickTypes = {\r\n radio: true,\r\n checkbox: true,\r\n button: true,\r\n submit: true,\r\n image: true,\r\n file: true,\r\n};\r\n\r\n// dismiss inputs with text fields. flickity#403, flickity#404\r\nproto.okayPointerDown = function( event ) {\r\n var isCursorNode = cursorNodes[ event.target.nodeName ];\r\n var isClickType = clickTypes[ event.target.type ];\r\n var isOkay = !isCursorNode || isClickType;\r\n if ( !isOkay ) {\r\n this._pointerReset();\r\n }\r\n return isOkay;\r\n};\r\n\r\n// kludge to blur previously focused input\r\nproto.pointerDownBlur = function() {\r\n var focused = document.activeElement;\r\n // do not blur body for IE10, metafizzy/flickity#117\r\n var canBlur = focused && focused.blur && focused != document.body;\r\n if ( canBlur ) {\r\n focused.blur();\r\n }\r\n};\r\n\r\n// ----- move event ----- //\r\n\r\n/**\r\n * drag move\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\nproto.pointerMove = function( event, pointer ) {\r\n var moveVector = this._dragPointerMove( event, pointer );\r\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\r\n this._dragMove( event, pointer, moveVector );\r\n};\r\n\r\n// base pointer move logic\r\nproto._dragPointerMove = function( event, pointer ) {\r\n var moveVector = {\r\n x: pointer.pageX - this.pointerDownPointer.pageX,\r\n y: pointer.pageY - this.pointerDownPointer.pageY\r\n };\r\n // start drag if pointer has moved far enough to start drag\r\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\r\n this._dragStart( event, pointer );\r\n }\r\n return moveVector;\r\n};\r\n\r\n// condition if pointer has moved far enough to start drag\r\nproto.hasDragStarted = function( moveVector ) {\r\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\r\n};\r\n\r\n// ----- end event ----- //\r\n\r\n/**\r\n * pointer up\r\n * @param {Event} event\r\n * @param {Event or Touch} pointer\r\n */\r\nproto.pointerUp = function( event, pointer ) {\r\n this.emitEvent( 'pointerUp', [ event, pointer ] );\r\n this._dragPointerUp( event, pointer );\r\n};\r\n\r\nproto._dragPointerUp = function( event, pointer ) {\r\n if ( this.isDragging ) {\r\n this._dragEnd( event, pointer );\r\n } else {\r\n // pointer didn't move enough for drag to start\r\n this._staticClick( event, pointer );\r\n }\r\n};\r\n\r\n// -------------------------- drag -------------------------- //\r\n\r\n// dragStart\r\nproto._dragStart = function( event, pointer ) {\r\n this.isDragging = true;\r\n // prevent clicks\r\n this.isPreventingClicks = true;\r\n this.dragStart( event, pointer );\r\n};\r\n\r\nproto.dragStart = function( event, pointer ) {\r\n this.emitEvent( 'dragStart', [ event, pointer ] );\r\n};\r\n\r\n// dragMove\r\nproto._dragMove = function( event, pointer, moveVector ) {\r\n // do not drag if not dragging yet\r\n if ( !this.isDragging ) {\r\n return;\r\n }\r\n\r\n this.dragMove( event, pointer, moveVector );\r\n};\r\n\r\nproto.dragMove = function( event, pointer, moveVector ) {\r\n event.preventDefault();\r\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\r\n};\r\n\r\n// dragEnd\r\nproto._dragEnd = function( event, pointer ) {\r\n // set flags\r\n this.isDragging = false;\r\n // re-enable clicking async\r\n setTimeout( function() {\r\n delete this.isPreventingClicks;\r\n }.bind( this ) );\r\n\r\n this.dragEnd( event, pointer );\r\n};\r\n\r\nproto.dragEnd = function( event, pointer ) {\r\n this.emitEvent( 'dragEnd', [ event, pointer ] );\r\n};\r\n\r\n// ----- onclick ----- //\r\n\r\n// handle all clicks and prevent clicks when dragging\r\nproto.onclick = function( event ) {\r\n if ( this.isPreventingClicks ) {\r\n event.preventDefault();\r\n }\r\n};\r\n\r\n// ----- staticClick ----- //\r\n\r\n// triggered after pointer down & up with no/tiny movement\r\nproto._staticClick = function( event, pointer ) {\r\n // ignore emulated mouse up clicks\r\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\r\n return;\r\n }\r\n\r\n this.staticClick( event, pointer );\r\n\r\n // set flag for emulated clicks 300ms after touchend\r\n if ( event.type != 'mouseup' ) {\r\n this.isIgnoringMouseUp = true;\r\n // reset flag after 300ms\r\n setTimeout( function() {\r\n delete this.isIgnoringMouseUp;\r\n }.bind( this ), 400 );\r\n }\r\n};\r\n\r\nproto.staticClick = function( event, pointer ) {\r\n this.emitEvent( 'staticClick', [ event, pointer ] );\r\n};\r\n\r\n// ----- utils ----- //\r\n\r\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\r\n\r\n// ----- ----- //\r\n\r\nreturn Unidragger;\r\n\r\n}));\r\n\r\n// drag\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/drag',[\r\n './flickity',\r\n 'unidragger/unidragger',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, Unidragger, utils ) {\r\n return factory( window, Flickity, Unidragger, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('unidragger'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = factory(\r\n window,\r\n window.Flickity,\r\n window.Unidragger,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, Unidragger, utils ) {\r\n\r\n\r\n\r\n// ----- defaults ----- //\r\n\r\nutils.extend( Flickity.defaults, {\r\n draggable: '>1',\r\n dragThreshold: 3,\r\n});\r\n\r\n// ----- create ----- //\r\n\r\nFlickity.createMethods.push('_createDrag');\r\n\r\n// -------------------------- drag prototype -------------------------- //\r\n\r\nvar proto = Flickity.prototype;\r\nutils.extend( proto, Unidragger.prototype );\r\nproto._touchActionValue = 'pan-y';\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nvar isTouch = 'createTouch' in document;\r\nvar isTouchmoveScrollCanceled = false;\r\n\r\nproto._createDrag = function() {\r\n this.on( 'activate', this.onActivateDrag );\r\n this.on( 'uiChange', this._uiChangeDrag );\r\n this.on( 'deactivate', this.onDeactivateDrag );\r\n this.on( 'cellChange', this.updateDraggable );\r\n // TODO updateDraggable on resize? if groupCells & slides change\r\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\r\n // #457, RubaXa/Sortable#973\r\n if ( isTouch && !isTouchmoveScrollCanceled ) {\r\n window.addEventListener( 'touchmove', function() {});\r\n isTouchmoveScrollCanceled = true;\r\n }\r\n};\r\n\r\nproto.onActivateDrag = function() {\r\n this.handles = [ this.viewport ];\r\n this.bindHandles();\r\n this.updateDraggable();\r\n};\r\n\r\nproto.onDeactivateDrag = function() {\r\n this.unbindHandles();\r\n this.element.classList.remove('is-draggable');\r\n};\r\n\r\nproto.updateDraggable = function() {\r\n // disable dragging if less than 2 slides. #278\r\n if ( this.options.draggable == '>1' ) {\r\n this.isDraggable = this.slides.length > 1;\r\n } else {\r\n this.isDraggable = this.options.draggable;\r\n }\r\n if ( this.isDraggable ) {\r\n this.element.classList.add('is-draggable');\r\n } else {\r\n this.element.classList.remove('is-draggable');\r\n }\r\n};\r\n\r\n// backwards compatibility\r\nproto.bindDrag = function() {\r\n this.options.draggable = true;\r\n this.updateDraggable();\r\n};\r\n\r\nproto.unbindDrag = function() {\r\n this.options.draggable = false;\r\n this.updateDraggable();\r\n};\r\n\r\nproto._uiChangeDrag = function() {\r\n delete this.isFreeScrolling;\r\n};\r\n\r\n// -------------------------- pointer events -------------------------- //\r\n\r\nproto.pointerDown = function( event, pointer ) {\r\n if ( !this.isDraggable ) {\r\n this._pointerDownDefault( event, pointer );\r\n return;\r\n }\r\n var isOkay = this.okayPointerDown( event );\r\n if ( !isOkay ) {\r\n return;\r\n }\r\n\r\n this._pointerDownPreventDefault( event );\r\n this.pointerDownFocus( event );\r\n // blur\r\n if ( document.activeElement != this.element ) {\r\n // do not blur if already focused\r\n this.pointerDownBlur();\r\n }\r\n\r\n // stop if it was moving\r\n this.dragX = this.x;\r\n this.viewport.classList.add('is-pointer-down');\r\n // track scrolling\r\n this.pointerDownScroll = getScrollPosition();\r\n window.addEventListener( 'scroll', this );\r\n\r\n this._pointerDownDefault( event, pointer );\r\n};\r\n\r\n// default pointerDown logic, used for staticClick\r\nproto._pointerDownDefault = function( event, pointer ) {\r\n // track start event position\r\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\r\n this.pointerDownPointer = {\r\n pageX: pointer.pageX,\r\n pageY: pointer.pageY,\r\n };\r\n // bind move and end events\r\n this._bindPostStartEvents( event );\r\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\r\n};\r\n\r\nvar focusNodes = {\r\n INPUT: true,\r\n TEXTAREA: true,\r\n SELECT: true,\r\n};\r\n\r\nproto.pointerDownFocus = function( event ) {\r\n var isFocusNode = focusNodes[ event.target.nodeName ];\r\n if ( !isFocusNode ) {\r\n this.focus();\r\n }\r\n};\r\n\r\nproto._pointerDownPreventDefault = function( event ) {\r\n var isTouchStart = event.type == 'touchstart';\r\n var isTouchPointer = event.pointerType == 'touch';\r\n var isFocusNode = focusNodes[ event.target.nodeName ];\r\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\r\n event.preventDefault();\r\n }\r\n};\r\n\r\n// ----- move ----- //\r\n\r\nproto.hasDragStarted = function( moveVector ) {\r\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\r\n};\r\n\r\n// ----- up ----- //\r\n\r\nproto.pointerUp = function( event, pointer ) {\r\n delete this.isTouchScrolling;\r\n this.viewport.classList.remove('is-pointer-down');\r\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\r\n this._dragPointerUp( event, pointer );\r\n};\r\n\r\nproto.pointerDone = function() {\r\n window.removeEventListener( 'scroll', this );\r\n delete this.pointerDownScroll;\r\n};\r\n\r\n// -------------------------- dragging -------------------------- //\r\n\r\nproto.dragStart = function( event, pointer ) {\r\n if ( !this.isDraggable ) {\r\n return;\r\n }\r\n this.dragStartPosition = this.x;\r\n this.startAnimation();\r\n window.removeEventListener( 'scroll', this );\r\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\r\n};\r\n\r\nproto.pointerMove = function( event, pointer ) {\r\n var moveVector = this._dragPointerMove( event, pointer );\r\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\r\n this._dragMove( event, pointer, moveVector );\r\n};\r\n\r\nproto.dragMove = function( event, pointer, moveVector ) {\r\n if ( !this.isDraggable ) {\r\n return;\r\n }\r\n event.preventDefault();\r\n\r\n this.previousDragX = this.dragX;\r\n // reverse if right-to-left\r\n var direction = this.options.rightToLeft ? -1 : 1;\r\n if ( this.options.wrapAround ) {\r\n // wrap around move. #589\r\n moveVector.x = moveVector.x % this.slideableWidth;\r\n }\r\n var dragX = this.dragStartPosition + moveVector.x * direction;\r\n\r\n if ( !this.options.wrapAround && this.slides.length ) {\r\n // slow drag\r\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\r\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\r\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\r\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\r\n }\r\n\r\n this.dragX = dragX;\r\n\r\n this.dragMoveTime = new Date();\r\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\r\n};\r\n\r\nproto.dragEnd = function( event, pointer ) {\r\n if ( !this.isDraggable ) {\r\n return;\r\n }\r\n if ( this.options.freeScroll ) {\r\n this.isFreeScrolling = true;\r\n }\r\n // set selectedIndex based on where flick will end up\r\n var index = this.dragEndRestingSelect();\r\n\r\n if ( this.options.freeScroll && !this.options.wrapAround ) {\r\n // if free-scroll & not wrap around\r\n // do not free-scroll if going outside of bounding slides\r\n // so bounding slides can attract slider, and keep it in bounds\r\n var restingX = this.getRestingPosition();\r\n this.isFreeScrolling = -restingX > this.slides[0].target &&\r\n -restingX < this.getLastSlide().target;\r\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\r\n // boost selection if selected index has not changed\r\n index += this.dragEndBoostSelect();\r\n }\r\n delete this.previousDragX;\r\n // apply selection\r\n // TODO refactor this, selecting here feels weird\r\n // HACK, set flag so dragging stays in correct direction\r\n this.isDragSelect = this.options.wrapAround;\r\n this.select( index );\r\n delete this.isDragSelect;\r\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\r\n};\r\n\r\nproto.dragEndRestingSelect = function() {\r\n var restingX = this.getRestingPosition();\r\n // how far away from selected slide\r\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\r\n // get closet resting going up and going down\r\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\r\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\r\n // use closer resting for wrap-around\r\n var index = positiveResting.distance < negativeResting.distance ?\r\n positiveResting.index : negativeResting.index;\r\n return index;\r\n};\r\n\r\n/**\r\n * given resting X and distance to selected cell\r\n * get the distance and index of the closest cell\r\n * @param {Number} restingX - estimated post-flick resting position\r\n * @param {Number} distance - distance to selected cell\r\n * @param {Integer} increment - +1 or -1, going up or down\r\n * @returns {Object} - { distance: {Number}, index: {Integer} }\r\n */\r\nproto._getClosestResting = function( restingX, distance, increment ) {\r\n var index = this.selectedIndex;\r\n var minDistance = Infinity;\r\n var condition = this.options.contain && !this.options.wrapAround ?\r\n // if contain, keep going if distance is equal to minDistance\r\n function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\r\n while ( condition( distance, minDistance ) ) {\r\n // measure distance to next cell\r\n index += increment;\r\n minDistance = distance;\r\n distance = this.getSlideDistance( -restingX, index );\r\n if ( distance === null ) {\r\n break;\r\n }\r\n distance = Math.abs( distance );\r\n }\r\n return {\r\n distance: minDistance,\r\n // selected was previous index\r\n index: index - increment\r\n };\r\n};\r\n\r\n/**\r\n * measure distance between x and a slide target\r\n * @param {Number} x\r\n * @param {Integer} index - slide index\r\n */\r\nproto.getSlideDistance = function( x, index ) {\r\n var len = this.slides.length;\r\n // wrap around if at least 2 slides\r\n var isWrapAround = this.options.wrapAround && len > 1;\r\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\r\n var slide = this.slides[ slideIndex ];\r\n if ( !slide ) {\r\n return null;\r\n }\r\n // add distance for wrap-around slides\r\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\r\n return x - ( slide.target + wrap );\r\n};\r\n\r\nproto.dragEndBoostSelect = function() {\r\n // do not boost if no previousDragX or dragMoveTime\r\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\r\n // or if drag was held for 100 ms\r\n new Date() - this.dragMoveTime > 100 ) {\r\n return 0;\r\n }\r\n\r\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\r\n var delta = this.previousDragX - this.dragX;\r\n if ( distance > 0 && delta > 0 ) {\r\n // boost to next if moving towards the right, and positive velocity\r\n return 1;\r\n } else if ( distance < 0 && delta < 0 ) {\r\n // boost to previous if moving towards the left, and negative velocity\r\n return -1;\r\n }\r\n return 0;\r\n};\r\n\r\n// ----- staticClick ----- //\r\n\r\nproto.staticClick = function( event, pointer ) {\r\n // get clickedCell, if cell was clicked\r\n var clickedCell = this.getParentCell( event.target );\r\n var cellElem = clickedCell && clickedCell.element;\r\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\r\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\r\n};\r\n\r\n// ----- scroll ----- //\r\n\r\nproto.onscroll = function() {\r\n var scroll = getScrollPosition();\r\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\r\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\r\n // cancel click/tap if scroll is too much\r\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\r\n this._pointerDone();\r\n }\r\n};\r\n\r\n// ----- utils ----- //\r\n\r\nfunction getScrollPosition() {\r\n return {\r\n x: window.pageXOffset,\r\n y: window.pageYOffset\r\n };\r\n}\r\n\r\n// ----- ----- //\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// prev/next buttons\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/prev-next-button',[\r\n './flickity',\r\n 'unipointer/unipointer',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, Unipointer, utils ) {\r\n return factory( window, Flickity, Unipointer, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('unipointer'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window,\r\n window.Flickity,\r\n window.Unipointer,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, Unipointer, utils ) {\r\n'use strict';\r\n\r\nvar svgURI = 'http://www.w3.org/2000/svg';\r\n\r\n// -------------------------- PrevNextButton -------------------------- //\r\n\r\nfunction PrevNextButton( direction, parent ) {\r\n this.direction = direction;\r\n this.parent = parent;\r\n this._create();\r\n}\r\n\r\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\r\n\r\nPrevNextButton.prototype._create = function() {\r\n // properties\r\n this.isEnabled = true;\r\n this.isPrevious = this.direction == -1;\r\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\r\n this.isLeft = this.direction == leftDirection;\r\n\r\n var element = this.element = document.createElement('button');\r\n element.className = 'flickity-button flickity-prev-next-button';\r\n element.className += this.isPrevious ? ' previous' : ' next';\r\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\r\n element.setAttribute( 'type', 'button' );\r\n // init as disabled\r\n this.disable();\r\n\r\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\r\n\r\n // create arrow\r\n var svg = this.createSVG();\r\n element.appendChild( svg );\r\n // events\r\n this.parent.on( 'select', this.update.bind( this ) );\r\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\r\n};\r\n\r\nPrevNextButton.prototype.activate = function() {\r\n this.bindStartEvent( this.element );\r\n this.element.addEventListener( 'click', this );\r\n // add to DOM\r\n this.parent.element.appendChild( this.element );\r\n};\r\n\r\nPrevNextButton.prototype.deactivate = function() {\r\n // remove from DOM\r\n this.parent.element.removeChild( this.element );\r\n // click events\r\n this.unbindStartEvent( this.element );\r\n this.element.removeEventListener( 'click', this );\r\n};\r\n\r\nPrevNextButton.prototype.createSVG = function() {\r\n var svg = document.createElementNS( svgURI, 'svg');\r\n svg.setAttribute( 'class', 'flickity-button-icon' );\r\n svg.setAttribute( 'viewBox', '0 0 100 100' );\r\n var path = document.createElementNS( svgURI, 'path');\r\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\r\n path.setAttribute( 'd', pathMovements );\r\n path.setAttribute( 'class', 'arrow' );\r\n // rotate arrow\r\n if ( !this.isLeft ) {\r\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\r\n }\r\n svg.appendChild( path );\r\n return svg;\r\n};\r\n\r\n// get SVG path movmement\r\nfunction getArrowMovements( shape ) {\r\n // use shape as movement if string\r\n if ( typeof shape == 'string' ) {\r\n return shape;\r\n }\r\n // create movement string\r\n return 'M ' + shape.x0 + ',50' +\r\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\r\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\r\n ' L ' + shape.x3 + ',50 ' +\r\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\r\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\r\n ' Z';\r\n}\r\n\r\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\r\n\r\nPrevNextButton.prototype.onclick = function() {\r\n if ( !this.isEnabled ) {\r\n return;\r\n }\r\n this.parent.uiChange();\r\n var method = this.isPrevious ? 'previous' : 'next';\r\n this.parent[ method ]();\r\n};\r\n\r\n// ----- ----- //\r\n\r\nPrevNextButton.prototype.enable = function() {\r\n if ( this.isEnabled ) {\r\n return;\r\n }\r\n this.element.disabled = false;\r\n this.isEnabled = true;\r\n};\r\n\r\nPrevNextButton.prototype.disable = function() {\r\n if ( !this.isEnabled ) {\r\n return;\r\n }\r\n this.element.disabled = true;\r\n this.isEnabled = false;\r\n};\r\n\r\nPrevNextButton.prototype.update = function() {\r\n // index of first or last slide, if previous or next\r\n var slides = this.parent.slides;\r\n // enable is wrapAround and at least 2 slides\r\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\r\n this.enable();\r\n return;\r\n }\r\n var lastIndex = slides.length ? slides.length - 1 : 0;\r\n var boundIndex = this.isPrevious ? 0 : lastIndex;\r\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\r\n this[ method ]();\r\n};\r\n\r\nPrevNextButton.prototype.destroy = function() {\r\n this.deactivate();\r\n this.allOff();\r\n};\r\n\r\n// -------------------------- Flickity prototype -------------------------- //\r\n\r\nutils.extend( Flickity.defaults, {\r\n prevNextButtons: true,\r\n arrowShape: {\r\n x0: 10,\r\n x1: 60, y1: 50,\r\n x2: 70, y2: 40,\r\n x3: 30\r\n }\r\n});\r\n\r\nFlickity.createMethods.push('_createPrevNextButtons');\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createPrevNextButtons = function() {\r\n if ( !this.options.prevNextButtons ) {\r\n return;\r\n }\r\n\r\n this.prevButton = new PrevNextButton( -1, this );\r\n this.nextButton = new PrevNextButton( 1, this );\r\n\r\n this.on( 'activate', this.activatePrevNextButtons );\r\n};\r\n\r\nproto.activatePrevNextButtons = function() {\r\n this.prevButton.activate();\r\n this.nextButton.activate();\r\n this.on( 'deactivate', this.deactivatePrevNextButtons );\r\n};\r\n\r\nproto.deactivatePrevNextButtons = function() {\r\n this.prevButton.deactivate();\r\n this.nextButton.deactivate();\r\n this.off( 'deactivate', this.deactivatePrevNextButtons );\r\n};\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nFlickity.PrevNextButton = PrevNextButton;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// page dots\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/page-dots',[\r\n './flickity',\r\n 'unipointer/unipointer',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, Unipointer, utils ) {\r\n return factory( window, Flickity, Unipointer, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('unipointer'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window,\r\n window.Flickity,\r\n window.Unipointer,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, Unipointer, utils ) {\r\n\r\n// -------------------------- PageDots -------------------------- //\r\n\r\n\r\n\r\nfunction PageDots( parent ) {\r\n this.parent = parent;\r\n this._create();\r\n}\r\n\r\nPageDots.prototype = Object.create( Unipointer.prototype );\r\n\r\nPageDots.prototype._create = function() {\r\n // create holder element\r\n this.holder = document.createElement('ol');\r\n this.holder.className = 'flickity-page-dots';\r\n // create dots, array of elements\r\n this.dots = [];\r\n // events\r\n this.handleClick = this.onClick.bind( this );\r\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\r\n};\r\n\r\nPageDots.prototype.activate = function() {\r\n this.setDots();\r\n this.holder.addEventListener( 'click', this.handleClick );\r\n this.bindStartEvent( this.holder );\r\n // add to DOM\r\n this.parent.element.appendChild( this.holder );\r\n};\r\n\r\nPageDots.prototype.deactivate = function() {\r\n this.holder.removeEventListener( 'click', this.handleClick );\r\n this.unbindStartEvent( this.holder );\r\n // remove from DOM\r\n this.parent.element.removeChild( this.holder );\r\n};\r\n\r\nPageDots.prototype.setDots = function() {\r\n // get difference between number of slides and number of dots\r\n var delta = this.parent.slides.length - this.dots.length;\r\n if ( delta > 0 ) {\r\n this.addDots( delta );\r\n } else if ( delta < 0 ) {\r\n this.removeDots( -delta );\r\n }\r\n};\r\n\r\nPageDots.prototype.addDots = function( count ) {\r\n var fragment = document.createDocumentFragment();\r\n var newDots = [];\r\n var length = this.dots.length;\r\n var max = length + count;\r\n\r\n for ( var i = length; i < max; i++ ) {\r\n var dot = document.createElement('li');\r\n dot.className = 'dot';\r\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\r\n fragment.appendChild( dot );\r\n newDots.push( dot );\r\n }\r\n\r\n this.holder.appendChild( fragment );\r\n this.dots = this.dots.concat( newDots );\r\n};\r\n\r\nPageDots.prototype.removeDots = function( count ) {\r\n // remove from this.dots collection\r\n var removeDots = this.dots.splice( this.dots.length - count, count );\r\n // remove from DOM\r\n removeDots.forEach( function( dot ) {\r\n this.holder.removeChild( dot );\r\n }, this );\r\n};\r\n\r\nPageDots.prototype.updateSelected = function() {\r\n // remove selected class on previous\r\n if ( this.selectedDot ) {\r\n this.selectedDot.className = 'dot';\r\n this.selectedDot.removeAttribute('aria-current');\r\n }\r\n // don't proceed if no dots\r\n if ( !this.dots.length ) {\r\n return;\r\n }\r\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\r\n this.selectedDot.className = 'dot is-selected';\r\n this.selectedDot.setAttribute( 'aria-current', 'step' );\r\n};\r\n\r\nPageDots.prototype.onTap = // old method name, backwards-compatible\r\nPageDots.prototype.onClick = function( event ) {\r\n var target = event.target;\r\n // only care about dot clicks\r\n if ( target.nodeName != 'LI' ) {\r\n return;\r\n }\r\n\r\n this.parent.uiChange();\r\n var index = this.dots.indexOf( target );\r\n this.parent.select( index );\r\n};\r\n\r\nPageDots.prototype.destroy = function() {\r\n this.deactivate();\r\n this.allOff();\r\n};\r\n\r\nFlickity.PageDots = PageDots;\r\n\r\n// -------------------------- Flickity -------------------------- //\r\n\r\nutils.extend( Flickity.defaults, {\r\n pageDots: true\r\n});\r\n\r\nFlickity.createMethods.push('_createPageDots');\r\n\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createPageDots = function() {\r\n if ( !this.options.pageDots ) {\r\n return;\r\n }\r\n this.pageDots = new PageDots( this );\r\n // events\r\n this.on( 'activate', this.activatePageDots );\r\n this.on( 'select', this.updateSelectedPageDots );\r\n this.on( 'cellChange', this.updatePageDots );\r\n this.on( 'resize', this.updatePageDots );\r\n this.on( 'deactivate', this.deactivatePageDots );\r\n};\r\n\r\nproto.activatePageDots = function() {\r\n this.pageDots.activate();\r\n};\r\n\r\nproto.updateSelectedPageDots = function() {\r\n this.pageDots.updateSelected();\r\n};\r\n\r\nproto.updatePageDots = function() {\r\n this.pageDots.setDots();\r\n};\r\n\r\nproto.deactivatePageDots = function() {\r\n this.pageDots.deactivate();\r\n};\r\n\r\n// ----- ----- //\r\n\r\nFlickity.PageDots = PageDots;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// player & autoPlay\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/player',[\r\n 'ev-emitter/ev-emitter',\r\n 'fizzy-ui-utils/utils',\r\n './flickity'\r\n ], function( EvEmitter, utils, Flickity ) {\r\n return factory( EvEmitter, utils, Flickity );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n require('ev-emitter'),\r\n require('fizzy-ui-utils'),\r\n require('./flickity')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window.EvEmitter,\r\n window.fizzyUIUtils,\r\n window.Flickity\r\n );\r\n }\r\n\r\n}( window, function factory( EvEmitter, utils, Flickity ) {\r\n\r\n\r\n\r\n// -------------------------- Player -------------------------- //\r\n\r\nfunction Player( parent ) {\r\n this.parent = parent;\r\n this.state = 'stopped';\r\n // visibility change event handler\r\n this.onVisibilityChange = this.visibilityChange.bind( this );\r\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\r\n}\r\n\r\nPlayer.prototype = Object.create( EvEmitter.prototype );\r\n\r\n// start play\r\nPlayer.prototype.play = function() {\r\n if ( this.state == 'playing' ) {\r\n return;\r\n }\r\n // do not play if page is hidden, start playing when page is visible\r\n var isPageHidden = document.hidden;\r\n if ( isPageHidden ) {\r\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\r\n return;\r\n }\r\n\r\n this.state = 'playing';\r\n // listen to visibility change\r\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\r\n // start ticking\r\n this.tick();\r\n};\r\n\r\nPlayer.prototype.tick = function() {\r\n // do not tick if not playing\r\n if ( this.state != 'playing' ) {\r\n return;\r\n }\r\n\r\n var time = this.parent.options.autoPlay;\r\n // default to 3 seconds\r\n time = typeof time == 'number' ? time : 3000;\r\n var _this = this;\r\n // HACK: reset ticks if stopped and started within interval\r\n this.clear();\r\n this.timeout = setTimeout( function() {\r\n _this.parent.next( true );\r\n _this.tick();\r\n }, time );\r\n};\r\n\r\nPlayer.prototype.stop = function() {\r\n this.state = 'stopped';\r\n this.clear();\r\n // remove visibility change event\r\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\r\n};\r\n\r\nPlayer.prototype.clear = function() {\r\n clearTimeout( this.timeout );\r\n};\r\n\r\nPlayer.prototype.pause = function() {\r\n if ( this.state == 'playing' ) {\r\n this.state = 'paused';\r\n this.clear();\r\n }\r\n};\r\n\r\nPlayer.prototype.unpause = function() {\r\n // re-start play if paused\r\n if ( this.state == 'paused' ) {\r\n this.play();\r\n }\r\n};\r\n\r\n// pause if page visibility is hidden, unpause if visible\r\nPlayer.prototype.visibilityChange = function() {\r\n var isPageHidden = document.hidden;\r\n this[ isPageHidden ? 'pause' : 'unpause' ]();\r\n};\r\n\r\nPlayer.prototype.visibilityPlay = function() {\r\n this.play();\r\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\r\n};\r\n\r\n// -------------------------- Flickity -------------------------- //\r\n\r\nutils.extend( Flickity.defaults, {\r\n pauseAutoPlayOnHover: true\r\n});\r\n\r\nFlickity.createMethods.push('_createPlayer');\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createPlayer = function() {\r\n this.player = new Player( this );\r\n\r\n this.on( 'activate', this.activatePlayer );\r\n this.on( 'uiChange', this.stopPlayer );\r\n this.on( 'pointerDown', this.stopPlayer );\r\n this.on( 'deactivate', this.deactivatePlayer );\r\n};\r\n\r\nproto.activatePlayer = function() {\r\n if ( !this.options.autoPlay ) {\r\n return;\r\n }\r\n this.player.play();\r\n this.element.addEventListener( 'mouseenter', this );\r\n};\r\n\r\n// Player API, don't hate the ... thanks I know where the door is\r\n\r\nproto.playPlayer = function() {\r\n this.player.play();\r\n};\r\n\r\nproto.stopPlayer = function() {\r\n this.player.stop();\r\n};\r\n\r\nproto.pausePlayer = function() {\r\n this.player.pause();\r\n};\r\n\r\nproto.unpausePlayer = function() {\r\n this.player.unpause();\r\n};\r\n\r\nproto.deactivatePlayer = function() {\r\n this.player.stop();\r\n this.element.removeEventListener( 'mouseenter', this );\r\n};\r\n\r\n// ----- mouseenter/leave ----- //\r\n\r\n// pause auto-play on hover\r\nproto.onmouseenter = function() {\r\n if ( !this.options.pauseAutoPlayOnHover ) {\r\n return;\r\n }\r\n this.player.pause();\r\n this.element.addEventListener( 'mouseleave', this );\r\n};\r\n\r\n// resume auto-play on hover off\r\nproto.onmouseleave = function() {\r\n this.player.unpause();\r\n this.element.removeEventListener( 'mouseleave', this );\r\n};\r\n\r\n// ----- ----- //\r\n\r\nFlickity.Player = Player;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// add, remove cell\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/add-remove-cell',[\r\n './flickity',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, utils ) {\r\n return factory( window, Flickity, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window,\r\n window.Flickity,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, utils ) {\r\n\r\n\r\n\r\n// append cells to a document fragment\r\nfunction getCellsFragment( cells ) {\r\n var fragment = document.createDocumentFragment();\r\n cells.forEach( function( cell ) {\r\n fragment.appendChild( cell.element );\r\n });\r\n return fragment;\r\n}\r\n\r\n// -------------------------- add/remove cell prototype -------------------------- //\r\n\r\nvar proto = Flickity.prototype;\r\n\r\n/**\r\n * Insert, prepend, or append cells\r\n * @param {Element, Array, NodeList} elems\r\n * @param {Integer} index\r\n */\r\nproto.insert = function( elems, index ) {\r\n var cells = this._makeCells( elems );\r\n if ( !cells || !cells.length ) {\r\n return;\r\n }\r\n var len = this.cells.length;\r\n // default to append\r\n index = index === undefined ? len : index;\r\n // add cells with document fragment\r\n var fragment = getCellsFragment( cells );\r\n // append to slider\r\n var isAppend = index == len;\r\n if ( isAppend ) {\r\n this.slider.appendChild( fragment );\r\n } else {\r\n var insertCellElement = this.cells[ index ].element;\r\n this.slider.insertBefore( fragment, insertCellElement );\r\n }\r\n // add to this.cells\r\n if ( index === 0 ) {\r\n // prepend, add to start\r\n this.cells = cells.concat( this.cells );\r\n } else if ( isAppend ) {\r\n // append, add to end\r\n this.cells = this.cells.concat( cells );\r\n } else {\r\n // insert in this.cells\r\n var endCells = this.cells.splice( index, len - index );\r\n this.cells = this.cells.concat( cells ).concat( endCells );\r\n }\r\n\r\n this._sizeCells( cells );\r\n this.cellChange( index, true );\r\n};\r\n\r\nproto.append = function( elems ) {\r\n this.insert( elems, this.cells.length );\r\n};\r\n\r\nproto.prepend = function( elems ) {\r\n this.insert( elems, 0 );\r\n};\r\n\r\n/**\r\n * Remove cells\r\n * @param {Element, Array, NodeList} elems\r\n */\r\nproto.remove = function( elems ) {\r\n var cells = this.getCells( elems );\r\n if ( !cells || !cells.length ) {\r\n return;\r\n }\r\n\r\n var minCellIndex = this.cells.length - 1;\r\n // remove cells from collection & DOM\r\n cells.forEach( function( cell ) {\r\n cell.remove();\r\n var index = this.cells.indexOf( cell );\r\n minCellIndex = Math.min( index, minCellIndex );\r\n utils.removeFrom( this.cells, cell );\r\n }, this );\r\n\r\n this.cellChange( minCellIndex, true );\r\n};\r\n\r\n/**\r\n * logic to be run after a cell's size changes\r\n * @param {Element} elem - cell's element\r\n */\r\nproto.cellSizeChange = function( elem ) {\r\n var cell = this.getCell( elem );\r\n if ( !cell ) {\r\n return;\r\n }\r\n cell.getSize();\r\n\r\n var index = this.cells.indexOf( cell );\r\n this.cellChange( index );\r\n};\r\n\r\n/**\r\n * logic any time a cell is changed: added, removed, or size changed\r\n * @param {Integer} changedCellIndex - index of the changed cell, optional\r\n */\r\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\r\n var prevSelectedElem = this.selectedElement;\r\n this._positionCells( changedCellIndex );\r\n this._getWrapShiftCells();\r\n this.setGallerySize();\r\n // update selectedIndex\r\n // try to maintain position & select previous selected element\r\n var cell = this.getCell( prevSelectedElem );\r\n if ( cell ) {\r\n this.selectedIndex = this.getCellSlideIndex( cell );\r\n }\r\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\r\n\r\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\r\n // position slider\r\n this.select( this.selectedIndex );\r\n // do not position slider after lazy load\r\n if ( isPositioningSlider ) {\r\n this.positionSliderAtSelected();\r\n }\r\n};\r\n\r\n// ----- ----- //\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n// lazyload\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/lazyload',[\r\n './flickity',\r\n 'fizzy-ui-utils/utils'\r\n ], function( Flickity, utils ) {\r\n return factory( window, Flickity, utils );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('./flickity'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n factory(\r\n window,\r\n window.Flickity,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, utils ) {\r\n'use strict';\r\n\r\nFlickity.createMethods.push('_createLazyload');\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createLazyload = function() {\r\n this.on( 'select', this.lazyLoad );\r\n};\r\n\r\nproto.lazyLoad = function() {\r\n var lazyLoad = this.options.lazyLoad;\r\n if ( !lazyLoad ) {\r\n return;\r\n }\r\n // get adjacent cells, use lazyLoad option for adjacent count\r\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\r\n var cellElems = this.getAdjacentCellElements( adjCount );\r\n // get lazy images in those cells\r\n var lazyImages = [];\r\n cellElems.forEach( function( cellElem ) {\r\n var lazyCellImages = getCellLazyImages( cellElem );\r\n lazyImages = lazyImages.concat( lazyCellImages );\r\n });\r\n // load lazy images\r\n lazyImages.forEach( function( img ) {\r\n new LazyLoader( img, this );\r\n }, this );\r\n};\r\n\r\nfunction getCellLazyImages( cellElem ) {\r\n // check if cell element is lazy image\r\n if ( cellElem.nodeName == 'IMG' ) {\r\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\r\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\r\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\r\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\r\n return [ cellElem ];\r\n }\r\n }\r\n // select lazy images in cell\r\n var lazySelector = 'img[data-flickity-lazyload], ' +\r\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\r\n var imgs = cellElem.querySelectorAll( lazySelector );\r\n return utils.makeArray( imgs );\r\n}\r\n\r\n// -------------------------- LazyLoader -------------------------- //\r\n\r\n/**\r\n * class to handle loading images\r\n */\r\nfunction LazyLoader( img, flickity ) {\r\n this.img = img;\r\n this.flickity = flickity;\r\n this.load();\r\n}\r\n\r\nLazyLoader.prototype.handleEvent = utils.handleEvent;\r\n\r\nLazyLoader.prototype.load = function() {\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n // get src & srcset\r\n var src = this.img.getAttribute('data-flickity-lazyload') ||\r\n this.img.getAttribute('data-flickity-lazyload-src');\r\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\r\n // set src & serset\r\n this.img.src = src;\r\n if ( srcset ) {\r\n this.img.setAttribute( 'srcset', srcset );\r\n }\r\n // remove attr\r\n this.img.removeAttribute('data-flickity-lazyload');\r\n this.img.removeAttribute('data-flickity-lazyload-src');\r\n this.img.removeAttribute('data-flickity-lazyload-srcset');\r\n};\r\n\r\nLazyLoader.prototype.onload = function( event ) {\r\n this.complete( event, 'flickity-lazyloaded' );\r\n};\r\n\r\nLazyLoader.prototype.onerror = function( event ) {\r\n this.complete( event, 'flickity-lazyerror' );\r\n};\r\n\r\nLazyLoader.prototype.complete = function( event, className ) {\r\n // unbind events\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n\r\n var cell = this.flickity.getParentCell( this.img );\r\n var cellElem = cell && cell.element;\r\n this.flickity.cellSizeChange( cellElem );\r\n\r\n this.img.classList.add( className );\r\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\r\n};\r\n\r\n// ----- ----- //\r\n\r\nFlickity.LazyLoader = LazyLoader;\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n/*!\r\n * Flickity v2.2.0\r\n * Touch, responsive, flickable carousels\r\n *\r\n * Licensed GPLv3 for open source use\r\n * or Flickity Commercial License for commercial use\r\n *\r\n * https://flickity.metafizzy.co\r\n * Copyright 2015-2018 Metafizzy\r\n */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity/js/index',[\r\n './flickity',\r\n './drag',\r\n './prev-next-button',\r\n './page-dots',\r\n './player',\r\n './add-remove-cell',\r\n './lazyload'\r\n ], factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n require('./flickity'),\r\n require('./drag'),\r\n require('./prev-next-button'),\r\n require('./page-dots'),\r\n require('./player'),\r\n require('./add-remove-cell'),\r\n require('./lazyload')\r\n );\r\n }\r\n\r\n})( window, function factory( Flickity ) {\r\n /*jshint strict: false*/\r\n return Flickity;\r\n});\r\n\r\n/*!\r\n * Flickity asNavFor v2.0.1\r\n * enable asNavFor for Flickity\r\n */\r\n\r\n/*jshint browser: true, undef: true, unused: true, strict: true*/\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /*globals define, module, require */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'flickity-as-nav-for/as-nav-for',[\r\n 'flickity/js/index',\r\n 'fizzy-ui-utils/utils'\r\n ], factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n require('flickity'),\r\n require('fizzy-ui-utils')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = factory(\r\n window.Flickity,\r\n window.fizzyUIUtils\r\n );\r\n }\r\n\r\n}( window, function factory( Flickity, utils ) {\r\n\r\n\r\n\r\n// -------------------------- asNavFor prototype -------------------------- //\r\n\r\n// Flickity.defaults.asNavFor = null;\r\n\r\nFlickity.createMethods.push('_createAsNavFor');\r\n\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createAsNavFor = function() {\r\n this.on( 'activate', this.activateAsNavFor );\r\n this.on( 'deactivate', this.deactivateAsNavFor );\r\n this.on( 'destroy', this.destroyAsNavFor );\r\n\r\n var asNavForOption = this.options.asNavFor;\r\n if ( !asNavForOption ) {\r\n return;\r\n }\r\n // HACK do async, give time for other flickity to be initalized\r\n var _this = this;\r\n setTimeout( function initNavCompanion() {\r\n _this.setNavCompanion( asNavForOption );\r\n });\r\n};\r\n\r\nproto.setNavCompanion = function( elem ) {\r\n elem = utils.getQueryElement( elem );\r\n var companion = Flickity.data( elem );\r\n // stop if no companion or companion is self\r\n if ( !companion || companion == this ) {\r\n return;\r\n }\r\n\r\n this.navCompanion = companion;\r\n // companion select\r\n var _this = this;\r\n this.onNavCompanionSelect = function() {\r\n _this.navCompanionSelect();\r\n };\r\n companion.on( 'select', this.onNavCompanionSelect );\r\n // click\r\n this.on( 'staticClick', this.onNavStaticClick );\r\n\r\n this.navCompanionSelect( true );\r\n};\r\n\r\nproto.navCompanionSelect = function( isInstant ) {\r\n if ( !this.navCompanion ) {\r\n return;\r\n }\r\n // select slide that matches first cell of slide\r\n var selectedCell = this.navCompanion.selectedCells[0];\r\n var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\r\n var lastIndex = firstIndex + this.navCompanion.selectedCells.length - 1;\r\n var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\r\n this.navCompanion.cellAlign ) );\r\n this.selectCell( selectIndex, false, isInstant );\r\n // set nav selected class\r\n this.removeNavSelectedElements();\r\n // stop if companion has more cells than this one\r\n if ( selectIndex >= this.cells.length ) {\r\n return;\r\n }\r\n\r\n var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\r\n this.navSelectedElements = selectedCells.map( function( cell ) {\r\n return cell.element;\r\n });\r\n this.changeNavSelectedClass('add');\r\n};\r\n\r\nfunction lerp( a, b, t ) {\r\n return ( b - a ) * t + a;\r\n}\r\n\r\nproto.changeNavSelectedClass = function( method ) {\r\n this.navSelectedElements.forEach( function( navElem ) {\r\n navElem.classList[ method ]('is-nav-selected');\r\n });\r\n};\r\n\r\nproto.activateAsNavFor = function() {\r\n this.navCompanionSelect( true );\r\n};\r\n\r\nproto.removeNavSelectedElements = function() {\r\n if ( !this.navSelectedElements ) {\r\n return;\r\n }\r\n this.changeNavSelectedClass('remove');\r\n delete this.navSelectedElements;\r\n};\r\n\r\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\r\n if ( typeof cellIndex == 'number' ) {\r\n this.navCompanion.selectCell( cellIndex );\r\n }\r\n};\r\n\r\nproto.deactivateAsNavFor = function() {\r\n this.removeNavSelectedElements();\r\n};\r\n\r\nproto.destroyAsNavFor = function() {\r\n if ( !this.navCompanion ) {\r\n return;\r\n }\r\n this.navCompanion.off( 'select', this.onNavCompanionSelect );\r\n this.off( 'staticClick', this.onNavStaticClick );\r\n delete this.navCompanion;\r\n};\r\n\r\n// ----- ----- //\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n/*!\r\n * imagesLoaded v4.1.4\r\n * JavaScript is all like \"You images are done yet or what?\"\r\n * MIT License\r\n */\r\n\r\n( function( window, factory ) { 'use strict';\r\n // universal module definition\r\n\r\n /*global define: false, module: false, require: false */\r\n\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( 'imagesloaded/imagesloaded',[\r\n 'ev-emitter/ev-emitter'\r\n ], function( EvEmitter ) {\r\n return factory( window, EvEmitter );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('ev-emitter')\r\n );\r\n } else {\r\n // browser global\r\n window.imagesLoaded = factory(\r\n window,\r\n window.EvEmitter\r\n );\r\n }\r\n\r\n})( typeof window !== 'undefined' ? window : this,\r\n\r\n// -------------------------- factory -------------------------- //\r\n\r\nfunction factory( window, EvEmitter ) {\r\n\r\n\r\n\r\nvar $ = window.jQuery;\r\nvar console = window.console;\r\n\r\n// -------------------------- helpers -------------------------- //\r\n\r\n// extend objects\r\nfunction extend( a, b ) {\r\n for ( var prop in b ) {\r\n a[ prop ] = b[ prop ];\r\n }\r\n return a;\r\n}\r\n\r\nvar arraySlice = Array.prototype.slice;\r\n\r\n// turn element or nodeList into an array\r\nfunction makeArray( obj ) {\r\n if ( Array.isArray( obj ) ) {\r\n // use object if already an array\r\n return obj;\r\n }\r\n\r\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\r\n if ( isArrayLike ) {\r\n // convert nodeList to array\r\n return arraySlice.call( obj );\r\n }\r\n\r\n // array of single index\r\n return [ obj ];\r\n}\r\n\r\n// -------------------------- imagesLoaded -------------------------- //\r\n\r\n/**\r\n * @param {Array, Element, NodeList, String} elem\r\n * @param {Object or Function} options - if function, use as callback\r\n * @param {Function} onAlways - callback function\r\n */\r\nfunction ImagesLoaded( elem, options, onAlways ) {\r\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\r\n if ( !( this instanceof ImagesLoaded ) ) {\r\n return new ImagesLoaded( elem, options, onAlways );\r\n }\r\n // use elem as selector string\r\n var queryElem = elem;\r\n if ( typeof elem == 'string' ) {\r\n queryElem = document.querySelectorAll( elem );\r\n }\r\n // bail if bad element\r\n if ( !queryElem ) {\r\n console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\r\n return;\r\n }\r\n\r\n this.elements = makeArray( queryElem );\r\n this.options = extend( {}, this.options );\r\n // shift arguments if no options set\r\n if ( typeof options == 'function' ) {\r\n onAlways = options;\r\n } else {\r\n extend( this.options, options );\r\n }\r\n\r\n if ( onAlways ) {\r\n this.on( 'always', onAlways );\r\n }\r\n\r\n this.getImages();\r\n\r\n if ( $ ) {\r\n // add jQuery Deferred object\r\n this.jqDeferred = new $.Deferred();\r\n }\r\n\r\n // HACK check async to allow time to bind listeners\r\n setTimeout( this.check.bind( this ) );\r\n}\r\n\r\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\r\n\r\nImagesLoaded.prototype.options = {};\r\n\r\nImagesLoaded.prototype.getImages = function() {\r\n this.images = [];\r\n\r\n // filter & find items if we have an item selector\r\n this.elements.forEach( this.addElementImages, this );\r\n};\r\n\r\n/**\r\n * @param {Node} element\r\n */\r\nImagesLoaded.prototype.addElementImages = function( elem ) {\r\n // filter siblings\r\n if ( elem.nodeName == 'IMG' ) {\r\n this.addImage( elem );\r\n }\r\n // get background image on element\r\n if ( this.options.background === true ) {\r\n this.addElementBackgroundImages( elem );\r\n }\r\n\r\n // find children\r\n // no non-element nodes, #143\r\n var nodeType = elem.nodeType;\r\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\r\n return;\r\n }\r\n var childImgs = elem.querySelectorAll('img');\r\n // concat childElems to filterFound array\r\n for ( var i=0; i < childImgs.length; i++ ) {\r\n var img = childImgs[i];\r\n this.addImage( img );\r\n }\r\n\r\n // get child background images\r\n if ( typeof this.options.background == 'string' ) {\r\n var children = elem.querySelectorAll( this.options.background );\r\n for ( i=0; i < children.length; i++ ) {\r\n var child = children[i];\r\n this.addElementBackgroundImages( child );\r\n }\r\n }\r\n};\r\n\r\nvar elementNodeTypes = {\r\n 1: true,\r\n 9: true,\r\n 11: true\r\n};\r\n\r\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\r\n var style = getComputedStyle( elem );\r\n if ( !style ) {\r\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\r\n return;\r\n }\r\n // get url inside url(\"...\")\r\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\r\n var matches = reURL.exec( style.backgroundImage );\r\n while ( matches !== null ) {\r\n var url = matches && matches[2];\r\n if ( url ) {\r\n this.addBackground( url, elem );\r\n }\r\n matches = reURL.exec( style.backgroundImage );\r\n }\r\n};\r\n\r\n/**\r\n * @param {Image} img\r\n */\r\nImagesLoaded.prototype.addImage = function( img ) {\r\n var loadingImage = new LoadingImage( img );\r\n this.images.push( loadingImage );\r\n};\r\n\r\nImagesLoaded.prototype.addBackground = function( url, elem ) {\r\n var background = new Background( url, elem );\r\n this.images.push( background );\r\n};\r\n\r\nImagesLoaded.prototype.check = function() {\r\n var _this = this;\r\n this.progressedCount = 0;\r\n this.hasAnyBroken = false;\r\n // complete if no images\r\n if ( !this.images.length ) {\r\n this.complete();\r\n return;\r\n }\r\n\r\n function onProgress( image, elem, message ) {\r\n // HACK - Chrome triggers event before object properties have changed. #83\r\n setTimeout( function() {\r\n _this.progress( image, elem, message );\r\n });\r\n }\r\n\r\n this.images.forEach( function( loadingImage ) {\r\n loadingImage.once( 'progress', onProgress );\r\n loadingImage.check();\r\n });\r\n};\r\n\r\nImagesLoaded.prototype.progress = function( image, elem, message ) {\r\n this.progressedCount++;\r\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\r\n // progress event\r\n this.emitEvent( 'progress', [ this, image, elem ] );\r\n if ( this.jqDeferred && this.jqDeferred.notify ) {\r\n this.jqDeferred.notify( this, image );\r\n }\r\n // check if completed\r\n if ( this.progressedCount == this.images.length ) {\r\n this.complete();\r\n }\r\n\r\n if ( this.options.debug && console ) {\r\n console.log( 'progress: ' + message, image, elem );\r\n }\r\n};\r\n\r\nImagesLoaded.prototype.complete = function() {\r\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\r\n this.isComplete = true;\r\n this.emitEvent( eventName, [ this ] );\r\n this.emitEvent( 'always', [ this ] );\r\n if ( this.jqDeferred ) {\r\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\r\n this.jqDeferred[ jqMethod ]( this );\r\n }\r\n};\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nfunction LoadingImage( img ) {\r\n this.img = img;\r\n}\r\n\r\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\r\n\r\nLoadingImage.prototype.check = function() {\r\n // If complete is true and browser supports natural sizes,\r\n // try to check for image status manually.\r\n var isComplete = this.getIsImageComplete();\r\n if ( isComplete ) {\r\n // report based on naturalWidth\r\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n return;\r\n }\r\n\r\n // If none of the checks above matched, simulate loading on detached element.\r\n this.proxyImage = new Image();\r\n this.proxyImage.addEventListener( 'load', this );\r\n this.proxyImage.addEventListener( 'error', this );\r\n // bind to image as well for Firefox. #191\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n this.proxyImage.src = this.img.src;\r\n};\r\n\r\nLoadingImage.prototype.getIsImageComplete = function() {\r\n // check for non-zero, non-undefined naturalWidth\r\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\r\n return this.img.complete && this.img.naturalWidth;\r\n};\r\n\r\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\r\n this.isLoaded = isLoaded;\r\n this.emitEvent( 'progress', [ this, this.img, message ] );\r\n};\r\n\r\n// ----- events ----- //\r\n\r\n// trigger specified handler for event type\r\nLoadingImage.prototype.handleEvent = function( event ) {\r\n var method = 'on' + event.type;\r\n if ( this[ method ] ) {\r\n this[ method ]( event );\r\n }\r\n};\r\n\r\nLoadingImage.prototype.onload = function() {\r\n this.confirm( true, 'onload' );\r\n this.unbindEvents();\r\n};\r\n\r\nLoadingImage.prototype.onerror = function() {\r\n this.confirm( false, 'onerror' );\r\n this.unbindEvents();\r\n};\r\n\r\nLoadingImage.prototype.unbindEvents = function() {\r\n this.proxyImage.removeEventListener( 'load', this );\r\n this.proxyImage.removeEventListener( 'error', this );\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n};\r\n\r\n// -------------------------- Background -------------------------- //\r\n\r\nfunction Background( url, element ) {\r\n this.url = url;\r\n this.element = element;\r\n this.img = new Image();\r\n}\r\n\r\n// inherit LoadingImage prototype\r\nBackground.prototype = Object.create( LoadingImage.prototype );\r\n\r\nBackground.prototype.check = function() {\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n this.img.src = this.url;\r\n // check if image is already complete\r\n var isComplete = this.getIsImageComplete();\r\n if ( isComplete ) {\r\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n this.unbindEvents();\r\n }\r\n};\r\n\r\nBackground.prototype.unbindEvents = function() {\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n};\r\n\r\nBackground.prototype.confirm = function( isLoaded, message ) {\r\n this.isLoaded = isLoaded;\r\n this.emitEvent( 'progress', [ this, this.element, message ] );\r\n};\r\n\r\n// -------------------------- jQuery -------------------------- //\r\n\r\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\r\n jQuery = jQuery || window.jQuery;\r\n if ( !jQuery ) {\r\n return;\r\n }\r\n // set local variable\r\n $ = jQuery;\r\n // $().imagesLoaded()\r\n $.fn.imagesLoaded = function( options, callback ) {\r\n var instance = new ImagesLoaded( this, options, callback );\r\n return instance.jqDeferred.promise( $(this) );\r\n };\r\n};\r\n// try making plugin\r\nImagesLoaded.makeJQueryPlugin();\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nreturn ImagesLoaded;\r\n\r\n});\r\n\r\n/*!\r\n * Flickity imagesLoaded v2.0.0\r\n * enables imagesLoaded option for Flickity\r\n */\r\n\r\n/*jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /*globals define, module, require */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( [\r\n 'flickity/js/index',\r\n 'imagesloaded/imagesloaded'\r\n ], function( Flickity, imagesLoaded ) {\r\n return factory( window, Flickity, imagesLoaded );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('flickity'),\r\n require('imagesloaded')\r\n );\r\n } else {\r\n // browser global\r\n window.Flickity = factory(\r\n window,\r\n window.Flickity,\r\n window.imagesLoaded\r\n );\r\n }\r\n\r\n}( window, function factory( window, Flickity, imagesLoaded ) {\r\n'use strict';\r\n\r\nFlickity.createMethods.push('_createImagesLoaded');\r\n\r\nvar proto = Flickity.prototype;\r\n\r\nproto._createImagesLoaded = function() {\r\n this.on( 'activate', this.imagesLoaded );\r\n};\r\n\r\nproto.imagesLoaded = function() {\r\n if ( !this.options.imagesLoaded ) {\r\n return;\r\n }\r\n var _this = this;\r\n function onImagesLoadedProgress( instance, image ) {\r\n var cell = _this.getParentCell( image.img );\r\n _this.cellSizeChange( cell && cell.element );\r\n if ( !_this.options.freeScroll ) {\r\n _this.positionSliderAtSelected();\r\n }\r\n }\r\n imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\r\n};\r\n\r\nreturn Flickity;\r\n\r\n}));\r\n\r\n","document.addEventListener('DOMContentLoaded', (event) => {\n //define global variables\n const isTabletOrMobile = () => {\n return window.innerWidth <= 1024;\n };\n initSwitchLanguage();\n jsLazyLoadImages();\n initGallerySlider();\n initLogosSlider();\n initSidebar();\n initLoadMore();\n initEventsSlider();\n initPassedFestivalsSlider();\n initLandingPageHeadingSlider();\n initSearchBar();\n initHomePageHeadingSlider();\n initHomePageCalendar();\n initMegaMenu();\n initRelatedPostsSlider();\n iniSubHeader();\n initRelatorsList();\n});\n","/**\n* debouncer - Limits the rate at which a function can fire.\n*\n* Example:\n*\n* $(window).resize(debouncer(function(e) {\n* function();\n* }, 300));\n*\n* @param {function} func The function you want to limit\n* @param {ms} timeout Optional: timeout of the debouncer. Defaults at 200ms.\n*/\nconst debouncer = (func, timeout = 300) => {\n let timeoutId;\n return function (...args) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => func.apply(this, args), timeout);\n };\n};\n","//PROPS\nconst eventSlider = document.querySelector(\".events-slider\");\n//METHODS\nconst initEventsSlider = () => {\n eventSlider && fetchSlidesJson();\n};\nconst fetchSlidesJson = () => {\n const culture = document.querySelector(\"html\").getAttribute(\"data-culture\");\n const myHeaders = new Headers();\n myHeaders.append(\"Authorization\", \"Bearer 3b4fbf132e84c26541ea9528815c196ef58d5a41c0ee5cb20e77148fdaf35bed2f69b7d4f0bdb25d304ae0d562f686de03f5ef10fde6f5110df37eb78fdbdfc1\");\n fetch('https://bergamo-scienza-prod-server.runelab.it/events/promoted', {\n method: \"GET\",\n headers: myHeaders\n })\n .then((response) => response.text())\n .then((result) => {\n if (result === \"[]\") {\n eventSlider.setAttribute(\"style\", \"display: none;\");\n }\n console.log(\"result: \" + result);\n const jsonResponse = JSON.parse(result);\n let countslide = 0;\n jsonResponse.forEach((event) => {\n try {\n const singleSlide = stringToHTML(createSlide(event));\n eventSlider.appendChild(singleSlide);\n countslide = countslide + 1;\n }\n catch (e) {\n console.log(e);\n }\n });\n if (countslide < 6) {\n const firstSlide = eventSlider.children[0].cloneNode(true);\n const secondSlide = eventSlider.children[1].cloneNode(true);\n const thirdSlide = eventSlider.children[2].cloneNode(true);\n eventSlider.appendChild(firstSlide);\n eventSlider.appendChild(secondSlide);\n eventSlider.appendChild(thirdSlide);\n }\n createSlider();\n });\n};\nfunction extractFirstParagraphOrFullText(htmlString) {\n const match = htmlString.match(/
]*>.*?<\\/p>/s);\n return match ? match[0] : htmlString;\n}\nconst createSlide = (event) => {\n const data_evento = event.firstSessionDate.substr(8, 2) + \"/\" + event.firstSessionDate.substr(5, 2) + \"/\" + event.firstSessionDate.substr(0, 4);\n const slide = `\r\n \n // ${event.name}${event.surname} \n // `;\n let foto = \"\";\n let url = \"\";\n if (event.photo === null) {\n foto = 'https://eventi.bergamoscienza.it/speaker.png';\n }\n else {\n if (event.photo.full === null) {\n foto = 'https://eventi.bergamoscienza.it/speaker.png';\n }\n else {\n foto = event.photo.full;\n }\n }\n if (lang === \"it\") {\n url = \"/it/festival-corrente/xxii-edizione-bergamoscienza-2024/relatori-2024\";\n }\n else {\n url = \"/en/festival-corrente/22nd-edition-bergamoscienza-2024/speakers-2024\";\n }\n const relatorcreated = `