{"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":""}