{"version":3,"sources":["animate-vanilla-js-browser.js","flickity.pkgd.js","collapsible.js","flickity.js","google-maps.js","member-spotlight.js","navigation.js","skip-link-focus-fix.js","team-members.js"],"names":["animateVanillaJs","e","n","t","r","exports","u","i","l","call","m","c","d","o","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","a","f","window","requestAnimationFrame","this","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","cancelHandler","isPending","isCanceled","promise","Promise","Error","then","catch","cancel","factory","define","amd","jQuery","module","require","jQueryBridget","arraySlice","Array","slice","console","logError","message","error","namespace","PluginClass","$","methodCall","$elems","methodName","args","returnValue","pluginMethodStr","each","elem","instance","data","method","charAt","apply","undefined","plainCall","options","option","_init","opts","isPlainObject","extend","fn","arg0","arguments","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","setup","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","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","position","setAttribute","x","shift","originSide","destroy","unselect","side","transform","removeAttribute","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","target","cellAlign","sideOffset","adjustedX","percentPosition","getPositionValue","select","classList","add","remove","wrapShift","slideableWidth","Slide","isOriginLeft","cells","addCell","cell","max","beginMargin","firstMargin","endMargin","lastCell","getLastCell","lastMargin","slideWidth","getCellElements","map","animatePrototype","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","wrapAround","modulo","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","slider","firstSlide","slides","positionX","progress","slidesWidth","dispatchEvent","selectedSlide","velocity","isPointerDown","isFreeScrolling","selectedIndex","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","cellShift","getFrictionFactor","force","isDraggable","dragForce","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","cellX","startCell","len","updateSlides","_containSlides","slide","nextMargin","canCellFit","_getCanCellFit","updateSelectedSlide","groupCells","number","parseInt","percentMatch","percent","reposition","positionSliderAtSelected","setCellAlign","cellAlignShorthands","center","left","right","shorthand","adaptiveHeight","_unshiftCells","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","contentWidth","isContentSmaller","beginBound","endBound","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","isDragging","content","deactivate","onkeydown","isNotFocused","activeElement","handler","keyboardHandlers","keyCode","leftMethod","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","removeEventListener","removeData","setJQuery","jq","Unipointer","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","hasDragStarted","_dragStart","_dragPointerUp","_dragEnd","_staticClick","isPreventingClicks","dragStart","dragMove","dragEnd","onclick","isIgnoringMouseUp","staticClick","draggable","dragThreshold","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","bindDrag","unbindDrag","_pointerDownPreventDefault","pointerDownFocus","pointerDownScroll","getScrollPosition","_pointerDownDefault","focusNodes","isTouchStart","isTouchPointer","pointerType","isFocusNode","isTouchScrolling","dragStartPosition","previousDragX","direction","originBound","dragMoveTime","Date","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","dist","minDist","isWrapAround","wrap","floor","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","svgURI","PrevNextButton","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","path","pathMovements","shape","x0","x1","y1","x2","y2","x3","getArrowMovements","arrowShape","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PageDots","holder","dots","handleClick","onClick","setDots","addDots","removeDots","count","fragment","createDocumentFragment","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","insert","getCellsFragment","isAppend","insertCellElement","insertBefore","endCells","cellChange","append","prepend","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","getCellLazyImages","src","srcset","onload","complete","onerror","_createAsNavFor","activateAsNavFor","deactivateAsNavFor","destroyAsNavFor","asNavForOption","asNavFor","setNavCompanion","companion","navCompanion","onNavCompanionSelect","navCompanionSelect","onNavStaticClick","companionCells","firstIndex","selectIndex","removeNavSelectedElements","navSelectedElements","changeNavSelectedClass","navElem","cellElement","imagesLoaded","ImagesLoaded","onAlways","queryElem","elements","getImages","jqDeferred","Deferred","check","images","addElementImages","addImage","background","addElementBackgroundImages","elementNodeTypes","childImgs","child","LoadingImage","Background","url","Image","reURL","exec","backgroundImage","addBackground","loadingImage","onProgress","progressedCount","hasAnyBroken","isLoaded","notify","debug","log","isComplete","jqMethod","getIsImageComplete","confirm","naturalWidth","proxyImage","unbindEvents","makeJQueryPlugin","_createImagesLoaded","from","heading","ancestor","closest","contains","mediaQueries","initializeFlickity","pressAndPublications","matchMedia","ResizeObserver","entries","observe","activateMoreLink","ready","dataset","categoryArchive","link","textContent","more","moreLink","google","maps","marker","mapArgs","zoom","mapTypeId","MapTypeId","ROADMAP","googleMap","Map","markers","latLng","lat","lng","theMarker","Marker","innerHTML","infoWindow","InfoWindow","addListener","open","initMarker","bounds","LatLngBounds","setCenter","getCenter","centerMap","frontPageMembers","buttons","frontPageMembersDetails","allMembers","membersDesc","mq","siteNavigation","getElementById","container","buttonOpen","buttonClose","menu","mobile","siteHeader","IntersectionObserver","entry","isIntersecting","boundingClientRect","top","desktop","test","navigator","userAgent","location","hash","substring","tagName","teamMemberBlocks","breakpoint","allContent","allContentContainers","collapseAllContent","teamMemberActive","block","triggers","contentContainer","teamMemberTrigger"],"mappings":"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","file":"nycetc.min.js","sourcesContent":["var animateVanillaJs=function(e){var n={};function t(r){if(n[r])return n[r].exports;var u=n[r]={i:r,l:!1,exports:{}};return e[r].call(u.exports,u,u.exports,t),u.l=!0,u.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&n&&\"string\"!=typeof e)for(var u in e)t.d(r,u,function(n){return e[n]}.bind(null,u));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p=\"\",t(t.s=0)}([function(e,n,t){\"use strict\";Object.defineProperty(n,\"__esModule\",{value:!0});var r=t(1),u=t(2);n.default=function(e,n,t,i,o){var a=\"function\"==typeof i?i:r.default.get(i),c=null,f=n-e,s=!1;function l(n,r){if(!s){var u=r-(c=c||r);o(a(u,e,f,t)),u $().plugin('option', {...})\n if ( !PluginClass.prototype.option ) {\n // option setter\n PluginClass.prototype.option = function( opts ) {\n // bail out if not an object\n if ( !$.isPlainObject( opts ) ){\n return;\n }\n this.options = $.extend( true, this.options, opts );\n };\n }\n\n // make jQuery plugin\n $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\n if ( typeof arg0 == 'string' ) {\n // method call $().plugin( 'methodName', { options } )\n // shift arguments by 1\n var args = arraySlice.call( arguments, 1 );\n return methodCall( this, arg0, args );\n }\n // just $().plugin({ options })\n plainCall( this, arg0 );\n return this;\n };\n\n // $().plugin('methodName')\n function methodCall( $elems, methodName, args ) {\n var returnValue;\n var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n\n $elems.each( function( i, elem ) {\n // get instance\n var instance = $.data( elem, namespace );\n if ( !instance ) {\n logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\n pluginMethodStr );\n return;\n }\n\n var method = instance[ methodName ];\n if ( !method || methodName.charAt(0) == '_' ) {\n logError( pluginMethodStr + ' is not a valid method' );\n return;\n }\n\n // apply method, get return value\n var value = method.apply( instance, args );\n // set return value if value is returned, use only first value\n returnValue = returnValue === undefined ? value : returnValue;\n });\n\n return returnValue !== undefined ? returnValue : $elems;\n }\n\n function plainCall( $elems, options ) {\n $elems.each( function( i, elem ) {\n var instance = $.data( elem, namespace );\n if ( instance ) {\n // set options & init\n instance.option( options );\n instance._init();\n } else {\n // initialize new instance\n instance = new PluginClass( elem, options );\n $.data( elem, namespace, instance );\n }\n });\n }\n\n updateJQuery( $ );\n\n}\n\n// ----- updateJQuery ----- //\n\n// set $.bridget for v1 backwards compatibility\nfunction updateJQuery( $ ) {\n if ( !$ || ( $ && $.bridget ) ) {\n return;\n }\n $.bridget = jQueryBridget;\n}\n\nupdateJQuery( jQuery || window.jQuery );\n\n// ----- ----- //\n\nreturn jQueryBridget;\n\n}));\n\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( 'ev-emitter/ev-emitter',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n\n/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'get-size/get-size',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n\n/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'desandro-matches-selector/matches-selector',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n\n/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'fizzy-ui-utils/utils',[\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n\n// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/cell',[\n 'get-size/get-size',\n ], function( getSize ) {\n return factory( window, getSize );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n this.element.style[ this.parent.originSide ] = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n this.element.style.transform = '';\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n\n var adjustedX = this.parent.options.percentPosition ?\n x * sideOffset * ( this.parent.size.innerWidth / this.size.width ) :\n x * sideOffset;\n\n this.element.style.transform = 'translateX(' +\n this.parent.getPositionValue( adjustedX ) + ')';\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n */\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n\n// slide\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/slide',factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n } );\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n } );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\nreturn Slide;\n\n} ) );\n\n// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/animate',[\n 'fizzy-ui-utils/utils',\n ], function( utils ) {\n return factory( window, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x -= this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 ) + '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown &&\n Math.round( this.x * 100 ) == Math.round( previousX * 100 );\n if ( isResting ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i = 0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i = 0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n\n// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/flickity',[\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n if ( instance ) instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i = index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match( /^(\\d+)%$/ );\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i = 0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i = 0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if ( !this.isActive || this.isAnimating || this.isDragging ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n } );\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n} ) );\n\n/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'unipointer/unipointer',[\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ( 'ontouchstart' in window ) {\n // HACK prefer Touch Events as you can preventDefault on touchstart to\n // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n startEvent = 'touchstart';\n } else if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n }\n elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n\n/*!\n * Unidragger v2.4.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'unidragger/unidragger',[\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n for ( var i=0; i < this.handles.length; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isAdd );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if ( window.PointerEvent ) {\n handle.style.touchAction = touchAction;\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n var isCursorNode = cursorNodes[ event.target.nodeName ];\n var isClickType = clickTypes[ event.target.type ];\n var isOkay = !isCursorNode || isClickType;\n if ( !isOkay ) {\n this._pointerReset();\n }\n return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n var focused = document.activeElement;\n // do not blur body for IE10, metafizzy/flickity#117\n var canBlur = focused && focused.blur && focused != document.body;\n if ( canBlur ) {\n focused.blur();\n }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n };\n // start drag if pointer has moved far enough to start drag\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n this._dragStart( event, pointer );\n }\n return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n if ( this.isDragging ) {\n this._dragEnd( event, pointer );\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick( event, pointer );\n }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n // do not drag if not dragging yet\n if ( !this.isDragging ) {\n return;\n }\n\n this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout( function() {\n delete this.isPreventingClicks;\n }.bind( this ) );\n\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\n\n this.staticClick( event, pointer );\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout( function() {\n delete this.isIgnoringMouseUp;\n }.bind( this ), 400 );\n }\n};\n\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\n}));\n\n// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/drag',[\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( dist, minDist ) {\n return dist <= minDist;\n } : function( dist, minDist ) {\n return dist < minDist;\n };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment,\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n\n// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/prev-next-button',[\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg' );\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path' );\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30,\n },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n\n// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/page-dots',[\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n\n// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/player',[\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity',\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n\n// add, remove cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/add-remove-cell',[\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n } );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n\n// lazyload\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/lazyload',[\n './flickity',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n } );\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n\n/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity/js/index',[\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n} )( window, function factory( Flickity ) {\n return Flickity;\n} );\n\n/*!\n * Flickity asNavFor v2.0.2\n * enable asNavFor for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'flickity-as-nav-for/as-nav-for',[\n 'flickity/js/index',\n 'fizzy-ui-utils/utils'\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( Flickity, utils ) {\n\n\n\n// -------------------------- asNavFor prototype -------------------------- //\n\n// Flickity.defaults.asNavFor = null;\n\nFlickity.createMethods.push('_createAsNavFor');\n\nvar proto = Flickity.prototype;\n\nproto._createAsNavFor = function() {\n this.on( 'activate', this.activateAsNavFor );\n this.on( 'deactivate', this.deactivateAsNavFor );\n this.on( 'destroy', this.destroyAsNavFor );\n\n var asNavForOption = this.options.asNavFor;\n if ( !asNavForOption ) {\n return;\n }\n // HACK do async, give time for other flickity to be initalized\n var _this = this;\n setTimeout( function initNavCompanion() {\n _this.setNavCompanion( asNavForOption );\n });\n};\n\nproto.setNavCompanion = function( elem ) {\n elem = utils.getQueryElement( elem );\n var companion = Flickity.data( elem );\n // stop if no companion or companion is self\n if ( !companion || companion == this ) {\n return;\n }\n\n this.navCompanion = companion;\n // companion select\n var _this = this;\n this.onNavCompanionSelect = function() {\n _this.navCompanionSelect();\n };\n companion.on( 'select', this.onNavCompanionSelect );\n // click\n this.on( 'staticClick', this.onNavStaticClick );\n\n this.navCompanionSelect( true );\n};\n\nproto.navCompanionSelect = function( isInstant ) {\n // wait for companion & selectedCells first. #8\n var companionCells = this.navCompanion && this.navCompanion.selectedCells;\n if ( !companionCells ) {\n return;\n }\n // select slide that matches first cell of slide\n var selectedCell = companionCells[0];\n var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\n var lastIndex = firstIndex + companionCells.length - 1;\n var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\n this.navCompanion.cellAlign ) );\n this.selectCell( selectIndex, false, isInstant );\n // set nav selected class\n this.removeNavSelectedElements();\n // stop if companion has more cells than this one\n if ( selectIndex >= this.cells.length ) {\n return;\n }\n\n var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\n this.navSelectedElements = selectedCells.map( function( cell ) {\n return cell.element;\n });\n this.changeNavSelectedClass('add');\n};\n\nfunction lerp( a, b, t ) {\n return ( b - a ) * t + a;\n}\n\nproto.changeNavSelectedClass = function( method ) {\n this.navSelectedElements.forEach( function( navElem ) {\n navElem.classList[ method ]('is-nav-selected');\n });\n};\n\nproto.activateAsNavFor = function() {\n this.navCompanionSelect( true );\n};\n\nproto.removeNavSelectedElements = function() {\n if ( !this.navSelectedElements ) {\n return;\n }\n this.changeNavSelectedClass('remove');\n delete this.navSelectedElements;\n};\n\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\n if ( typeof cellIndex == 'number' ) {\n this.navCompanion.selectCell( cellIndex );\n }\n};\n\nproto.deactivateAsNavFor = function() {\n this.removeNavSelectedElements();\n};\n\nproto.destroyAsNavFor = function() {\n if ( !this.navCompanion ) {\n return;\n }\n this.navCompanion.off( 'select', this.onNavCompanionSelect );\n this.off( 'staticClick', this.onNavStaticClick );\n delete this.navCompanion;\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n\n/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) { 'use strict';\n // universal module definition\n\n /*global define: false, module: false, require: false */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( 'imagesloaded/imagesloaded',[\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.imagesLoaded = factory(\n window,\n window.EvEmitter\n );\n }\n\n})( typeof window !== 'undefined' ? window : this,\n\n// -------------------------- factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\n\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n}\n\n// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n if ( !( this instanceof ImagesLoaded ) ) {\n return new ImagesLoaded( elem, options, onAlways );\n }\n // use elem as selector string\n var queryElem = elem;\n if ( typeof elem == 'string' ) {\n queryElem = document.querySelectorAll( elem );\n }\n // bail if bad element\n if ( !queryElem ) {\n console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n return;\n }\n\n this.elements = makeArray( queryElem );\n this.options = extend( {}, this.options );\n // shift arguments if no options set\n if ( typeof options == 'function' ) {\n onAlways = options;\n } else {\n extend( this.options, options );\n }\n\n if ( onAlways ) {\n this.on( 'always', onAlways );\n }\n\n this.getImages();\n\n if ( $ ) {\n // add jQuery Deferred object\n this.jqDeferred = new $.Deferred();\n }\n\n // HACK check async to allow time to bind listeners\n setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n this.images = [];\n\n // filter & find items if we have an item selector\n this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n // filter siblings\n if ( elem.nodeName == 'IMG' ) {\n this.addImage( elem );\n }\n // get background image on element\n if ( this.options.background === true ) {\n this.addElementBackgroundImages( elem );\n }\n\n // find children\n // no non-element nodes, #143\n var nodeType = elem.nodeType;\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n return;\n }\n var childImgs = elem.querySelectorAll('img');\n // concat childElems to filterFound array\n for ( var i=0; i < childImgs.length; i++ ) {\n var img = childImgs[i];\n this.addImage( img );\n }\n\n // get child background images\n if ( typeof this.options.background == 'string' ) {\n var children = elem.querySelectorAll( this.options.background );\n for ( i=0; i < children.length; i++ ) {\n var child = children[i];\n this.addElementBackgroundImages( child );\n }\n }\n};\n\nvar elementNodeTypes = {\n 1: true,\n 9: true,\n 11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n return;\n }\n // get url inside url(\"...\")\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n var matches = reURL.exec( style.backgroundImage );\n while ( matches !== null ) {\n var url = matches && matches[2];\n if ( url ) {\n this.addBackground( url, elem );\n }\n matches = reURL.exec( style.backgroundImage );\n }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n var loadingImage = new LoadingImage( img );\n this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n var background = new Background( url, elem );\n this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n var _this = this;\n this.progressedCount = 0;\n this.hasAnyBroken = false;\n // complete if no images\n if ( !this.images.length ) {\n this.complete();\n return;\n }\n\n function onProgress( image, elem, message ) {\n // HACK - Chrome triggers event before object properties have changed. #83\n setTimeout( function() {\n _this.progress( image, elem, message );\n });\n }\n\n this.images.forEach( function( loadingImage ) {\n loadingImage.once( 'progress', onProgress );\n loadingImage.check();\n });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n this.progressedCount++;\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n // progress event\n this.emitEvent( 'progress', [ this, image, elem ] );\n if ( this.jqDeferred && this.jqDeferred.notify ) {\n this.jqDeferred.notify( this, image );\n }\n // check if completed\n if ( this.progressedCount == this.images.length ) {\n this.complete();\n }\n\n if ( this.options.debug && console ) {\n console.log( 'progress: ' + message, image, elem );\n }\n};\n\nImagesLoaded.prototype.complete = function() {\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\n this.isComplete = true;\n this.emitEvent( eventName, [ this ] );\n this.emitEvent( 'always', [ this ] );\n if ( this.jqDeferred ) {\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n this.jqDeferred[ jqMethod ]( this );\n }\n};\n\n// -------------------------- -------------------------- //\n\nfunction LoadingImage( img ) {\n this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n // If complete is true and browser supports natural sizes,\n // try to check for image status manually.\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n // report based on naturalWidth\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n return;\n }\n\n // If none of the checks above matched, simulate loading on detached element.\n this.proxyImage = new Image();\n this.proxyImage.addEventListener( 'load', this );\n this.proxyImage.addEventListener( 'error', this );\n // bind to image as well for Firefox. #191\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n // check for non-zero, non-undefined naturalWidth\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nLoadingImage.prototype.onload = function() {\n this.confirm( true, 'onload' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n this.confirm( false, 'onerror' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n this.proxyImage.removeEventListener( 'load', this );\n this.proxyImage.removeEventListener( 'error', this );\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n this.url = url;\n this.element = element;\n this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.img.src = this.url;\n // check if image is already complete\n var isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n this.unbindEvents();\n }\n};\n\nBackground.prototype.unbindEvents = function() {\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n jQuery = jQuery || window.jQuery;\n if ( !jQuery ) {\n return;\n }\n // set local variable\n $ = jQuery;\n // $().imagesLoaded()\n $.fn.imagesLoaded = function( options, callback ) {\n var instance = new ImagesLoaded( this, options, callback );\n return instance.jqDeferred.promise( $(this) );\n };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// -------------------------- -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n\n/*!\n * Flickity imagesLoaded v2.0.0\n * enables imagesLoaded option for Flickity\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'flickity/js/index',\n 'imagesloaded/imagesloaded'\n ], function( Flickity, imagesLoaded ) {\n return factory( window, Flickity, imagesLoaded );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('flickity'),\n require('imagesloaded')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.imagesLoaded\n );\n }\n\n}( window, function factory( window, Flickity, imagesLoaded ) {\n'use strict';\n\nFlickity.createMethods.push('_createImagesLoaded');\n\nvar proto = Flickity.prototype;\n\nproto._createImagesLoaded = function() {\n this.on( 'activate', this.imagesLoaded );\n};\n\nproto.imagesLoaded = function() {\n if ( !this.options.imagesLoaded ) {\n return;\n }\n var _this = this;\n function onImagesLoadedProgress( instance, image ) {\n var cell = _this.getParentCell( image.img );\n _this.cellSizeChange( cell && cell.element );\n if ( !_this.options.freeScroll ) {\n _this.positionSliderAtSelected();\n }\n }\n imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\n};\n\nreturn Flickity;\n\n}));\n\n","/**\n * Collapsible\n */\n\n'use strict';\n\n;(function() {\n\n\tconst elements = Array.from( document.querySelectorAll( '.wp-block-group.collapsible' ) );\n\n\telements.forEach( element => {\n\t\tconst heading = element.querySelector( 'h2' );\n\n\t\theading.setAttribute( 'role', 'button' );\n\t\theading.setAttribute( 'aria-expanded', 'false' );\n\n\t\theading.addEventListener( 'click', () => {\n\t\t\tconst ancestor = heading.closest( '.collapsible' );\n\n\t\t\tif ( ! ancestor.classList.contains( 'is-open' ) ) {\n\t\t\t\tancestor.classList.add( 'is-open' );\n\t\t\t\theading.setAttribute( 'aria-expanded', 'true' );\n\t\t\t} else {\n\t\t\t\tancestor.classList.remove( 'is-open' );\n\t\t\t\theading.setAttribute( 'aria-expanded', 'false' );\n\t\t\t}\n\t\t});\n\t});\n})();\n","/**\n * Flickity responsive CSS-based carousels.\n *\n * @requires ../node_modules/flickity/dist/flickity.pkgd.js\n */\n\n'use strict';\n\n;( function() {\n\n\tconst mediaQueries = {\n\t\tlg: '( min-width: 54em )',\n\t\txl: '( min-width: 75em )',\n\t};\n\n\t// Front page member spotlight carousel.\n\t{\n\t\tconst frontPageMembers = Array.from( document.querySelectorAll( '[data-front-page-members]' ) );\n\n\t\tconst options = {\n\t\t\tautoPlay: 7000,\n\t\t\tprevNextButtons: false,\n\t\t\twatchCSS: true,\n\t\t\twrapAround: true,\n\t\t\ton: {},\n\t\t};\n\n\t\tinitializeFlickity( frontPageMembers, options, false );\n\t}\n\n\t// Press and publications.\n\t{\n\t\tconst pressAndPublications = Array.from( document.querySelectorAll( '[data-press-carousel]' ) );\n\n\t\tconst options = {\n\t\t\tgroupCells: 1,\n\t\t\tprevNextButtons: false,\n\t\t\twrapAround: false,\n\t\t\ton: {},\n\t\t};\n\n\t\tif ( window.matchMedia( mediaQueries.lg ).matches ) {\n\t\t\toptions.groupCells = 2;\n\t\t}\n\n\t\tif ( window.matchMedia( mediaQueries.xl ).matches ) {\n\t\t\toptions.groupCells = 3;\n\t\t}\n\n\t\tinitializeFlickity( pressAndPublications, options, true );\n\n\t\t// Set up a Resize Observer to toggle the aria-expanded attribute for\n\t\t// the initial tab, depending on browser size and state.\n\n\t\tconst resizeObserver = new ResizeObserver( ( entries ) => {\n\t\t\tentries.forEach( () => {\n\t\t\t\tif ( window.matchMedia( mediaQueries.xl ).matches ) {\n\t\t\t\t\tif ( 3 !== options.groupCells ) {\n\t\t\t\t\t\toptions.groupCells = 3;\n\t\t\t\t\t\tinitializeFlickity( pressAndPublications, options );\n\t\t\t\t\t}\n\t\t\t\t} else if ( window.matchMedia( mediaQueries.lg ).matches ) {\n\t\t\t\t\tif ( 2 !== options.groupCells ) {\n\t\t\t\t\t\toptions.groupCells = 2;\n\t\t\t\t\t\tinitializeFlickity( pressAndPublications, options );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif ( 1 !== options.groupCells ) {\n\t\t\t\t\t\toptions.groupCells = 1;\n\t\t\t\t\t\tinitializeFlickity( pressAndPublications, options );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tresizeObserver.observe( document.querySelector( 'html' ) );\n\t}\n\n\tfunction initializeFlickity( elements, options, activateMoreLink ) {\n\t\tif ( 0 < elements.length ) {\n\n\t\t\telements.forEach( ( element ) => {\n\n\t\t\t\tif ( activateMoreLink ) {\n\t\t\t\t\toptions.on.ready = function() {\n\t\t\t\t\t\tmoreLink( element );\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tnew Flickity( element, options );\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction moreLink( element ) {\n\n\t\tconst url = element.dataset.categoryArchive;\n\n\t\tif ( undefined === url ) return;\n\n\t\tconst link = document.createElement( 'a' );\n\t\tlink.setAttribute( 'href', url );\n\t\tlink.textContent = 'More';\n\n\t\tconst more = document.createElement( 'li' );\n\t\tmore.classList.add( 'dot', 'archive' );\n\t\tmore.appendChild( link );\n\n\t\tconst dots = element.querySelector( '.flickity-page-dots' );\n\t\tdots.appendChild( more );\n\t}\n})();\n","/**\n * Google Maps.\n */\n\n'use strict';\n\n;( function( google ) {\n\n\tconst maps = Array.from( document.querySelectorAll( '.acf-map' ) );\n\tif ( 0 === maps ) return;\n\n\tconst initMarker = ( marker, googleMap ) => {\n\n\t\tconst latLng = {\n\t\t\tlat: parseFloat( marker.dataset['lat'] ),\n\t\t\tlng: parseFloat( marker.dataset['lng'] ),\n\t\t};\n\n\t\tconst theMarker = new google.maps.Marker({\n\t\t\tposition: latLng,\n\t\t\tmap : googleMap,\n\t\t});\n\n\t\tgoogleMap.markers.push( theMarker );\n\n\t\tif ( '' !== marker.innerHTML ) {\n\t\t\tconst infoWindow = new google.maps.InfoWindow({\n\t\t\t\tcontent: marker.innerHTML,\n\t\t\t});\n\n\t\t\tgoogle.maps.event.addListener( theMarker, 'click', () => infoWindow.open( googleMap, theMarker ) );\n\t\t}\n\t};\n\n\tconst centerMap = ( googleMap ) => {\n\n\t\tconst bounds = new google.maps.LatLngBounds();\n\n\t\tgoogleMap.markers.forEach( marker => {\n\t\t\tbounds.extend({\n\t\t\t\tlat: marker.position.lat(),\n\t\t\t\tlng: marker.position.lng(),\n\t\t\t});\n\t\t});\n\n\t\tgoogleMap.setCenter( bounds.getCenter() );\n\t};\n\n\tconst initMap = () => {\n\n\t\tmaps.forEach( map => {\n\n\t\t\tconst marker = map.querySelector( '.marker' );\n\n\t\t\tconst mapArgs = {\n\t\t\t\tzoom : map.dataset['zoom'] || 16,\n\t\t\t\tmapTypeId: google.maps.MapTypeId.ROADMAP,\n\t\t\t};\n\n\t\t\tconst googleMap = new google.maps.Map( map, mapArgs );\n\n\t\t\tgoogleMap.markers = [];\n\t\t\tinitMarker( marker, googleMap );\n\n\t\t\tcenterMap( googleMap );\n\t\t});\n\t};\n\n\tinitMap();\n\n})( google );\n","/**\n * Front page member spotlight, large viewport functionality.\n */\n\n'use strict';\n\n;( function() {\n\n\tconst frontPageMembers = document.querySelector( '#front-page-members' );\n\tif ( null === frontPageMembers ) return;\n\n\tconst buttons = Array.from( frontPageMembers.querySelectorAll( 'button' ) );\n\tconst frontPageMembersDetails = document.querySelector( '#front-page-members-details' );\n\tconst allMembers = Array.from( frontPageMembers.querySelectorAll( '.member' ) );\n\tconst membersDesc = document.querySelector( '#members__desc' );\n\n\tbuttons.forEach( ( button ) => {\n\n\t\tbutton.addEventListener( 'click', function( event ) {\n\t\t\tfrontPageMembersDetails.classList.add( 'fading' );\n\t\t\tif ( window.matchMedia( '( min-width: 48em )' ).matches ) {\n\t\t\t\tallMembers.forEach( ( element ) => {\n\t\t\t\t\telement.classList.remove( 'selected' );\n\t\t\t\t});\n\t\t\t\tconst parent = this.closest( '.member' );\n\t\t\t\tparent.classList.add( 'selected' );\n\t\t\t}\n\t\t});\n\t});\n\n\tfunction getContent() {\n\t\tconst selected = frontPageMembers.querySelector( '.selected' );\n\t\treturn selected.querySelector( '.card__details' ).innerHTML;\n\t}\n\n\tfrontPageMembersDetails.addEventListener( 'transitionend', function() {\n\t\tif ( this.classList.contains( 'fading' ) ) {\n\t\t\tthis.innerHTML = getContent();\n\t\t\tthis.classList.remove( 'fading' );\n\n\t\t\tif ( ! membersDesc.classList.contains( 'active' ) ) {\n\t\t\t\tmembersDesc.classList.add( 'active' );\n\t\t\t}\n\t\t}\n\t});\n})();\n","/**\n * File navigation.js.\n *\n * Handles toggling the navigation menu for small screens and enables TAB key\n * navigation support for dropdown menus.\n *\n * Also: on larger screens, restore the \"hamburger\" paradigm once the user\n * scrolls past the hero.\n */\n\n'use strict';\n\n;(function() {\n\n\tconst mq = '( min-width: 54em )';\n\tconst siteNavigation = document.getElementById( 'site-navigation' );\n\tif ( null === siteNavigation ) return;\n\n\tconst mobile = function() {\n\n\t\tconst container = document.getElementById( 'primary-menu-container' );\n\t\tconst buttonOpen = document.querySelector( '#menu-toggle-open' );\n\t\tconst buttonClose = document.querySelector( '#menu-toggle-close' );\n\t\tconst menu = document.getElementById( 'primary-menu' );\n\n\t\tmenu.setAttribute( 'aria-expanded', 'false' );\n\n\t\tbuttonOpen.addEventListener( 'click', function() {\n\t\t\tcontainer.classList.add( 'toggled' );\n\t\t\tmenu.setAttribute( 'aria-expanded', 'true' );\n\t\t});\n\n\t\tbuttonClose.addEventListener( 'click', function() {\n\t\t\tcontainer.classList.add( 'closing' );\n\t\t\tmenu.setAttribute( 'aria-expanded', 'false' );\n\t\t});\n\n\t\tcontainer.addEventListener( 'transitionend', function() {\n\t\t\tif ( container.classList.contains( 'closing' ) ) {\n\t\t\t\tcontainer.classList.remove( 'toggled', 'closing' );\n\t\t\t}\n\t\t});\n\t};\n\n\tconst desktop = function() {\n\t\tconst siteHeader = document.querySelector( '#masthead .site-header' );\n\t\tconst observer = new IntersectionObserver( callback );\n\n\t\tobserver.observe( siteHeader );\n\n\t\tfunction callback( entries ) {\n\t\t\tentries.forEach( ( entry ) => {\n\t\t\t\tif ( ( ! entry.isIntersecting ) && ( 0 > entry.boundingClientRect.top ) ) {\n\t\t\t\t\tif ( window.matchMedia( mq ).matches ) {\n\t\t\t\t\t\tsiteNavigation.classList.add( 'desktop-hamburger' );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif ( window.matchMedia( mq ).matches ) {\n\t\t\t\t\t\tsiteNavigation.classList.remove( 'desktop-hamburger' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t};\n\n\tmobile();\n\tdesktop();\n})();\n","/**\n * File skip-link-focus-fix.js.\n *\n * Helps with accessibility for keyboard only users.\n *\n * Learn more: https://git.io/vWdr2\n */\n\n'use strict';\n\n( function() {\n\tvar isIe = /(trident|msie)/i.test( navigator.userAgent );\n\n\tif ( isIe && document.getElementById && window.addEventListener ) {\n\t\twindow.addEventListener( 'hashchange', function() {\n\t\t\tvar id = location.hash.substring( 1 ),\n\t\t\t\telement;\n\n\t\t\tif ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telement = document.getElementById( id );\n\n\t\t\tif ( element ) {\n\t\t\t\tif ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) {\n\t\t\t\t\telement.tabIndex = -1;\n\t\t\t\t}\n\n\t\t\t\telement.focus();\n\t\t\t}\n\t\t}, false );\n\t}\n} )();\n","/**\n * Team members\n *\n * @requires ../node_modules/animate-vanilla-js/dist/animate-vanilla-js-browser.js\n */\n\n'use strict';\n\n;( function() {\n\n\tconst teamMemberBlocks = Array.from( document.querySelectorAll( '[data-team-member-block]' ) );\n\tif ( 1 > teamMemberBlocks.length ) return;\n\n\tconst breakpoint = `( min-width: ${864 / 16}em )`;\n\tconst allContent = Array.from( document.querySelectorAll( '.team-member__content' ) );\n\tconst allContentContainers = Array.from( document.querySelectorAll( '[data-team-member-content-container]' ) );\n\n\tteamMemberBlocks.forEach( ( block ) => {\n\n\t\t// const blockId = block.dataset.blockId;\n\t\tconst triggers = Array.from( block.querySelectorAll( 'button' ) );\n\t\tconst contentContainer = block.querySelector( '[data-team-member-content-container]' );\n\n\t\ttriggers.forEach( ( trigger ) => {\n\n\t\t\ttrigger.addEventListener( 'click', function( event ) {\n\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tconst target = block.querySelector( `[data-team-member-target=\"${this.dataset.teamMemberTrigger}\"]` );\n\n\t\t\t\tif ( 0 < target.querySelectorAll( 'p' ).length ) {\n\n\t\t\t\t\t// \"Large\" breakpoint.\n\n\t\t\t\t\tif ( window.matchMedia( breakpoint ).matches ) {\n\t\t\t\t\t\tif ( contentContainer.dataset.teamMemberActive === this.dataset.teamMemberTrigger ) {\n\t\t\t\t\t\t\tcontentContainer.dataset.teamMemberActive = '';\n\t\t\t\t\t\t\tcontentContainer.innerHTML = '';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcollapseAllContent();\n\t\t\t\t\t\t\tcontentContainer.dataset.teamMemberActive = this.dataset.teamMemberTrigger;\n\t\t\t\t\t\t\tcontentContainer.innerHTML = target.innerHTML;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// \"Small\" breakpoint.\n\n\t\t\t\t\tif ( target.classList.contains( 'active' ) ) {\n\t\t\t\t\t\ttarget.classList.remove( 'active' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcollapseAllContent();\n\t\t\t\t\t\ttarget.classList.add( 'active' );\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\tcollapseAllContent();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\n\tfunction collapseAllContent() {\n\n\t\tif ( window.matchMedia( breakpoint ).matches ) {\n\t\t\tallContentContainers.forEach( ( container ) => {\n\t\t\t\tcontainer.innerHTML = '';\n\t\t\t\tcontainer.dataset.teamMemberActive = '';\n\t\t\t});\n\n\t\t\treturn;\n\t\t}\n\n\t\tallContent.forEach( ( content ) => {\n\t\t\tcontent.classList.remove( 'active' );\n\t\t});\n\t}\n})();\n"]}