{"version":3,"file":"js/globals.js","mappings":"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","sources":["webpack://daily-sushi-vue/./node_modules/accordion/src/accordion.js","webpack://daily-sushi-vue/./node_modules/desandro-matches-selector/matches-selector.js","webpack://daily-sushi-vue/./node_modules/ev-emitter/ev-emitter.js","webpack://daily-sushi-vue/./node_modules/fizzy-ui-utils/utils.js","webpack://daily-sushi-vue/./node_modules/flickity/js/add-remove-cell.js","webpack://daily-sushi-vue/./node_modules/flickity/js/animate.js","webpack://daily-sushi-vue/./node_modules/flickity/js/cell.js","webpack://daily-sushi-vue/./node_modules/flickity/js/drag.js","webpack://daily-sushi-vue/./node_modules/flickity/js/flickity.js","webpack://daily-sushi-vue/./node_modules/flickity/js/index.js","webpack://daily-sushi-vue/./node_modules/flickity/js/lazyload.js","webpack://daily-sushi-vue/./node_modules/flickity/js/page-dots.js","webpack://daily-sushi-vue/./node_modules/flickity/js/player.js","webpack://daily-sushi-vue/./node_modules/flickity/js/prev-next-button.js","webpack://daily-sushi-vue/./node_modules/flickity/js/slide.js","webpack://daily-sushi-vue/./node_modules/get-size/get-size.js","webpack://daily-sushi-vue/./node_modules/unidragger/unidragger.js","webpack://daily-sushi-vue/./node_modules/unipointer/unipointer.js","webpack://daily-sushi-vue/./src/js/globals/fileUpload.js","webpack://daily-sushi-vue/./src/js/globals/header.js","webpack://daily-sushi-vue/./src/js/globals/modal.js","webpack://daily-sushi-vue/./src/js/globals/osaka-bay-banner.js","webpack://daily-sushi-vue/./src/js/globals/select-reload-page.js","webpack://daily-sushi-vue/webpack/bootstrap","webpack://daily-sushi-vue/webpack/runtime/compat get default export","webpack://daily-sushi-vue/webpack/runtime/define property getters","webpack://daily-sushi-vue/webpack/runtime/hasOwnProperty shorthand","webpack://daily-sushi-vue/./src/js/globals/flickity.js","webpack://daily-sushi-vue/./src/js/globals/accordion.js","webpack://daily-sushi-vue/./src/js/globals/index.js","webpack://daily-sushi-vue/./src/scss/globals.scss"],"sourcesContent":["(function(){\n\t\"use strict\";\n\n\tvar touchEnabled = \"ontouchstart\" in document.documentElement;\n\tvar pressEvent = touchEnabled ? \"touchend\" : \"click\";\n\tvar each = [].forEach;\n\n\n\t// Name of the onTransitionEnd event supported by this browser\n\tvar transitionEnd = (function(){\n\t\tfor(var names = \"transitionend webkitTransitionEnd oTransitionEnd otransitionend\".split(\" \"), i = 0; i < 4; ++i)\n\t\t\tif(\"on\"+names[i].toLowerCase() in window) return names[i];\n\t\treturn names[0];\n\t}());\n\t\n\t\n\t\n\t/**\n\t * Conditionally add or remove a token from a token-list.\n\t *\n\t * @param {DOMTokenList} list\n\t * @param {String} token\n\t * @param {Boolean} enabled\n\t */\n\tfunction setToken(list, token, enabled){\n\t\tenabled ? list.add(token) : list.remove(token);\n\t}\n\n\n\n\t/**\n\t * Stop a function from firing too quickly.\n\t *\n\t * Returns a copy of the original function that runs only after the designated\n\t * number of milliseconds have elapsed. Useful for throttling onResize handlers.\n\t *\n\t * @param {Number} limit - Threshold to stall execution by, in milliseconds.\n\t * @param {Boolean} soon - If TRUE, will call the function *before* the threshold's elapsed, rather than after.\n\t * @return {Function}\n\t */\n\tfunction debounce(fn, limit, soon){\n\t\tvar limit = limit < 0 ? 0 : limit,\n\t\t\tstarted, context, args, timer,\n\n\t\t\tdelayed = function(){\n\n\t\t\t\t// Get the time between now and when the function was first fired\n\t\t\t\tvar timeSince = Date.now() - started;\n\n\t\t\t\tif(timeSince >= limit){\n\t\t\t\t\tif(!soon) fn.apply(context, args);\n\t\t\t\t\tif(timer) clearTimeout(timer);\n\t\t\t\t\ttimer = context = args = null;\n\t\t\t\t}\n\n\t\t\t\telse timer = setTimeout(delayed, limit - timeSince);\n\t\t\t};\n\n\n\t\t// Debounced copy of the original function\n\t\treturn function(){\n\t\t\tcontext = this,\n\t\t\targs = arguments;\n\n\t\t\tif(!limit)\n\t\t\t\treturn fn.apply(context, args);\n\n\t\t\tstarted = Date.now();\n\t\t\tif(!timer){\n\t\t\t\tif(soon) fn.apply(context, args);\n\t\t\t\ttimer = setTimeout(delayed, limit);\n\t\t\t}\n\t\t};\n\t};\n\n\n\n\tvar uniqueID = (function(){\n\t\tvar IDs = {};\n\t\tvar indexes = {};\n\t\t\n\t\t\n\t\t/**\n\t\t * Generate a unique ID for a DOM element.\n\t\t *\n\t\t * By default, minimalist IDs like \"_1\" or \"_2\" are generated using internally\n\t\t * tracked incrementation. Uglier, more collision-proof IDs can be generated by\n\t\t * passing a truthy value to the function's first argument.\n\t\t *\n\t\t * Irrespective of whether values are being generated simply or randomly, the\n\t\t * document tree is always consulted first to ensure a duplicate ID is never\n\t\t * returned.\n\t\t *\n\t\t * @param {String} prefix - Prefix prepended to result. Default: \"_\"\n\t\t * @param {Boolean} random - Generate collision-proof IDs using random symbols\n\t\t * @param {Number} length - Length of random passwords. Default: 6\n\t\t * @return {String}\n\t\t */\n\t\tfunction uniqueID(prefix, complex, length){\n\t\t\tlength = +(length || 6);\n\t\t\tvar result = (prefix = prefix || \"_\");\n\t\t\t\n\t\t\t// Simple IDs\n\t\t\tif(!complex){\n\t\t\t\t\n\t\t\t\t// Set this prefix's starting index if it's not been used yet\n\t\t\t\tif(!indexes[prefix])\n\t\t\t\t\tindexes[prefix] = 0;\n\t\t\t\t\n\t\t\t\tresult += ++indexes[prefix];\n\t\t\t}\n\t\t\t\n\t\t\t// Uglier/safer IDs\n\t\t\telse{\n\t\t\t\tvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\t\t\t\tchars += chars.toLowerCase();\n\t\t\t\tresult += chars[ Math.round(Math.random() * (chars.length - 1)) ];\n\t\t\t\tchars += \"0123456789\";\n\t\t\t\t\n\t\t\t\twhile(result.length < length)\n\t\t\t\t\tresult += chars[ Math.round(Math.random() * (chars.length - 1))];\n\t\t\t}\n\t\t\t\n\t\t\treturn IDs[result] || document.getElementById(result)\n\t\t\t\t? uniqueID(prefix, complex)\n\t\t\t\t: (IDs[result] = true, result);\n\t\t}\n\t\t\n\t\t\n\t\treturn uniqueID;\n\t}());\n\n\n\t// Name of the CSSOM property used by this browser for CSS transforms\n\tvar cssTransform = (function(n){\n\t\ts = document.documentElement.style;\n\t\tif((prop = n.toLowerCase()) in s) return prop;\n\t\tfor(var prop, s, p = \"Webkit Moz Ms O Khtml\", p = (p.toLowerCase() + p).split(\" \"), i = 0; i < 10; ++i)\n\t\t\tif((prop = p[i]+n) in s) return prop;\n\t\treturn \"\";\n\t}(\"Transform\"));\n\n\n\t// Whether 3D transforms are supported by this browser\n\tvar css3DSupported = (function(propName){\n\t\tvar e = document.createElement(\"div\"), s = e.style,\n\t\tv = [[\"translateY(\", \")\"], [\"translate3d(0,\", \",0)\"]]\n\t\ttry{ s[propName] = v[1].join(\"1px\"); } catch(e){}\n\t\treturn v[+!!s[propName]] === v[1];\n\t}(cssTransform));\n\n\n\n\n\n\n\n\n\n\tvar folds = [];\n\n\n\t/**\n\t * Represents a single panel of togglable content inside an Accordion.\n\t *\n\t * @param {Accordion} accordion\n\t * @param {HTMLElement} el\n\t * @constructor\n\t */\n\tvar Fold = function(accordion, el){\n\t\tvar THIS = this;\n\t\tvar heading = el.firstElementChild;\n\t\tvar content = el.lastElementChild;\n\t\tvar elClasses = el.classList;\n\t\tvar openClass = accordion.openClass;\n\t\tvar closeClass = accordion.closeClass;\n\t\tvar keysEnabled = !accordion.noKeys;\n\t\tvar useBorders = accordion.useBorders;\n\t\tvar useTransforms = !accordion.noTransforms && cssTransform;\n\t\tvar onToggle = accordion.onToggle;\n\t\tvar _disabled = false;\n\t\tvar _open, _y, _height, _ariaEnabled;\n\t\tvar scrollX, scrollY;\n\t\tvar onTouchStart;\n\t\tvar onKeyDown;\n\t\tvar onPress;\n\t\t\n\t\t\n\t\tObject.defineProperties(THIS, {\n\t\t\tfit: {value: fit},\n\t\t\t\n\t\t\t\n\t\t\t// Add or remove relevant ARIA attributes from the fold's elements\n\t\t\tariaEnabled: {\n\t\t\t\tget: function(){ return _ariaEnabled; },\n\t\t\t\tset: function(input){\n\t\t\t\t\tif((input = !!input) !== !!_ariaEnabled){\n\t\t\t\t\t\t_ariaEnabled = input;\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Enable ARIA-attribute management\n\t\t\t\t\t\tif(input){\n\t\t\t\t\t\t\theading.setAttribute(\"role\", \"tab\");\n\t\t\t\t\t\t\tcontent.setAttribute(\"role\", \"tabpanel\");\n\t\t\t\t\t\t\tcheckIDs();\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Update the attributes that're controlled by .open's setter\n\t\t\t\t\t\t\theading.setAttribute(\"aria-selected\", !!_open);\n\t\t\t\t\t\t\theading.setAttribute(\"aria-expanded\", !!_open);\n\t\t\t\t\t\t\tcontent.setAttribute(\"aria-hidden\", !_open);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Disabling; remove all relevant attributes\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\theading.removeAttribute(\"role\");\n\t\t\t\t\t\t\theading.removeAttribute(\"aria-controls\");\n\t\t\t\t\t\t\theading.removeAttribute(\"aria-selected\");\n\t\t\t\t\t\t\theading.removeAttribute(\"aria-expanded\");\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tcontent.removeAttribute(\"role\");\n\t\t\t\t\t\t\tcontent.removeAttribute(\"aria-labelledby\");\n\t\t\t\t\t\t\tcontent.removeAttribute(\"aria-hidden\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t\n\t\t\t\n\t\t\t// Whether or not the fold's currently opened\n\t\t\topen: {\n\t\t\t\t\n\t\t\t\tget: function(){\n\t\t\t\t\t\n\t\t\t\t\t// Derive the fold's opened state from the DOM if it's not been determined yet\n\t\t\t\t\tif(undefined === _open){\n\t\t\t\t\t\t_open = elClasses.contains(openClass);\n\t\t\t\t\t\tsetToken(elClasses, closeClass, !_open);\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn _open;\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\t\n\t\t\t\tset: function(input){\n\t\t\t\t\tif((input = !!input) !== _open){\n\t\t\t\t\t\t\n\t\t\t\t\t\t// If an onToggle callback was specified, run it. Avoid doing anything if it returns false.\n\t\t\t\t\t\tif(\"function\" === typeof onToggle && false === onToggle.call(null, THIS, input))\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\n\t\t\t\t\t\tsetToken(elClasses, openClass, input);\n\t\t\t\t\t\tsetToken(elClasses, closeClass, !input);\n\t\t\t\t\t\t_open = input;\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Update ARIA attributes\n\t\t\t\t\t\tif(_ariaEnabled){\n\t\t\t\t\t\t\theading.setAttribute(\"aria-selected\", input);\n\t\t\t\t\t\t\theading.setAttribute(\"aria-expanded\", input);\n\t\t\t\t\t\t\tcontent.setAttribute(\"aria-hidden\", !input);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// If this fold was closed when the screen resized, run a full update in case its contents were juggled around\n\t\t\t\t\t\tif(THIS.needsRefresh){\n\t\t\t\t\t\t\tdelete THIS.needsRefresh;\n\t\t\t\t\t\t\taccordion.refresh();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse accordion.update();\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Close other folds if accordion is modal\n\t\t\t\t\t\tif(accordion.modal && _open){\n\t\t\t\t\t\t\tfor(var fold, i = 0, l = accordion.folds.length; i < l; ++i){\n\t\t\t\t\t\t\t\tif(THIS !== (fold = accordion.folds[i]))\n\t\t\t\t\t\t\t\t\tfold.open = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t\n\t\t\t// Whether the fold's been deactivated\n\t\t\tdisabled: {\n\t\t\t\tget: function(){ return _disabled },\n\t\t\t\tset: function(input){\n\t\t\t\t\tif((input = !!input) !== _disabled){\n\t\t\t\t\t\tvar style = el.style;\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Deactivated\n\t\t\t\t\t\tif(_disabled = input){\n\t\t\t\t\t\t\tstyle.height = null;\n\t\t\t\t\t\t\tuseTransforms\n\t\t\t\t\t\t\t\t? (style[cssTransform] = null)\n\t\t\t\t\t\t\t\t: (style.top = null);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttouchEnabled && heading.removeEventListener(\"touchstart\", onTouchStart);\n\t\t\t\t\t\t\theading.removeEventListener(pressEvent, onPress);\n\t\t\t\t\t\t\telClasses.remove(openClass, closeClass);\n\t\t\t\t\t\t\tif(onKeyDown){\n\t\t\t\t\t\t\t\theading.removeEventListener(\"keydown\", onKeyDown);\n\t\t\t\t\t\t\t\theading.removeAttribute(\"tabindex\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(_ariaEnabled){\n\t\t\t\t\t\t\t\tTHIS.ariaEnabled = false;\n\t\t\t\t\t\t\t\t_ariaEnabled = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Reactivated\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tstyle.height = _height + \"px\";\n\t\t\t\t\t\t\tuseTransforms\n\t\t\t\t\t\t\t\t? style[cssTransform] =\n\t\t\t\t\t\t\t\t\tcss3DSupported\n\t\t\t\t\t\t\t\t\t\t? (\"translate3D(0,\" + _y + \"px,0)\")\n\t\t\t\t\t\t\t\t\t\t: (\"translateY(\" + _y + \"px)\")\n\t\t\t\t\t\t\t\t: (style.top = _y + \"px\");\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\ttouchEnabled && heading.addEventListener(\"touchstart\", onTouchStart);\n\t\t\t\t\t\t\theading.addEventListener(pressEvent, onPress);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif(onKeyDown){\n\t\t\t\t\t\t\t\theading.addEventListener(\"keydown\", onKeyDown);\n\t\t\t\t\t\t\t\theading.tabIndex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t\n\t\t\t// Vertical position of the fold within an accordion's container\n\t\t\ty: {\n\t\t\t\tget: function(){\n\t\t\t\t\tif(undefined === _y)\n\t\t\t\t\t\treturn (_y = parseInt(el.style.top) || 0);\n\t\t\t\t\treturn _y;\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tset: function(input){\n\t\t\t\t\tif((input = +input) !== _y){\n\t\t\t\t\t\t_y = input;\n\t\t\t\t\t\tuseTransforms\n\t\t\t\t\t\t\t? el.style[cssTransform] =\n\t\t\t\t\t\t\t\tcss3DSupported\n\t\t\t\t\t\t\t\t\t? (\"translate3D(0,\" + input + \"px,0)\")\n\t\t\t\t\t\t\t\t\t: (\"translateY(\" + input + \"px)\")\n\t\t\t\t\t\t\t: (el.style.top = input + \"px\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t\n\t\t\t// Height of the fold's outermost container\n\t\t\theight: {\n\t\t\t\t\n\t\t\t\tget: function(){\n\t\t\t\t\tif(undefined === _height){\n\t\t\t\t\t\t_height = THIS.headingHeight + content.scrollHeight;\n\t\t\t\t\t\tel.style.height = _height + \"px\";\n\t\t\t\t\t}\n\t\t\t\t\treturn _height;\n\t\t\t\t},\n\t\t\t\t\n\t\t\t\tset: function(input){\n\t\t\t\t\tif(input && (input = +input) !== _height){\n\t\t\t\t\t\tel.style.height = input + \"px\"\n\t\t\t\t\t\t_height = input;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\n\t\t\t// Current height of the fold's heading\n\t\t\theadingHeight: {\n\t\t\t\tget: function(){\n\t\t\t\t\treturn heading.scrollHeight\n\t\t\t\t\t\t+ THIS.heightOffset\n\t\t\t\t\t\t+ (useBorders ? THIS.headingBorder : 0)\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t// Total height consumed by the heading element's CSS borders, if any\n\t\t\theadingBorder: {\n\t\t\t\tget: function(){\n\t\t\t\t\treturn (heading.offsetHeight || 0) - (heading.clientHeight || 0);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t// Total height of the fold's container element\n\t\t\telHeight: {\n\t\t\t\tget: function(){\n\t\t\t\t\treturn el.scrollHeight + (useBorders ? THIS.elBorder : 0);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t// Total height consumed by container element's CSS borders, if any\n\t\t\telBorder: {\n\t\t\t\tget: function(){\n\t\t\t\t\treturn (el.offsetHeight || 0) - (el.clientHeight || 0);\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t\n\t\t\t// Whether the fold's container has been resized incorrectly\n\t\t\twrongSize: {\n\t\t\t\tget: function(){\n\t\t\t\t\treturn THIS.headingHeight + content.scrollHeight !== el.scrollHeight;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\t\n\t\tTHIS.index = folds.push(THIS) - 1;\n\t\tTHIS.accordion = accordion;\n\t\tTHIS.el = el;\n\t\tTHIS.heading = heading;\n\t\tTHIS.content = content;\n\t\tTHIS.ariaEnabled = !accordion.noAria;\n\t\tTHIS.heightOffset = accordion.heightOffset;\n\t\tel.accordionFold = THIS.index;\n\t\tuseBorders = \"auto\" === useBorders ? (0 !== THIS.elBorder + THIS.headingBorder) : useBorders;\n\t\t\n\t\t\n\t\t\n\t\tfunction checkIDs(){\n\t\t\tvar headingSuffix = \"-heading\";\n\t\t\tvar contentSuffix = \"-content\";\n\t\t\tvar elID = el.id;\n\t\t\tvar id;\n\t\t\t\n\t\t\t// Neither of the fold's elements have an ID attribute\n\t\t\tif(!heading.id && !content.id){\n\t\t\t\tid = elID || uniqueID(\"a\");\n\t\t\t\theading.id = id + headingSuffix;\n\t\t\t\tcontent.id = id + contentSuffix;\n\t\t\t}\n\t\t\t\n\t\t\t// Either the heading or element lack an ID\n\t\t\telse if(!content.id) content.id = (elID || heading.id) + contentSuffix;\n\t\t\telse if(!heading.id) heading.id = (elID || content.id) + headingSuffix;\n\t\t\t\n\t\t\t// Finally, double-check each element's ID is really unique\n\t\t\tvar $ = function(s){return document.querySelectorAll(\"#\"+s)};\n\t\t\twhile($(content.id).length > 1 || $(heading.id).length > 1){\n\t\t\t\tid = uniqueID(\"a\");\n\t\t\t\tcontent.id = id + contentSuffix;\n\t\t\t\theading.id = id + headingSuffix;\n\t\t\t}\n\t\t\t\n\t\t\t// Update ARIA attributes\n\t\t\theading.setAttribute(\"aria-controls\", content.id);\n\t\t\tcontent.setAttribute(\"aria-labelledby\", heading.id);\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t// Keyboard navigation\n\t\tif(keysEnabled){\n\t\t\theading.tabIndex = 0;\n\t\t\theading.addEventListener(\"keydown\", onKeyDown = function(e){\n\t\t\t\tvar key = e.keyCode;\n\t\t\t\tvar fold;\n\t\t\t\t\n\t\t\t\tswitch(key){\n\n\t\t\t\t\t// Spacebar: Toggle\n\t\t\t\t\tcase 32:\n\t\t\t\t\t\te.preventDefault(); // Fall-through\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t// Enter: Toggle\n\t\t\t\t\tcase 13:\n\t\t\t\t\t\tTHIS.open = !THIS.open;\n\t\t\t\t\t\tif(\"A\" === e.target.tagName)\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t// Escape: Clear focus\n\t\t\t\t\tcase 27:\n\t\t\t\t\t\te.target.blur();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t// Up arrow: Previous section\n\t\t\t\t\tcase 38:{\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Is there a previous sibling to navigate up to?\n\t\t\t\t\t\tif(fold = THIS.previousFold){\n\t\t\t\t\t\t\tvar children = fold.childAccordions;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Is it open, and does it have nested accordions?\n\t\t\t\t\t\t\tif(fold.open && children){\n\t\t\t\t\t\t\t\tvar lastAcc;\n\t\t\t\t\t\t\t\tvar lastFold;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t// Locate the deepest/nearest accordion that's currently exposed\n\t\t\t\t\t\t\t\twhile(children){\n\t\t\t\t\t\t\t\t\tlastAcc = children[children.length - 1];\n\t\t\t\t\t\t\t\t\tlastFold = lastAcc.folds[lastAcc.folds.length - 1];\n\t\t\t\t\t\t\t\t\tif(!lastFold.open) break;\n\t\t\t\t\t\t\t\t\tchildren = lastFold.childAccordions;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tlastFold.heading.focus();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Nope\n\t\t\t\t\t\t\telse fold.heading.focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Is there a higher level we can jump back up to?\n\t\t\t\t\t\telse if(accordion.parent)\n\t\t\t\t\t\t\taccordion.parentFold.heading.focus();\n\t\t\t\t\t\t\n\t\t\t\t\t\t// There's nothing to move back to, so just let the browser run its usual behaviour\n\t\t\t\t\t\telse return true;\n\t\t\t\t\t\t\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t// Down arrow: Next section\n\t\t\t\t\tcase 40:{\n\t\t\t\t\t\tvar children = THIS.childAccordions;\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Is there a nested accordion to jump into?\n\t\t\t\t\t\tif(THIS.open && children)\n\t\t\t\t\t\t\tchildren[0].folds[0].heading.focus();\n\t\t\t\t\t\t\n\t\t\t\t\t\t// No, there isn't. Is there another sibling to move down to?\n\t\t\t\t\t\telse if(fold = THIS.nextFold)\n\t\t\t\t\t\t\tfold.heading.focus();\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Is there a containing accordion we can navigate back up to?\n\t\t\t\t\t\telse if(THIS.accordion.parent){\n\t\t\t\t\t\t\tvar parent = THIS;\n\t\t\t\t\t\t\twhile(parent = parent.accordion.parentFold)\n\t\t\t\t\t\t\t\tif(fold = parent.nextFold){\n\t\t\t\t\t\t\t\t\tfold.heading.focus();\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t// Nowhere left to go...\n\t\t\t\t\t\t\tif(!parent) return true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Nah. Just scroll the window normally, as per browser default\n\t\t\t\t\t\telse return true;\n\t\t\t\t\t\t\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t// Left arrow\n\t\t\t\t\tcase 37:{\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Close an opened section\n\t\t\t\t\t\tif(THIS.open) THIS.open = false;\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Switch focus back to parent\n\t\t\t\t\t\telse if(accordion.parent)\n\t\t\t\t\t\t\taccordion.parentFold.heading.focus();\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t// Right arrow\n\t\t\t\t\tcase 39:{\n\t\t\t\t\t\tvar children = THIS.childAccordions;\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Open a closed section\n\t\t\t\t\t\tif(!THIS.open) THIS.open = true;\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Switch focus to a nested accordion\n\t\t\t\t\t\telse if(children)\n\t\t\t\t\t\t\tchildren[0].folds[0].heading.focus();\n\t\t\t\t\t\t\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t\n\t\t\n\t\t// Listener to record the viewport's scroll offsets at the beginning of a touch\n\t\ttouchEnabled && heading.addEventListener(\"touchstart\", onTouchStart = function(e){\n\t\t\tscrollX = window.pageXOffset;\n\t\t\tscrollY = window.pageYOffset;\n\t\t}, {passive: true});\n\t\t\n\t\t\n\t\theading.addEventListener(pressEvent, onPress = function(e){\n\t\t\t\n\t\t\t// Pressed on something inside the header\n\t\t\tif(e.target !== heading && heading.contains(e.target)){\n\t\t\t\t\n\t\t\t\t// Cancel fold-toggle if user clicked on an anchor-link\n\t\t\t\tif(\"A\" === e.target.tagName && e.target.href)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\tif(e.type !== \"touchend\" || (e.cancelable && window.pageXOffset === scrollX && window.pageYOffset === scrollY)){\n\t\t\t\tTHIS.open = !THIS.open;\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Adjust a fold's container to fit its content.\n\t\t */\n\t\tfunction fit(){\n\t\t\tvar height = THIS.headingHeight;\n\t\t\tif(THIS.open) height += content.scrollHeight;\n\t\t\tif(useBorders) height += THIS.elBorder;\n\t\t\tTHIS.height = height;\n\t\t}\n\t}\n\n\n\n\n\n\n\n\tvar accordions = [];\n\tvar activeAccordions = 0;\n\tvar lastResizeRate;\n\n\n\t/**\n\t * Represents a column of collapsible content regions.\n\t *\n\t * @param {HTMLElement} el - Container wrapped around each immediate fold\n\t * @param {Object} options - Optional hash of settings\n\t * @param {String} options.openClass - CSS class controlling each fold's \"open\" state\n\t * @param {String} options.closeClass - CSS class used to mark a fold as closed\n\t * @param {String} options.edgeClass - CSS class toggled based on whether the bottom-edge is visible\n\t * @param {String} options.snapClass - CSS class for disabling transitions between window resizes\n\t * @param {String} options.enabledClass - CSS class marking an accordion as enabled\n\t * @param {String} options.disabledClass - CSS class marking an accordion as disabled\n\t * @param {Boolean} options.disabled - Whether to disable the accordion on creation\n\t * @param {Boolean} options.modal - Whether to close the current fold when opening another\n\t * @param {Boolean} options.noAria - Disable the addition and management of ARIA attributes\n\t * @param {Boolean} options.noKeys - Disable keyboard navigation\n\t * @param {Boolean} options.noTransforms - Disable CSS transforms; positioning will be used instead\n\t * @param {Number} options.heightOffset - Distance to offset each fold by\n\t * @param {Boolean} options.useBorders - Consider borders when calculating fold heights\n\t * @param {Function} options.onToggle - Callback executed when opening or closing a fold\n\t * @constructor\n\t */\n\tvar Accordion = function(el, options){\n\t\tvar THIS = this;\n\t\tvar elClasses = el.classList;\n\t\tvar options = options || {};\n\t\tvar edgeClass = (undefined === options.edgeClass ? \"edge-visible\" : options.edgeClass);\n\t\tvar snapClass = (undefined === options.snapClass ? \"snap\" : options.snapClass);\n\t\tvar enabledClass = (undefined === options.enabledClass ? \"accordion\" : options.enabledClass);\n\t\tvar disabledClass = options.disabledClass;\n\t\tvar _height, _disabled, _parent, _parentFold, _modal;\n\n\n\t\tObject.defineProperties(THIS, {\n\t\t\tupdate: {value: update},\n\t\t\tupdateFold: {value: updateFold},\n\t\t\trefresh: {value: refresh},\n\t\t\t\n\t\t\t// Whether the accordion's been deactivated\n\t\t\tdisabled: {\n\t\t\t\tget: function(){ return _disabled; },\n\t\t\t\tset: function(input){\n\t\t\t\t\tif((input = !!input) !== _disabled){\n\t\t\t\t\t\tvar style = el.style;\n\t\t\t\t\t\tvar folds = THIS.folds;\n\t\t\t\t\t\t\n\t\t\t\t\t\tenabledClass && setToken(elClasses, enabledClass, !input);\n\t\t\t\t\t\tdisabledClass && setToken(elClasses, disabledClass, input);\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Deactivating\n\t\t\t\t\t\tif(_disabled = input){\n\t\t\t\t\t\t\tstyle.height = null;\n\t\t\t\t\t\t\tsnapClass && elClasses.remove(snapClass);\n\t\t\t\t\t\t\tif(edgeClass){\n\t\t\t\t\t\t\t\tel.removeEventListener(transitionEnd, THIS.onTransitionEnd);\n\t\t\t\t\t\t\t\telClasses.remove(edgeClass);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tfor(var i = 0, l = folds.length; i < l; ++i)\n\t\t\t\t\t\t\t\tfolds[i].disabled = true;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tTHIS.noAria || el.removeAttribute(\"role\");\n\t\t\t\t\t\t\t--activeAccordions;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Reactivating\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\tfor(var i = 0, l = folds.length; i < l; ++i)\n\t\t\t\t\t\t\t\tfolds[i].disabled = false;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tTHIS.noAria || el.setAttribute(\"role\", \"tablist\");\n\t\t\t\t\t\t\t++activeAccordions;\n\t\t\t\t\t\t\tupdate();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t// If there're no more active accordions, disable the onResize handler\n\t\t\t\t\t\tif(activeAccordions <= 0){\n\t\t\t\t\t\t\tactiveAccordions = 0;\n\t\t\t\t\t\t\tAccordion.setResizeRate(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// Otherwise, reactivate the onResize handler, assuming it was previously active\n\t\t\t\t\t\telse if(lastResizeRate)\n\t\t\t\t\t\t\tAccordion.setResizeRate(lastResizeRate);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t// Get or set the accordion enclosing this one\n\t\t\tparent: {\n\t\t\t\tset: function(input){ _parent = input; },\n\t\t\t\tget: function(){\n\t\t\t\t\tvar result = _parent;\n\t\t\t\t\tif(!result) return null;\n\t\t\t\t\t\n\t\t\t\t\t// Search for the first ancestor that *isn't* disabled\n\t\t\t\t\twhile(result){\n\t\t\t\t\t\tif(!result.disabled) return result;\n\t\t\t\t\t\tresult = result.parent;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t// Get or set the fold of the accordion enclosing this one\n\t\t\tparentFold: {\n\t\t\t\tset: function(input){ _parentFold = input; },\n\t\t\t\tget: function(){\n\t\t\t\t\tvar fold = _parentFold;\n\t\t\t\t\tif(!fold) return null;\n\t\t\t\t\t\n\t\t\t\t\tvar accordion = fold.accordion;\n\t\t\t\t\t\n\t\t\t\t\t// Search for the first ancestor that *isn't* disabled\n\t\t\t\t\twhile(fold && accordion){\n\t\t\t\t\t\tif(!accordion.disabled) return fold;\n\t\t\t\t\t\tif(accordion = accordion.parent)\n\t\t\t\t\t\t\tfold = accordion.parentFold;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t// Height of the accordion's container element\n\t\t\theight: {\n\t\t\t\tget: function(){ return _height; },\n\t\t\t\tset: function(input){\n\t\t\t\t\tif(input && (input = +input) !== _height){\n\t\t\t\t\t\tel.style.height = input + \"px\";\n\t\t\t\t\t\t_height = input;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t// Whether one of the Accordion's folds has been resized incorrectly\n\t\t\twrongSize: {\n\t\t\t\tget: function(){\n\t\t\t\t\tvar a = this.folds;\n\t\t\t\t\tvar l = a.length;\n\t\t\t\t\tvar i = 0;\n\t\t\t\t\tfor(; i < l; ++i) if(a[i].wrongSize) return true;\n\t\t\t\t\tif(a = this.childAccordions)\n\t\t\t\t\tfor(; i < l; ++i) if(a[i].wrongSize) return true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\t\n\t\t\t// Top-level ancestor this accordion's nested inside\n\t\t\troot: {\n\t\t\t\tget: function(){\n\t\t\t\t\tvar result = this;\n\t\t\t\t\twhile(result){\n\t\t\t\t\t\tif(!result.parent) return result;\n\t\t\t\t\t\tresult = result.parent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t\n\t\t// Assign options as properties\n\t\tTHIS.openClass = options.openClass || \"open\";\n\t\tTHIS.closeClass = options.closeClass || \"closed\";\n\t\tTHIS.modal = !!options.modal;\n\t\tTHIS.noAria = !!options.noAria;\n\t\tTHIS.noKeys = !!options.noKeys;\n\t\tTHIS.noTransforms = !!options.noTransforms;\n\t\tTHIS.index = accordions.push(THIS) - 1;\n\t\tTHIS.heightOffset = +options.heightOffset || 0;\n\t\tTHIS.useBorders = undefined === options.useBorders ? \"auto\" : options.useBorders;\n\t\tTHIS.onToggle = options.onToggle;\n\t\t\n\t\t\n\t\t// Create a fold for each immediate descendant of the Accordion's container\n\t\tvar folds = [];\n\t\teach.call(el.children, function(i){\n\t\t\tvar fold = new Fold(THIS, i);\n\t\t\tfolds.push(fold);\n\t\t\t\n\t\t\t// Connect the fold to its previous sibling, if it's not the first to be added\n\t\t\tvar prev = folds[folds.length - 2];\n\t\t\tif(prev){\n\t\t\t\tprev.nextFold = fold;\n\t\t\t\tfold.previousFold = prev;\n\t\t\t}\n\t\t});\n\t\t\n\t\t\n\t\tel.accordion = THIS.index;\n\t\tTHIS.noAria || el.setAttribute(\"role\", \"tablist\");\n\t\tTHIS.el = el;\n\t\tTHIS.folds = folds;\n\t\t\n\t\t// Add .enabledClass early - it might affect the heights of each fold\n\t\tif(!options.disabled && enabledClass)\n\t\t\telClasses.add(enabledClass);\n\t\t\n\t\tupdate();\n\t\t\n\t\t\n\t\t// Find out if this accordion's nested inside another\n\t\tvar next = el;\n\t\twhile((next = next.parentNode) && 1 === next.nodeType){\n\t\t\tvar fold = Accordion.getFold(next);\n\t\t\tif(fold){\n\t\t\t\tvar accordion = fold.accordion;\n\t\t\t\tTHIS.parent = accordion;\n\t\t\t\tTHIS.parentFold = fold;\n\t\t\t\tedgeClass && elClasses.remove(edgeClass);\n\t\t\t\t(accordion.childAccordions = accordion.childAccordions || []).push(THIS);\n\t\t\t\t(fold.childAccordions = fold.childAccordions || []).push(THIS);\n\n\t\t\t\t// Adjust the height of the containing fold's element\n\t\t\t\tif(fold.open){\n\t\t\t\t\tvar scrollHeight = fold.el.scrollHeight;\n\t\t\t\t\tvar distance = (fold.headingHeight + fold.content.scrollHeight) - scrollHeight || (scrollHeight - fold.el.clientHeight);\n\t\t\t\t\taccordion.updateFold(fold, distance);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\tedgeClass && el.addEventListener(transitionEnd, this.onTransitionEnd = function(e){\n\t\t\tif(!THIS.parent && e.target === el && \"height\" === e.propertyName && el.getBoundingClientRect().bottom > window.innerHeight)\n\t\t\t\telClasses.remove(edgeClass);\n\t\t});\n\t\t\n\t\tthis.disabled = !!options.disabled;\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Internal method to check if an accordion's bottom-edge is visible to the user (or about to be).\n\t\t *\n\t\t * @param {Number} offset\n\t\t * @private\n\t\t */\n\t\tfunction edgeCheck(offset){\n\t\t\tif(edgeClass){\n\t\t\t\tvar box = el.getBoundingClientRect();\n\t\t\t\tvar windowEdge = window.innerHeight;\n\t\t\t\t\n\t\t\t\t// If the bottom-edge is visible (or about to be), enable height animation\n\t\t\t\tif(box.bottom + (offset || 0) < windowEdge)\n\t\t\t\t\telClasses.add(edgeClass)\n\t\t\t\t\n\t\t\t\t// If the bottom-edge isn't visible anyway, disable height animation immediately\n\t\t\t\telse if(box.bottom > windowEdge)\n\t\t\t\t\telClasses.remove(edgeClass);\n\t\t\t}\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the vertical ordinate of each sibling for a particular fold.\n\t\t *\n\t\t * @param {Fold} fold\n\t\t * @param {Number} offset - Pixel distance to adjust by\n\t\t */\n\t\tfunction updateFold(fold, offset){\n\t\t\tvar next = fold;\n\t\t\tvar parentFold = THIS.parentFold;\n\t\t\t\n\t\t\twhile(next = next.nextFold)\n\t\t\t\tnext.y += offset;\n\t\t\tparentFold || edgeCheck(offset);\n\t\t\tfold.height += offset;\n\t\t\tTHIS.height += offset;\n\t\t\t\n\t\t\tparentFold && parentFold.open && THIS.parent.updateFold(parentFold, offset);\n\t\t}\n\t\t\n\t\t\n\t\t/**\n\t\t * Update the height of each fold to fit its content.\n\t\t */\n\t\tfunction update(){\n\t\t\tvar y = 0;\n\t\t\tvar height = 0;\n\t\t\tvar i = 0;\n\t\t\tvar l = folds.length;\n\t\t\tvar parentFold = THIS.parentFold;\n\t\t\tvar fold, diff;\n\t\t\t\n\t\t\tfor(; i < l; ++i){\n\t\t\t\tfold = folds[i];\n\t\t\t\tfold.y = y;\n\t\t\t\tfold.fit();\n\t\t\t\ty += fold.height;\n\t\t\t\theight += fold.height;\n\t\t\t}\n\t\t\t\n\t\t\tdiff = height - _height;\n\t\t\tparentFold\n\t\t\t\t? (parentFold.open && THIS.parent.updateFold(parentFold, diff))\n\t\t\t\t: edgeCheck(diff);\n\t\t\t\n\t\t\tTHIS.height = height;\n\t\t}\n\t\t\n\t\t\n\t\t\n\t\t/**\n\t\t * Recalculate the boundaries of an Accordion and its descendants.\n\t\t *\n\t\t * This method should only be called if the width of a container changes,\n\t\t * or a fold's contents have resized unexpectedly (such as when images load).\n\t\t *\n\t\t * @param {Boolean} allowSnap - Snap folds instantly into place without transitioning\n\t\t */\n\t\tfunction refresh(allowSnap){\n\t\t\tvar snap = allowSnap ? snapClass : false;\n\t\t\tsnap && elClasses.add(snap);\n\t\t\t\n\t\t\tTHIS.update();\n\t\t\tTHIS.childAccordions && THIS.childAccordions.forEach(function(a){\n\t\t\t\ta.parentFold.open\n\t\t\t\t\t? a.refresh(allowSnap)\n\t\t\t\t\t: (a.parentFold.needsRefresh = true);\n\t\t\t});\n\t\t\t\n\t\t\tsnap && setTimeout(function(e){elClasses.remove(snap)}, 20);\n\t\t}\n\t}\n\n\t// If IE8PP exists, it means the author wants/needs IE8 support. See also: tinyurl.com/fixIE8-9\n\tif(\"function\" === typeof IE8PP)\n\t\tAccordion = IE8PP(Accordion),\n\t\tFold = IE8PP(Fold);\n\n\n\n\t/**\n\t * Alter the rate at which screen-resize events update accordion widths.\n\t *\n\t * @param {Number} delay - Rate expressed in milliseconds\n\t */\n\tAccordion.setResizeRate = function(delay){\n\t\tvar fn = function(e){\n\t\t\tfor(var a, i = 0, l = accordions.length; i < l; ++i){\n\t\t\t\ta = accordions[i];\n\t\t\t\ta.parent || a.disabled || a.refresh(true);\n\t\t\t}\n\t\t};\n\t\t\n\t\tvar THIS = Accordion;\n\t\tTHIS.onResize && window.removeEventListener(\"resize\", THIS.onResize);\n\t\t\n\t\t// Make sure we weren't passed an explicit value of FALSE, or a negative value\n\t\tif(false !== delay && (delay = +delay || 0) >= 0){\n\t\t\tTHIS.onResize = delay ? debounce(fn, delay) : fn;\n\t\t\twindow.addEventListener(\"resize\", THIS.onResize);\n\t\t\tif(delay) lastResizeRate = delay;\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Return the closest (most deeply-nested) accordion enclosing an element.\n\t *\n\t * @param {Node} node\n\t * @return {Accordion}\n\t */\n\tAccordion.getAccordion = function(node){\n\t\twhile(node){\n\t\t\tif(\"accordion\" in node)\n\t\t\t\treturn accordions[node.accordion];\n\t\t\t\n\t\t\tnode = node.parentNode;\n\t\t\tif(!node || node.nodeType !== 1) return null;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Return the closest (most deeply-nested) fold enclosing an element.\n\t *\n\t * @param {Node} node\n\t * @return {Fold}\n\t */\n\tAccordion.getFold = function(node){\n\t\twhile(node){\n\t\t\tif(\"accordionFold\" in node)\n\t\t\t\treturn folds[node.accordionFold];\n\t\t\t\n\t\t\tnode = node.parentNode;\n\t\t\tif(!node || node.nodeType !== 1) return null;\n\t\t}\n\t}\n\t\n\n\t\n\tAccordion.setResizeRate(25);\n\t\n\t\n\t// Browser export\n\twindow.Accordion = Accordion;\n\t\n\t// CommonJS/Node.js\n\tif(\"object\" === typeof module && \"object\" === typeof module.exports)\n\t\tmodule.exports.Accordion = Accordion;\n\t\n\t// AMD/UMD-like systems\n\treturn Accordion;\n}());\n","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n /*global define: false, module: false */\n 'use strict';\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.matchesSelector = factory();\n }\n\n}( window, function factory() {\n 'use strict';\n\n var matchesMethod = ( function() {\n var ElemProto = window.Element.prototype;\n // check for the standard method name first\n if ( ElemProto.matches ) {\n return 'matches';\n }\n // check un-prefixed\n if ( ElemProto.matchesSelector ) {\n return 'matchesSelector';\n }\n // check vendor prefixes\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n for ( var i=0; i < prefixes.length; i++ ) {\n var prefix = prefixes[i];\n var method = prefix + 'MatchesSelector';\n if ( ElemProto[ method ] ) {\n return method;\n }\n }\n })();\n\n return function matchesSelector( elem, selector ) {\n return elem[ matchesMethod ]( selector );\n };\n\n}));\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'desandro-matches-selector/matches-selector'\n ], function( matchesSelector ) {\n return factory( window, matchesSelector );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('desandro-matches-selector')\n );\n } else {\n // browser global\n window.fizzyUIUtils = factory(\n window,\n window.matchesSelector\n );\n }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n if ( Array.isArray( obj ) ) {\n // use object if already an array\n return obj;\n }\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) {\n return [];\n }\n\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n if ( isArrayLike ) {\n // convert nodeList to array\n return arraySlice.call( obj );\n }\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n var index = ary.indexOf( obj );\n if ( index != -1 ) {\n ary.splice( index, 1 );\n }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n while ( elem.parentNode && elem != document.body ) {\n elem = elem.parentNode;\n if ( matchesSelector( elem, selector ) ) {\n return elem;\n }\n }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n if ( typeof elem == 'string' ) {\n return document.querySelector( elem );\n }\n return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n // make array of elems\n elems = utils.makeArray( elems );\n var ffElems = [];\n\n elems.forEach( function( elem ) {\n // check that elem is an actual element\n if ( !( elem instanceof HTMLElement ) ) {\n return;\n }\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return;\n }\n // filter & find items if we have a selector\n // filter\n if ( matchesSelector( elem, selector ) ) {\n ffElems.push( elem );\n }\n // find children\n var childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n for ( var i=0; i < childElems.length; i++ ) {\n ffElems.push( childElems[i] );\n }\n });\n\n return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n var method = _class.prototype[ methodName ];\n var timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n var timeout = this[ timeoutName ];\n clearTimeout( timeout );\n\n var args = arguments;\n var _this = this;\n this[ timeoutName ] = setTimeout( function() {\n method.apply( _this, args );\n delete _this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n var readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( callback );\n } else {\n document.addEventListener( 'DOMContentLoaded', callback );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n var dashedNamespace = utils.toDashed( namespace );\n var dataAttr = 'data-' + dashedNamespace;\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n var elems = utils.makeArray( dataAttrElems )\n .concat( utils.makeArray( jsDashElems ) );\n var dataOptionsAttr = dataAttr + '-options';\n var jQuery = window.jQuery;\n\n elems.forEach( function( elem ) {\n var attr = elem.getAttribute( dataAttr ) ||\n elem.getAttribute( dataOptionsAttr );\n var options;\n try {\n options = attr && JSON.parse( attr );\n } catch ( error ) {\n // log error, do not initialize\n if ( console ) {\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n ': ' + error );\n }\n return;\n }\n // initialize\n var instance = new WidgetClass( elem, options );\n // make available via $().data('namespace')\n if ( jQuery ) {\n jQuery.data( elem, namespace, instance );\n }\n });\n\n });\n};\n\n// ----- ----- //\n\nreturn utils;\n\n}));\n","// add, remove cell\n( function( window, factory ) {\n // universal module definition\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 module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n var fragment = document.createDocumentFragment();\n cells.forEach( function( cell ) {\n fragment.appendChild( cell.element );\n } );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {[Element, Array, NodeList]} elems - Elements to insert\n * @param {Integer} index - Zero-based number to insert\n */\nproto.insert = function( elems, index ) {\n var cells = this._makeCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n var len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n var fragment = getCellsFragment( cells );\n // append to slider\n var isAppend = index == len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n var insertCellElement = this.cells[ index ].element;\n this.slider.insertBefore( fragment, insertCellElement );\n }\n // add to this.cells\n if ( index === 0 ) {\n // prepend, add to start\n this.cells = cells.concat( this.cells );\n } else if ( isAppend ) {\n // append, add to end\n this.cells = this.cells.concat( cells );\n } else {\n // insert in this.cells\n var endCells = this.cells.splice( index, len - index );\n this.cells = this.cells.concat( cells ).concat( endCells );\n }\n\n this._sizeCells( cells );\n this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {[Element, Array, NodeList]} elems - ELements to remove\n */\nproto.remove = function( elems ) {\n var cells = this.getCells( elems );\n if ( !cells || !cells.length ) {\n return;\n }\n\n var minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( function( cell ) {\n cell.remove();\n var index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n }, this );\n\n this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n var cell = this.getCell( elem );\n if ( !cell ) {\n return;\n }\n cell.getSize();\n\n var index = this.cells.indexOf( cell );\n this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n * @param {Boolean} isPositioningSlider - Positions slider after selection\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n var prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._getWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex\n // try to maintain position & select previous selected element\n var cell = this.getCell( prevSelectedElem );\n if ( cell ) {\n this.selectedIndex = this.getCellSlideIndex( cell );\n }\n this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n this.emitEvent( 'cellChange', [ changedCellIndex ] );\n // position slider\n this.select( this.selectedIndex );\n // do not position slider after lazy load\n if ( isPositioningSlider ) {\n this.positionSliderAtSelected();\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'fizzy-ui-utils/utils',\n ], function( utils ) {\n return factory( window, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory(\n window,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) {\n return;\n }\n\n this.isAnimating = true;\n this.restingFrames = 0;\n this.animate();\n};\n\nproto.animate = function() {\n this.applyDragForce();\n this.applySelectedAttraction();\n\n var previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) {\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n }\n};\n\nproto.positionSlider = function() {\n var x = this.x;\n // wrap position around\n if ( this.options.wrapAround && this.cells.length > 1 ) {\n x = utils.modulo( x, this.slideableWidth );\n x -= this.slideableWidth;\n this.shiftWrapCells( x );\n }\n\n this.setTranslateX( x, this.isAnimating );\n this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n x += this.cursorPosition;\n // reverse if right-to-left and using transform\n x = this.options.rightToLeft ? -x : x;\n var translateX = this.getPositionValue( x );\n // use 3D transforms for hardware acceleration on iOS\n // but use 2D when settled, for better font-rendering\n this.slider.style.transform = is3d ?\n 'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n var firstSlide = this.slides[0];\n if ( !firstSlide ) {\n return;\n }\n var positionX = -this.x - firstSlide.target;\n var progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) {\n return;\n }\n this.x = -this.selectedSlide.target;\n this.velocity = 0; // stop wobble\n this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n if ( this.options.percentPosition ) {\n // percent position, round to 2 digits, like 12.34%\n return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 ) + '%';\n } else {\n // pixel positioning\n return Math.round( position ) + 'px';\n }\n};\n\nproto.settle = function( previousX ) {\n // keep track of frames where x hasn't moved\n var isResting = !this.isPointerDown &&\n Math.round( this.x * 100 ) == Math.round( previousX * 100 );\n if ( isResting ) {\n this.restingFrames++;\n }\n // stop animating if resting for 3 or more frames\n if ( this.restingFrames > 2 ) {\n this.isAnimating = false;\n delete this.isFreeScrolling;\n // render position with translateX when settled\n this.positionSlider();\n this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n }\n};\n\nproto.shiftWrapCells = function( x ) {\n // shift before cells\n var beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n for ( var i = 0; i < cells.length; i++ ) {\n var cell = cells[i];\n var cellShift = gap > 0 ? shift : 0;\n cell.wrapShift( cellShift );\n gap -= cell.size.outerWidth;\n }\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) {\n return;\n }\n for ( var i = 0; i < cells.length; i++ ) {\n cells[i].wrapShift( 0 );\n }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n this.x += this.velocity;\n this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n // my thanks to Steven Wittens, who simplified this math greatly\n return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n if ( !this.isDraggable || !this.isPointerDown ) {\n return;\n }\n // change the position to drag position by applying force\n var dragVelocity = this.dragX - this.x;\n var dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n var dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n return;\n }\n var distance = this.selectedSlide.target * -1 - this.x;\n var force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\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 module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size')\n );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory(\n window,\n window.getSize\n );\n }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n this.element = elem;\n this.parent = parent;\n\n this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n this.element.style.position = 'absolute';\n this.element.setAttribute( 'aria-hidden', 'true' );\n this.x = 0;\n this.shift = 0;\n this.element.style[ this.parent.originSide ] = 0;\n};\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.style.position = '';\n var side = this.parent.originSide;\n this.element.style[ side ] = '';\n this.element.style.transform = '';\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n this.x = x;\n this.updateTarget();\n this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n this.target = this.x + this.size[ marginProperty ] +\n this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n // render position of cell with in slider\n var sideOffset = this.parent.originSide === 'left' ? 1 : -1;\n\n var adjustedX = this.parent.options.percentPosition ?\n x * sideOffset * ( this.parent.size.innerWidth / this.size.width ) :\n x * sideOffset;\n\n this.element.style.transform = 'translateX(' +\n this.parent.getPositionValue( adjustedX ) + ')';\n};\n\nproto.select = function() {\n this.element.classList.add('is-selected');\n this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n this.element.classList.remove('is-selected');\n this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} shift - 0, 1, or -1\n */\nproto.wrapShift = function( shift ) {\n this.shift = shift;\n this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n} ) );\n","// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unidragger/unidragger',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unidragger, utils ) {\n return factory( window, Flickity, Unidragger, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unidragger'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n window.Flickity = factory(\n window,\n window.Flickity,\n window.Unidragger,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// -------------------------- -------------------------- //\n\nproto._createDrag = function() {\n this.on( 'activate', this.onActivateDrag );\n this.on( 'uiChange', this._uiChangeDrag );\n this.on( 'deactivate', this.onDeactivateDrag );\n this.on( 'cellChange', this.updateDraggable );\n // TODO updateDraggable on resize? if groupCells & slides change\n};\n\nproto.onActivateDrag = function() {\n this.handles = [ this.viewport ];\n this.bindHandles();\n this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n this.unbindHandles();\n this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n // disable dragging if less than 2 slides. #278\n if ( this.options.draggable == '>1' ) {\n this.isDraggable = this.slides.length > 1;\n } else {\n this.isDraggable = this.options.draggable;\n }\n if ( this.isDraggable ) {\n this.element.classList.add('is-draggable');\n } else {\n this.element.classList.remove('is-draggable');\n }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n this.options.draggable = true;\n this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n this.options.draggable = false;\n this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n if ( !this.isDraggable ) {\n this._pointerDownDefault( event, pointer );\n return;\n }\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n\n this._pointerDownPreventDefault( event );\n this.pointerDownFocus( event );\n // blur\n if ( document.activeElement != this.element ) {\n // do not blur if already focused\n this.pointerDownBlur();\n }\n\n // stop if it was moving\n this.dragX = this.x;\n this.viewport.classList.add('is-pointer-down');\n // track scrolling\n this.pointerDownScroll = getScrollPosition();\n window.addEventListener( 'scroll', this );\n\n this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n // bind move and end events\n this._bindPostStartEvents( event );\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n INPUT: true,\n TEXTAREA: true,\n SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isFocusNode ) {\n this.focus();\n }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n var isTouchStart = event.type == 'touchstart';\n var isTouchPointer = event.pointerType == 'touch';\n var isFocusNode = focusNodes[ event.target.nodeName ];\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n event.preventDefault();\n }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) {\n return;\n }\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n var direction = this.options.rightToLeft ? -1 : 1;\n if ( this.options.wrapAround ) {\n // wrap around move. #589\n moveVector.x %= this.slideableWidth;\n }\n var dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.options.wrapAround && this.slides.length ) {\n // slow drag\n var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n\n this.dragMoveTime = new Date();\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isDraggable ) {\n return;\n }\n if ( this.options.freeScroll ) {\n this.isFreeScrolling = true;\n }\n // set selectedIndex based on where flick will end up\n var index = this.dragEndRestingSelect();\n\n if ( this.options.freeScroll && !this.options.wrapAround ) {\n // if free-scroll & not wrap around\n // do not free-scroll if going outside of bounding slides\n // so bounding slides can attract slider, and keep it in bounds\n var restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n // boost selection if selected index has not changed\n index += this.dragEndBoostSelect();\n }\n delete this.previousDragX;\n // apply selection\n // TODO refactor this, selecting here feels weird\n // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.options.wrapAround;\n this.select( index );\n delete this.isDragSelect;\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n var restingX = this.getRestingPosition();\n // how far away from selected slide\n var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n var positiveResting = this._getClosestResting( restingX, distance, 1 );\n var negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n var index = positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.index;\n return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n var index = this.selectedIndex;\n var minDistance = Infinity;\n var condition = this.options.contain && !this.options.wrapAround ?\n // if contain, keep going if distance is equal to minDistance\n function( dist, minDist ) {\n return dist <= minDist;\n } : function( dist, minDist ) {\n return dist < minDist;\n };\n while ( condition( distance, minDistance ) ) {\n // measure distance to next cell\n index += increment;\n minDistance = distance;\n distance = this.getSlideDistance( -restingX, index );\n if ( distance === null ) {\n break;\n }\n distance = Math.abs( distance );\n }\n return {\n distance: minDistance,\n // selected was previous index\n index: index - increment,\n };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x - horizontal position\n * @param {Integer} index - slide index\n * @returns {Number} - slide distance\n */\nproto.getSlideDistance = function( x, index ) {\n var len = this.slides.length;\n // wrap around if at least 2 slides\n var isWrapAround = this.options.wrapAround && len > 1;\n var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n var slide = this.slides[ slideIndex ];\n if ( !slide ) {\n return null;\n }\n // add distance for wrap-around slides\n var wrap = isWrapAround ? this.slideableWidth * Math.floor( index/len ) : 0;\n return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n // do not boost if no previousDragX or dragMoveTime\n if ( this.previousDragX === undefined || !this.dragMoveTime ||\n // or if drag was held for 100 ms\n new Date() - this.dragMoveTime > 100 ) {\n return 0;\n }\n\n var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n var delta = this.previousDragX - this.dragX;\n if ( distance > 0 && delta > 0 ) {\n // boost to next if moving towards the right, and positive velocity\n return 1;\n } else if ( distance < 0 && delta < 0 ) {\n // boost to previous if moving towards the left, and negative velocity\n return -1;\n }\n return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n // get clickedCell, if cell was clicked\n var clickedCell = this.getParentCell( event.target );\n var cellElem = clickedCell && clickedCell.element;\n var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n var scroll = getScrollPosition();\n var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n // cancel click/tap if scroll is too much\n if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n this._pointerDone();\n }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset,\n };\n}\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'get-size/get-size',\n 'fizzy-ui-utils/utils',\n './cell',\n './slide',\n './animate',\n ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter'),\n require('get-size'),\n require('fizzy-ui-utils'),\n require('./cell'),\n require('./slide'),\n require('./animate')\n );\n } else {\n // browser global\n var _Flickity = window.Flickity;\n\n window.Flickity = factory(\n window,\n window.EvEmitter,\n window.getSize,\n window.fizzyUIUtils,\n _Flickity.Cell,\n _Flickity.Slide,\n _Flickity.animatePrototype\n );\n }\n\n}( window, function factory( window, EvEmitter, getSize,\n utils, Cell, Slide, animatePrototype ) {\n\n/* eslint-enable max-params */\n'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 // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n var instance = instances[ this.element.flickityGUID ];\n if ( instance ) instance.option( options );\n return instance;\n }\n\n // add jQuery\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n // options\n this.options = utils.extend( {}, this.constructor.defaults );\n this.option( options );\n\n // kick things off\n this._create();\n}\n\nFlickity.defaults = {\n accessibility: true,\n // adaptiveHeight: false,\n cellAlign: 'center',\n // cellSelector: undefined,\n // contain: false,\n freeScrollFriction: 0.075, // friction when free-scrolling\n friction: 0.28, // friction when selecting\n namespaceJQueryEvents: true,\n // initialIndex: 0,\n percentPosition: true,\n resize: true,\n selectedAttraction: 0.025,\n setGallerySize: true,\n // watchCSS: false,\n // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n // add id for Flickity.data\n var id = this.guid = ++GUID;\n this.element.flickityGUID = id; // expando\n instances[ id ] = this; // associate via id\n // initial properties\n this.selectedIndex = 0;\n // how many frames slider has been in same position\n this.restingFrames = 0;\n // initial physics properties\n this.x = 0;\n this.velocity = 0;\n this.originSide = this.options.rightToLeft ? 'right' : 'left';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n\n if ( this.options.resize || this.options.watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( var eventName in this.options.on ) {\n var listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n Flickity.createMethods.forEach( function( method ) {\n this[ method ]();\n }, this );\n\n if ( this.options.watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) {\n return;\n }\n this.isActive = true;\n this.element.classList.add('flickity-enabled');\n if ( this.options.rightToLeft ) {\n this.element.classList.add('flickity-rtl');\n }\n\n this.getSize();\n // move initial cell elements so they can be loaded as cells\n var cellElems = this._filterFindCellElements( this.element.children );\n moveElements( cellElems, this.slider );\n this.viewport.appendChild( this.slider );\n this.element.appendChild( this.viewport );\n // get cells from children\n this.reloadCells();\n\n if ( this.options.accessibility ) {\n // allow element to focusable\n this.element.tabIndex = 0;\n // listen for key presses\n this.element.addEventListener( 'keydown', this );\n }\n\n this.emitEvent('activate');\n this.selectInitialIndex();\n // flag for initial activation, for using initialIndex\n this.isInitActivated = true;\n // ready event. #493\n this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n // slider element does all the positioning\n var slider = document.createElement('div');\n slider.className = 'flickity-slider';\n slider.style[ this.originSide ] = 0;\n this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n // collection of item elements\n this.cells = this._makeCells( this.slider.children );\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {[Array, NodeList, HTMLElement]} elems - elements to make into cells\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n var cellElems = this._filterFindCellElements( elems );\n\n // create new Flickity for collection\n var cells = cellElems.map( function( cellElem ) {\n return new Cell( cellElem, this );\n }, this );\n\n return cells;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n // size all cells\n this._sizeCells( this.cells );\n // position all cells\n this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n index = index || 0;\n // also measure maxCellHeight\n // start 0 if positioning all cells\n this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n var cellX = 0;\n // get cellX\n if ( index > 0 ) {\n var startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n var len = this.cells.length;\n for ( var i = index; i < len; i++ ) {\n var cell = this.cells[i];\n cell.setPosition( cellX );\n cellX += cell.size.outerWidth;\n this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n }\n // keep track of cellX for wrap-around\n this.slideableWidth = cellX;\n // slides\n this.updateSlides();\n // contain slides target\n this._containSlides();\n // update slidesWidth\n this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( function( cell ) {\n cell.getSize();\n } );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) {\n return;\n }\n\n var slide = new Slide( this );\n this.slides.push( slide );\n var isOriginLeft = this.originSide == 'left';\n var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n var canCellFit = this._getCanCellFit();\n\n this.cells.forEach( function( cell, i ) {\n // just add cell if first cell in slide\n if ( !slide.cells.length ) {\n slide.addCell( cell );\n return;\n }\n\n var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n if ( canCellFit.call( this, i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( this );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n }, this );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n var groupCells = this.options.groupCells;\n if ( !groupCells ) {\n return function() {\n return false;\n };\n } else if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n var number = parseInt( groupCells, 10 );\n return function( i ) {\n return ( i % number ) !== 0;\n };\n }\n // default, group by width of slide\n // parse '75%\n var percentMatch = typeof groupCells == 'string' &&\n groupCells.match( /^(\\d+)%$/ );\n var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n return function( i, slideWidth ) {\n /* eslint-disable-next-line no-invalid-this */\n return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n this.positionCells();\n this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n this.size = getSize( this.element );\n this.setCellAlign();\n this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n // cell align, then based on origin side\n center: {\n left: 0.5,\n right: 0.5,\n },\n left: {\n left: 0,\n right: 1,\n },\n right: {\n right: 0,\n left: 1,\n },\n};\n\nproto.setCellAlign = function() {\n var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( this.options.setGallerySize ) {\n var height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = height + 'px';\n }\n};\n\nproto._getWrapShiftCells = function() {\n // only for wrap-around\n if ( !this.options.wrapAround ) {\n return;\n }\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n var gapX = this.cursorPosition;\n var cellIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n gapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n var cells = [];\n while ( gapX > 0 ) {\n var cell = this.cells[ cellIndex ];\n if ( !cell ) {\n break;\n }\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n return;\n }\n var isRightToLeft = this.options.rightToLeft;\n var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n // content is less than gallery size\n var isContentSmaller = contentWidth < this.size.innerWidth;\n // bounds\n var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n // contain each cell target\n this.slides.forEach( function( slide ) {\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n slide.target = contentWidth * this.cellAlign;\n } else {\n // contain to bounds\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n }\n }, this );\n};\n\n// ----- ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = event ? [ event ].concat( args ) : args;\n this.emitEvent( type, emitArgs );\n\n if ( jQuery && this.$element ) {\n // default trigger with type if no event\n type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n var $event = type;\n if ( event ) {\n // create jQuery event\n var jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n if ( !this.isActive ) {\n return;\n }\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.options.wrapAround || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) {\n return;\n }\n var prevIndex = this.selectedIndex;\n this.selectedIndex = index;\n this.updateSelectedSlide();\n if ( isInstant ) {\n this.positionSliderAtSelected();\n } else {\n this.startAnimation();\n }\n if ( this.options.adaptiveHeight ) {\n this.setGallerySize();\n }\n // events\n this.dispatchEvent( 'select', null, [ index ] );\n // change event if new index\n if ( index != prevIndex ) {\n this.dispatchEvent( 'change', null, [ index ] );\n }\n // old v1 event name, remove in v3\n this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n var len = this.slides.length;\n var isWrapping = this.options.wrapAround && len > 1;\n if ( !isWrapping ) {\n return index;\n }\n var wrapIndex = utils.modulo( index, len );\n // go to shortest\n var delta = Math.abs( wrapIndex - this.selectedIndex );\n var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n if ( !this.isDragSelect && backWrapDelta < delta ) {\n index += len;\n } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n index -= len;\n }\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= this.slideableWidth;\n } else if ( index >= len ) {\n this.x += this.slideableWidth;\n }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n var slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) {\n return;\n }\n // unselect previous selected slide\n this.unselectSelectedSlide();\n // update new selected slide\n this.selectedSlide = slide;\n slide.select();\n this.selectedCells = slide.cells;\n this.selectedElements = slide.getCellElements();\n // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n // Remove in v3?\n this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) {\n this.selectedSlide.unselect();\n }\n};\n\nproto.selectInitialIndex = function() {\n var initialIndex = this.options.initialIndex;\n // already activated, select previous selectedIndex\n if ( this.isInitActivated ) {\n this.select( this.selectedIndex, false, true );\n return;\n }\n // select with selector string\n if ( initialIndex && typeof initialIndex == 'string' ) {\n var cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n var index = 0;\n // select with number\n if ( initialIndex && this.slides[ initialIndex ] ) {\n index = initialIndex;\n }\n // select instantly\n this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, Number]} value - zero-based index or element to select\n * @param {Boolean} isWrap - enables wrapping around for extra index\n * @param {Boolean} isInstant - disables slide animation\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n // get cell\n var cell = this.queryCell( value );\n if ( !cell ) {\n return;\n }\n\n var index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slides that has cell\n for ( var i = 0; i < this.slides.length; i++ ) {\n var slide = this.slides[i];\n var index = slide.cells.indexOf( cell );\n if ( index != -1 ) {\n return i;\n }\n }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem - matching cell element\n * @returns {Flickity.Cell} cell - matching cell\n */\nproto.getCell = function( elem ) {\n // loop through cells to get the one that matches\n for ( var i = 0; i < this.cells.length; i++ ) {\n var cell = this.cells[i];\n if ( cell.element == elem ) {\n return cell;\n }\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n var cells = [];\n elems.forEach( function( elem ) {\n var cell = this.getCell( elem );\n if ( cell ) {\n cells.push( cell );\n }\n }, this );\n return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n var cell = this.getCell( elem );\n if ( cell ) {\n return cell;\n }\n // try to get parent cell elem\n elem = utils.getParent( elem, '.flickity-slider > *' );\n return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n if ( !adjCount ) {\n return this.selectedSlide.getCellElements();\n }\n index = index === undefined ? this.selectedIndex : index;\n\n var len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements();\n }\n\n var cellElems = [];\n for ( var i = index - adjCount; i <= index + adjCount; i++ ) {\n var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n var slide = this.slides[ slideIndex ];\n if ( slide ) {\n cellElems = cellElems.concat( slide.getCellElements() );\n }\n }\n return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {[Element, String, Number]} selector - element, selector string, or index\n * @returns {Flickity.Cell} - matching cell\n */\nproto.queryCell = function( selector ) {\n if ( typeof selector == 'number' ) {\n // use number as index\n return this.cells[ selector ];\n }\n if ( typeof selector == 'string' ) {\n // do not select invalid selectors from hash: #123, #/. #791\n if ( selector.match( /^[#.]?[\\d/]/ ) ) {\n return;\n }\n // use string as selector, get element\n selector = this.element.querySelector( selector );\n }\n // get cell from element\n return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n // HACK iOS does not allow touch events to bubble up?!\n if ( event.type != 'touchstart' ) {\n event.preventDefault();\n }\n this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n this.watchCSS();\n this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n // #1177 disable resize behavior when animating or dragging for iOS 15\n if ( !this.isActive || this.isAnimating || this.isDragging ) {\n return;\n }\n this.getSize();\n // wrap values\n if ( this.options.wrapAround ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._getWrapShiftCells();\n this.setGallerySize();\n this.emitEvent('resize');\n // update selected index for group slides, instant\n // TODO: position can be lost between groups of various numbers\n var selectedElement = this.selectedElements && this.selectedElements[0];\n this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n var watchOption = this.options.watchCSS;\n if ( !watchOption ) {\n return;\n }\n\n var afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.indexOf('flickity') != -1 ) {\n this.activate();\n } else {\n this.deactivate();\n }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n // only work if element is in focus\n var isNotFocused = document.activeElement && document.activeElement != this.element;\n if ( !this.options.accessibility || isNotFocused ) {\n return;\n }\n\n var handler = Flickity.keyboardHandlers[ event.keyCode ];\n if ( handler ) {\n handler.call( this );\n }\n};\n\nFlickity.keyboardHandlers = {\n // left arrow\n 37: function() {\n var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this.uiChange();\n this[ leftMethod ]();\n },\n // right arrow\n 39: function() {\n var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this.uiChange();\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n // TODO remove scrollTo once focus options gets more support\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus ...\n // #Browser_compatibility\n var prevScrollY = window.pageYOffset;\n this.element.focus({ preventScroll: true });\n // hack to fix scroll jump after focus, #76\n if ( window.pageYOffset != prevScrollY ) {\n window.scrollTo( window.pageXOffset, prevScrollY );\n }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) {\n return;\n }\n this.element.classList.remove('flickity-enabled');\n this.element.classList.remove('flickity-rtl');\n this.unselectSelectedSlide();\n // destroy cells\n this.cells.forEach( function( cell ) {\n cell.destroy();\n } );\n this.element.removeChild( this.viewport );\n // move child elements back into element\n moveElements( this.slider.children, this.element );\n if ( this.options.accessibility ) {\n this.element.removeAttribute('tabIndex');\n this.element.removeEventListener( 'keydown', this );\n }\n // set flags\n this.isActive = false;\n this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n this.deactivate();\n window.removeEventListener( 'resize', this );\n this.allOff();\n this.emitEvent('destroy');\n if ( jQuery && this.$element ) {\n jQuery.removeData( this.element, 'flickity' );\n }\n delete this.element.flickityGUID;\n delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {[Element, String]} elem - element or selector string\n * @returns {Flickity} - Flickity instance\n */\nFlickity.data = function( elem ) {\n elem = utils.getQueryElement( elem );\n var id = elem && elem.flickityGUID;\n return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n} ) );\n","/*!\n * Flickity v2.3.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2021 Metafizzy\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n './drag',\n './prev-next-button',\n './page-dots',\n './player',\n './add-remove-cell',\n './lazyload',\n ], factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./flickity'),\n require('./drag'),\n require('./prev-next-button'),\n require('./page-dots'),\n require('./player'),\n require('./add-remove-cell'),\n require('./lazyload')\n );\n }\n\n} )( window, function factory( Flickity ) {\n return Flickity;\n} );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\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 module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n var lazyLoad = this.options.lazyLoad;\n if ( !lazyLoad ) {\n return;\n }\n // get adjacent cells, use lazyLoad option for adjacent count\n var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n var cellElems = this.getAdjacentCellElements( adjCount );\n // get lazy images in those cells\n var lazyImages = [];\n cellElems.forEach( function( cellElem ) {\n var lazyCellImages = getCellLazyImages( cellElem );\n lazyImages = lazyImages.concat( lazyCellImages );\n } );\n // load lazy images\n lazyImages.forEach( function( img ) {\n new LazyLoader( img, this );\n }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.nodeName == 'IMG' ) {\n var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n return [ cellElem ];\n }\n }\n // select lazy images in cell\n var lazySelector = 'img[data-flickity-lazyload], ' +\n 'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n var imgs = cellElem.querySelectorAll( lazySelector );\n return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Flickity} flickity - Flickity instance\n */\nfunction LazyLoader( img, flickity ) {\n this.img = img;\n this.flickity = flickity;\n this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n // get src & srcset\n var src = this.img.getAttribute('data-flickity-lazyload') ||\n this.img.getAttribute('data-flickity-lazyload-src');\n var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n // set src & serset\n this.img.src = src;\n if ( srcset ) {\n this.img.setAttribute( 'srcset', srcset );\n }\n // remove attr\n this.img.removeAttribute('data-flickity-lazyload');\n this.img.removeAttribute('data-flickity-lazyload-src');\n this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n // unbind events\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n\n var cell = this.flickity.getParentCell( this.img );\n var cellElem = cell && cell.element;\n this.flickity.cellSizeChange( cellElem );\n\n this.img.classList.add( className );\n this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n this.parent = parent;\n this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n // create holder element\n this.holder = document.createElement('ol');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n // events\n this.handleClick = this.onClick.bind( this );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n this.setDots();\n this.holder.addEventListener( 'click', this.handleClick );\n this.bindStartEvent( this.holder );\n // add to DOM\n this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n this.holder.removeEventListener( 'click', this.handleClick );\n this.unbindStartEvent( this.holder );\n // remove from DOM\n this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n // get difference between number of slides and number of dots\n var delta = this.parent.slides.length - this.dots.length;\n if ( delta > 0 ) {\n this.addDots( delta );\n } else if ( delta < 0 ) {\n this.removeDots( -delta );\n }\n};\n\nPageDots.prototype.addDots = function( count ) {\n var fragment = document.createDocumentFragment();\n var newDots = [];\n var length = this.dots.length;\n var max = length + count;\n\n for ( var i = length; i < max; i++ ) {\n var dot = document.createElement('li');\n dot.className = 'dot';\n dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n fragment.appendChild( dot );\n newDots.push( dot );\n }\n\n this.holder.appendChild( fragment );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n var removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( function( dot ) {\n this.holder.removeChild( dot );\n }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.className = 'dot';\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) {\n return;\n }\n this.selectedDot = this.dots[ this.parent.selectedIndex ];\n this.selectedDot.className = 'dot is-selected';\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n var target = event.target;\n // only care about dot clicks\n if ( target.nodeName != 'LI' ) {\n return;\n }\n\n this.parent.uiChange();\n var index = this.dots.indexOf( target );\n this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n if ( !this.options.pageDots ) {\n return;\n }\n this.pageDots = new PageDots( this );\n // events\n this.on( 'activate', this.activatePageDots );\n this.on( 'select', this.updateSelectedPageDots );\n this.on( 'cellChange', this.updatePageDots );\n this.on( 'resize', this.updatePageDots );\n this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.deactivate();\n};\n\n// ----- ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n} ) );\n","// player & autoPlay\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter',\n 'fizzy-ui-utils/utils',\n './flickity',\n ], function( EvEmitter, utils, Flickity ) {\n return factory( EvEmitter, utils, Flickity );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('ev-emitter'),\n require('fizzy-ui-utils'),\n require('./flickity')\n );\n } else {\n // browser global\n factory(\n window.EvEmitter,\n window.fizzyUIUtils,\n window.Flickity\n );\n }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n this.parent = parent;\n this.state = 'stopped';\n // visibility change event handler\n this.onVisibilityChange = this.visibilityChange.bind( this );\n this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n if ( this.state == 'playing' ) {\n return;\n }\n // do not play if page is hidden, start playing when page is visible\n var isPageHidden = document.hidden;\n if ( isPageHidden ) {\n document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n return;\n }\n\n this.state = 'playing';\n // listen to visibility change\n document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n // start ticking\n this.tick();\n};\n\nPlayer.prototype.tick = function() {\n // do not tick if not playing\n if ( this.state != 'playing' ) {\n return;\n }\n\n var time = this.parent.options.autoPlay;\n // default to 3 seconds\n time = typeof time == 'number' ? time : 3000;\n var _this = this;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( function() {\n _this.parent.next( true );\n _this.tick();\n }, time );\n};\n\nPlayer.prototype.stop = function() {\n this.state = 'stopped';\n this.clear();\n // remove visibility change event\n document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n if ( this.state == 'playing' ) {\n this.state = 'paused';\n this.clear();\n }\n};\n\nPlayer.prototype.unpause = function() {\n // re-start play if paused\n if ( this.state == 'paused' ) {\n this.play();\n }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n var isPageHidden = document.hidden;\n this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n this.play();\n document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n this.player = new Player( this );\n\n this.on( 'activate', this.activatePlayer );\n this.on( 'uiChange', this.stopPlayer );\n this.on( 'pointerDown', this.stopPlayer );\n this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) {\n return;\n }\n this.player.play();\n this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n this.player.play();\n};\n\nproto.stopPlayer = function() {\n this.player.stop();\n};\n\nproto.pausePlayer = function() {\n this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n this.player.stop();\n this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n if ( !this.options.pauseAutoPlayOnHover ) {\n return;\n }\n this.player.pause();\n this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n this.player.unpause();\n this.element.removeEventListener( 'mouseleave', this );\n};\n\n// ----- ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n} ) );\n","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n './flickity',\n 'unipointer/unipointer',\n 'fizzy-ui-utils/utils',\n ], function( Flickity, Unipointer, utils ) {\n return factory( window, Flickity, Unipointer, utils );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./flickity'),\n require('unipointer'),\n require('fizzy-ui-utils')\n );\n } else {\n // browser global\n factory(\n window,\n window.Flickity,\n window.Unipointer,\n window.fizzyUIUtils\n );\n }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n this.direction = direction;\n this.parent = parent;\n this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n // properties\n this.isEnabled = true;\n this.isPrevious = this.direction == -1;\n var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n this.isLeft = this.direction == leftDirection;\n\n var element = this.element = document.createElement('button');\n element.className = 'flickity-button flickity-prev-next-button';\n element.className += this.isPrevious ? ' previous' : ' next';\n // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n // init as disabled\n this.disable();\n\n element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n // create arrow\n var svg = this.createSVG();\n element.appendChild( svg );\n // events\n this.parent.on( 'select', this.update.bind( this ) );\n this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n this.bindStartEvent( this.element );\n this.element.addEventListener( 'click', this );\n // add to DOM\n this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n // remove from DOM\n this.parent.element.removeChild( this.element );\n // click events\n this.unbindStartEvent( this.element );\n this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n var svg = document.createElementNS( svgURI, 'svg' );\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n var path = document.createElementNS( svgURI, 'path' );\n var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n path.setAttribute( 'd', pathMovements );\n path.setAttribute( 'class', 'arrow' );\n // rotate arrow\n if ( !this.isLeft ) {\n path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n }\n svg.appendChild( path );\n return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n // use shape as movement if string\n if ( typeof shape == 'string' ) {\n return shape;\n }\n // create movement string\n return 'M ' + shape.x0 + ',50' +\n ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n ' L ' + shape.x3 + ',50 ' +\n ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.parent.uiChange();\n var method = this.isPrevious ? 'previous' : 'next';\n this.parent[ method ]();\n};\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n if ( this.isEnabled ) {\n return;\n }\n this.element.disabled = false;\n this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n if ( !this.isEnabled ) {\n return;\n }\n this.element.disabled = true;\n this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n // index of first or last slide, if previous or next\n var slides = this.parent.slides;\n // enable is wrapAround and at least 2 slides\n if ( this.parent.options.wrapAround && slides.length > 1 ) {\n this.enable();\n return;\n }\n var lastIndex = slides.length ? slides.length - 1 : 0;\n var boundIndex = this.isPrevious ? 0 : lastIndex;\n var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n this.deactivate();\n this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n prevNextButtons: true,\n arrowShape: {\n x0: 10,\n x1: 60, y1: 50,\n x2: 70, y2: 40,\n x3: 30,\n },\n} );\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n if ( !this.options.prevNextButtons ) {\n return;\n }\n\n this.prevButton = new PrevNextButton( -1, this );\n this.nextButton = new PrevNextButton( 1, this );\n\n this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.activate();\n this.nextButton.activate();\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.deactivate();\n this.nextButton.deactivate();\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n","// slide\n( function( window, factory ) {\n // universal module definition\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Slide = factory();\n }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n this.parent = parent;\n this.isOriginLeft = parent.originSide == 'left';\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n this.cells.push( cell );\n this.outerWidth += cell.size.outerWidth;\n this.height = Math.max( cell.size.outerHeight, this.height );\n // first cell stuff\n if ( this.cells.length == 1 ) {\n this.x = cell.x; // x comes from first cell\n var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n this.firstMargin = cell.size[ beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n var lastCell = this.getLastCell();\n var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( function( cell ) {\n cell.select();\n } );\n};\n\nproto.unselect = function() {\n this.cells.forEach( function( cell ) {\n cell.unselect();\n } );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( function( cell ) {\n return cell.element;\n } );\n};\n\nreturn Slide;\n\n} ) );\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","/*!\n * Unidragger v2.4.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n for ( var i=0; i < this.handles.length; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isAdd );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if ( window.PointerEvent ) {\n handle.style.touchAction = touchAction;\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n var isCursorNode = cursorNodes[ event.target.nodeName ];\n var isClickType = clickTypes[ event.target.type ];\n var isOkay = !isCursorNode || isClickType;\n if ( !isOkay ) {\n this._pointerReset();\n }\n return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n var focused = document.activeElement;\n // do not blur body for IE10, metafizzy/flickity#117\n var canBlur = focused && focused.blur && focused != document.body;\n if ( canBlur ) {\n focused.blur();\n }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n };\n // start drag if pointer has moved far enough to start drag\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n this._dragStart( event, pointer );\n }\n return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n if ( this.isDragging ) {\n this._dragEnd( event, pointer );\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick( event, pointer );\n }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n // do not drag if not dragging yet\n if ( !this.isDragging ) {\n return;\n }\n\n this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout( function() {\n delete this.isPreventingClicks;\n }.bind( this ) );\n\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\n\n this.staticClick( event, pointer );\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout( function() {\n delete this.isIgnoringMouseUp;\n }.bind( this ), 400 );\n }\n};\n\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\n}));\n","/*!\n * Unipointer v2.4.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ( 'ontouchstart' in window ) {\n // HACK prefer Touch Events as you can preventDefault on touchstart to\n // disable scroll in iOS & mobile Chrome metafizzy/flickity#1177\n startEvent = 'touchstart';\n } else if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n }\n elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n","\r\nwindow.addEventListener(\"load\", function () {\r\n const formContainers = document.getElementsByClassName(\"section-cv-form\");\r\n //Check the form exists on the page\r\n if (formContainers.length > 0) {\r\n // add accept types to the input file\r\n const fileInput = document.querySelector(\".section-cv-form input[type='file']\");\r\n let formContainer = formContainers[0];\r\n let form = formContainer.getElementsByTagName(\"form\")[0];\r\n let responseContainer = formContainer.getElementsByClassName(\"submit-response-container\")[0];\r\n responseContainer.style.display = 'none';\r\n\r\n const checkFileExtension = (val) => {\r\n var regex = new RegExp(\"(.*?).(pdf|docx|doc|jpg|jpeg)$\");\r\n if (!(regex.test(val))) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n const button = document.querySelector(\".section-cv-form .submitBtn button\");\r\n\r\n fileInput.addEventListener(\"change\", function (ev) {\r\n const fileError = document.getElementById(\"file-error\");\r\n if (!checkFileExtension(ev.target.value)) {\r\n fileError.setAttribute(\"style\", \"display:block;\");\r\n }\r\n else if (fileError) {\r\n fileError.removeAttribute(\"style\");\r\n }\r\n });\r\n\r\n form.addEventListener('submit', function (evt) {\r\n evt.preventDefault();\r\n const fileError = document.getElementById(\"file-error\");\r\n if (fileError)\r\n fileError.removeAttribute(\"style\");\r\n\r\n if (!checkFileExtension(fileInput.value)) {\r\n // Show error\r\n fileError.setAttribute(\"display\", \"display:block;\");\r\n return;\r\n }\r\n\r\n // disable submit\r\n button.setAttribute(\"class\", \"loading\");\r\n button.setAttribute(\"disabled\", true);\r\n\r\n var formData = new FormData(this);\r\n fetch('/umbraco/surface/CVUpload/Submit', { method: \"POST\", body: formData })\r\n .then((result) => {\r\n if (result.status != 200) { throw new Error(\"Could not upload file\") }\r\n return result.text();\r\n })\r\n .then((response) => {\r\n form.style.display = 'none';\r\n responseContainer.style.display = 'block';\r\n let retVal = JSON.parse(response);\r\n responseContainer.getElementsByClassName(\"form-submit-response\")[0].innerHTML = retVal.response;\r\n button.removeAttribute(\"class\");\r\n button.removeAttribute(\"disabled\");\r\n })\r\n .catch((error) => {\r\n button.removeAttribute(\"class\");\r\n button.removeAttribute(\"disabled\");\r\n console.log(error);\r\n });\r\n\r\n });\r\n }\r\n});\r\n\r\n\r\nwindow.GetQueryStringVariable = function getQueryVariable(variable) {\r\n var query = window.location.search.substring(1);\r\n var vars = query.split(\"&\");\r\n for (var i = 0; i < vars.length; i++) {\r\n var pair = vars[i].split(\"=\");\r\n if (pair[0] == variable) { return pair[1]; }\r\n }\r\n return (false);\r\n}\r\n\r\n\r\n// Form Validation\r\nconst email = document.getElementById(\"cvuploadEmail\");\r\nif (email != null) {\r\n email.addEventListener(\"input\", function () {\r\n\r\n if (email.validity.typeMismatch) {\r\n email.setCustomValidity(\"Please enter a valid email address\");\r\n } else {\r\n email.setCustomValidity(\"\");\r\n }\r\n });\r\n}","window.addEventListener(\"load\", function() {\r\n const header = document.getElementById(\"site-header\");\r\n\r\n function burgerMenu() {\r\n const fullScreenMenu = document.getElementById(\"full-screen-menu\");\r\n const fullScreenMenuToggle = document.getElementById(\"full-screen-menu-toggle\");\r\n let scrollPosition = 0;\r\n \r\n // so when the menu is open a user cannot scroll the body\r\n function highjackScroll() {\r\n window.scrollTo(0, scrollPosition);\r\n }\r\n \r\n if (fullScreenMenuToggle) {\r\n fullScreenMenuToggle.addEventListener('click', function () {\r\n header.classList.toggle('open');\r\n fullScreenMenu.classList.toggle('open');\r\n scrollPosition = window.scrollY;\r\n \r\n if (fullScreenMenu.classList.contains('open')) {\r\n window.addEventListener('scroll', highjackScroll);\r\n }else {\r\n window.removeEventListener('scroll', highjackScroll);\r\n }\r\n });\r\n }\r\n }\r\n\r\n function fixOnScroll() {\r\n if (window.scrollY > 0) {\r\n header.classList.add('scrolled')\r\n }\r\n\r\n window.addEventListener('scroll', function() {\r\n if (window.scrollY > 0) {\r\n header.classList.add('scrolled')\r\n } else {\r\n header.classList.remove('scrolled')\r\n }\r\n });\r\n }\r\n\r\n burgerMenu()\r\n fixOnScroll()\r\n\r\n});","\r\nwindow.addEventListener('load', function(){\r\n const modals = document.getElementsByClassName('modal');\r\n\r\n const closeModalOnEscapeKey = function(e) {\r\n if (e.which === 27) {\r\n closeModal(this)\r\n }\r\n }\r\n const openModal = function(modal) {\r\n modal.setAttribute('show', true)\r\n window.document.body.style.overflow = 'hidden'\r\n document.addEventListener('keydown', closeModalOnEscapeKey.bind(modal))\r\n }\r\n const closeModal = function(modal) {\r\n modal.setAttribute('show', false)\r\n window.document.body.style.overflow = null\r\n document.removeEventListener('keydown', closeModalOnEscapeKey.bind(modal))\r\n };\r\n\r\n\r\n if (modals) {\r\n [...modals].forEach((modal)=> {\r\n const id = modal.id;\r\n const openButtons = document.querySelectorAll(`[show-modal=\"${id}\"]`);\r\n const closeButton = modal.querySelector('.close-button');\r\n const background = modal.querySelector(`.background`);\r\n\r\n [...openButtons].forEach((openButton)=> {\r\n openButton.addEventListener('click', function(e) {\r\n e.preventDefault();\r\n openModal(modal)\r\n })\r\n })\r\n\r\n closeButton.addEventListener('click', function() {\r\n closeModal(modal)\r\n })\r\n\r\n background.addEventListener('click', function() {\r\n closeModal(modal)\r\n })\r\n })\r\n }\r\n\r\n window.SD_OpenModal = openModal\r\n window.SD_CloseModal = closeModal\r\n})\r\n","window.addEventListener(\"load\", function () {\r\n const banner = document.getElementById(\"osaka-bay-banner\");\r\n const hideBanner = window.sessionStorage.getItem('hide-osaka-bay-banner')\r\n\r\n if (banner) {\r\n if (hideBanner) {\r\n banner.classList.remove('visible')\r\n }\r\n\r\n if (!hideBanner) {\r\n banner.classList.add('visible')\r\n const bannerCloseButton = document.getElementById(\"osaka-bay-banner-close\");\r\n bannerCloseButton.addEventListener(\"click\", () => {\r\n saveCookie();\r\n banner.style.display = 'none';\r\n })\r\n }\r\n\r\n }\r\n});\r\n\r\nconst saveCookie = function () {\r\n const siteUrl = window.SD_SITE_URL;\r\n if (!siteUrl)\r\n return;\r\n return fetch(`${siteUrl}umbraco/api/cookies/SetBannerClosed`, {\r\n method: 'POST', // *GET, POST, PUT, DELETE, etc.\r\n mode: 'no-cors', // no-cors, *cors, same-origin\r\n cache: 'default', // *default, no-cache, reload, force-cache, only-if-cached\r\n credentials: 'include', // include, *same-origin, omit\r\n }).then(() => {\r\n return true;\r\n })\r\n}","\r\nwindow.SD_ReloadOnChange = function(select) {\r\n window.location = `${window.location.origin}${select.value}` \r\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// https://flickity.metafizzy.co/options.html\r\nimport Flickity from \"flickity\";\r\nwindow.Flickity = Flickity","// https://github.com/Alhadis/Accordion\r\nimport { Accordion } from \"accordion\";\r\n\r\nwindow.addEventListener(\"load\", function() {\r\n var els = document.getElementsByClassName(\"accordion\");\r\n \r\n if (els) {\r\n [...els].forEach((el)=> {\r\n const allowMultipleOpen = el.attributes['allow-multiple-open'] && el.attributes['allow-multiple-open'].value === 'true'\r\n\r\n new Accordion(el, {\r\n noAria: false,\r\n onToggle: function (target) {\r\n if (!allowMultipleOpen) {\r\n target.accordion.folds.forEach((fold) => {\r\n if (fold !== target) fold.open = false;\r\n });\r\n }\r\n }\r\n });\r\n el.classList.add('intialised')\r\n })\r\n\r\n }\r\n});","// globals\r\nimport \"./modal\";\r\nimport \"./header\";\r\nimport \"./flickity\";\r\nimport \"./accordion\";\r\nimport \"./osaka-bay-banner\";\r\nimport \"./select-reload-page\";\r\nimport \"./fileUpload\";","// extracted by mini-css-extract-plugin\nexport {};"],"names":["touchEnabled","document","documentElement","pressEvent","each","forEach","transitionEnd","names","split","i","toLowerCase","window","setToken","list","token","enabled","add","remove","debounce","fn","limit","soon","started","context","args","timer","delayed","timeSince","Date","now","apply","clearTimeout","setTimeout","arguments","uniqueID","IDs","indexes","prefix","complex","length","result","chars","Math","round","random","getElementById","cssTransform","n","s","style","prop","p","css3DSupported","propName","e","createElement","v","join","folds","Fold","accordion","el","THIS","heading","firstElementChild","content","lastElementChild","elClasses","classList","openClass","closeClass","keysEnabled","noKeys","useBorders","useTransforms","noTransforms","onToggle","_disabled","_open","_y","_height","_ariaEnabled","scrollX","scrollY","onTouchStart","onKeyDown","onPress","Object","defineProperties","fit","value","ariaEnabled","get","set","input","setAttribute","checkIDs","removeAttribute","open","undefined","contains","call","needsRefresh","refresh","update","modal","fold","l","disabled","height","top","removeEventListener","addEventListener","tabIndex","y","parseInt","headingHeight","scrollHeight","heightOffset","headingBorder","offsetHeight","clientHeight","elHeight","elBorder","wrongSize","index","push","noAria","accordionFold","headingSuffix","contentSuffix","elID","id","$","querySelectorAll","key","keyCode","preventDefault","target","tagName","blur","previousFold","children","childAccordions","lastAcc","lastFold","focus","parent","parentFold","nextFold","pageXOffset","pageYOffset","passive","href","type","cancelable","accordions","activeAccordions","lastResizeRate","Accordion","options","edgeClass","snapClass","enabledClass","disabledClass","_parent","_parentFold","_modal","updateFold","onTransitionEnd","setResizeRate","a","root","prev","next","parentNode","nodeType","getFold","distance","propertyName","getBoundingClientRect","bottom","innerHeight","edgeCheck","offset","box","windowEdge","diff","allowSnap","snap","IE8PP","delay","onResize","getAccordion","node","module","exports","factory","define","amd","matchesSelector","matchesMethod","ElemProto","Element","prototype","matches","prefixes","method","elem","selector","global","EvEmitter","proto","on","eventName","listener","events","_events","listeners","indexOf","once","onceEvents","_onceEvents","onceListeners","off","splice","emitEvent","slice","isOnce","allOff","require","fizzyUIUtils","utils","extend","b","modulo","num","div","arraySlice","Array","makeArray","obj","isArray","isArrayLike","removeFrom","ary","getParent","body","getQueryElement","querySelector","handleEvent","event","filterFindElements","elems","ffElems","HTMLElement","childElems","debounceMethod","_class","methodName","threshold","timeoutName","timeout","_this","docReady","callback","readyState","toDashed","str","replace","match","$1","$2","console","htmlInit","WidgetClass","namespace","dashedNamespace","dataAttr","dataAttrElems","jsDashElems","concat","dataOptionsAttr","jQuery","attr","getAttribute","JSON","parse","error","className","instance","data","Flickity","getCellsFragment","cells","fragment","createDocumentFragment","cell","appendChild","element","insert","_makeCells","len","isAppend","slider","insertCellElement","insertBefore","endCells","_sizeCells","cellChange","append","prepend","getCells","minCellIndex","min","cellSizeChange","getCell","getSize","changedCellIndex","isPositioningSlider","prevSelectedElem","selectedElement","_positionCells","_getWrapShiftCells","setGallerySize","selectedIndex","getCellSlideIndex","slides","select","positionSliderAtSelected","animatePrototype","startAnimation","isAnimating","restingFrames","animate","applyDragForce","applySelectedAttraction","previousX","x","integratePhysics","positionSlider","settle","requestAnimationFrame","animateFrame","wrapAround","slideableWidth","shiftWrapCells","setTranslateX","dispatchScrollEvent","is3d","cursorPosition","rightToLeft","translateX","getPositionValue","transform","firstSlide","positionX","progress","slidesWidth","dispatchEvent","selectedSlide","velocity","position","percentPosition","size","innerWidth","isResting","isPointerDown","isFreeScrolling","beforeGap","_shiftCells","beforeShiftCells","afterGap","afterShiftCells","gap","shift","cellShift","wrapShift","outerWidth","_unshiftCells","getFrictionFactor","applyForce","force","getRestingPosition","isDraggable","dragVelocity","dragX","dragForce","dragDown","selectedAttraction","Cell","create","originSide","destroy","unselect","side","setPosition","updateTarget","renderPosition","setDefaultTarget","marginProperty","width","cellAlign","sideOffset","adjustedX","removeChild","Unidragger","defaults","draggable","dragThreshold","createMethods","_touchActionValue","_createDrag","onActivateDrag","_uiChangeDrag","onDeactivateDrag","updateDraggable","handles","viewport","bindHandles","unbindHandles","bindDrag","unbindDrag","pointerDown","pointer","_pointerDownDefault","isOkay","okayPointerDown","_pointerDownPreventDefault","pointerDownFocus","activeElement","pointerDownBlur","pointerDownScroll","getScrollPosition","pointerDownPointer","pageX","pageY","_bindPostStartEvents","focusNodes","INPUT","TEXTAREA","SELECT","isFocusNode","nodeName","isTouchStart","isTouchPointer","pointerType","hasDragStarted","moveVector","abs","pointerUp","isTouchScrolling","_dragPointerUp","pointerDone","dragStart","dragStartPosition","pointerMove","_dragPointerMove","_dragMove","dragMove","previousDragX","direction","originBound","max","endBound","getLastSlide","dragMoveTime","dragEnd","freeScroll","dragEndRestingSelect","restingX","dragEndBoostSelect","isDragSelect","getSlideDistance","positiveResting","_getClosestResting","negativeResting","increment","minDistance","Infinity","condition","contain","dist","minDist","isWrapAround","slideIndex","slide","wrap","floor","delta","staticClick","clickedCell","getParentCell","cellElem","cellIndex","onscroll","scroll","scrollMoveX","scrollMoveY","_pointerDone","Slide","_Flickity","getComputedStyle","moveElements","toElem","GUID","instances","queryElement","flickityGUID","option","$element","constructor","_create","accessibility","freeScrollFriction","friction","namespaceJQueryEvents","resize","guid","_createSlider","watchCSS","activate","opts","isActive","cellElems","_filterFindCellElements","reloadCells","selectInitialIndex","isInitActivated","cellSelector","positionCells","map","getLastCell","maxCellHeight","cellX","startCell","outerHeight","updateSlides","_containSlides","isOriginLeft","nextMargin","canCellFit","_getCanCellFit","addCell","slideWidth","firstMargin","updateSelectedSlide","groupCells","number","percentMatch","percent","_init","reposition","setCellAlign","cellAlignShorthands","center","left","right","shorthand","adaptiveHeight","gapX","_getGapCells","isRightToLeft","beginMargin","endMargin","contentWidth","isContentSmaller","beginBound","emitArgs","$event","jQEvent","Event","trigger","isWrap","isInstant","_wrapSelect","prevIndex","isWrapping","wrapIndex","backWrapDelta","forewardWrapDelta","previous","unselectSelectedSlide","selectedCells","selectedElements","getCellElements","selectedCell","initialIndex","queryCell","selectCell","getAdjacentCellElements","adjCount","uiChange","childUIPointerDown","onresize","isDragging","watchOption","afterContent","deactivate","onkeydown","isNotFocused","handler","keyboardHandlers","leftMethod","rightMethod","prevScrollY","preventScroll","scrollTo","removeData","bridget","setJQuery","jq","_createLazyload","lazyLoad","lazyImages","lazyCellImages","getCellLazyImages","img","LazyLoader","lazyloadAttr","srcAttr","srcsetAttr","lazySelector","imgs","flickity","load","src","srcset","onload","complete","onerror","Unipointer","PageDots","holder","dots","handleClick","onClick","bind","setDots","bindStartEvent","unbindStartEvent","addDots","removeDots","count","newDots","dot","updateSelected","selectedDot","onTap","pageDots","_createPageDots","activatePageDots","updateSelectedPageDots","updatePageDots","deactivatePageDots","Player","state","onVisibilityChange","visibilityChange","onVisibilityPlay","visibilityPlay","play","isPageHidden","hidden","tick","time","autoPlay","clear","stop","pause","unpause","pauseAutoPlayOnHover","_createPlayer","player","activatePlayer","stopPlayer","deactivatePlayer","playPlayer","pausePlayer","unpausePlayer","onmouseenter","onmouseleave","svgURI","PrevNextButton","isEnabled","isPrevious","leftDirection","isLeft","disable","svg","createSVG","createElementNS","path","pathMovements","getArrowMovements","arrowShape","shape","x0","x1","y1","x2","y2","x3","onclick","enable","lastIndex","boundIndex","prevNextButtons","_createPrevNextButtons","prevButton","nextButton","activatePrevNextButtons","deactivatePrevNextButtons","lastCell","lastMargin","getStyleSize","parseFloat","isValid","isNaN","noop","logError","message","measurements","measurementsLength","getZeroSize","measurement","getStyle","isSetup","isBoxSizeOuter","setup","padding","borderStyle","borderWidth","boxSizing","display","offsetWidth","isBorderBox","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","_bindHandles","isAdd","bindMethod","touchAction","handle","_bindStartEvent","PointerEvent","cursorNodes","OPTION","clickTypes","radio","checkbox","button","submit","image","file","isCursorNode","isClickType","_pointerReset","focused","canBlur","_dragStart","_dragEnd","_staticClick","isPreventingClicks","isIgnoringMouseUp","getPointerPoint","startEvent","getTouch","touches","touch","identifier","pointerIdentifier","onmousedown","_pointerDown","ontouchstart","changedTouches","onpointerdown","pointerId","postStartEvents","mousedown","touchstart","pointerdown","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","onmouseup","_pointerUp","onpointerup","ontouchend","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","formContainers","getElementsByClassName","fileInput","formContainer","form","getElementsByTagName","responseContainer","checkFileExtension","val","regex","RegExp","test","ev","fileError","evt","formData","FormData","fetch","then","status","Error","text","response","retVal","innerHTML","catch","log","GetQueryStringVariable","getQueryVariable","variable","query","location","search","substring","vars","pair","email","validity","typeMismatch","setCustomValidity","header","burgerMenu","fullScreenMenu","fullScreenMenuToggle","scrollPosition","highjackScroll","toggle","fixOnScroll","modals","closeModalOnEscapeKey","which","closeModal","openModal","overflow","openButtons","closeButton","background","openButton","SD_OpenModal","SD_CloseModal","banner","hideBanner","sessionStorage","getItem","bannerCloseButton","saveCookie","siteUrl","SD_SITE_URL","mode","cache","credentials","SD_ReloadOnChange","origin","els","allowMultipleOpen","attributes"],"sourceRoot":""}