{"version":3,"sources":["../../node_modules/browser-pack/_prelude.js","../../src/js/main.js","../../modules/footer-cta-blocks/footer-cta-blocks.js","../../modules/gallery/gallery.js","../../modules/header/header.js","../../modules/team-member-page/team-member-page.js","../../modules/hero/hero.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/collapse.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/modal.js","../../node_modules/bootstrap-sass/assets/javascripts/bootstrap/transition.js","../../src/js/lib/init-modules.js","../../src/js/lib/init-loading.js","../../node_modules/flickity/js/index.js","../../node_modules/flickity/js/drag.js","../../node_modules/flickity/js/flickity.js","../../node_modules/flickity/js/prev-next-button.js","../../node_modules/flickity/js/page-dots.js","../../node_modules/flickity/js/player.js","../../node_modules/flickity/js/add-remove-cell.js","../../node_modules/flickity/js/lazyload.js","../../node_modules/flickity/js/cell.js","../../node_modules/flickity/js/animate.js","../../node_modules/desandro-classie/classie.js","../../node_modules/eventie/eventie.js","../../node_modules/unidragger/unidragger.js","../../node_modules/fizzy-ui-utils/utils.js","../../node_modules/wolfy87-eventemitter/EventEmitter.js","../../node_modules/get-size/get-size.js","../../node_modules/tap-listener/tap-listener.js","../../node_modules/desandro-get-style-property/get-style-property.js","../../node_modules/unipointer/unipointer.js","../../node_modules/desandro-matches-selector/matches-selector.js","../../node_modules/doc-ready/doc-ready.js"],"names":["$","window","global","require","initializeModules","initializeLoading","FooterCallToActionBlocks","el","this","$el","document","documentElement","style","vectorEffect","$outlines","find","each","$wrapper","$polyline","on","lineLength","outerWidth","outerHeight","attr","resize","addClass","module","exports","Gallery","flickity","Flickity","wrapAround","Header","$items","event","isMobile","showSubMenu","currentTarget","bind","hideSubMenu","closest","$item","parent","hasClass","preventDefault","stopPropagation","length","click","toggleClass","prototype","innerWidth","animate","$subMenu","slideToggle","show","siblings","slideUp","hide","TeamMemberPage","parentEl","relatedTarget","parents","updateTeamMemberModal","focus","removeClass","teamMemberID","modal","imageURL","name","text","position","bio","html","allTeamMemberBlocks","currentIndex","index","value","console","log","Hero","getTargetFromTrigger","$trigger","href","target","replace","Plugin","option","$this","data","options","extend","Collapse","DEFAULTS","toggle","test","element","$element","id","transitioning","$parent","getParent","addAriaAndCollapsedClass","VERSION","TRANSITION_DURATION","dimension","hasWidth","activesData","actives","children","startEvent","Event","trigger","isDefaultPrevented","call","complete","support","transition","scrollSize","camelCase","join","one","proxy","emulateTransitionEnd","offsetHeight","i","end","isOpen","old","fn","collapse","Constructor","noConflict","e","$target","jQuery","_relatedTarget","Modal","$body","body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","load","BACKDROP_TRANSITION_DURATION","backdrop","keyboard","that","checkScrollbar","setScrollbar","escape","is","appendTo","scrollTop","adjustDialog","offsetWidth","enforceFocus","off","hideModal","has","which","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","remove","callback","doAnimate","createElement","callbackRemove","modalIsOverflowing","scrollHeight","clientHeight","css","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","documentElementRect","getBoundingClientRect","right","Math","abs","left","clientWidth","measureScrollbar","bodyPad","parseInt","scrollDiv","className","append","removeChild","showEvent","transitionEnd","transEndEventNames","WebkitTransition","MozTransition","OTransition","undefined","duration","called","setTimeout","special","bsTransitionEnd","bindType","delegateType","handle","handleObj","handler","apply","arguments","container","modules","querySelectorAll","getAttribute","Module","mod","$html","factory","define","amd","classie","eventie","Unidragger","utils","fizzyUIUtils","preventDefaultEvent","returnValue","defaults","draggable","createMethods","push","_createDrag","bindDrag","_uiChangeDrag","_childUIPointerDownDrag","unbindDrag","isDragBound","add","handles","viewport","bindHandles","unbindHandles","isFreeScrolling","pointerDownFocus","pointerDown","pointer","nodeName","type","isPointerDown","pointerIdentifier","_dragPointerDown","focused","activeElement","blur","dragX","x","_bindPostStartEvents","pointerDownScroll","getScrollPosition","dispatchEvent","touchStartEvents","touchstart","MSPointerDown","focusNodes","INPUT","SELECT","accessibility","prevScrollY","pageYOffset","scrollTo","pageXOffset","hasDragStarted","moveVector","pointerUp","_dragPointerUp","pointerDone","unbind","dragStart","dragStartPosition","startAnimation","dragMove","previousDragX","direction","rightToLeft","cells","originBound","max","endBound","min","getLastCell","dragMoveTime","Date","dragEnd","freeScroll","dragEndRestingSelect","restingX","getRestingPosition","selectedIndex","dragEndBoostSelect","select","distance","getCellDistance","positiveResting","_getClosestResting","negativeResting","increment","minDistance","Infinity","condition","contain","d","md","len","isWrapAround","cellIndex","modulo","cell","wrap","slideableWidth","floor","delta","staticClick","clickedCell","getParentCell","cellElem","indexOf","EventEmitter","getSize","Cell","animatePrototype","_Flickity","moveElements","elems","toElem","makeArray","appendChild","shift","queryElement","getQueryElement","constructor","_create","error","getComputedStyle","GUID","instances","cellAlign","freeScrollFriction","friction","percentPosition","selectedAttraction","setGallerySize","guid","flickityGUID","restingFrames","velocity","accel","originSide","setUnselectable","_createSlider","watchCSS","isResizeBound","method","activate","opts","isActive","cellElems","_filterFindCellElements","slider","reloadCells","tabIndex","emit","initialIndex","isInitActivated","filterFindElements","cellSelector","_makeCells","positionCells","_getWrapShiftCells","elem","_sizeCells","_positionCells","maxCellHeight","cellX","startCell","size","setPosition","_containCells","_init","reposition","positionSliderAtSelected","setCellAlign","cursorPosition","cellAlignShorthands","center","shorthand","height","_unshiftCells","beforeShiftCells","afterShiftCells","gapX","_getGapCells","startMargin","endMargin","firstCellStartMargin","lastCell","contentWidth","endLimit","isContentSmaller","setDefaultTarget","args","emitArgs","concat","emitEvent","$event","isWrap","isInstant","setSelectedCell","previous","next","_removeSelectedCellClass","selectedCell","selectedElement","getCell","getCells","getCellElements","getAdjacentCellElements","adjCount","uiChange","childUIPointerDown","onresize","debounceMethod","supportsConditionalCSS","supports","cssText","createTextNode","head","afterContent","content","watchOption","deactivate","onkeydown","keyCode","leftMethod","rightMethod","destroy","removeAttribute","removeData","isIE8","setAttribute","htmlInit","bridget","TapListener","PrevNextButton","getArrowMovements","shape","x0","x1","y1","x2","y2","x3","svgURI","supportsInlineSVG","checkSupport","div","innerHTML","firstChild","namespaceURI","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","setArrowText","_this","onCellSelect","update","onTap","button","bindTap","createElementNS","path","pathMovements","arrowShape","parentOptions","arrowText","leftArrowText","rightArrowText","setText","handleEvent","onclick","enable","disabled","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","PageDots","holder","dots","updateSelected","setDots","addDots","removeDots","count","fragment","createDocumentFragment","newDots","dot","splice","selectedDot","pageDots","_createPageDots","activatePageDots","onCellAddedRemovedPageDots","deactivatePageDots","Player","state","visibilityEvent","onVisibilityChange","visibilityChange","hiddenProperty","play","addEventListener","tick","time","autoPlay","clear","timeout","stop","removeEventListener","clearTimeout","pause","unpause","isHidden","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","isMouseenterBound","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","getCellsFragment","insert","isAppend","insertCellElement","insertBefore","endCells","selectedIndexDelta","_cellAddedRemoved","prepend","wasBefore","removeFrom","changedCellIndex","cellChange","cellSizeChange","isPositioningSlider","prevSlideableWidth","deltaX","positionSlider","getCellLazyImages","imgs","LazyLoader","img","_createLazyload","lazyLoad","lazyImages","lazyCellImages","src","onload","onerror","create","side","renderPosition","marginProperty","width","getPositionValue","wrapShift","parentNode","getStyleProperty","prefix","lastTime","prefixes","split","requestAnimationFrame","cancelAnimationFrame","currTime","getTime","timeToCall","proto","isAnimating","applyDragForce","applySelectedAttraction","previousX","integratePhysics","settle","transformProperty","is3d","shiftWrapCells","round","beforeGap","_shiftCells","afterGap","gap","cellShift","getFrictionFactor","applyForce","force","dragVelocity","dragForce","classReg","RegExp","c","classList","contains","getIEEvent","obj","srcElement","docElem","attachEvent","detachEvent","err","Unipointer","noop","noDragStart","_bindHandles","navigator","isBind","binderExtra","pointerEnabled","touchAction","msPointerEnabled","msTouchAction","disableImgOndragstart","bindMethod","_bindStartEvent","ondragstart","images","pointerDownPoint","getPointerPoint","isTouchstart","targetNodeName","pointerMove","_dragPointerMove","_dragMove","movePoint","y","isDragging","_dragStart","_dragEnd","_staticClick","dragStartPoint","isPreventingClicks","isIgnoringMouseUp","onscroll","scroll","scrollMoveX","scrollMoveY","_pointerDone","pageX","clientX","pageY","clientY","isPageOffset","scrollLeft","docReady","matchesSelector","a","b","prop","num","objToString","Object","toString","isArray","ary","Array","isElement","HTMLElement","nodeType","setTextProperty","textContent","selector","querySelector","ffElems","childElems","j","jLen","_class","methodName","threshold","timeoutName","toDashed","str","match","$1","$2","toLowerCase","WidgetClass","namespace","dashedNamespace","dataAttr","JSON","parse","instance","indexOfListener","listeners","listener","alias","originalGlobalValue","getListeners","evt","response","key","events","_getEvents","hasOwnProperty","flattenListeners","flatListeners","getListenersAsObject","addListener","listenerIsWrapped","once","addOnceListener","defineEvent","defineEvents","evts","removeListener","addListeners","manipulateListeners","removeListeners","single","multiple","removeEvent","_events","removeAllListeners","_getOnceReturnValue","slice","setOnceReturnValue","_onceReturnValue","getStyleSize","parseFloat","isValid","isNaN","getZeroSize","innerHeight","measurements","measurement","defineGetSize","setup","isSetup","getStyle","getStyleFn","currentStyle","logError","boxSizingProp","padding","borderStyle","borderWidth","isBoxSizeOuter","display","isBorderBox","mungeNonPixel","paddingWidth","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","rs","runtimeStyle","rsLeft","pixelLeft","message","unbindTap","tapElement","pointerPoint","boundingRect","scrollX","scrollY","isInside","top","bottom","propName","docElemStyle","charAt","toUpperCase","prefixed","bindStartEvent","unbindStartEvent","getTouch","touches","touch","identifier","onmousedown","_pointerDown","ontouchstart","changedTouches","onMSPointerDown","onpointerdown","pointerId","postStartEvents","mousedown","pointerdown","node","evnt","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onMSPointerMove","onpointermove","ontouchmove","onmouseup","_pointerUp","onMSPointerUp","onpointerup","ontouchend","onMSPointerCancel","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","ElemProto","matchesMethod","checkParent","query","matchChild","matches","supportsOrphans","Element","isReady","queue","onReady","isIE8NotReady","readyState","defineDocReady"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o li');\n\n this.$items\n .on('mouseenter', function(event) {\n if(!this.isMobile()) {\n this.showSubMenu($(event.currentTarget), false);\n }\n }.bind(this))\n .on('mouseleave', function(event) {\n if(!this.isMobile()) {\n this.hideSubMenu($(event.currentTarget), false);\n }\n }.bind(this))\n .on('focus', 'a', function(event) {\n if(!this.isMobile()) {\n this.showSubMenu($(event.currentTarget).closest('li'), false);\n }\n }.bind(this))\n .on('click', 'a', function(event) {\n var $item = $(event.currentTarget).parent();\n if(this.isMobile() && $item.hasClass('menu-item-has-children')) {\n event.preventDefault();\n this.showSubMenu($item, true);\n }\n }.bind(this));\n\n this.$el.on('focus click', '*', function(event) {\n event.stopPropagation();\n })\n\n $('body').on('focus click', '*', function(event) {\n if(!$(event.currentTarget).closest('.navbar-nav').length) {\n this.hideSubMenu(this.$items, false);\n }\n }.bind(this));\n\n $('.navbar-toggle').click(function(){\n $('.navbar-collapse, .navbar-toggle').toggleClass('active');\n \t$('.princo-header').toggleClass('menu-open');\n $('body').toggleClass('nav-open');\n });\n}\n\nHeader.prototype = {\n isMobile: function() {\n return window.innerWidth < 992;\n },\n showSubMenu: function($item, animate) {\n var $subMenu = $item.find('.sub-menu');\n\n if($subMenu.length) {\n if(animate) {\n $subMenu.slideToggle();\n } else {\n $subMenu.show();\n }\n }\n\n this.hideSubMenu($item.siblings(), animate);\n },\n hideSubMenu: function($item, animate) {\n var $subMenu = $item.find('.sub-menu');\n\n if($subMenu.length) {\n if(animate) {\n $subMenu.slideUp();\n } else {\n $subMenu.hide();\n }\n }\n }\n}\n\nmodule.exports = Header;","var $ = (typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null);\n\n/**\n * Initializes the team members page JS.\n * @constructor\n * @param {Object} el - The team members list wrapper.\n */\nfunction TeamMemberPage(el) {\n\tvar $body = $( 'body' );\n this.el = el;\n\n $('#teamMemberModal').on('show.bs.modal', function (event) {\n \tvar parentEl = $(event.relatedTarget).parents('.team-member-block');\n\t updateTeamMemberModal(parentEl, this);\n\t $(this).focus();\n\t}).on('shown.bs.modal', function() {\n\t\t$('body').addClass('modal-shown');\n\t}).on('hide.bs.modal', function() {\n\t\t$('body').removeClass('modal-shown');\n\t});\n\t\n\t$('.modal-nav-links:not(.inactive)').click(function(el){\n\t\tel.preventDefault();\n\t\tvar teamMemberID = $(this).attr('data-team-member-id');\n\t\tupdateTeamMemberModal($('#' + teamMemberID), $('#teamMemberModal'));\n\t});\n\n}\n\nfunction updateTeamMemberModal (parentEl, modal) {\n\tvar modal = $(modal),\n \t\timageURL = $('img', parentEl).attr('src'),\n \t\tname = $('.team-member-name', parentEl).text(),\n \t\tposition = $('.title-position', parentEl).text(),\n \t\tbio = $('.team-member-bio', parentEl).html(),\n \t\tallTeamMemberBlocks = $('.team-member-block'),\n \t\tcurrentIndex = 0;\n\n\t// Update modal content\n modal.find('.modal-title').text(name);\n modal.find('.title-position').text(position);\n modal.find('.modal-body .team-member-bio').html(bio);\n modal.find('.modal-body img').attr('src', imageURL);\n modal.find('.modal-body img').attr('alt', name);\n\n\t// Handle next/previous links\n\tallTeamMemberBlocks.each(function(index, value){\n\t\tif ($(value).attr('id') == parentEl.attr('id')) {\n\t\t\tcurrentIndex = index;\n\t\t}\n\t});\n\tconsole.log();\n\tif (currentIndex !== 0) {\n \tmodal.find('.previous-team-member').attr('data-team-member-id', $(allTeamMemberBlocks[(currentIndex-1)]).attr('id')).removeClass('inactive');\n\t} else {\n\t\tmodal.find('.previous-team-member').addClass('inactive');\n\t}\n\n\tif (currentIndex+1 !== allTeamMemberBlocks.length) {\n \tmodal.find('.next-team-member').attr('data-team-member-id', $(allTeamMemberBlocks[(currentIndex+1)]).attr('id')).removeClass('inactive');\n\t} else {\n\t\tmodal.find('.next-team-member').addClass('inactive');\n\t}\n}\n\nmodule.exports = TeamMemberPage;","/**\n * Initializes the hero module.\n * @constructor\n * @param {Object} el - The hero element.\n */\nfunction Hero(el) {\n this.el = el;\n}\n\nmodule.exports = Hero;","/* ========================================================================\n * Bootstrap: collapse.js v3.3.6\n * http://getbootstrap.com/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.3.6'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.3.6\n * http://getbootstrap.com/javascript/#modals\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.3.6'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) // strip for ie7\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: transition.js v3.3.6\n * http://getbootstrap.com/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // http://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","var $ = (typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null);\n\n/**\n * Finds all elements with a \"data-module-init\" attribute\n * and calls the corresponding script\n */\nfunction initializeModules(container) {\n container = container || document;\n\n var modules = container.querySelectorAll('[data-module-init]');\n\n for (var i = 0; i < modules.length; i++) {\n var el = modules[i];\n var $el = $(el);\n var name = el.getAttribute('data-module-init');\n\n // Find the module script\n try {\n var Module = require('modules/'+name);\n } catch(e) {\n var Module = false;\n }\n\n // Initialize the module with the calling element\n if(typeof Module === 'function' && !$el.data('module')) {\n var mod = new Module(el);\n $(el).data('module', mod);\n }\n }\n}\n\nmodule.exports = initializeModules;\n","var $ = (typeof window !== \"undefined\" ? window['jQuery'] : typeof global !== \"undefined\" ? global['jQuery'] : null);\n\nfunction initializeLoading() {\n var $html = $('html');\n var $body = $('body');\n\n $html.one('typekit-finish', function() {\n $body.addClass('ready');\n });\n\n if($html.hasClass('wf-active') || $html.hasClass('wf-inactive')) {\n $html.trigger('typekit-finish');\n }\n}\n\nmodule.exports = initializeLoading;","/*!\n * Flickity v1.2.1\n * Touch, responsive, flickable galleries\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * http://flickity.metafizzy.co\n * Copyright 2015 Metafizzy\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload'\n ], factory );\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n})( window, function factory( Flickity ) {\n /*jshint strict: false*/\n return Flickity;\n});\n","( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'classie/classie',\n 'eventie/eventie',\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils'\n ], function( classie, eventie, Flickity, Unidragger, utils ) {\n return factory( window, classie, eventie, Flickity, Unidragger, utils );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-classie'),\n require('eventie'),\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.classie,\n window.eventie,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, classie, eventie, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// handle IE8 prevent default\nfunction preventDefaultEvent( event ) {\n if ( event.preventDefault ) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n}\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: true\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nutils.extend( Flickity.prototype, Unidragger.prototype );\n\n// -------------------------- -------------------------- //\n\nFlickity.prototype._createDrag = function() {\n this.on( 'activate', this.bindDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'childUIPointerDown', this._childUIPointerDownDrag );\n this.on( 'deactivate', this.unbindDrag );\n};\n\nFlickity.prototype.bindDrag = function() {\n if ( !this.options.draggable || this.isDragBound ) {\n return;\n }\n classie.add( this.element, 'is-draggable' );\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.isDragBound = true;\n};\n\nFlickity.prototype.unbindDrag = function() {\n if ( !this.isDragBound ) {\n return;\n }\n classie.remove( this.element, 'is-draggable' );\n this.unbindHandles();\n delete this.isDragBound;\n};\n\nFlickity.prototype._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\nFlickity.prototype._childUIPointerDownDrag = function( event ) {\n preventDefaultEvent( event );\n this.pointerDownFocus( event );\n};\n\n// -------------------------- pointer events -------------------------- //\n\nFlickity.prototype.pointerDown = function( event, pointer ) {\n // dismiss range sliders\n if ( event.target.nodeName == 'INPUT' && event.target.type == 'range' ) {\n // reset pointerDown logic\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n return;\n }\n\n this._dragPointerDown( event, pointer );\n\n // kludge to blur focused inputs in dragger\n var focused = document.activeElement;\n if ( focused && focused.blur && focused != this.element &&\n // do not blur body for IE9 & 10, #117\n focused != document.body ) {\n focused.blur();\n }\n this.pointerDownFocus( event );\n // stop if it was moving\n this.dragX = this.x;\n classie.add( this.viewport, 'is-pointer-down' );\n // bind move and end events\n this._bindPostStartEvents( event );\n // track scrolling\n this.pointerDownScroll = Unidragger.getScrollPosition();\n eventie.bind( window, 'scroll', this );\n\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar touchStartEvents = {\n touchstart: true,\n MSPointerDown: true\n};\n\nvar focusNodes = {\n INPUT: true,\n SELECT: true\n};\n\nFlickity.prototype.pointerDownFocus = function( event ) {\n // focus element, if not touch, and its not an input or select\n if ( !this.options.accessibility || touchStartEvents[ event.type ] ||\n focusNodes[ event.target.nodeName ] ) {\n return;\n }\n var prevScrollY = window.pageYOffset;\n this.element.focus();\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// ----- move ----- //\n\nFlickity.prototype.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > 3;\n};\n\n// ----- up ----- //\n\nFlickity.prototype.pointerUp = function( event, pointer ) {\n classie.remove( this.viewport, 'is-pointer-down' );\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nFlickity.prototype.pointerDone = function() {\n eventie.unbind( window, 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nFlickity.prototype.dragStart = function( event, pointer ) {\n this.dragStartPosition = this.x;\n this.startAnimation();\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nFlickity.prototype.dragMove = function( event, pointer, moveVector ) {\n preventDefaultEvent( event );\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.cells.length ) {\n // slow drag\n var originBound = Math.max( -this.cells[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastCell().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nFlickity.prototype.dragEnd = function( event, pointer ) {\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding cells\n // so bounding cells can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.cells[0].target &&\n -restingX < this.getLastCell().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n this.select( index );\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nFlickity.prototype.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected cell\n var distance = Math.abs( this.getCellDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nFlickity.prototype._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getCellDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment\n };\n};\n\n/**\n * measure distance between x and a cell target\n * @param {Number} x\n * @param {Integer} index - cell index\n */\nFlickity.prototype.getCellDistance = function( x, index ) {\n var len = this.cells.length;\n // wrap around if at least 2 cells\n var isWrapAround = this.options.wrapAround && len > 1;\n var cellIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n return null;\n }\n // add distance for wrap-around cells\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\n return x - ( cell.target + wrap );\n};\n\nFlickity.prototype.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getCellDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nFlickity.prototype.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 && utils.indexOf( this.cells, clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n","/**\n * Flickity main\n */\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'classie/classie',\n 'eventEmitter/EventEmitter',\n 'eventie/eventie',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './animate'\n ], function( classie, EventEmitter, eventie, getSize, utils, Cell, animatePrototype ) {\n return factory( window, classie, EventEmitter, eventie, getSize, utils, Cell, animatePrototype );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-classie'),\n require('wolfy87-eventemitter'),\n require('eventie'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.classie,\n window.EventEmitter,\n window.eventie,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, classie, EventEmitter, eventie, getSize,\n utils, Cell, animatePrototype ) {\n\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n elems = utils.makeArray( elems );\n while ( elems.length ) {\n toElem.appendChild( elems.shift() );\n }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n var queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) {\n console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n }\n return;\n }\n this.element = queryElement;\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\n// inherit EventEmitter\nutils.extend( Flickity.prototype, EventEmitter.prototype );\n\nFlickity.prototype._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.accel = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n Flickity.setUnselectable( this.viewport );\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n eventie.bind( window, 'resize', this );\n this.isResizeBound = true;\n }\n\n for ( var i=0, len = Flickity.createMethods.length; i < len; i++ ) {\n var method = Flickity.createMethods[i];\n this[ method ]();\n }\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nFlickity.prototype.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nFlickity.prototype.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n classie.add( this.element, 'flickity-enabled' );\n if ( this.options.rightToLeft ) {\n classie.add( this.element, 'flickity-rtl' );\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n eventie.bind( this.element, 'keydown', this );\n }\n\n this.emit('activate');\n\n var index;\n var initialIndex = this.options.initialIndex;\n if ( this.isInitActivated ) {\n index = this.selectedIndex;\n } else if ( initialIndex !== undefined ) {\n index = this.cells[ initialIndex ] ? initialIndex : 0;\n } else {\n index = 0;\n }\n // select instantly\n this.select( index, false, true );\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n};\n\n// slider positions the cells\nFlickity.prototype._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\nFlickity.prototype._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nFlickity.prototype.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Flickity Cells\n */\nFlickity.prototype._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = [];\n for ( var i=0, len = cellElems.length; i < len; i++ ) {\n var elem = cellElems[i];\n var cell = new Cell( elem, this );\n cells.push( cell );\n }\n\n return cells;\n};\n\nFlickity.prototype.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\n// positions all cells\nFlickity.prototype.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nFlickity.prototype._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var cell;\n for ( var len = this.cells.length, i=index; i < len; i++ ) {\n cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // contain cell target\n this._containCells();\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells\n */\nFlickity.prototype._sizeCells = function( cells ) {\n for ( var i=0, len = cells.length; i < len; i++ ) {\n var cell = cells[i];\n cell.getSize();\n }\n};\n\n// alias _init for jQuery plugin .flickity()\nFlickity.prototype._init =\nFlickity.prototype.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nFlickity.prototype.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5\n },\n left: {\n left: 0,\n right: 1\n },\n right: {\n right: 0,\n left: 1\n }\n};\n\nFlickity.prototype.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nFlickity.prototype.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n this.viewport.style.height = this.maxCellHeight + 'px';\n }\n};\n\nFlickity.prototype._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nFlickity.prototype._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nFlickity.prototype._containCells = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var startMargin = this.options.rightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = this.options.rightToLeft ? 'marginLeft' : 'marginRight';\n var firstCellStartMargin = this.cells[0].size[ startMargin ];\n var lastCell = this.getLastCell();\n var contentWidth = this.slideableWidth - lastCell.size[ endMargin ];\n var endLimit = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // contain each cell target\n for ( var i=0, len = this.cells.length; i < len; i++ ) {\n var cell = this.cells[i];\n // reset default target\n cell.setDefaultTarget();\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n cell.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n cell.target = Math.max( cell.target, this.cursorPosition + firstCellStartMargin );\n cell.target = Math.min( cell.target, endLimit );\n }\n }\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nFlickity.prototype.dispatchEvent = function( type, event, args ) {\n var emitArgs = [ event ].concat( args );\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n if ( event ) {\n // create jQuery event\n var $event = jQuery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n } else {\n // just trigger with type if no event available\n this.$element.trigger( type, args );\n }\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the cell\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 */\nFlickity.prototype.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n // wrap position so slider is within normal area\n var len = this.cells.length;\n if ( this.options.wrapAround && len > 1 ) {\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n }\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, len );\n }\n // bail if invalid index\n if ( !this.cells[ index ] ) {\n return;\n }\n this.selectedIndex = index;\n this.setSelectedCell();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n this.dispatchEvent('cellSelect');\n};\n\nFlickity.prototype.previous = function( isWrap ) {\n this.select( this.selectedIndex - 1, isWrap );\n};\n\nFlickity.prototype.next = function( isWrap ) {\n this.select( this.selectedIndex + 1, isWrap );\n};\n\nFlickity.prototype.setSelectedCell = function() {\n this._removeSelectedCellClass();\n this.selectedCell = this.cells[ this.selectedIndex ];\n this.selectedElement = this.selectedCell.element;\n classie.add( this.selectedElement, 'is-selected' );\n};\n\nFlickity.prototype._removeSelectedCellClass = function() {\n if ( this.selectedCell ) {\n classie.remove( this.selectedCell.element, 'is-selected' );\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem\n * @returns {Flickity.Cell} item\n */\nFlickity.prototype.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i=0, len = this.cells.length; i < len; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {Element, Array, NodeList} elems\n * @returns {Array} cells - Flickity.Cells\n */\nFlickity.prototype.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n for ( var i=0, len = elems.length; i < len; i++ ) {\n var elem = elems[i];\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nFlickity.prototype.getCellElements = function() {\n var cellElems = [];\n for ( var i=0, len = this.cells.length; i < len; i++ ) {\n cellElems.push( this.cells[i].element );\n }\n return cellElems;\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem\n * @returns {Flickit.Cell} cell\n */\nFlickity.prototype.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a cell\n * @param {Integer} adjCount - number of adjacent cells\n * @param {Integer} index - index of cell to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nFlickity.prototype.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return [ this.selectedElement ];\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.cells.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\n var cellIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var cell = this.cells[ cellIndex ];\n if ( cell ) {\n cellElems.push( cell.element );\n }\n }\n return cellElems;\n};\n\n// -------------------------- events -------------------------- //\n\nFlickity.prototype.uiChange = function() {\n this.emit('uiChange');\n};\n\nFlickity.prototype.childUIPointerDown = function( event ) {\n this.emitEvent( 'childUIPointerDown', [ event ] );\n};\n\n// ----- resize ----- //\n\nFlickity.prototype.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nFlickity.prototype.resize = function() {\n if ( !this.isActive ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.positionSliderAtSelected();\n};\n\nvar supportsConditionalCSS = Flickity.supportsConditionalCSS = ( function() {\n var supports;\n return function checkSupport() {\n if ( supports !== undefined ) {\n return supports;\n }\n if ( !getComputedStyle ) {\n supports = false;\n return;\n }\n // style body's :after and check that\n var style = document.createElement('style');\n var cssText = document.createTextNode('body:after { content: \"foo\"; display: none; }');\n style.appendChild( cssText );\n document.head.appendChild( style );\n var afterContent = getComputedStyle( document.body, ':after' ).content;\n // check if able to get :after content\n supports = afterContent.indexOf('foo') != -1;\n document.head.removeChild( style );\n return supports;\n };\n})();\n\n// watches the :after property, activates/deactivates\nFlickity.prototype.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n var supports = supportsConditionalCSS();\n if ( !supports ) {\n // activate if watch option is fallbackOn\n var method = watchOption == 'fallbackOn' ? 'activate' : 'deactivate';\n this[ method ]();\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nFlickity.prototype.onkeydown = function( event ) {\n // only work if element is in focus\n if ( !this.options.accessibility ||\n ( document.activeElement && document.activeElement != this.element ) ) {\n return;\n }\n\n if ( event.keyCode == 37 ) {\n // go left\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n } else if ( event.keyCode == 39 ) {\n // go right\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nFlickity.prototype.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n classie.remove( this.element, 'flickity-enabled' );\n classie.remove( this.element, 'flickity-rtl' );\n // destroy cells\n for ( var i=0, len = this.cells.length; i < len; i++ ) {\n var cell = this.cells[i];\n cell.destroy();\n }\n this._removeSelectedCellClass();\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n eventie.unbind( this.element, 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emit('deactivate');\n};\n\nFlickity.prototype.destroy = function() {\n this.deactivate();\n if ( this.isResizeBound ) {\n eventie.unbind( window, 'resize', this );\n }\n this.emit('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( Flickity.prototype, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n// quick check for IE8\nvar isIE8 = 'attachEvent' in window;\n\nFlickity.setUnselectable = function( elem ) {\n if ( !isIE8 ) {\n return;\n }\n // IE8 prevent child from changing focus http://stackoverflow.com/a/17525223/182183\n elem.setAttribute( 'unselectable', 'on' );\n};\n\n/**\n * get Flickity instance from element\n * @param {Element} elem\n * @returns {Flickity}\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\nFlickity.Cell = Cell;\n\nreturn Flickity;\n\n}));\n","// -------------------------- prev/next button -------------------------- //\n\n( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'eventie/eventie',\n './flickity',\n 'tap-listener/tap-listener',\n 'fizzy-ui-utils/utils'\n ], function( eventie, Flickity, TapListener, utils ) {\n return factory( window, eventie, Flickity, TapListener, utils );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n window,\n require('eventie'),\n require('./flickity'),\n require('tap-listener'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.eventie,\n window.Flickity,\n window.TapListener,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, eventie, Flickity, TapListener, utils ) {\n\n'use strict';\n\n// ----- inline SVG support ----- //\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// only check on demand, not on script load\nvar supportsInlineSVG = ( function() {\n var supports;\n function checkSupport() {\n if ( supports !== undefined ) {\n return supports;\n }\n var div = document.createElement('div');\n div.innerHTML = '';\n supports = ( div.firstChild && div.firstChild.namespaceURI ) == svgURI;\n return supports;\n }\n return checkSupport;\n})();\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = new TapListener();\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'previous' : 'next' );\n\n Flickity.setUnselectable( element );\n // create arrow\n if ( supportsInlineSVG() ) {\n var svg = this.createSVG();\n element.appendChild( svg );\n } else {\n // SVG not supported, set button text\n this.setArrowText();\n element.className += ' no-svg';\n }\n // update on select\n var _this = this;\n this.onCellSelect = function() {\n _this.update();\n };\n this.parent.on( 'cellSelect', this.onCellSelect );\n // tap\n this.on( 'tap', this.onTap );\n // pointerDown\n this.on( 'pointerDown', function onPointerDown( button, event ) {\n _this.parent.childUIPointerDown( event );\n });\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindTap( this.element );\n // click events from keyboard\n eventie.bind( this.element, 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // do regular TapListener destroy\n TapListener.prototype.destroy.call( this );\n // click events from keyboard\n eventie.unbind( this.element, 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg');\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path');\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.setArrowText = function() {\n var parentOptions = this.parent.options;\n var arrowText = this.isLeft ? parentOptions.leftArrowText : parentOptions.rightArrowText;\n utils.setText( this.element, arrowText );\n};\n\nPrevNextButton.prototype.onTap = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n // only allow clicks from keyboard\n var focused = document.activeElement;\n if ( focused && focused == this.element ) {\n this.onTap();\n }\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last cell, if previous or next\n var cells = this.parent.cells;\n // enable is wrapAround and at least 2 cells\n if ( this.parent.options.wrapAround && cells.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = cells.length ? cells.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n leftArrowText: '‹',\n rightArrowText: '›',\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30\n }\n});\n\nFlickity.createMethods.push('_createPrevNextButtons');\n\nFlickity.prototype._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nFlickity.prototype.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nFlickity.prototype.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n}));\n","( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'eventie/eventie',\n './flickity',\n 'tap-listener/tap-listener',\n 'fizzy-ui-utils/utils'\n ], function( eventie, Flickity, TapListener, utils ) {\n return factory( window, eventie, Flickity, TapListener, utils );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n window,\n require('eventie'),\n require('./flickity'),\n require('tap-listener'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.eventie,\n window.Flickity,\n window.TapListener,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, eventie, Flickity, TapListener, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = new TapListener();\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n Flickity.setUnselectable( this.holder );\n // create dots, array of elements\n this.dots = [];\n // update on select\n var _this = this;\n this.onCellSelect = function() {\n _this.updateSelected();\n };\n this.parent.on( 'cellSelect', this.onCellSelect );\n // tap\n this.on( 'tap', this.onTap );\n // pointerDown\n this.on( 'pointerDown', function onPointerDown( button, event ) {\n _this.parent.childUIPointerDown( event );\n });\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.bindTap( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n TapListener.prototype.destroy.call( this );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of cells and number of dots\n var delta = this.parent.cells.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n while ( count ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n fragment.appendChild( dot );\n newDots.push( dot );\n count--;\n }\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n for ( var i=0, len = removeDots.length; i < len; i++ ) {\n var dot = removeDots[i];\n this.holder.removeChild( dot );\n }\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n};\n\nPageDots.prototype.onTap = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = utils.indexOf( this.dots, target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true\n});\n\nFlickity.createMethods.push('_createPageDots');\n\nFlickity.prototype._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n this.on( 'activate', this.activatePageDots );\n this.on( 'cellAddedRemoved', this.onCellAddedRemovedPageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nFlickity.prototype.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nFlickity.prototype.onCellAddedRemovedPageDots = function() {\n this.pageDots.setDots();\n};\n\nFlickity.prototype.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n}));\n","( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'eventEmitter/EventEmitter',\n 'eventie/eventie',\n 'fizzy-ui-utils/utils',\n './flickity'\n ], function( EventEmitter, eventie, utils, Flickity ) {\n return factory( EventEmitter, eventie, utils, Flickity );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n require('wolfy87-eventemitter'),\n require('eventie'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EventEmitter,\n window.eventie,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EventEmitter, eventie, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Page Visibility -------------------------- //\n// https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API\n\nvar hiddenProperty, visibilityEvent;\nif ( 'hidden' in document ) {\n hiddenProperty = 'hidden';\n visibilityEvent = 'visibilitychange';\n} else if ( 'webkitHidden' in document ) {\n hiddenProperty = 'webkitHidden';\n visibilityEvent = 'webkitvisibilitychange';\n}\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n if ( visibilityEvent ) {\n var _this = this;\n this.onVisibilityChange = function() {\n _this.visibilityChange();\n };\n }\n}\n\nPlayer.prototype = new EventEmitter();\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n this.state = 'playing';\n // listen to visibility change\n if ( visibilityEvent ) {\n document.addEventListener( visibilityEvent, this.onVisibilityChange, false );\n }\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n if ( visibilityEvent ) {\n document.removeEventListener( visibilityEvent, this.onVisibilityChange, false );\n }\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if in unpaused state\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isHidden = document[ hiddenProperty ];\n this[ isHidden ? 'pause' : 'unpause' ]();\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true\n});\n\nFlickity.createMethods.push('_createPlayer');\n\nFlickity.prototype._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nFlickity.prototype.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n eventie.bind( this.element, 'mouseenter', this );\n this.isMouseenterBound = true;\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nFlickity.prototype.playPlayer = function() {\n this.player.play();\n};\n\nFlickity.prototype.stopPlayer = function() {\n this.player.stop();\n};\n\nFlickity.prototype.pausePlayer = function() {\n this.player.pause();\n};\n\nFlickity.prototype.unpausePlayer = function() {\n this.player.unpause();\n};\n\nFlickity.prototype.deactivatePlayer = function() {\n this.player.stop();\n if ( this.isMouseenterBound ) {\n eventie.unbind( this.element, 'mouseenter', this );\n delete this.isMouseenterBound;\n }\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nFlickity.prototype.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n eventie.bind( this.element, 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nFlickity.prototype.onmouseleave = function() {\n this.player.unpause();\n eventie.unbind( this.element, 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n}));\n","( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( Flickity, utils ) {\n return factory( window, Flickity, utils );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n for ( var i=0, len = cells.length; i < len; i++ ) {\n var cell = cells[i];\n fragment.appendChild( cell.element );\n }\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\n/**\n * Insert, prepend, or append cells\n * @param {Element, Array, NodeList} elems\n * @param {Integer} index\n */\nFlickity.prototype.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n\n var selectedIndexDelta = index > this.selectedIndex ? 0 : cells.length;\n this._cellAddedRemoved( index, selectedIndexDelta );\n};\n\nFlickity.prototype.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nFlickity.prototype.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {Element, Array, NodeList} elems\n */\nFlickity.prototype.remove = function( elems ) {\n var cells = this.getCells( elems );\n var selectedIndexDelta = 0;\n var i, len, cell;\n // calculate selectedIndexDelta, easier if done in seperate loop\n for ( i=0, len = cells.length; i < len; i++ ) {\n cell = cells[i];\n var wasBefore = utils.indexOf( this.cells, cell ) < this.selectedIndex;\n selectedIndexDelta -= wasBefore ? 1 : 0;\n }\n\n for ( i=0, len = cells.length; i < len; i++ ) {\n cell = cells[i];\n cell.remove();\n // remove item from collection\n utils.removeFrom( this.cells, cell );\n }\n\n if ( cells.length ) {\n // update stuff\n this._cellAddedRemoved( 0, selectedIndexDelta );\n }\n};\n\n// updates when cells are added or removed\nFlickity.prototype._cellAddedRemoved = function( changedCellIndex, selectedIndexDelta ) {\n selectedIndexDelta = selectedIndexDelta || 0;\n this.selectedIndex += selectedIndexDelta;\n this.selectedIndex = Math.max( 0, Math.min( this.cells.length - 1, this.selectedIndex ) );\n\n this.emitEvent( 'cellAddedRemoved', [ changedCellIndex, selectedIndexDelta ] );\n this.cellChange( changedCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nFlickity.prototype.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = utils.indexOf( this.cells, cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n */\nFlickity.prototype.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSlideableWidth = this.slideableWidth;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // position slider\n if ( this.options.freeScroll ) {\n // shift x by change in slideableWidth\n // TODO fix position shifts when prepending w/ freeScroll\n var deltaX = prevSlideableWidth - this.slideableWidth;\n this.x += deltaX * this.cellAlign;\n this.positionSlider();\n } else {\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n this.select( this.selectedIndex );\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n}));\n","( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'classie/classie',\n 'eventie/eventie',\n './flickity',\n 'fizzy-ui-utils/utils'\n ], function( classie, eventie, Flickity, utils ) {\n return factory( window, classie, eventie, Flickity, utils );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-classie'),\n require('eventie'),\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.classie,\n window.eventie,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, classie, eventie, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\n\nFlickity.prototype._createLazyload = function() {\n this.on( 'cellSelect', this.lazyLoad );\n};\n\nFlickity.prototype.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n for ( var i=0, len = cellElems.length; i < len; i++ ) {\n var cellElem = cellElems[i];\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n }\n // load lazy images\n for ( i=0, len = lazyImages.length; i < len; i++ ) {\n var img = lazyImages[i];\n new LazyLoader( img, this );\n }\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' &&\n cellElem.getAttribute('data-flickity-lazyload') ) {\n return [ cellElem ];\n }\n // select lazy images in cell\n var imgs = cellElem.querySelectorAll('img[data-flickity-lazyload]');\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n eventie.bind( this.img, 'load', this );\n eventie.bind( this.img, 'error', this );\n // load image\n this.img.src = this.img.getAttribute('data-flickity-lazyload');\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n eventie.unbind( this.img, 'load', this );\n eventie.unbind( this.img, 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n classie.add( this.img, className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n}));\n","( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size'\n ], function( getSize ) {\n return factory( window, getSize );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar isIE8 = 'attachEvent' in window;\n\nCell.prototype.create = function() {\n this.element.style.position = 'absolute';\n // IE8 prevent child from changing focus http://stackoverflow.com/a/17525223/182183\n if ( isIE8 ) {\n this.element.setAttribute( 'unselectable', 'on' );\n }\n this.x = 0;\n this.shift = 0;\n};\n\nCell.prototype.destroy = function() {\n // reset style\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n};\n\nCell.prototype.getSize = function() {\n this.size = getSize( this.element );\n};\n\nCell.prototype.setPosition = function( x ) {\n this.x = x;\n this.setDefaultTarget();\n this.renderPosition( x );\n};\n\nCell.prototype.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nCell.prototype.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/**\n * @param {Integer} factor - 0, 1, or -1\n**/\nCell.prototype.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nCell.prototype.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n}));\n","( function( window, factory ) {\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-style-property/get-style-property',\n 'fizzy-ui-utils/utils'\n ], function( getStyleProperty, utils ) {\n return factory( window, getStyleProperty, utils );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-get-style-property'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.getStyleProperty,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, getStyleProperty, utils ) {\n\n'use strict';\n\n// -------------------------- requestAnimationFrame -------------------------- //\n\n// https://gist.github.com/1866474\n\nvar lastTime = 0;\nvar prefixes = 'webkit moz ms o'.split(' ');\n// get unprefixed rAF and cAF, if present\nvar requestAnimationFrame = window.requestAnimationFrame;\nvar cancelAnimationFrame = window.cancelAnimationFrame;\n// loop through vendor prefixes and get prefixed rAF and cAF\nvar prefix;\nfor( var i = 0; i < prefixes.length; i++ ) {\n if ( requestAnimationFrame && cancelAnimationFrame ) {\n break;\n }\n prefix = prefixes[i];\n requestAnimationFrame = requestAnimationFrame || window[ prefix + 'RequestAnimationFrame' ];\n cancelAnimationFrame = cancelAnimationFrame || window[ prefix + 'CancelAnimationFrame' ] ||\n window[ prefix + 'CancelRequestAnimationFrame' ];\n}\n\n// fallback to setTimeout and clearTimeout if either request/cancel is not supported\nif ( !requestAnimationFrame || !cancelAnimationFrame ) {\n requestAnimationFrame = function( callback ) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) );\n var id = window.setTimeout( function() {\n callback( currTime + timeToCall );\n }, timeToCall );\n lastTime = currTime + timeToCall;\n return id;\n };\n\n cancelAnimationFrame = function( id ) {\n window.clearTimeout( id );\n };\n}\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n });\n }\n\n /** /\n // log animation frame rate\n var now = new Date();\n if ( this.then ) {\n console.log( ~~( 1000 / (now-this.then)) + 'fps' )\n }\n this.then = now;\n /**/\n};\n\n\nvar transformProperty = getStyleProperty('transform');\nvar is3d = !!getStyleProperty('perspective');\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x = x - this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n x = x + this.cursorPosition;\n\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft && transformProperty ? -x : x;\n\n var value = this.getPositionValue( x );\n\n if ( transformProperty ) {\n // use 3D tranforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style[ transformProperty ] = is3d && this.isAnimating ?\n 'translate3d(' + value + ',0,0)' : 'translateX(' + value + ')';\n } else {\n this.slider.style[ this.originSide ] = value;\n }\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n var selectedCell = this.cells[ this.selectedIndex ];\n this.x = -selectedCell.target;\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n if ( is3d ) {\n this.positionSlider();\n }\n this.dispatchEvent('settle');\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i=0, len = cells.length; i < len; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i=0, len = cells.length; i < len; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.velocity += this.accel;\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n // reset acceleration\n this.accel = 0;\n};\n\nproto.applyForce = function( force ) {\n this.accel += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no cells\n var len = this.cells.length;\n if ( this.isPointerDown || this.isFreeScrolling || !len ) {\n return;\n }\n var cell = this.cells[ this.selectedIndex ];\n var wrap = this.options.wrapAround && len > 1 ?\n this.slideableWidth * Math.floor( this.selectedIndex / len ) : 0;\n var distance = ( cell.target + wrap ) * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n}));\n","/*!\n * classie v1.0.1\n * class helper functions\n * from bonzo https://github.com/ded/bonzo\n * MIT license\n * \n * classie.has( elem, 'my-class' ) -> true/false\n * classie.add( elem, 'my-new-class' )\n * classie.remove( elem, 'my-unwanted-class' )\n * classie.toggle( elem, 'my-class' )\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n/*global define: false, module: false */\n\n( function( window ) {\n\n'use strict';\n\n// class helper functions from bonzo https://github.com/ded/bonzo\n\nfunction classReg( className ) {\n return new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\");\n}\n\n// classList support for class management\n// altho to be fair, the api sucks because it won't accept multiple classes at once\nvar hasClass, addClass, removeClass;\n\nif ( 'classList' in document.documentElement ) {\n hasClass = function( elem, c ) {\n return elem.classList.contains( c );\n };\n addClass = function( elem, c ) {\n elem.classList.add( c );\n };\n removeClass = function( elem, c ) {\n elem.classList.remove( c );\n };\n}\nelse {\n hasClass = function( elem, c ) {\n return classReg( c ).test( elem.className );\n };\n addClass = function( elem, c ) {\n if ( !hasClass( elem, c ) ) {\n elem.className = elem.className + ' ' + c;\n }\n };\n removeClass = function( elem, c ) {\n elem.className = elem.className.replace( classReg( c ), ' ' );\n };\n}\n\nfunction toggleClass( elem, c ) {\n var fn = hasClass( elem, c ) ? removeClass : addClass;\n fn( elem, c );\n}\n\nvar classie = {\n // full names\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n // short names\n has: hasClass,\n add: addClass,\n remove: removeClass,\n toggle: toggleClass\n};\n\n// transport\nif ( typeof define === 'function' && define.amd ) {\n // AMD\n define( classie );\n} else if ( typeof exports === 'object' ) {\n // CommonJS\n module.exports = classie;\n} else {\n // browser global\n window.classie = classie;\n}\n\n})( window );\n","/*!\n * eventie v1.0.6\n * event binding helper\n * eventie.bind( elem, 'click', myFn )\n * eventie.unbind( elem, 'click', myFn )\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true */\n/*global define: false, module: false */\n\n( function( window ) {\n\n'use strict';\n\nvar docElem = document.documentElement;\n\nvar bind = function() {};\n\nfunction getIEEvent( obj ) {\n var event = window.event;\n // add event.target\n event.target = event.target || event.srcElement || obj;\n return event;\n}\n\nif ( docElem.addEventListener ) {\n bind = function( obj, type, fn ) {\n obj.addEventListener( type, fn, false );\n };\n} else if ( docElem.attachEvent ) {\n bind = function( obj, type, fn ) {\n obj[ type + fn ] = fn.handleEvent ?\n function() {\n var event = getIEEvent( obj );\n fn.handleEvent.call( fn, event );\n } :\n function() {\n var event = getIEEvent( obj );\n fn.call( obj, event );\n };\n obj.attachEvent( \"on\" + type, obj[ type + fn ] );\n };\n}\n\nvar unbind = function() {};\n\nif ( docElem.removeEventListener ) {\n unbind = function( obj, type, fn ) {\n obj.removeEventListener( type, fn, false );\n };\n} else if ( docElem.detachEvent ) {\n unbind = function( obj, type, fn ) {\n obj.detachEvent( \"on\" + type, obj[ type + fn ] );\n try {\n delete obj[ type + fn ];\n } catch ( err ) {\n // can't delete window object properties\n obj[ type + fn ] = undefined;\n }\n };\n}\n\nvar eventie = {\n bind: bind,\n unbind: unbind\n};\n\n// ----- module definition ----- //\n\nif ( typeof define === 'function' && define.amd ) {\n // AMD\n define( eventie );\n} else if ( typeof exports === 'object' ) {\n // CommonJS\n module.exports = eventie;\n} else {\n // browser global\n window.eventie = eventie;\n}\n\n})( window );\n","/*!\n * Unidragger v1.1.5\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n /*global define: false, module: false, require: false */\n 'use strict';\n // universal module definition\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'eventie/eventie',\n 'unipointer/unipointer'\n ], function( eventie, Unipointer ) {\n return factory( window, eventie, Unipointer );\n });\n } else if ( typeof exports == 'object' ) {\n // CommonJS\n module.exports = factory(\n window,\n require('eventie'),\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.eventie,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, eventie, Unipointer ) {\n\n'use strict';\n\n// ----- ----- //\n\nfunction noop() {}\n\n// handle IE8 prevent default\nfunction preventDefaultEvent( event ) {\n if ( event.preventDefault ) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n}\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EventEmitter\nUnidragger.prototype = new Unipointer();\n\n// ----- bind start ----- //\n\nUnidragger.prototype.bindHandles = function() {\n this._bindHandles( true );\n};\n\nUnidragger.prototype.unbindHandles = function() {\n this._bindHandles( false );\n};\n\nvar navigator = window.navigator;\n/**\n * works as unbinder, as you can .bindHandles( false ) to unbind\n * @param {Boolean} isBind - will unbind if falsey\n */\nUnidragger.prototype._bindHandles = function( isBind ) {\n // munge isBind, default to true\n isBind = isBind === undefined ? true : !!isBind;\n // extra bind logic\n var binderExtra;\n if ( navigator.pointerEnabled ) {\n binderExtra = function( handle ) {\n // disable scrolling on the element\n handle.style.touchAction = isBind ? 'none' : '';\n };\n } else if ( navigator.msPointerEnabled ) {\n binderExtra = function( handle ) {\n // disable scrolling on the element\n handle.style.msTouchAction = isBind ? 'none' : '';\n };\n } else {\n binderExtra = function() {\n // TODO re-enable img.ondragstart when unbinding\n if ( isBind ) {\n disableImgOndragstart( handle );\n }\n };\n }\n // bind each handle\n var bindMethod = isBind ? 'bind' : 'unbind';\n for ( var i=0, len = this.handles.length; i < len; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isBind );\n binderExtra( handle );\n eventie[ bindMethod ]( handle, 'click', this );\n }\n};\n\n// remove default dragging interaction on all images in IE8\n// IE8 does its own drag thing on images, which messes stuff up\n\nfunction noDragStart() {\n return false;\n}\n\n// TODO replace this with a IE8 test\nvar isIE8 = 'attachEvent' in document.documentElement;\n\n// IE8 only\nvar disableImgOndragstart = !isIE8 ? noop : function( handle ) {\n\n if ( handle.nodeName == 'IMG' ) {\n handle.ondragstart = noDragStart;\n }\n\n var images = handle.querySelectorAll('img');\n for ( var i=0, len = images.length; i < len; i++ ) {\n var img = images[i];\n img.ondragstart = noDragStart;\n }\n};\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nUnidragger.prototype.pointerDown = function( event, pointer ) {\n // dismiss range sliders\n if ( event.target.nodeName == 'INPUT' && event.target.type == 'range' ) {\n // reset pointerDown logic\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n return;\n }\n\n this._dragPointerDown( event, pointer );\n // kludge to blur focused inputs in dragger\n var focused = document.activeElement;\n if ( focused && focused.blur ) {\n focused.blur();\n }\n // bind move and end events\n this._bindPostStartEvents( event );\n // track scrolling\n this.pointerDownScroll = Unidragger.getScrollPosition();\n eventie.bind( window, 'scroll', this );\n\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// base pointer down logic\nUnidragger.prototype._dragPointerDown = function( event, pointer ) {\n // track to see when dragging starts\n this.pointerDownPoint = Unipointer.getPointerPoint( pointer );\n\n // prevent default, unless touchstart or s and