{"version":3,"sources":["webpack:///./node_modules/fizzy-ui-utils/utils.js","webpack:///./node_modules/flickity/js/flickity.js","webpack:///./node_modules/@hodinkee/bezel-ui/es/utils/index.js","webpack:///./node_modules/ev-emitter/ev-emitter.js","webpack:///./node_modules/unipointer/unipointer.js","webpack:///./node_modules/get-size/get-size.js","webpack:///./node_modules/desandro-matches-selector/matches-selector.js","webpack:///./node_modules/flickity/js/cell.js","webpack:///./node_modules/flickity/js/slide.js","webpack:///./node_modules/flickity/js/animate.js","webpack:///./node_modules/flickity/js/drag.js","webpack:///./node_modules/unidragger/unidragger.js","webpack:///./node_modules/flickity/js/prev-next-button.js","webpack:///./node_modules/flickity/js/page-dots.js","webpack:///./node_modules/flickity/js/player.js","webpack:///./node_modules/flickity/js/add-remove-cell.js","webpack:///./node_modules/flickity/js/lazyload.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/lazysizes/plugins/attrchange/ls.attrchange.js","webpack:///./node_modules/@hodinkee/bezel-ui/es/Components/atoms/RatioContainer/RatioContainer.js","webpack:///./node_modules/@hodinkee/bezel-ui/es/Components/atoms/LazyImage/LazyImage.js","webpack:///./node_modules/flickity/js/index.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","window","factory","matchesSelector","utils","a","b","prop","num","div","arraySlice","Array","slice","makeArray","isArray","undefined","length","call","removeFrom","ary","index","indexOf","splice","getParent","elem","selector","parentNode","document","body","getQueryElement","querySelector","handleEvent","event","method","type","this","filterFindElements","elems","ffElems","forEach","HTMLElement","push","childElems","querySelectorAll","i","debounceMethod","_class","methodName","threshold","timeoutName","timeout","clearTimeout","args","arguments","_this","setTimeout","apply","docReady","callback","readyState","addEventListener","toDashed","str","replace","match","$1","$2","toLowerCase","console","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","jQuery","options","attr","getAttribute","JSON","parse","error","className","instance","data","EvEmitter","getSize","Cell","Slide","animatePrototype","getComputedStyle","moveElements","toElem","appendChild","shift","GUID","instances","Flickity","element","queryElement","flickityGUID","option","$element","extend","defaults","_create","accessibility","cellAlign","freeScrollFriction","friction","namespaceJQueryEvents","percentPosition","resize","selectedAttraction","setGallerySize","createMethods","proto","id","guid","eventName","selectedIndex","restingFrames","x","velocity","originSide","rightToLeft","viewport","createElement","_createSlider","watchCSS","on","listener","activate","opts","isActive","classList","add","_filterFindCellElements","children","slider","reloadCells","tabIndex","emitEvent","selectInitialIndex","isInitActivated","dispatchEvent","style","cellSelector","cells","_makeCells","positionCells","_getWrapShiftCells","map","cellElem","getLastCell","getLastSlide","slides","_sizeCells","_positionCells","maxCellHeight","cellX","startCell","size","outerWidth","len","cell","setPosition","Math","max","outerHeight","slideableWidth","updateSlides","_containSlides","slidesWidth","target","slide","nextMargin","canCellFit","_getCanCellFit","slideWidth","firstMargin","updateTarget","addCell","updateSelectedSlide","groupCells","number","parseInt","percentMatch","percent","innerWidth","_init","reposition","positionSliderAtSelected","setCellAlign","cursorPosition","cellAlignShorthands","center","left","right","shorthand","height","adaptiveHeight","selectedSlide","wrapAround","_unshiftCells","beforeShiftCells","afterShiftCells","gapX","cellIndex","_getGapCells","increment","contain","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","endBound","min","emitArgs","$event","jQEvent","Event","trigger","select","isWrap","isInstant","_wrapSelect","modulo","prevIndex","startAnimation","wrapIndex","delta","abs","backWrapDelta","forewardWrapDelta","isDragSelect","previous","next","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","selectedElement","unselect","initialIndex","queryCell","selectCell","value","getCellSlideIndex","getCell","getCells","getParentCell","getAdjacentCellElements","adjCount","cellElems","slideIndex","uiChange","childUIPointerDown","preventDefault","focus","onresize","content","deactivate","onkeydown","isNotFocused","activeElement","handler","keyboardHandlers","keyCode","37","leftMethod","39","rightMethod","prevScrollY","pageYOffset","preventScroll","scrollTo","pageXOffset","remove","destroy","removeChild","removeAttribute","removeEventListener","allOff","removeData","bridget","setJQuery","jq","makeClassNames","rootClass","flags","flagKeys","Object","keys","buiClass","key","join","FontFaces","freeze","PortraitLight","PortraitMedium","PortraitTextRegular","PortraitRegular","PortraitBold","PortraitItalic","PortraitInlineSans","BrownProBold","BrownProRegular","BrownStdLight","ProximaNova","ProximaNovaSemibold","ProximaNovaLight","Sizes","xs","sm","md","lg","xl","Themes","white","dark","aspectRatioToPercent","ratio","splitRatio","split","toFixed","Breakpoints","mobile","tablet","tabletWide","desktopNarrow","desktop","desktopWide","textStyles","includeMargin","fontSize","lineHeight","marginBottom","events","_events","listeners","once","onceEvents","_onceEvents","off","onceListeners","noop","Unipointer","create","bindStartEvent","_bindStartEvent","unbindStartEvent","isAdd","bindMethod","startEvent","PointerEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","button","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointer","isPointerDown","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","getStyleSize","parseFloat","isNaN","logError","message","measurements","measurementsLength","getZeroSize","width","innerHeight","getStyle","isBoxSizeOuter","isSetup","setup","padding","borderStyle","borderWidth","boxSizing","documentElement","round","nodeType","display","offsetWidth","offsetHeight","isBorderBox","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","matchesMethod","ElemProto","Element","matches","prefixes","parent","position","setAttribute","side","renderPosition","setDefaultTarget","marginProperty","getPositionValue","wrapShift","isOriginLeft","lastCell","lastMargin","isAnimating","animate","applyDragForce","applySelectedAttraction","previousX","integratePhysics","positionSlider","settle","requestAnimationFrame","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","translateX","transform","firstSlide","positionX","progress","isFreeScrolling","beforeGap","_shiftCells","afterGap","gap","cellShift","getFrictionFactor","force","isDraggable","dragForce","dragX","applyForce","Unidragger","draggable","dragThreshold","_touchActionValue","isTouch","isTouchmoveScrollCanceled","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","bindHandles","unbindHandles","bindDrag","unbindDrag","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","pointerDownBlur","pointerDownScroll","getScrollPosition","_pointerDownDefault","pointerDownPointer","focusNodes","INPUT","TEXTAREA","SELECT","nodeName","isTouchStart","isTouchPointer","pointerType","isFocusNode","hasDragStarted","moveVector","isTouchScrolling","_dragPointerUp","dragStart","dragStartPosition","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","dragMoveTime","Date","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","dragEndBoostSelect","distance","getSlideDistance","positiveResting","_getClosestResting","negativeResting","minDistance","Infinity","condition","dist","minDist","isWrapAround","wrap","floor","staticClick","clickedCell","onscroll","scroll","scrollMoveX","scrollMoveY","_bindHandles","touchAction","handle","cursorNodes","OPTION","clickTypes","radio","checkbox","submit","image","file","isCursorNode","isClickType","isOkay","focused","blur","isDragging","_dragStart","_dragEnd","_staticClick","isPreventingClicks","bind","onclick","isIgnoringMouseUp","svgURI","PrevNextButton","getArrowMovements","shape","x0","x1","y1","x2","y2","x3","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","update","createElementNS","path","pathMovements","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","getCellsFragment","insert","isAppend","insertCellElement","insertBefore","endCells","cellChange","append","prepend","minCellIndex","cellSizeChange","changedCellIndex","isPositioningSlider","prevSelectedElem","getCellLazyImages","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","LazyLoader","img","flickity","load","_createLazyload","lazyLoad","lazyImages","lazyCellImages","src","srcset","onload","complete","onerror","hasOwn","hasOwnProperty","classNames","classes","arg","argType","inner","module","exports","default","globalInstall","lazySizes","rAF","addObserver","connect","disconnect","observer","connected","runs","modifications","callMutations","lsCfg","cfg","attributes","regClassTest","loadedClass","docElem","setClass","rC","unloadedClass","aC","lazyClass","loader","unveil","onMutation","mutations","mutation","attributeName","localName","test","loadingClass","RegExp","MutationObserver","observe","subtree","attributeFilter","e","attrName","newValue","_extends","assign","source","isValidNumber","calculateGcd","_ref","rest","_objectWithoutProperties","isValid","gcd","undeterminable","lazySizesAttrConfig","srcSet","sizes","alt","_ref$imgixParams","imgixParams","fit","q","disableLibraryParam","htmlAttributes","attributeConfig"],"mappings":"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","file":"js/4-75db6225f24db626c761.chunk.js","sourcesContent":["function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\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(function (window, factory) {\n // universal module definition\n\n /*jshint strict: false */\n\n /*globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['desandro-matches-selector/matches-selector'], function (matchesSelector) {\n return factory(window, matchesSelector);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('desandro-matches-selector'));\n } else {\n // browser global\n window.fizzyUIUtils = factory(window, window.matchesSelector);\n }\n})(window, function factory(window, matchesSelector) {\n 'use strict';\n\n var utils = {}; // ----- extend ----- //\n // extends objects\n\n utils.extend = function (a, b) {\n for (var prop in b) {\n a[prop] = b[prop];\n }\n\n return a;\n }; // ----- modulo ----- //\n\n\n utils.modulo = function (num, div) {\n return (num % div + div) % div;\n }; // ----- makeArray ----- //\n\n\n var arraySlice = Array.prototype.slice; // turn element or nodeList into an array\n\n utils.makeArray = function (obj) {\n if (Array.isArray(obj)) {\n // use object if already an array\n return obj;\n } // return empty array if undefined or null. #6\n\n\n if (obj === null || obj === undefined) {\n return [];\n }\n\n var isArrayLike = _typeof(obj) == 'object' && typeof obj.length == 'number';\n\n if (isArrayLike) {\n // convert nodeList to array\n return arraySlice.call(obj);\n } // array of single index\n\n\n return [obj];\n }; // ----- removeFrom ----- //\n\n\n utils.removeFrom = function (ary, obj) {\n var index = ary.indexOf(obj);\n\n if (index != -1) {\n ary.splice(index, 1);\n }\n }; // ----- getParent ----- //\n\n\n utils.getParent = function (elem, selector) {\n while (elem.parentNode && elem != document.body) {\n elem = elem.parentNode;\n\n if (matchesSelector(elem, selector)) {\n return elem;\n }\n }\n }; // ----- getQueryElement ----- //\n // use element as selector string\n\n\n utils.getQueryElement = function (elem) {\n if (typeof elem == 'string') {\n return document.querySelector(elem);\n }\n\n return elem;\n }; // ----- handleEvent ----- //\n // enable .ontype to trigger from .addEventListener( elem, 'type' )\n\n\n utils.handleEvent = function (event) {\n var method = 'on' + event.type;\n\n if (this[method]) {\n this[method](event);\n }\n }; // ----- filterFindElements ----- //\n\n\n utils.filterFindElements = function (elems, selector) {\n // make array of elems\n elems = utils.makeArray(elems);\n var ffElems = [];\n elems.forEach(function (elem) {\n // check that elem is an actual element\n if (!(elem instanceof HTMLElement)) {\n return;\n } // add elem if no selector\n\n\n if (!selector) {\n ffElems.push(elem);\n return;\n } // filter & find items if we have a selector\n // filter\n\n\n if (matchesSelector(elem, selector)) {\n ffElems.push(elem);\n } // find children\n\n\n var childElems = elem.querySelectorAll(selector); // concat childElems to filterFound array\n\n for (var i = 0; i < childElems.length; i++) {\n ffElems.push(childElems[i]);\n }\n });\n return ffElems;\n }; // ----- debounceMethod ----- //\n\n\n utils.debounceMethod = function (_class, methodName, threshold) {\n threshold = threshold || 100; // original method\n\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 var args = arguments;\n\n var _this = this;\n\n this[timeoutName] = setTimeout(function () {\n method.apply(_this, args);\n delete _this[timeoutName];\n }, threshold);\n };\n }; // ----- docReady ----- //\n\n\n utils.docReady = function (callback) {\n var readyState = document.readyState;\n\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 }; // ----- htmlInit ----- //\n // http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\n\n\n utils.toDashed = function (str) {\n return str.replace(/(.)([A-Z])/g, function (match, $1, $2) {\n return $1 + '-' + $2;\n }).toLowerCase();\n };\n\n var 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 */\n\n utils.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).concat(utils.makeArray(jsDashElems));\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n elems.forEach(function (elem) {\n var attr = elem.getAttribute(dataAttr) || elem.getAttribute(dataOptionsAttr);\n var options;\n\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 + ': ' + error);\n }\n\n return;\n } // initialize\n\n\n var instance = new WidgetClass(elem, options); // make available via $().data('namespace')\n\n if (jQuery) {\n jQuery.data(elem, namespace, instance);\n }\n });\n });\n }; // ----- ----- //\n\n\n return utils;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// Flickity main\n\n/* eslint-disable max-params */\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['ev-emitter/ev-emitter', 'get-size/get-size', 'fizzy-ui-utils/utils', './cell', './slide', './animate'], function (EvEmitter, getSize, utils, Cell, Slide, animatePrototype) {\n return factory(window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'), require('get-size'), require('fizzy-ui-utils'), require('./cell'), require('./slide'), require('./animate'));\n } else {\n // browser global\n var _Flickity = window.Flickity;\n window.Flickity = factory(window, window.EvEmitter, window.getSize, window.fizzyUIUtils, _Flickity.Cell, _Flickity.Slide, _Flickity.animatePrototype);\n }\n})(window, function factory(window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype) {\n /* eslint-enable max-params */\n 'use strict'; // vars\n\n var jQuery = window.jQuery;\n var getComputedStyle = window.getComputedStyle;\n var console = window.console;\n\n function moveElements(elems, toElem) {\n elems = utils.makeArray(elems);\n\n while (elems.length) {\n toElem.appendChild(elems.shift());\n }\n } // -------------------------- Flickity -------------------------- //\n // globally unique identifiers\n\n\n var GUID = 0; // internal store of all Flickity intances\n\n var instances = {};\n\n function Flickity(element, options) {\n var queryElement = utils.getQueryElement(element);\n\n if (!queryElement) {\n if (console) {\n console.error('Bad element for Flickity: ' + (queryElement || element));\n }\n\n return;\n }\n\n this.element = queryElement; // do not initialize twice on same element\n\n if (this.element.flickityGUID) {\n var instance = instances[this.element.flickityGUID];\n if (instance) instance.option(options);\n return instance;\n } // add jQuery\n\n\n if (jQuery) {\n this.$element = jQuery(this.element);\n } // options\n\n\n this.options = utils.extend({}, this.constructor.defaults);\n this.option(options); // kick things off\n\n this._create();\n }\n\n Flickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075,\n // friction when free-scrolling\n friction: 0.28,\n // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true // watchCSS: false,\n // wrapAround: false\n\n }; // hash of methods triggered on _create()\n\n Flickity.createMethods = [];\n var proto = Flickity.prototype; // inherit EventEmitter\n\n utils.extend(proto, EvEmitter.prototype);\n\n proto._create = function () {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n\n instances[id] = this; // associate via id\n // initial properties\n\n this.selectedIndex = 0; // how many frames slider has been in same position\n\n this.restingFrames = 0; // initial physics properties\n\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left'; // create viewport & slider\n\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n\n this._createSlider();\n\n if (this.options.resize || this.options.watchCSS) {\n window.addEventListener('resize', this);\n } // add listeners from on option\n\n\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 * set options\n * @param {Object} opts - options to extend\n */\n\n\n proto.option = function (opts) {\n utils.extend(this.options, opts);\n };\n\n proto.activate = function () {\n if (this.isActive) {\n return;\n }\n\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n\n if (this.options.rightToLeft) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize(); // move initial cell elements so they can be loaded as cells\n\n var cellElems = this._filterFindCellElements(this.element.children);\n\n moveElements(cellElems, this.slider);\n this.viewport.appendChild(this.slider);\n this.element.appendChild(this.viewport); // get cells from children\n\n this.reloadCells();\n\n if (this.options.accessibility) {\n // allow element to focusable\n this.element.tabIndex = 0; // listen for key presses\n\n this.element.addEventListener('keydown', this);\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex(); // flag for initial activation, for using initialIndex\n\n this.isInitActivated = true; // ready event. #493\n\n this.dispatchEvent('ready');\n }; // slider positions the cells\n\n\n proto._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\n proto._filterFindCellElements = function (elems) {\n return utils.filterFindElements(elems, this.options.cellSelector);\n }; // goes through all children\n\n\n proto.reloadCells = function () {\n // collection of item elements\n this.cells = this._makeCells(this.slider.children);\n this.positionCells();\n\n this._getWrapShiftCells();\n\n this.setGallerySize();\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 */\n\n\n proto._makeCells = function (elems) {\n var cellElems = this._filterFindCellElements(elems); // create new Flickity for collection\n\n\n var cells = cellElems.map(function (cellElem) {\n return new Cell(cellElem, this);\n }, this);\n return cells;\n };\n\n proto.getLastCell = function () {\n return this.cells[this.cells.length - 1];\n };\n\n proto.getLastSlide = function () {\n return this.slides[this.slides.length - 1];\n }; // positions all cells\n\n\n proto.positionCells = function () {\n // size all cells\n this._sizeCells(this.cells); // position all cells\n\n\n this._positionCells(0);\n };\n /**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\n\n\n proto._positionCells = function (index) {\n index = index || 0; // also measure maxCellHeight\n // start 0 if positioning all cells\n\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0; // get cellX\n\n if (index > 0) {\n var startCell = this.cells[index - 1];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n\n var len = this.cells.length;\n\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 } // keep track of cellX for wrap-around\n\n\n this.slideableWidth = cellX; // slides\n\n this.updateSlides(); // contain slides target\n\n this._containSlides(); // update slidesWidth\n\n\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n };\n /**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\n\n\n proto._sizeCells = function (cells) {\n cells.forEach(function (cell) {\n cell.getSize();\n });\n }; // -------------------------- -------------------------- //\n\n\n proto.updateSlides = function () {\n this.slides = [];\n\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 + (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 slide = new Slide(this);\n this.slides.push(slide);\n slide.addCell(cell);\n }\n }, this); // last slide\n\n slide.updateTarget(); // update .selectedSlide\n\n this.updateSelectedSlide();\n };\n\n proto._getCanCellFit = function () {\n var groupCells = this.options.groupCells;\n\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 } // default, group by width of slide\n // parse '75%\n\n\n var percentMatch = typeof groupCells == 'string' && 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 }; // alias _init for jQuery plugin .flickity()\n\n\n proto._init = proto.reposition = function () {\n this.positionCells();\n this.positionSliderAtSelected();\n };\n\n proto.getSize = function () {\n this.size = getSize(this.element);\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n };\n\n var 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\n proto.setCellAlign = function () {\n var shorthand = cellAlignShorthands[this.options.cellAlign];\n this.cellAlign = shorthand ? shorthand[this.originSide] : this.options.cellAlign;\n };\n\n proto.setGallerySize = function () {\n if (this.options.setGallerySize) {\n var height = this.options.adaptiveHeight && this.selectedSlide ? this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n };\n\n proto._getWrapShiftCells = function () {\n // only for wrap-around\n if (!this.options.wrapAround) {\n return;\n } // unshift previous cells\n\n\n this._unshiftCells(this.beforeShiftCells);\n\n this._unshiftCells(this.afterShiftCells); // get before cells\n // initial gap\n\n\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells(gapX, cellIndex, -1); // get after cells\n // ending gap between last cell and end of gallery viewport\n\n gapX = this.size.innerWidth - this.cursorPosition; // start cloning at first cell, working forwards\n\n this.afterShiftCells = this._getGapCells(gapX, 0, 1);\n };\n\n proto._getGapCells = function (gapX, cellIndex, increment) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n\n while (gapX > 0) {\n var cell = this.cells[cellIndex];\n\n if (!cell) {\n break;\n }\n\n cells.push(cell);\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n\n return cells;\n }; // ----- contain ----- //\n // contain cell targets so no excess sliding\n\n\n proto._containSlides = function () {\n if (!this.options.contain || this.options.wrapAround || !this.cells.length) {\n return;\n }\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]; // content is less than gallery size\n\n var isContentSmaller = contentWidth < this.size.innerWidth; // bounds\n\n var beginBound = this.cursorPosition + this.cells[0].size[beginMargin];\n var endBound = contentWidth - this.size.innerWidth * (1 - this.cellAlign); // contain each cell target\n\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 * 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 */\n\n\n proto.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\n if (event) {\n // create jQuery event\n var jQEvent = new jQuery.Event(event);\n jQEvent.type = type;\n $event = jQEvent;\n }\n\n this.$element.trigger($event, args);\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 */\n\n\n proto.select = function (index, isWrap, isInstant) {\n if (!this.isActive) {\n return;\n }\n\n index = parseInt(index, 10);\n\n this._wrapSelect(index);\n\n if (this.options.wrapAround || isWrap) {\n index = utils.modulo(index, this.slides.length);\n } // bail if invalid index\n\n\n if (!this.slides[index]) {\n return;\n }\n\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n\n if (isInstant) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n\n if (this.options.adaptiveHeight) {\n this.setGallerySize();\n } // events\n\n\n this.dispatchEvent('select', null, [index]); // change event if new index\n\n if (index != prevIndex) {\n this.dispatchEvent('change', null, [index]);\n } // old v1 event name, remove in v3\n\n\n this.dispatchEvent('cellSelect');\n }; // wraps position for wrapAround, to move to closest slide. #113\n\n\n proto._wrapSelect = function (index) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n\n if (!isWrapping) {\n return index;\n }\n\n var wrapIndex = utils.modulo(index, len); // go to shortest\n\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\n if (!this.isDragSelect && backWrapDelta < delta) {\n index += len;\n } else if (!this.isDragSelect && forewardWrapDelta < delta) {\n index -= len;\n } // wrap position so slider is within normal area\n\n\n if (index < 0) {\n this.x -= this.slideableWidth;\n } else if (index >= len) {\n this.x += this.slideableWidth;\n }\n };\n\n proto.previous = function (isWrap, isInstant) {\n this.select(this.selectedIndex - 1, isWrap, isInstant);\n };\n\n proto.next = function (isWrap, isInstant) {\n this.select(this.selectedIndex + 1, isWrap, isInstant);\n };\n\n proto.updateSelectedSlide = function () {\n var slide = this.slides[this.selectedIndex]; // selectedIndex could be outside of slides, if triggered before resize()\n\n if (!slide) {\n return;\n } // unselect previous selected slide\n\n\n this.unselectSelectedSlide(); // update new selected slide\n\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements(); // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n };\n\n proto.unselectSelectedSlide = function () {\n if (this.selectedSlide) {\n this.selectedSlide.unselect();\n }\n };\n\n proto.selectInitialIndex = function () {\n var initialIndex = this.options.initialIndex; // already activated, select previous selectedIndex\n\n if (this.isInitActivated) {\n this.select(this.selectedIndex, false, true);\n return;\n } // select with selector string\n\n\n if (initialIndex && typeof initialIndex == 'string') {\n var cell = this.queryCell(initialIndex);\n\n if (cell) {\n this.selectCell(initialIndex, false, true);\n return;\n }\n }\n\n var index = 0; // select with number\n\n if (initialIndex && this.slides[initialIndex]) {\n index = initialIndex;\n } // select instantly\n\n\n this.select(index, false, true);\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 */\n\n\n proto.selectCell = function (value, isWrap, isInstant) {\n // get cell\n var cell = this.queryCell(value);\n\n if (!cell) {\n return;\n }\n\n var index = this.getCellSlideIndex(cell);\n this.select(index, isWrap, isInstant);\n };\n\n proto.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\n if (index != -1) {\n return i;\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 */\n\n\n proto.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\n if (cell.element == elem) {\n return cell;\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 */\n\n\n proto.getCells = function (elems) {\n elems = utils.makeArray(elems);\n var cells = [];\n elems.forEach(function (elem) {\n var cell = this.getCell(elem);\n\n if (cell) {\n cells.push(cell);\n }\n }, this);\n return cells;\n };\n /**\n * get cell elements\n * @returns {Array} cellElems\n */\n\n\n proto.getCellElements = function () {\n return this.cells.map(function (cell) {\n return cell.element;\n });\n };\n /**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\n\n\n proto.getParentCell = function (elem) {\n // first check if elem is cell\n var cell = this.getCell(elem);\n\n if (cell) {\n return cell;\n } // try to get parent cell elem\n\n\n elem = utils.getParent(elem, '.flickity-slider > *');\n return this.getCell(elem);\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 */\n\n\n proto.getAdjacentCellElements = function (adjCount, index) {\n if (!adjCount) {\n return this.selectedSlide.getCellElements();\n }\n\n index = index === undefined ? this.selectedIndex : index;\n var len = this.slides.length;\n\n if (1 + adjCount * 2 >= len) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n\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\n if (slide) {\n cellElems = cellElems.concat(slide.getCellElements());\n }\n }\n\n return cellElems;\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 */\n\n\n proto.queryCell = function (selector) {\n if (typeof selector == 'number') {\n // use number as index\n return this.cells[selector];\n }\n\n if (typeof selector == 'string') {\n // do not select invalid selectors from hash: #123, #/. #791\n if (selector.match(/^[#.]?[\\d/]/)) {\n return;\n } // use string as selector, get element\n\n\n selector = this.element.querySelector(selector);\n } // get cell from element\n\n\n return this.getCell(selector);\n }; // -------------------------- events -------------------------- //\n\n\n proto.uiChange = function () {\n this.emitEvent('uiChange');\n }; // keep focus on element when child UI elements are clicked\n\n\n proto.childUIPointerDown = function (event) {\n // HACK iOS does not allow touch events to bubble up?!\n if (event.type != 'touchstart') {\n event.preventDefault();\n }\n\n this.focus();\n }; // ----- resize ----- //\n\n\n proto.onresize = function () {\n this.watchCSS();\n this.resize();\n };\n\n utils.debounceMethod(Flickity, 'onresize', 150);\n\n proto.resize = function () {\n if (!this.isActive) {\n return;\n }\n\n this.getSize(); // wrap values\n\n if (this.options.wrapAround) {\n this.x = utils.modulo(this.x, this.slideableWidth);\n }\n\n this.positionCells();\n\n this._getWrapShiftCells();\n\n this.setGallerySize();\n this.emitEvent('resize'); // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell(selectedElement, false, true);\n }; // watches the :after property, activates/deactivates\n\n\n proto.watchCSS = function () {\n var watchOption = this.options.watchCSS;\n\n if (!watchOption) {\n return;\n }\n\n var afterContent = getComputedStyle(this.element, ':after').content; // activate if :after { content: 'flickity' }\n\n if (afterContent.indexOf('flickity') != -1) {\n this.activate();\n } else {\n this.deactivate();\n }\n }; // ----- keydown ----- //\n // go previous/next if left/right keys pressed\n\n\n proto.onkeydown = function (event) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n\n if (!this.options.accessibility || isNotFocused) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[event.keyCode];\n\n if (handler) {\n handler.call(this);\n }\n };\n\n Flickity.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 }; // ----- focus ----- //\n\n proto.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({\n preventScroll: true\n }); // hack to fix scroll jump after focus, #76\n\n if (window.pageYOffset != prevScrollY) {\n window.scrollTo(window.pageXOffset, prevScrollY);\n }\n }; // -------------------------- destroy -------------------------- //\n // deactivate all Flickity functionality, but keep stuff available\n\n\n proto.deactivate = function () {\n if (!this.isActive) {\n return;\n }\n\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide(); // destroy cells\n\n this.cells.forEach(function (cell) {\n cell.destroy();\n });\n this.element.removeChild(this.viewport); // move child elements back into element\n\n moveElements(this.slider.children, this.element);\n\n if (this.options.accessibility) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener('keydown', this);\n } // set flags\n\n\n this.isActive = false;\n this.emitEvent('deactivate');\n };\n\n proto.destroy = function () {\n this.deactivate();\n window.removeEventListener('resize', this);\n this.allOff();\n this.emitEvent('destroy');\n\n if (jQuery && this.$element) {\n jQuery.removeData(this.element, 'flickity');\n }\n\n delete this.element.flickityGUID;\n delete instances[this.guid];\n }; // -------------------------- prototype -------------------------- //\n\n\n utils.extend(proto, animatePrototype); // -------------------------- extras -------------------------- //\n\n /**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\n\n Flickity.data = function (elem) {\n elem = utils.getQueryElement(elem);\n var id = elem && elem.flickityGUID;\n return id && instances[id];\n };\n\n utils.htmlInit(Flickity, 'flickity');\n\n if (jQuery && jQuery.bridget) {\n jQuery.bridget('flickity', Flickity);\n } // set internal jQuery, for Webpack + jQuery v3, #478\n\n\n Flickity.setJQuery = function (jq) {\n jQuery = jq;\n };\n\n Flickity.Cell = Cell;\n Flickity.Slide = Slide;\n return Flickity;\n});","var makeClassNames = function makeClassNames(rootClass) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var add = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var flagKeys = Object.keys(flags);\n var buiClass = '' + rootClass;\n var className = [buiClass];\n flagKeys.forEach(function (key) {\n if (flags[key]) {\n className.push(buiClass + '--' + key);\n }\n });\n\n if (add) {\n className.push(add);\n }\n\n return className.join(' ');\n};\n\nvar FontFaces = Object.freeze({\n PortraitLight: 'portrait-light',\n PortraitMedium: 'portrait-medium',\n PortraitTextRegular: 'portrait-text-regular',\n PortraitRegular: 'portrait-regular',\n PortraitBold: 'portrait-bold',\n PortraitItalic: 'portrait-italic',\n PortraitInlineSans: 'portrait-inline-sans',\n BrownProBold: 'brown-pro-bold',\n BrownProRegular: 'brown-pro-regular',\n BrownStdLight: 'brown-std-light',\n ProximaNova: 'proxima-nova',\n ProximaNovaSemibold: 'proxima-nova-semibold',\n ProximaNovaLight: 'proxima-nova-light'\n});\nvar Sizes = Object.freeze({\n xs: 'xs',\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n xl: 'xl'\n});\nvar Themes = Object.freeze({\n white: 'white',\n dark: 'dark'\n});\n\nvar aspectRatioToPercent = function aspectRatioToPercent(ratio) {\n var splitRatio = ratio.split(':');\n return (splitRatio[1] / splitRatio[0] * 100).toFixed(2).replace(/\\.?0+$/, '');\n};\n\nvar Breakpoints = Object.freeze({\n mobile: 481,\n tablet: 668,\n tabletWide: 741,\n desktopNarrow: 769,\n desktop: 1025,\n desktopWide: 1441\n});\n\nvar textStyles = function textStyles() {\n var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 12;\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;\n var includeMargin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return {\n fontSize: 0.0625 * size + 'rem',\n lineHeight: 0.0625 * height + 'rem',\n marginBottom: includeMargin ? 0.0625 * height + 'rem' : null\n };\n};\n\nexport { Breakpoints, FontFaces, Sizes, Themes, aspectRatioToPercent, makeClassNames, textStyles };","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\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(function (global, factory) {\n // universal module definition\n\n /* jshint strict: false */\n\n /* globals define, module, window */\n if (typeof define == 'function' && define.amd) {\n // AMD - RequireJS\n define(factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n})(typeof window != 'undefined' ? window : this, function () {\n \"use strict\";\n\n function EvEmitter() {}\n\n var proto = EvEmitter.prototype;\n\n proto.on = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n } // set events hash\n\n\n var events = this._events = this._events || {}; // set listeners array\n\n var listeners = events[eventName] = events[eventName] || []; // only add once\n\n if (listeners.indexOf(listener) == -1) {\n listeners.push(listener);\n }\n\n return this;\n };\n\n proto.once = function (eventName, listener) {\n if (!eventName || !listener) {\n return;\n } // add event\n\n\n this.on(eventName, listener); // set once flag\n // set onceEvents hash\n\n var onceEvents = this._onceEvents = this._onceEvents || {}; // set onceListeners object\n\n var onceListeners = onceEvents[eventName] = onceEvents[eventName] || {}; // set flag\n\n onceListeners[listener] = true;\n return this;\n };\n\n proto.off = function (eventName, listener) {\n var listeners = this._events && this._events[eventName];\n\n if (!listeners || !listeners.length) {\n return;\n }\n\n var index = listeners.indexOf(listener);\n\n if (index != -1) {\n listeners.splice(index, 1);\n }\n\n return this;\n };\n\n proto.emitEvent = function (eventName, args) {\n var listeners = this._events && this._events[eventName];\n\n if (!listeners || !listeners.length) {\n return;\n } // copy over to avoid interference if .off() in listener\n\n\n listeners = listeners.slice(0);\n args = args || []; // once stuff\n\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\n if (isOnce) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off(eventName, listener); // unset once flag\n\n delete onceListeners[listener];\n } // trigger listener\n\n\n listener.apply(this, args);\n }\n\n return this;\n };\n\n proto.allOff = function () {\n delete this._events;\n delete this._onceEvents;\n };\n\n return EvEmitter;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Unipointer v2.3.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n(function (window, factory) {\n // universal module definition\n\n /* jshint strict: false */\n\n /*global define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['ev-emitter/ev-emitter'], function (EvEmitter) {\n return factory(window, EvEmitter);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('ev-emitter'));\n } else {\n // browser global\n window.Unipointer = factory(window, window.EvEmitter);\n }\n})(window, function factory(window, EvEmitter) {\n 'use strict';\n\n function noop() {}\n\n function Unipointer() {} // inherit EvEmitter\n\n\n var proto = Unipointer.prototype = Object.create(EvEmitter.prototype);\n\n proto.bindStartEvent = function (elem) {\n this._bindStartEvent(elem, true);\n };\n\n proto.unbindStartEvent = function (elem) {\n this._bindStartEvent(elem, false);\n };\n /**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\n\n\n proto._bindStartEvent = function (elem, isAdd) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener'; // default to mouse events\n\n var startEvent = 'mousedown';\n\n if (window.PointerEvent) {\n // Pointer Events\n startEvent = 'pointerdown';\n } else if ('ontouchstart' in window) {\n // Touch Events. iOS Safari\n startEvent = 'touchstart';\n }\n\n elem[bindMethod](startEvent, this);\n }; // trigger handler methods for events\n\n\n proto.handleEvent = function (event) {\n var method = 'on' + event.type;\n\n if (this[method]) {\n this[method](event);\n }\n }; // returns the touch that we're keeping track of\n\n\n proto.getTouch = function (touches) {\n for (var i = 0; i < touches.length; i++) {\n var touch = touches[i];\n\n if (touch.identifier == this.pointerIdentifier) {\n return touch;\n }\n }\n }; // ----- start event ----- //\n\n\n proto.onmousedown = function (event) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n\n if (button && button !== 0 && button !== 1) {\n return;\n }\n\n this._pointerDown(event, event);\n };\n\n proto.ontouchstart = function (event) {\n this._pointerDown(event, event.changedTouches[0]);\n };\n\n proto.onpointerdown = function (event) {\n this._pointerDown(event, event);\n };\n /**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n\n\n proto._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; // save pointer identifier to match up touch events\n\n this.pointerIdentifier = pointer.pointerId !== undefined ? // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n this.pointerDown(event, pointer);\n };\n\n proto.pointerDown = function (event, pointer) {\n this._bindPostStartEvents(event);\n\n this.emitEvent('pointerDown', [event, pointer]);\n }; // hash of events to be bound after start event\n\n\n var postStartEvents = {\n mousedown: ['mousemove', 'mouseup'],\n touchstart: ['touchmove', 'touchend', 'touchcancel'],\n pointerdown: ['pointermove', 'pointerup', 'pointercancel']\n };\n\n proto._bindPostStartEvents = function (event) {\n if (!event) {\n return;\n } // get proper events to match start event\n\n\n var events = postStartEvents[event.type]; // bind events to node\n\n events.forEach(function (eventName) {\n window.addEventListener(eventName, this);\n }, this); // save these arguments\n\n this._boundPointerEvents = events;\n };\n\n proto._unbindPostStartEvents = function () {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if (!this._boundPointerEvents) {\n return;\n }\n\n this._boundPointerEvents.forEach(function (eventName) {\n window.removeEventListener(eventName, this);\n }, this);\n\n delete this._boundPointerEvents;\n }; // ----- move event ----- //\n\n\n proto.onmousemove = function (event) {\n this._pointerMove(event, event);\n };\n\n proto.onpointermove = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerMove(event, event);\n }\n };\n\n proto.ontouchmove = function (event) {\n var touch = this.getTouch(event.changedTouches);\n\n if (touch) {\n this._pointerMove(event, touch);\n }\n };\n /**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n\n\n proto._pointerMove = function (event, pointer) {\n this.pointerMove(event, pointer);\n }; // public\n\n\n proto.pointerMove = function (event, pointer) {\n this.emitEvent('pointerMove', [event, pointer]);\n }; // ----- end event ----- //\n\n\n proto.onmouseup = function (event) {\n this._pointerUp(event, event);\n };\n\n proto.onpointerup = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerUp(event, event);\n }\n };\n\n proto.ontouchend = function (event) {\n var touch = this.getTouch(event.changedTouches);\n\n if (touch) {\n this._pointerUp(event, touch);\n }\n };\n /**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n\n\n proto._pointerUp = function (event, pointer) {\n this._pointerDone();\n\n this.pointerUp(event, pointer);\n }; // public\n\n\n proto.pointerUp = function (event, pointer) {\n this.emitEvent('pointerUp', [event, pointer]);\n }; // ----- pointer done ----- //\n // triggered on pointer up & pointer cancel\n\n\n proto._pointerDone = function () {\n this._pointerReset();\n\n this._unbindPostStartEvents();\n\n this.pointerDone();\n };\n\n proto._pointerReset = function () {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n };\n\n proto.pointerDone = noop; // ----- pointer cancel ----- //\n\n proto.onpointercancel = function (event) {\n if (event.pointerId == this.pointerIdentifier) {\n this._pointerCancel(event, event);\n }\n };\n\n proto.ontouchcancel = function (event) {\n var touch = this.getTouch(event.changedTouches);\n\n if (touch) {\n this._pointerCancel(event, touch);\n }\n };\n /**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\n\n\n proto._pointerCancel = function (event, pointer) {\n this._pointerDone();\n\n this.pointerCancel(event, pointer);\n }; // public\n\n\n proto.pointerCancel = function (event, pointer) {\n this.emitEvent('pointerCancel', [event, pointer]);\n }; // ----- ----- //\n // utility function for getting x/y coords from event\n\n\n Unipointer.getPointerPoint = function (pointer) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n }; // ----- ----- //\n\n\n return Unipointer;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\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\n/* globals console: false */\n(function (window, factory) {\n /* jshint strict: false */\n\n /* globals define, module */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n})(window, function factory() {\n 'use strict'; // -------------------------- helpers -------------------------- //\n // get a number from a string, not a percentage\n\n function getStyleSize(value) {\n var num = parseFloat(value); // not a percent like '100%', and a number\n\n var isValid = value.indexOf('%') == -1 && !isNaN(num);\n return isValid && num;\n }\n\n function noop() {}\n\n var logError = typeof console == 'undefined' ? noop : function (message) {\n console.error(message);\n }; // -------------------------- measurements -------------------------- //\n\n var measurements = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'borderBottomWidth'];\n var measurementsLength = measurements.length;\n\n function getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n size[measurement] = 0;\n }\n\n return size;\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 */\n\n\n function getStyle(elem) {\n var style = getComputedStyle(elem);\n\n if (!style) {\n logError('Style returned ' + style + '. Are you running this code in a hidden iframe on Firefox? ' + 'See https://bit.ly/getsizebug1');\n }\n\n return style;\n } // -------------------------- setup -------------------------- //\n\n\n var isSetup = false;\n var isBoxSizeOuter;\n /**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\n\n function setup() {\n // setup once\n if (isSetup) {\n return;\n }\n\n isSetup = true; // -------------------------- 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\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 var body = document.body || document.documentElement;\n body.appendChild(div);\n var style = getStyle(div); // round value for browser zoom. desandro/masonry#928\n\n isBoxSizeOuter = Math.round(getStyleSize(style.width)) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n body.removeChild(div);\n } // -------------------------- getSize -------------------------- //\n\n\n function getSize(elem) {\n setup(); // use querySeletor if elem is string\n\n if (typeof elem == 'string') {\n elem = document.querySelector(elem);\n } // do not proceed on non-objects\n\n\n if (!elem || _typeof(elem) != 'object' || !elem.nodeType) {\n return;\n }\n\n var style = getStyle(elem); // if hidden, everything is 0\n\n if (style.display == 'none') {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box'; // get all measurements\n\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n var value = style[measurement];\n var num = parseFloat(value); // any 'auto', 'medium' value will be 0\n\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 var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; // overwrite width and height if we can get it from style\n\n var styleWidth = getStyleSize(style.width);\n\n if (styleWidth !== false) {\n size.width = styleWidth + ( // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth);\n }\n\n var styleHeight = getStyleSize(style.height);\n\n if (styleHeight !== false) {\n size.height = styleHeight + ( // 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 size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n return size;\n }\n\n return getSize;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\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(function (window, factory) {\n /*global define: false, module: false */\n 'use strict'; // universal module definition\n\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n})(window, function factory() {\n 'use strict';\n\n var matchesMethod = function () {\n var ElemProto = window.Element.prototype; // check for the standard method name first\n\n if (ElemProto.matches) {\n return 'matches';\n } // check un-prefixed\n\n\n if (ElemProto.matchesSelector) {\n return 'matchesSelector';\n } // check vendor prefixes\n\n\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\n if (ElemProto[method]) {\n return method;\n }\n }\n }();\n\n return function matchesSelector(elem, selector) {\n return elem[matchesMethod](selector);\n };\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// Flickity.Cell\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['get-size/get-size'], function (getSize) {\n return factory(window, getSize);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('get-size'));\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(window, window.getSize);\n }\n})(window, function factory(window, getSize) {\n 'use strict';\n\n function Cell(elem, parent) {\n this.element = elem;\n this.parent = parent;\n this.create();\n }\n\n var proto = Cell.prototype;\n\n proto.create = function () {\n this.element.style.position = 'absolute';\n this.element.setAttribute('aria-hidden', 'true');\n this.x = 0;\n this.shift = 0;\n };\n\n proto.destroy = function () {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[side] = '';\n this.element.removeAttribute('aria-hidden');\n };\n\n proto.getSize = function () {\n this.size = getSize(this.element);\n };\n\n proto.setPosition = function (x) {\n this.x = x;\n this.updateTarget();\n this.renderPosition(x);\n }; // setDefaultTarget v1 method, backwards compatibility, remove in v3\n\n\n proto.updateTarget = proto.setDefaultTarget = function () {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[marginProperty] + this.size.width * this.parent.cellAlign;\n };\n\n proto.renderPosition = function (x) {\n // render position of cell with in slider\n var side = this.parent.originSide;\n this.element.style[side] = this.parent.getPositionValue(x);\n };\n\n proto.select = function () {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n };\n\n proto.unselect = function () {\n this.element.classList.remove('is-selected');\n this.element.setAttribute('aria-hidden', 'true');\n };\n /**\n * @param {Integer} shift - 0, 1, or -1\n */\n\n\n proto.wrapShift = function (shift) {\n this.shift = shift;\n this.renderPosition(this.x + this.parent.slideableWidth * shift);\n };\n\n proto.remove = function () {\n this.element.parentNode.removeChild(this.element);\n };\n\n return Cell;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// slide\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _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})(window, function factory() {\n 'use strict';\n\n function 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\n var proto = Slide.prototype;\n\n proto.addCell = function (cell) {\n this.cells.push(cell);\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max(cell.size.outerHeight, this.height); // first cell stuff\n\n if (this.cells.length == 1) {\n this.x = cell.x; // x comes from first cell\n\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[beginMargin];\n }\n };\n\n proto.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\n proto.getLastCell = function () {\n return this.cells[this.cells.length - 1];\n };\n\n proto.select = function () {\n this.cells.forEach(function (cell) {\n cell.select();\n });\n };\n\n proto.unselect = function () {\n this.cells.forEach(function (cell) {\n cell.unselect();\n });\n };\n\n proto.getCellElements = function () {\n return this.cells.map(function (cell) {\n return cell.element;\n });\n };\n\n return Slide;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// animate\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['fizzy-ui-utils/utils'], function (utils) {\n return factory(window, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('fizzy-ui-utils'));\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(window, window.fizzyUIUtils);\n }\n})(window, function factory(window, utils) {\n 'use strict'; // -------------------------- animate -------------------------- //\n\n var proto = {};\n\n proto.startAnimation = function () {\n if (this.isAnimating) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n };\n\n proto.animate = function () {\n this.applyDragForce();\n this.applySelectedAttraction();\n var previousX = this.x;\n this.integratePhysics();\n this.positionSlider();\n this.settle(previousX); // animate next frame\n\n if (this.isAnimating) {\n var _this = this;\n\n requestAnimationFrame(function animateFrame() {\n _this.animate();\n });\n }\n };\n\n proto.positionSlider = function () {\n var x = this.x; // wrap position around\n\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\n proto.setTranslateX = function (x, is3d) {\n x += this.cursorPosition; // reverse if right-to-left and using transform\n\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue(x); // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n\n this.slider.style.transform = is3d ? 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n };\n\n proto.dispatchScrollEvent = function () {\n var firstSlide = this.slides[0];\n\n if (!firstSlide) {\n return;\n }\n\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent('scroll', null, [progress, positionX]);\n };\n\n proto.positionSliderAtSelected = function () {\n if (!this.cells.length) {\n return;\n }\n\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n\n this.positionSlider();\n };\n\n proto.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\n proto.settle = function (previousX) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown && Math.round(this.x * 100) == Math.round(previousX * 100);\n\n if (isResting) {\n this.restingFrames++;\n } // stop animating if resting for 3 or more frames\n\n\n if (this.restingFrames > 2) {\n this.isAnimating = false;\n delete this.isFreeScrolling; // render position with translateX when settled\n\n this.positionSlider();\n this.dispatchEvent('settle', null, [this.selectedIndex]);\n }\n };\n\n proto.shiftWrapCells = function (x) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n\n this._shiftCells(this.beforeShiftCells, beforeGap, -1); // shift after cells\n\n\n var afterGap = this.size.innerWidth - (x + this.slideableWidth + this.cursorPosition);\n\n this._shiftCells(this.afterShiftCells, afterGap, 1);\n };\n\n proto._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\n proto._unshiftCells = function (cells) {\n if (!cells || !cells.length) {\n return;\n }\n\n for (var i = 0; i < cells.length; i++) {\n cells[i].wrapShift(0);\n }\n }; // -------------------------- physics -------------------------- //\n\n\n proto.integratePhysics = function () {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n };\n\n proto.applyForce = function (force) {\n this.velocity += force;\n };\n\n proto.getFrictionFactor = function () {\n return 1 - this.options[this.isFreeScrolling ? 'freeScrollFriction' : 'friction'];\n };\n\n proto.getRestingPosition = function () {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / (1 - this.getFrictionFactor());\n };\n\n proto.applyDragForce = function () {\n if (!this.isDraggable || !this.isPointerDown) {\n return;\n } // change the position to drag position by applying force\n\n\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce(dragForce);\n };\n\n proto.applySelectedAttraction = function () {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n\n if (dragDown || this.isFreeScrolling || !this.slides.length) {\n return;\n }\n\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce(force);\n };\n\n return proto;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// drag\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', 'unidragger/unidragger', 'fizzy-ui-utils/utils'], function (Flickity, Unidragger, utils) {\n return factory(window, Flickity, Unidragger, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('unidragger'), require('fizzy-ui-utils'));\n } else {\n // browser global\n window.Flickity = factory(window, window.Flickity, window.Unidragger, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, Unidragger, utils) {\n 'use strict'; // ----- defaults ----- //\n\n utils.extend(Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3\n }); // ----- create ----- //\n\n Flickity.createMethods.push('_createDrag'); // -------------------------- drag prototype -------------------------- //\n\n var proto = Flickity.prototype;\n utils.extend(proto, Unidragger.prototype);\n proto._touchActionValue = 'pan-y'; // -------------------------- -------------------------- //\n\n var isTouch = ('createTouch' in document);\n var isTouchmoveScrollCanceled = false;\n\n proto._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); // TODO updateDraggable on resize? if groupCells & slides change\n // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n // #457, RubaXa/Sortable#973\n\n if (isTouch && !isTouchmoveScrollCanceled) {\n window.addEventListener('touchmove', function () {});\n isTouchmoveScrollCanceled = true;\n }\n };\n\n proto.onActivateDrag = function () {\n this.handles = [this.viewport];\n this.bindHandles();\n this.updateDraggable();\n };\n\n proto.onDeactivateDrag = function () {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n };\n\n proto.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\n if (this.isDraggable) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n }; // backwards compatibility\n\n\n proto.bindDrag = function () {\n this.options.draggable = true;\n this.updateDraggable();\n };\n\n proto.unbindDrag = function () {\n this.options.draggable = false;\n this.updateDraggable();\n };\n\n proto._uiChangeDrag = function () {\n delete this.isFreeScrolling;\n }; // -------------------------- pointer events -------------------------- //\n\n\n proto.pointerDown = function (event, pointer) {\n if (!this.isDraggable) {\n this._pointerDownDefault(event, pointer);\n\n return;\n }\n\n var isOkay = this.okayPointerDown(event);\n\n if (!isOkay) {\n return;\n }\n\n this._pointerDownPreventDefault(event);\n\n this.pointerDownFocus(event); // blur\n\n if (document.activeElement != this.element) {\n // do not blur if already focused\n this.pointerDownBlur();\n } // stop if it was moving\n\n\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down'); // track scrolling\n\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener('scroll', this);\n\n this._pointerDownDefault(event, pointer);\n }; // default pointerDown logic, used for staticClick\n\n\n proto._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 }; // bind move and end events\n\n this._bindPostStartEvents(event);\n\n this.dispatchEvent('pointerDown', event, [pointer]);\n };\n\n var focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true\n };\n\n proto.pointerDownFocus = function (event) {\n var isFocusNode = focusNodes[event.target.nodeName];\n\n if (!isFocusNode) {\n this.focus();\n }\n };\n\n proto._pointerDownPreventDefault = function (event) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[event.target.nodeName];\n\n if (!isTouchStart && !isTouchPointer && !isFocusNode) {\n event.preventDefault();\n }\n }; // ----- move ----- //\n\n\n proto.hasDragStarted = function (moveVector) {\n return Math.abs(moveVector.x) > this.options.dragThreshold;\n }; // ----- up ----- //\n\n\n proto.pointerUp = function (event, pointer) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent('pointerUp', event, [pointer]);\n\n this._dragPointerUp(event, pointer);\n };\n\n proto.pointerDone = function () {\n window.removeEventListener('scroll', this);\n delete this.pointerDownScroll;\n }; // -------------------------- dragging -------------------------- //\n\n\n proto.dragStart = function (event, pointer) {\n if (!this.isDraggable) {\n return;\n }\n\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener('scroll', this);\n this.dispatchEvent('dragStart', event, [pointer]);\n };\n\n proto.pointerMove = function (event, pointer) {\n var moveVector = this._dragPointerMove(event, pointer);\n\n this.dispatchEvent('pointerMove', event, [pointer, moveVector]);\n\n this._dragMove(event, pointer, moveVector);\n };\n\n proto.dragMove = function (event, pointer, moveVector) {\n if (!this.isDraggable) {\n return;\n }\n\n event.preventDefault();\n this.previousDragX = this.dragX; // reverse if right-to-left\n\n var direction = this.options.rightToLeft ? -1 : 1;\n\n if (this.options.wrapAround) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\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 this.dragMoveTime = new Date();\n this.dispatchEvent('dragMove', event, [pointer, moveVector]);\n };\n\n proto.dragEnd = function (event, pointer) {\n if (!this.isDraggable) {\n return;\n }\n\n if (this.options.freeScroll) {\n this.isFreeScrolling = true;\n } // set selectedIndex based on where flick will end up\n\n\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 && -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\n delete this.previousDragX; // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n\n this.isDragSelect = this.options.wrapAround;\n this.select(index);\n delete this.isDragSelect;\n this.dispatchEvent('dragEnd', event, [pointer]);\n };\n\n proto.dragEndRestingSelect = function () {\n var restingX = this.getRestingPosition(); // how far away from selected slide\n\n var distance = Math.abs(this.getSlideDistance(-restingX, this.selectedIndex)); // get closet resting going up and going down\n\n var positiveResting = this._getClosestResting(restingX, distance, 1);\n\n var negativeResting = this._getClosestResting(restingX, distance, -1); // use closer resting for wrap-around\n\n\n var index = positiveResting.distance < negativeResting.distance ? positiveResting.index : negativeResting.index;\n return index;\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 */\n\n\n proto._getClosestResting = function (restingX, distance, increment) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ? // 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\n while (condition(distance, minDistance)) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance(-restingX, index);\n\n if (distance === null) {\n break;\n }\n\n distance = Math.abs(distance);\n }\n\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment\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 */\n\n\n proto.getSlideDistance = function (x, index) {\n var len = this.slides.length; // wrap around if at least 2 slides\n\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo(index, len) : index;\n var slide = this.slides[slideIndex];\n\n if (!slide) {\n return null;\n } // add distance for wrap-around slides\n\n\n var wrap = isWrapAround ? this.slideableWidth * Math.floor(index / len) : 0;\n return x - (slide.target + wrap);\n };\n\n proto.dragEndBoostSelect = function () {\n // do not boost if no previousDragX or dragMoveTime\n if (this.previousDragX === undefined || !this.dragMoveTime || // 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\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\n return 0;\n }; // ----- staticClick ----- //\n\n\n proto.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 }; // ----- scroll ----- //\n\n\n proto.onscroll = function () {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y; // cancel click/tap if scroll is too much\n\n if (Math.abs(scrollMoveX) > 3 || Math.abs(scrollMoveY) > 3) {\n this._pointerDone();\n }\n }; // ----- utils ----- //\n\n\n function getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n } // ----- ----- //\n\n\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Unidragger v2.3.1\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n(function (window, factory) {\n // universal module definition\n\n /*jshint strict: false */\n\n /*globals define, module, require */\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['unipointer/unipointer'], function (Unipointer) {\n return factory(window, Unipointer);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('unipointer'));\n } else {\n // browser global\n window.Unidragger = factory(window, window.Unipointer);\n }\n})(window, function factory(window, Unipointer) {\n 'use strict'; // -------------------------- Unidragger -------------------------- //\n\n function Unidragger() {} // inherit Unipointer & EvEmitter\n\n\n var proto = Unidragger.prototype = Object.create(Unipointer.prototype); // ----- bind start ----- //\n\n proto.bindHandles = function () {\n this._bindHandles(true);\n };\n\n proto.unbindHandles = function () {\n this._bindHandles(false);\n };\n /**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\n\n\n proto._bindHandles = function (isAdd) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd; // bind each handle\n\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n\n for (var i = 0; i < this.handles.length; i++) {\n var handle = this.handles[i];\n\n this._bindStartEvent(handle, isAdd);\n\n handle[bindMethod]('click', this); // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n\n if (window.PointerEvent) {\n handle.style.touchAction = touchAction;\n }\n }\n }; // prototype so it can be overwriteable by Flickity\n\n\n proto._touchActionValue = 'none'; // ----- start event ----- //\n\n /**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n\n proto.pointerDown = function (event, pointer) {\n var isOkay = this.okayPointerDown(event);\n\n if (!isOkay) {\n return;\n } // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n\n\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY\n };\n event.preventDefault();\n this.pointerDownBlur(); // bind move and end events\n\n this._bindPostStartEvents(event);\n\n this.emitEvent('pointerDown', [event, pointer]);\n }; // nodes that have text fields\n\n\n var cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true\n }; // input types that do not have text fields\n\n var clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true\n }; // dismiss inputs with text fields. flickity#403, flickity#404\n\n proto.okayPointerDown = function (event) {\n var isCursorNode = cursorNodes[event.target.nodeName];\n var isClickType = clickTypes[event.target.type];\n var isOkay = !isCursorNode || isClickType;\n\n if (!isOkay) {\n this._pointerReset();\n }\n\n return isOkay;\n }; // kludge to blur previously focused input\n\n\n proto.pointerDownBlur = function () {\n var focused = document.activeElement; // do not blur body for IE10, metafizzy/flickity#117\n\n var canBlur = focused && focused.blur && focused != document.body;\n\n if (canBlur) {\n focused.blur();\n }\n }; // ----- move event ----- //\n\n /**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n\n\n proto.pointerMove = function (event, pointer) {\n var moveVector = this._dragPointerMove(event, pointer);\n\n this.emitEvent('pointerMove', [event, pointer, moveVector]);\n\n this._dragMove(event, pointer, moveVector);\n }; // base pointer move logic\n\n\n proto._dragPointerMove = function (event, pointer) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n }; // start drag if pointer has moved far enough to start drag\n\n if (!this.isDragging && this.hasDragStarted(moveVector)) {\n this._dragStart(event, pointer);\n }\n\n return moveVector;\n }; // condition if pointer has moved far enough to start drag\n\n\n proto.hasDragStarted = function (moveVector) {\n return Math.abs(moveVector.x) > 3 || Math.abs(moveVector.y) > 3;\n }; // ----- end event ----- //\n\n /**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\n\n\n proto.pointerUp = function (event, pointer) {\n this.emitEvent('pointerUp', [event, pointer]);\n\n this._dragPointerUp(event, pointer);\n };\n\n proto._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 }; // -------------------------- drag -------------------------- //\n // dragStart\n\n\n proto._dragStart = function (event, pointer) {\n this.isDragging = true; // prevent clicks\n\n this.isPreventingClicks = true;\n this.dragStart(event, pointer);\n };\n\n proto.dragStart = function (event, pointer) {\n this.emitEvent('dragStart', [event, pointer]);\n }; // dragMove\n\n\n proto._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\n proto.dragMove = function (event, pointer, moveVector) {\n event.preventDefault();\n this.emitEvent('dragMove', [event, pointer, moveVector]);\n }; // dragEnd\n\n\n proto._dragEnd = function (event, pointer) {\n // set flags\n this.isDragging = false; // re-enable clicking async\n\n setTimeout(function () {\n delete this.isPreventingClicks;\n }.bind(this));\n this.dragEnd(event, pointer);\n };\n\n proto.dragEnd = function (event, pointer) {\n this.emitEvent('dragEnd', [event, pointer]);\n }; // ----- onclick ----- //\n // handle all clicks and prevent clicks when dragging\n\n\n proto.onclick = function (event) {\n if (this.isPreventingClicks) {\n event.preventDefault();\n }\n }; // ----- staticClick ----- //\n // triggered after pointer down & up with no/tiny movement\n\n\n proto._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); // set flag for emulated clicks 300ms after touchend\n\n if (event.type != 'mouseup') {\n this.isIgnoringMouseUp = true; // reset flag after 300ms\n\n setTimeout(function () {\n delete this.isIgnoringMouseUp;\n }.bind(this), 400);\n }\n };\n\n proto.staticClick = function (event, pointer) {\n this.emitEvent('staticClick', [event, pointer]);\n }; // ----- utils ----- //\n\n\n Unidragger.getPointerPoint = Unipointer.getPointerPoint; // ----- ----- //\n\n return Unidragger;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\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', 'unipointer/unipointer', 'fizzy-ui-utils/utils'], function (Flickity, Unipointer, utils) {\n return factory(window, Flickity, Unipointer, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('unipointer'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.Unipointer, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, Unipointer, utils) {\n 'use strict';\n\n var svgURI = 'http://www.w3.org/2000/svg'; // -------------------------- PrevNextButton -------------------------- //\n\n function PrevNextButton(direction, parent) {\n this.direction = direction;\n this.parent = parent;\n\n this._create();\n }\n\n PrevNextButton.prototype = Object.create(Unipointer.prototype);\n\n PrevNextButton.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 var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next'; // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n\n element.setAttribute('type', 'button'); // init as disabled\n\n this.disable();\n element.setAttribute('aria-label', this.isPrevious ? 'Previous' : 'Next'); // create arrow\n\n var svg = this.createSVG();\n element.appendChild(svg); // events\n\n this.parent.on('select', this.update.bind(this));\n this.on('pointerDown', this.parent.childUIPointerDown.bind(this.parent));\n };\n\n PrevNextButton.prototype.activate = function () {\n this.bindStartEvent(this.element);\n this.element.addEventListener('click', this); // add to DOM\n\n this.parent.element.appendChild(this.element);\n };\n\n PrevNextButton.prototype.deactivate = function () {\n // remove from DOM\n this.parent.element.removeChild(this.element); // click events\n\n this.unbindStartEvent(this.element);\n this.element.removeEventListener('click', this);\n };\n\n PrevNextButton.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'); // rotate arrow\n\n if (!this.isLeft) {\n path.setAttribute('transform', 'translate(100, 100) rotate(180) ');\n }\n\n svg.appendChild(path);\n return svg;\n }; // get SVG path movmement\n\n\n function getArrowMovements(shape) {\n // use shape as movement if string\n if (typeof shape == 'string') {\n return shape;\n } // create movement string\n\n\n return 'M ' + shape.x0 + ',50' + ' L ' + shape.x1 + ',' + (shape.y1 + 50) + ' L ' + shape.x2 + ',' + (shape.y2 + 50) + ' L ' + shape.x3 + ',50 ' + ' L ' + shape.x2 + ',' + (50 - shape.y2) + ' L ' + shape.x1 + ',' + (50 - shape.y1) + ' Z';\n }\n\n PrevNextButton.prototype.handleEvent = utils.handleEvent;\n\n PrevNextButton.prototype.onclick = function () {\n if (!this.isEnabled) {\n return;\n }\n\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[method]();\n }; // ----- ----- //\n\n\n PrevNextButton.prototype.enable = function () {\n if (this.isEnabled) {\n return;\n }\n\n this.element.disabled = false;\n this.isEnabled = true;\n };\n\n PrevNextButton.prototype.disable = function () {\n if (!this.isEnabled) {\n return;\n }\n\n this.element.disabled = true;\n this.isEnabled = false;\n };\n\n PrevNextButton.prototype.update = function () {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides; // enable is wrapAround and at least 2 slides\n\n if (this.parent.options.wrapAround && slides.length > 1) {\n this.enable();\n return;\n }\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\n PrevNextButton.prototype.destroy = function () {\n this.deactivate();\n this.allOff();\n }; // -------------------------- Flickity prototype -------------------------- //\n\n\n utils.extend(Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60,\n y1: 50,\n x2: 70,\n y2: 40,\n x3: 30\n }\n });\n Flickity.createMethods.push('_createPrevNextButtons');\n var proto = Flickity.prototype;\n\n proto._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 this.on('activate', this.activatePrevNextButtons);\n };\n\n proto.activatePrevNextButtons = function () {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on('deactivate', this.deactivatePrevNextButtons);\n };\n\n proto.deactivatePrevNextButtons = function () {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off('deactivate', this.deactivatePrevNextButtons);\n }; // -------------------------- -------------------------- //\n\n\n Flickity.PrevNextButton = PrevNextButton;\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// page dots\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', 'unipointer/unipointer', 'fizzy-ui-utils/utils'], function (Flickity, Unipointer, utils) {\n return factory(window, Flickity, Unipointer, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('unipointer'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.Unipointer, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, Unipointer, utils) {\n // -------------------------- PageDots -------------------------- //\n 'use strict';\n\n function PageDots(parent) {\n this.parent = parent;\n\n this._create();\n }\n\n PageDots.prototype = Object.create(Unipointer.prototype);\n\n PageDots.prototype._create = function () {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots'; // create dots, array of elements\n\n this.dots = []; // events\n\n this.handleClick = this.onClick.bind(this);\n this.on('pointerDown', this.parent.childUIPointerDown.bind(this.parent));\n };\n\n PageDots.prototype.activate = function () {\n this.setDots();\n this.holder.addEventListener('click', this.handleClick);\n this.bindStartEvent(this.holder); // add to DOM\n\n this.parent.element.appendChild(this.holder);\n };\n\n PageDots.prototype.deactivate = function () {\n this.holder.removeEventListener('click', this.handleClick);\n this.unbindStartEvent(this.holder); // remove from DOM\n\n this.parent.element.removeChild(this.holder);\n };\n\n PageDots.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\n if (delta > 0) {\n this.addDots(delta);\n } else if (delta < 0) {\n this.removeDots(-delta);\n }\n };\n\n PageDots.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\n PageDots.prototype.removeDots = function (count) {\n // remove from this.dots collection\n var removeDots = this.dots.splice(this.dots.length - count, count); // remove from DOM\n\n removeDots.forEach(function (dot) {\n this.holder.removeChild(dot);\n }, this);\n };\n\n PageDots.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 } // don't proceed if no dots\n\n\n if (!this.dots.length) {\n return;\n }\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\n PageDots.prototype.onTap = // old method name, backwards-compatible\n PageDots.prototype.onClick = function (event) {\n var target = event.target; // only care about dot clicks\n\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\n PageDots.prototype.destroy = function () {\n this.deactivate();\n this.allOff();\n };\n\n Flickity.PageDots = PageDots; // -------------------------- Flickity -------------------------- //\n\n utils.extend(Flickity.defaults, {\n pageDots: true\n });\n Flickity.createMethods.push('_createPageDots');\n var proto = Flickity.prototype;\n\n proto._createPageDots = function () {\n if (!this.options.pageDots) {\n return;\n }\n\n this.pageDots = new PageDots(this); // events\n\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\n proto.activatePageDots = function () {\n this.pageDots.activate();\n };\n\n proto.updateSelectedPageDots = function () {\n this.pageDots.updateSelected();\n };\n\n proto.updatePageDots = function () {\n this.pageDots.setDots();\n };\n\n proto.deactivatePageDots = function () {\n this.pageDots.deactivate();\n }; // ----- ----- //\n\n\n Flickity.PageDots = PageDots;\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// player & autoPlay\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['ev-emitter/ev-emitter', 'fizzy-ui-utils/utils', './flickity'], function (EvEmitter, utils, Flickity) {\n return factory(EvEmitter, utils, Flickity);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(require('ev-emitter'), require('fizzy-ui-utils'), require('./flickity'));\n } else {\n // browser global\n factory(window.EvEmitter, window.fizzyUIUtils, window.Flickity);\n }\n})(window, function factory(EvEmitter, utils, Flickity) {\n 'use strict'; // -------------------------- Player -------------------------- //\n\n function Player(parent) {\n this.parent = parent;\n this.state = 'stopped'; // visibility change event handler\n\n this.onVisibilityChange = this.visibilityChange.bind(this);\n this.onVisibilityPlay = this.visibilityPlay.bind(this);\n }\n\n Player.prototype = Object.create(EvEmitter.prototype); // start play\n\n Player.prototype.play = function () {\n if (this.state == 'playing') {\n return;\n } // do not play if page is hidden, start playing when page is visible\n\n\n var isPageHidden = document.hidden;\n\n if (isPageHidden) {\n document.addEventListener('visibilitychange', this.onVisibilityPlay);\n return;\n }\n\n this.state = 'playing'; // listen to visibility change\n\n document.addEventListener('visibilitychange', this.onVisibilityChange); // start ticking\n\n this.tick();\n };\n\n Player.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; // default to 3 seconds\n\n time = typeof time == 'number' ? time : 3000;\n\n var _this = this; // HACK: reset ticks if stopped and started within interval\n\n\n this.clear();\n this.timeout = setTimeout(function () {\n _this.parent.next(true);\n\n _this.tick();\n }, time);\n };\n\n Player.prototype.stop = function () {\n this.state = 'stopped';\n this.clear(); // remove visibility change event\n\n document.removeEventListener('visibilitychange', this.onVisibilityChange);\n };\n\n Player.prototype.clear = function () {\n clearTimeout(this.timeout);\n };\n\n Player.prototype.pause = function () {\n if (this.state == 'playing') {\n this.state = 'paused';\n this.clear();\n }\n };\n\n Player.prototype.unpause = function () {\n // re-start play if paused\n if (this.state == 'paused') {\n this.play();\n }\n }; // pause if page visibility is hidden, unpause if visible\n\n\n Player.prototype.visibilityChange = function () {\n var isPageHidden = document.hidden;\n this[isPageHidden ? 'pause' : 'unpause']();\n };\n\n Player.prototype.visibilityPlay = function () {\n this.play();\n document.removeEventListener('visibilitychange', this.onVisibilityPlay);\n }; // -------------------------- Flickity -------------------------- //\n\n\n utils.extend(Flickity.defaults, {\n pauseAutoPlayOnHover: true\n });\n Flickity.createMethods.push('_createPlayer');\n var proto = Flickity.prototype;\n\n proto._createPlayer = function () {\n this.player = new Player(this);\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\n proto.activatePlayer = function () {\n if (!this.options.autoPlay) {\n return;\n }\n\n this.player.play();\n this.element.addEventListener('mouseenter', this);\n }; // Player API, don't hate the ... thanks I know where the door is\n\n\n proto.playPlayer = function () {\n this.player.play();\n };\n\n proto.stopPlayer = function () {\n this.player.stop();\n };\n\n proto.pausePlayer = function () {\n this.player.pause();\n };\n\n proto.unpausePlayer = function () {\n this.player.unpause();\n };\n\n proto.deactivatePlayer = function () {\n this.player.stop();\n this.element.removeEventListener('mouseenter', this);\n }; // ----- mouseenter/leave ----- //\n // pause auto-play on hover\n\n\n proto.onmouseenter = function () {\n if (!this.options.pauseAutoPlayOnHover) {\n return;\n }\n\n this.player.pause();\n this.element.addEventListener('mouseleave', this);\n }; // resume auto-play on hover off\n\n\n proto.onmouseleave = function () {\n this.player.unpause();\n this.element.removeEventListener('mouseleave', this);\n }; // ----- ----- //\n\n\n Flickity.Player = Player;\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\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', 'fizzy-ui-utils/utils'], function (Flickity, utils) {\n return factory(window, Flickity, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, utils) {\n 'use strict'; // append cells to a document fragment\n\n function getCellsFragment(cells) {\n var fragment = document.createDocumentFragment();\n cells.forEach(function (cell) {\n fragment.appendChild(cell.element);\n });\n return fragment;\n } // -------------------------- add/remove cell prototype -------------------------- //\n\n\n var proto = Flickity.prototype;\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 */\n\n proto.insert = function (elems, index) {\n var cells = this._makeCells(elems);\n\n if (!cells || !cells.length) {\n return;\n }\n\n var len = this.cells.length; // default to append\n\n index = index === undefined ? len : index; // add cells with document fragment\n\n var fragment = getCellsFragment(cells); // append to slider\n\n var isAppend = index == len;\n\n if (isAppend) {\n this.slider.appendChild(fragment);\n } else {\n var insertCellElement = this.cells[index].element;\n this.slider.insertBefore(fragment, insertCellElement);\n } // add to this.cells\n\n\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\n this.cellChange(index, true);\n };\n\n proto.append = function (elems) {\n this.insert(elems, this.cells.length);\n };\n\n proto.prepend = function (elems) {\n this.insert(elems, 0);\n };\n /**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\n\n\n proto.remove = function (elems) {\n var cells = this.getCells(elems);\n\n if (!cells || !cells.length) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1; // remove cells from collection & DOM\n\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 this.cellChange(minCellIndex, true);\n };\n /**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\n\n\n proto.cellSizeChange = function (elem) {\n var cell = this.getCell(elem);\n\n if (!cell) {\n return;\n }\n\n cell.getSize();\n var index = this.cells.indexOf(cell);\n this.cellChange(index);\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 */\n\n\n proto.cellChange = function (changedCellIndex, isPositioningSlider) {\n var prevSelectedElem = this.selectedElement;\n\n this._positionCells(changedCellIndex);\n\n this._getWrapShiftCells();\n\n this.setGallerySize(); // update selectedIndex\n // try to maintain position & select previous selected element\n\n var cell = this.getCell(prevSelectedElem);\n\n if (cell) {\n this.selectedIndex = this.getCellSlideIndex(cell);\n }\n\n this.selectedIndex = Math.min(this.slides.length - 1, this.selectedIndex);\n this.emitEvent('cellChange', [changedCellIndex]); // position slider\n\n this.select(this.selectedIndex); // do not position slider after lazy load\n\n if (isPositioningSlider) {\n this.positionSliderAtSelected();\n }\n }; // ----- ----- //\n\n\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n// lazyload\n(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', 'fizzy-ui-utils/utils'], function (Flickity, utils) {\n return factory(window, Flickity, utils);\n });\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(window, require('./flickity'), require('fizzy-ui-utils'));\n } else {\n // browser global\n factory(window, window.Flickity, window.fizzyUIUtils);\n }\n})(window, function factory(window, Flickity, utils) {\n 'use strict';\n\n Flickity.createMethods.push('_createLazyload');\n var proto = Flickity.prototype;\n\n proto._createLazyload = function () {\n this.on('select', this.lazyLoad);\n };\n\n proto.lazyLoad = function () {\n var lazyLoad = this.options.lazyLoad;\n\n if (!lazyLoad) {\n return;\n } // get adjacent cells, use lazyLoad option for adjacent count\n\n\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements(adjCount); // get lazy images in those cells\n\n var lazyImages = [];\n cellElems.forEach(function (cellElem) {\n var lazyCellImages = getCellLazyImages(cellElem);\n lazyImages = lazyImages.concat(lazyCellImages);\n }); // load lazy images\n\n lazyImages.forEach(function (img) {\n new LazyLoader(img, this);\n }, this);\n };\n\n function 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\n if (lazyloadAttr || srcAttr || srcsetAttr) {\n return [cellElem];\n }\n } // select lazy images in cell\n\n\n var lazySelector = 'img[data-flickity-lazyload], ' + 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll(lazySelector);\n return utils.makeArray(imgs);\n } // -------------------------- LazyLoader -------------------------- //\n\n /**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\n\n\n function LazyLoader(img, flickity) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n }\n\n LazyLoader.prototype.handleEvent = utils.handleEvent;\n\n LazyLoader.prototype.load = function () {\n this.img.addEventListener('load', this);\n this.img.addEventListener('error', this); // get src & srcset\n\n var src = this.img.getAttribute('data-flickity-lazyload') || this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset'); // set src & serset\n\n this.img.src = src;\n\n if (srcset) {\n this.img.setAttribute('srcset', srcset);\n } // remove attr\n\n\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\n LazyLoader.prototype.onload = function (event) {\n this.complete(event, 'flickity-lazyloaded');\n };\n\n LazyLoader.prototype.onerror = function (event) {\n this.complete(event, 'flickity-lazyerror');\n };\n\n LazyLoader.prototype.complete = function (event, className) {\n // unbind events\n this.img.removeEventListener('load', this);\n this.img.removeEventListener('error', this);\n var cell = this.flickity.getParentCell(this.img);\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange(cellElem);\n this.img.classList.add(className);\n this.flickity.dispatchEvent('lazyLoad', event, cellElem);\n }; // ----- ----- //\n\n\n Flickity.LazyLoader = LazyLoader;\n return Flickity;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n\n var argType = _typeof(arg);\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg) && arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n } else if (argType === 'object') {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && _typeof(define.amd) === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\n }\n})();","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function (window, factory) {\n var globalInstall = function globalInstall() {\n factory(window.lazySizes);\n window.removeEventListener('lazyunveilread', globalInstall, true);\n };\n\n factory = factory.bind(null, window, window.document);\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n factory(require('lazysizes'));\n } else if (window.lazySizes) {\n globalInstall();\n } else {\n window.addEventListener('lazyunveilread', globalInstall, true);\n }\n})(window, function (window, document, lazySizes) {\n 'use strict';\n\n if (!window.addEventListener) {\n return;\n }\n\n var rAF = window.requestAnimationFrame || setTimeout;\n\n var addObserver = function addObserver() {\n var connect, disconnect, observer, connected;\n var lsCfg = lazySizes.cfg;\n var attributes = {\n 'data-bgset': 1,\n 'data-include': 1,\n 'data-poster': 1,\n 'data-bg': 1,\n 'data-script': 1\n };\n var regClassTest = '(\\\\s|^)(' + lsCfg.loadedClass;\n var docElem = document.documentElement;\n\n var setClass = function setClass(target) {\n rAF(function () {\n lazySizes.rC(target, lsCfg.loadedClass);\n\n if (lsCfg.unloadedClass) {\n lazySizes.rC(target, lsCfg.unloadedClass);\n }\n\n lazySizes.aC(target, lsCfg.lazyClass);\n\n if (target.style.display == 'none' || target.parentNode && target.parentNode.style.display == 'none') {\n setTimeout(function () {\n lazySizes.loader.unveil(target);\n }, 0);\n }\n });\n };\n\n var onMutation = function onMutation(mutations) {\n var i, len, mutation, target;\n\n for (i = 0, len = mutations.length; i < len; i++) {\n mutation = mutations[i];\n target = mutation.target;\n\n if (!target.getAttribute(mutation.attributeName)) {\n continue;\n }\n\n if (target.localName == 'source' && target.parentNode) {\n target = target.parentNode.querySelector('img');\n }\n\n if (target && regClassTest.test(target.className)) {\n setClass(target);\n }\n }\n };\n\n if (lsCfg.unloadedClass) {\n regClassTest += '|' + lsCfg.unloadedClass;\n }\n\n regClassTest += '|' + lsCfg.loadingClass + ')(\\\\s|$)';\n regClassTest = new RegExp(regClassTest);\n attributes[lsCfg.srcAttr] = 1;\n attributes[lsCfg.srcsetAttr] = 1;\n\n if (window.MutationObserver) {\n observer = new MutationObserver(onMutation);\n\n connect = function connect() {\n if (!connected) {\n connected = true;\n observer.observe(docElem, {\n subtree: true,\n attributes: true,\n attributeFilter: Object.keys(attributes)\n });\n }\n };\n\n disconnect = function disconnect() {\n if (connected) {\n connected = false;\n observer.disconnect();\n }\n };\n } else {\n docElem.addEventListener('DOMAttrModified', function () {\n var runs;\n var modifications = [];\n\n var callMutations = function callMutations() {\n onMutation(modifications);\n modifications = [];\n runs = false;\n };\n\n return function (e) {\n if (connected && attributes[e.attrName] && e.newValue) {\n modifications.push({\n target: e.target,\n attributeName: e.attrName\n });\n\n if (!runs) {\n setTimeout(callMutations);\n runs = true;\n }\n }\n };\n }(), true);\n\n connect = function connect() {\n connected = true;\n };\n\n disconnect = function disconnect() {\n connected = false;\n };\n }\n\n addEventListener('lazybeforeunveil', disconnect, true);\n addEventListener('lazybeforeunveil', connect);\n addEventListener('lazybeforesizes', disconnect, true);\n addEventListener('lazybeforesizes', connect);\n connect();\n removeEventListener('lazybeforeunveil', addObserver);\n };\n\n addEventListener('lazybeforeunveil', addObserver);\n});","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport { makeClassNames } from '../../../utils';\nimport './RatioContainer.scss';\n\nvar aspectRatioToPercent = function aspectRatioToPercent(ratio) {\n var splitRatio = ratio.split(':');\n return (splitRatio[1] / splitRatio[0] * 100).toFixed(2).replace(/\\.?0+$/, '');\n};\n\nvar isValidNumber = function isValidNumber(value) {\n return typeof value === 'number' && value > 0;\n};\n\nvar calculateGcd = function calculateGcd(a, b) {\n return b === 0 ? a : calculateGcd(b, a % b);\n};\n\nvar RatioContainer = function RatioContainer(_ref) {\n var width = _ref.width,\n height = _ref.height,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, ['width', 'height', 'children']);\n\n var style = void 0;\n var classNames = 'buiRatioContainer';\n var isValid = isValidNumber(width) && isValidNumber(height);\n\n if (!isValid) {\n style = {\n paddingBottom: 0\n };\n } else {\n var gcd = calculateGcd(width, height);\n var ratio = width / gcd + ':' + height / gcd;\n style = {\n paddingBottom: aspectRatioToPercent(ratio) + '%'\n };\n }\n\n return /*#__PURE__*/React.createElement('div', _extends({\n className: makeClassNames('buiRatioContainer', {\n undeterminable: !isValid\n }),\n style: style\n }, rest), children);\n};\n\nexport default RatioContainer;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nimport React from 'react';\nimport Imgix from 'react-imgix';\nimport 'lazysizes';\nimport 'lazysizes/plugins/attrchange/ls.attrchange';\nimport { Sizes, makeClassNames } from '../../../utils';\nimport { RatioContainer } from './..';\nimport './LazyImage.scss';\nvar lazySizesAttrConfig = {\n src: 'data-src',\n srcSet: 'data-srcset',\n sizes: 'data-sizes'\n};\n\nvar LazyImage = function LazyImage(_ref) {\n var ratio = _ref.ratio,\n src = _ref.src,\n alt = _ref.alt,\n onClick = _ref.onClick,\n _ref$imgixParams = _ref.imgixParams,\n imgixParams = _ref$imgixParams === undefined ? {\n fit: 'crop',\n q: 88\n } : _ref$imgixParams,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, ['ratio', 'src', 'alt', 'onClick', 'imgixParams', 'className']);\n\n return /*#__PURE__*/React.createElement(RatioContainer, {\n width: ratio[0],\n height: ratio[1],\n onClick: onClick\n }, /*#__PURE__*/React.createElement(Imgix, _extends({\n disableLibraryParam: true,\n htmlAttributes: {\n alt: alt\n },\n className: makeClassNames('lazyload buiLazyImage', {}, className),\n imgixParams: imgixParams,\n attributeConfig: lazySizesAttrConfig,\n src: src\n }, rest)));\n};\n\nexport default LazyImage;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Flickity v2.2.2\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(function (window, factory) {\n // universal module definition\n if (typeof define == 'function' && define.amd) {\n // AMD\n define(['./flickity', './drag', './prev-next-button', './page-dots', './player', './add-remove-cell', './lazyload'], factory);\n } else if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) == 'object' && module.exports) {\n // CommonJS\n module.exports = factory(require('./flickity'), require('./drag'), require('./prev-next-button'), require('./page-dots'), require('./player'), require('./add-remove-cell'), require('./lazyload'));\n }\n})(window, function factory(Flickity) {\n return Flickity;\n});"],"sourceRoot":""}