{"version":3,"file":"movie-tickets-BBh3JOQI.js","sources":["../../../node_modules/lodash/keyBy.js","../../../node_modules/lodash/_baseExtremum.js","../../../node_modules/lodash/_baseLt.js","../../../node_modules/lodash/minBy.js","../../../node_modules/lodash/_baseGt.js","../../../node_modules/lodash/maxBy.js","../../../node_modules/lodash/_baseRange.js","../../../node_modules/lodash/_createRange.js","../../../node_modules/lodash/range.js","../../../node_modules/scrollto-with-animation/lib/easings.js","../../../node_modules/scrollto-with-animation/lib/index.js","../../../node_modules/ev-emitter/ev-emitter.js","../../../node_modules/flickity/node_modules/get-size/get-size.js","../../../node_modules/fizzy-ui-utils/utils.js","../../../node_modules/flickity/js/cell.js","../../../node_modules/flickity/js/slide.js","../../../node_modules/flickity/js/animate.js","../../../node_modules/flickity/js/core.js","../../../node_modules/unidragger/unidragger.js","../../../node_modules/flickity/js/drag.js","../../../node_modules/flickity/js/prev-next-button.js","../../../node_modules/flickity/js/page-dots.js","../../../node_modules/flickity/js/player.js","../../../node_modules/flickity/js/add-remove-cell.js","../../../node_modules/flickity/js/lazyload.js","../../../node_modules/imagesloaded/imagesloaded.js","../../../node_modules/flickity/js/imagesloaded.js","../../../node_modules/flickity/js/index.js","../../../Scripts/tickets/movie-tickets.html?vue-htmltemplate","../../../Scripts/tickets/version-header.html?vue-htmltemplate","../../../node_modules/flickity-sync/flickity-sync.js","../../../Scripts/tickets/version-shows.html?vue-htmltemplate","../../../Scripts/tickets/version-shows.ts","../../../Scripts/tickets/version-header.ts","../../../Scripts/tickets/movie-tickets.ts"],"sourcesContent":["var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nfunction maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)\n : undefined;\n}\n\nmodule.exports = maxBy;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n linearTween: function linearTween(t, b, c, d) {\n return c * t / d + b;\n },\n easeInQuad: function easeInQuad(t, b, c, d) {\n t /= d;\n return c * t * t + b;\n },\n easeOutQuad: function easeOutQuad(t, b, c, d) {\n t /= d;\n return -c * t * (t - 2) + b;\n },\n easeInOutQuad: function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n },\n easeInCubic: function easeInCubic(t, b, c, d) {\n t /= d;\n return c * t * t * t + b;\n },\n easeOutCubic: function easeOutCubic(t, b, c, d) {\n t /= d;\n t--;\n return c * (t * t * t + 1) + b;\n },\n easeInOutCubic: function easeInOutCubic(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t * t + b;\n t -= 2;\n return c / 2 * (t * t * t + 2) + b;\n },\n easeInQuart: function easeInQuart(t, b, c, d) {\n t /= d;\n return c * t * t * t * t + b;\n },\n easeOutQuart: function easeOutQuart(t, b, c, d) {\n t /= d;\n t--;\n return -c * (t * t * t * t - 1) + b;\n },\n easeInOutQuart: function easeInOutQuart(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t * t * t + b;\n t -= 2;\n return -c / 2 * (t * t * t * t - 2) + b;\n },\n easeInQuint: function easeInQuint(t, b, c, d) {\n t /= d;\n return c * t * t * t * t * t + b;\n },\n easeOutQuint: function easeOutQuint(t, b, c, d) {\n t /= d;\n t--;\n return c * (t * t * t * t * t + 1) + b;\n },\n easeInOutQuint: function easeInOutQuint(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t * t * t * t + b;\n t -= 2;\n return c / 2 * (t * t * t * t * t + 2) + b;\n },\n easeInSine: function easeInSine(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n },\n easeOutSine: function easeOutSine(t, b, c, d) {\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n },\n easeInOutSine: function easeInOutSine(t, b, c, d) {\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n },\n easeInExpo: function easeInExpo(t, b, c, d) {\n return c * Math.pow(2, 10 * (t / d - 1)) + b;\n },\n easeOutExpo: function easeOutExpo(t, b, c, d) {\n return c * (-Math.pow(2, -10 * t / d) + 1) + b;\n },\n easeInOutExpo: function easeInOutExpo(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n t--;\n return c / 2 * (-Math.pow(2, -10 * t) + 2) + b;\n },\n easeInCirc: function easeInCirc(t, b, c, d) {\n t /= d;\n return -c * (Math.sqrt(1 - t * t) - 1) + b;\n },\n easeOutCirc: function easeOutCirc(t, b, c, d) {\n t /= d;\n t--;\n return c * Math.sqrt(1 - t * t) + b;\n },\n easeInOutCirc: function easeInOutCirc(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n t -= 2;\n return c / 2 * (Math.sqrt(1 - t * t) + 1) + b;\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.rAF = undefined;\n\nvar _animationFrame = require('animation-frame');\n\nvar _animationFrame2 = _interopRequireDefault(_animationFrame);\n\nvar _easings = require('./easings');\n\nvar _easings2 = _interopRequireDefault(_easings);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar packageInfo = {\n name: 'scrollto-with-animation',\n url: 'https://github.com/davesnx/scrollto-with-animation'\n};\n\nvar rAF = new _animationFrame2.default();\n\nvar DEBUG = process.env.NODE_ENV || true;\nvar DEFAULT_ANIMATION = 'easeInQuad';\nvar LIB_NAME = '' + packageInfo.name;\nvar TRANSITION_NOT_FOUND = LIB_NAME + ': Transition not found - ' + packageInfo.url;\nvar ANIMATION_NOT_VALID = LIB_NAME + ': callback transition don\\'t look like a valid equation - ' + packageInfo.url;\nvar TRANSITION_NOT_VALID = LIB_NAME + ': Transition isn\\'t string or Function - ' + packageInfo.url;\n\nvar ANIMATION_CANCEL = 'animation-cancel';\nvar ANIMATION_END = 'animation-end';\n\nvar _document = typeof document !== 'undefined' ? document : {};\nvar _window = typeof window !== 'undefined' ? window : {};\n\nvar findAnimation = function findAnimation() {\n var transition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_ANIMATION;\n\n var animation = _easings2.default[transition];\n if (animation === undefined && DEBUG) {\n throw new Error(TRANSITION_NOT_FOUND);\n }\n return animation;\n};\n\nvar defineAnimation = function defineAnimation(transition) {\n if (transition.length !== 4 && DEBUG) {\n throw new Error(ANIMATION_NOT_VALID);\n }\n return transition;\n};\n\nvar scrollToWithAnimation = function scrollToWithAnimation(element) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'scrollTop';\n var to = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var duration = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 100;\n var transition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : DEFAULT_ANIMATION;\n var callback = arguments[5];\n\n var id = void 0;\n var start = direction === 'scrollTop' ? element.scrollTop : element.scrollLeft;\n var distance = to - start;\n var animationStartTime = +new Date();\n var isAnimating = true;\n var lastScrolledPosition = void 0;\n var transitionFunction = void 0;\n\n if (!element) {\n element = _document.documentElement;\n }\n\n if (typeof transition === 'string' || transition === null) {\n transitionFunction = findAnimation(transition);\n } else if (typeof transition === 'function') {\n transitionFunction = defineAnimation(transition);\n } else {\n throw new Error(TRANSITION_NOT_VALID);\n }\n\n var animateScroll = function animateScroll() {\n var now = +new Date();\n var newScrollPosition = Math.floor(transitionFunction(now - animationStartTime, start, distance, duration));\n\n if (!lastScrolledPosition || to !== element[direction]) {\n lastScrolledPosition = newScrollPosition;\n element[direction] = newScrollPosition;\n } else {\n isAnimating = false;\n if (callback) {\n callback(ANIMATION_CANCEL);\n rAF.cancel(id);\n }\n }\n\n if (now > animationStartTime + duration) {\n element[direction] = to;\n isAnimating = false;\n if (callback) {\n callback(ANIMATION_END);\n rAF.cancel(id);\n }\n }\n\n if (isAnimating) {\n id = rAF.request(animateScroll);\n }\n };\n\n id = rAF.request(animateScroll);\n};\n\n// Publish fn in window\nif (_window !== {}) {\n _window.scrollToWithAnimation = scrollToWithAnimation;\n}\n\nexports.default = scrollToWithAnimation;\nexports.rAF = rAF;","/**\n * EvEmitter v2.1.1\n * Lil' event emitter\n * MIT License\n */\n\n( function( global, factory ) {\n // universal module definition\n 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\nfunction EvEmitter() {}\n\nlet proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) return this;\n\n // set events hash\n let events = this._events = this._events || {};\n // set listeners array\n let listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( !listeners.includes( listener ) ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) return this;\n\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n let onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n let onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n let listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) return this;\n\n let 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 let listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) return this;\n\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice( 0 );\n args = args || [];\n // once stuff\n let onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( let listener of listeners ) {\n let 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 return this;\n};\n\nreturn EvEmitter;\n\n} ) );\n","/*!\n * Infinite Scroll v2.0.4\n * measure size of elements\n * MIT license\n */\n\n( function( window, factory ) {\n 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\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n let num = parseFloat( value );\n // not a percent like '100%', and a number\n let isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\n// -------------------------- measurements -------------------------- //\n\nlet 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\nlet measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n let size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0,\n };\n measurements.forEach( ( measurement ) => {\n size[ measurement ] = 0;\n } );\n return size;\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) elem = document.querySelector( elem );\n\n // do not proceed on non-objects\n let isElement = elem && typeof elem == 'object' && elem.nodeType;\n if ( !isElement ) return;\n\n let style = getComputedStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) return getZeroSize();\n\n let size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n let isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n measurements.forEach( ( measurement ) => {\n let value = style[ measurement ];\n let num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n } );\n\n let paddingWidth = size.paddingLeft + size.paddingRight;\n let paddingHeight = size.paddingTop + size.paddingBottom;\n let marginWidth = size.marginLeft + size.marginRight;\n let marginHeight = size.marginTop + size.marginBottom;\n let borderWidth = size.borderLeftWidth + size.borderRightWidth;\n let borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n // overwrite width and height if we can get it from style\n let styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBox ? 0 : paddingWidth + borderWidth );\n }\n\n let styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBox ? 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 * Fizzy UI utils v3.0.0\n * MIT license\n */\n\n( function( global, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory( global );\n } else {\n // browser global\n global.fizzyUIUtils = factory( global );\n }\n\n}( this, function factory( global ) {\n\nlet utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n return Object.assign( a, b );\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n // use object if already an array\n if ( Array.isArray( obj ) ) return obj;\n\n // return empty array if undefined or null. #6\n if ( obj === null || obj === undefined ) return [];\n\n let isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n // convert nodeList to array\n if ( isArrayLike ) return [ ...obj ];\n\n // array of single index\n return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n let 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 ( elem.matches( selector ) ) return elem;\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 let 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\n return elems\n // check that elem is an actual element\n .filter( ( elem ) => elem instanceof HTMLElement )\n .reduce( ( ffElems, elem ) => {\n // add elem if no selector\n if ( !selector ) {\n ffElems.push( elem );\n return ffElems;\n }\n // filter & find items if we have a selector\n // filter\n if ( elem.matches( selector ) ) {\n ffElems.push( elem );\n }\n // find children\n let childElems = elem.querySelectorAll( selector );\n // concat childElems to filterFound array\n ffElems = ffElems.concat( ...childElems );\n return ffElems;\n }, [] );\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n threshold = threshold || 100;\n // original method\n let method = _class.prototype[ methodName ];\n let timeoutName = methodName + 'Timeout';\n\n _class.prototype[ methodName ] = function() {\n clearTimeout( this[ timeoutName ] );\n\n let args = arguments;\n this[ timeoutName ] = setTimeout( () => {\n method.apply( this, args );\n delete this[ timeoutName ];\n }, threshold );\n };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( onDocReady ) {\n let readyState = document.readyState;\n if ( readyState == 'complete' || readyState == 'interactive' ) {\n // do async to allow for other scripts to run. metafizzy/flickity#441\n setTimeout( onDocReady );\n } else {\n document.addEventListener( 'DOMContentLoaded', onDocReady );\n }\n};\n\n// ----- htmlInit ----- //\n\n// http://bit.ly/3oYLusc\nutils.toDashed = function( str ) {\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n return $1 + '-' + $2;\n } ).toLowerCase();\n};\n\nlet console = global.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\nutils.htmlInit = function( WidgetClass, namespace ) {\n utils.docReady( function() {\n let dashedNamespace = utils.toDashed( namespace );\n let dataAttr = 'data-' + dashedNamespace;\n let dataAttrElems = document.querySelectorAll( `[${dataAttr}]` );\n let jQuery = global.jQuery;\n\n [ ...dataAttrElems ].forEach( ( elem ) => {\n let attr = elem.getAttribute( dataAttr );\n let 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}: ${error}` );\n }\n return;\n }\n // initialize\n let 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","// Flickity.Cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory( require('get-size') );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.Cell = factory( window.getSize );\n }\n\n}( typeof window != 'undefined' ? window : this, function factory( getSize ) {\n\nconst cellClassName = 'flickity-cell';\n\nfunction Cell( elem ) {\n this.element = elem;\n this.element.classList.add( cellClassName );\n\n this.x = 0;\n this.unselect();\n}\n\nlet proto = Cell.prototype;\n\nproto.destroy = function() {\n // reset style\n this.unselect();\n this.element.classList.remove( cellClassName );\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.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\nproto.remove = function() {\n this.element.remove();\n};\n\nreturn Cell;\n\n} ) );\n","// slide\n( function( window, factory ) {\n // universal module definition\n 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}( typeof window != 'undefined' ? window : this, function factory() {\n\nfunction Slide( beginMargin, endMargin, cellAlign ) {\n this.beginMargin = beginMargin;\n this.endMargin = endMargin;\n this.cellAlign = cellAlign;\n this.cells = [];\n this.outerWidth = 0;\n this.height = 0;\n}\n\nlet 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 this.firstMargin = cell.size[ this.beginMargin ];\n }\n};\n\nproto.updateTarget = function() {\n let lastCell = this.getLastCell();\n let lastMargin = lastCell ? lastCell.size[ this.endMargin ] : 0;\n let slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n this.target = this.x + this.firstMargin + slideWidth * this.cellAlign;\n};\n\nproto.getLastCell = function() {\n return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n this.cells.forEach( ( cell ) => cell.select() );\n};\n\nproto.unselect = function() {\n this.cells.forEach( ( cell ) => cell.unselect() );\n};\n\nproto.getCellElements = function() {\n return this.cells.map( ( cell ) => cell.element );\n};\n\nreturn Slide;\n\n} ) );\n","// animate\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory( require('fizzy-ui-utils') );\n } else {\n // browser global\n window.Flickity = window.Flickity || {};\n window.Flickity.animatePrototype = factory( window.fizzyUIUtils );\n }\n\n}( typeof window != 'undefined' ? window : this, function factory( utils ) {\n\n// -------------------------- animate -------------------------- //\n\nlet proto = {};\n\nproto.startAnimation = function() {\n if ( this.isAnimating ) return;\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 let previousX = this.x;\n\n this.integratePhysics();\n this.positionSlider();\n this.settle( previousX );\n // animate next frame\n if ( this.isAnimating ) requestAnimationFrame( () => this.animate() );\n};\n\nproto.positionSlider = function() {\n let x = this.x;\n // wrap position around\n if ( this.isWrapping ) {\n x = utils.modulo( x, this.slideableWidth ) - 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 if ( this.options.rightToLeft ) x = -x;\n let 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 let firstSlide = this.slides[0];\n if ( !firstSlide ) return;\n\n let positionX = -this.x - firstSlide.target;\n let progress = positionX / this.slidesWidth;\n this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n if ( !this.cells.length ) 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 let isResting = !this.isPointerDown &&\n Math.round( this.x * 100 ) === Math.round( previousX * 100 );\n if ( isResting ) this.restingFrames++;\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 let beforeGap = this.cursorPosition + x;\n this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n // shift after cells\n let 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 cells.forEach( ( cell ) => {\n let cellShift = gap > 0 ? shift : 0;\n this._wrapShiftCell( cell, cellShift );\n gap -= cell.size.outerWidth;\n } );\n};\n\nproto._unshiftCells = function( cells ) {\n if ( !cells || !cells.length ) return;\n\n cells.forEach( ( cell ) => this._wrapShiftCell( cell, 0 ) );\n};\n\n// @param {Integer} shift - 0, 1, or -1\nproto._wrapShiftCell = function( cell, shift ) {\n this._renderCellPosition( cell, cell.x + this.slideableWidth * shift );\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 ) return;\n\n // change the position to drag position by applying force\n let dragVelocity = this.dragX - this.x;\n let dragForce = dragVelocity - this.velocity;\n this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n // do not attract if pointer down or no slides\n let dragDown = this.isDraggable && this.isPointerDown;\n if ( dragDown || this.isFreeScrolling || !this.slides.length ) return;\n\n let distance = this.selectedSlide.target * -1 - this.x;\n let force = distance * this.options.selectedAttraction;\n this.applyForce( force );\n};\n\nreturn proto;\n\n} ) );\n","// Flickity main\n/* eslint-disable max-params */\n( function( window, factory ) {\n // universal module definition\n 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 let _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}( typeof window != 'undefined' ? window : this,\n function factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n/* eslint-enable max-params */\n\n// vars\nconst { getComputedStyle, console } = window;\nlet { jQuery } = window;\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nlet GUID = 0;\n// internal store of all Flickity intances\nlet instances = {};\n\nfunction Flickity( element, options ) {\n let queryElement = utils.getQueryElement( element );\n if ( !queryElement ) {\n if ( console ) console.error(`Bad element for Flickity: ${queryElement || element}`);\n return;\n }\n this.element = queryElement;\n // do not initialize twice on same element\n if ( this.element.flickityGUID ) {\n let 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 = { ...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.create = {};\n\nlet proto = Flickity.prototype;\n// inherit EventEmitter\nObject.assign( proto, EvEmitter.prototype );\n\nproto._create = function() {\n let { resize, watchCSS, rightToLeft } = this.options;\n // add id for Flickity.data\n let 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.beginMargin = rightToLeft ? 'marginRight' : 'marginLeft';\n this.endMargin = rightToLeft ? 'marginLeft' : 'marginRight';\n // create viewport & slider\n this.viewport = document.createElement('div');\n this.viewport.className = 'flickity-viewport';\n this._createSlider();\n // used for keyboard navigation\n this.focusableElems = [ this.element ];\n\n if ( resize || watchCSS ) {\n window.addEventListener( 'resize', this );\n }\n\n // add listeners from on option\n for ( let eventName in this.options.on ) {\n let listener = this.options.on[ eventName ];\n this.on( eventName, listener );\n }\n\n for ( let method in Flickity.create ) {\n Flickity.create[ method ].call( this );\n }\n\n if ( watchCSS ) {\n this.watchCSS();\n } else {\n this.activate();\n }\n};\n\n/**\n * set options\n * @param {Object} opts - options to extend\n */\nproto.option = function( opts ) {\n Object.assign( this.options, opts );\n};\n\nproto.activate = function() {\n if ( this.isActive ) 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 let cellElems = this._filterFindCellElements( this.element.children );\n this.slider.append( ...cellElems );\n this.viewport.append( this.slider );\n this.element.append( 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 let slider = document.createElement('div');\n slider.className = 'flickity-slider';\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._updateWrapShiftCells();\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 let cellElems = this._filterFindCellElements( elems );\n\n // create new Cells for collection\n return cellElems.map( ( cellElem ) => new Cell( cellElem ) );\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 let cellX = 0;\n // get cellX\n if ( index > 0 ) {\n let startCell = this.cells[ index - 1 ];\n cellX = startCell.x + startCell.size.outerWidth;\n }\n\n this.cells.slice( index ).forEach( ( cell ) => {\n cell.x = cellX;\n this._renderCellPosition( cell, 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 = this.cells.length ?\n this.getLastSlide().target - this.slides[0].target : 0;\n};\n\nproto._renderCellPosition = function( cell, x ) {\n // render position of cell with in slider\n let sideOffset = this.options.rightToLeft ? -1 : 1;\n let renderX = x * sideOffset;\n if ( this.options.percentPosition ) renderX *= this.size.innerWidth / cell.size.width;\n let positionValue = this.getPositionValue( renderX );\n cell.element.style.transform = `translateX( ${positionValue} )`;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells - cells to size\n */\nproto._sizeCells = function( cells ) {\n cells.forEach( ( cell ) => cell.getSize() );\n};\n\n// -------------------------- -------------------------- //\n\nproto.updateSlides = function() {\n this.slides = [];\n if ( !this.cells.length ) return;\n\n let { beginMargin, endMargin } = this;\n let slide = new Slide( beginMargin, endMargin, this.cellAlign );\n this.slides.push( slide );\n\n let canCellFit = this._getCanCellFit();\n\n this.cells.forEach( ( 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 let slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n ( cell.size.outerWidth - cell.size[ endMargin ] );\n\n if ( canCellFit( i, slideWidth ) ) {\n slide.addCell( cell );\n } else {\n // doesn't fit, new slide\n slide.updateTarget();\n\n slide = new Slide( beginMargin, endMargin, this.cellAlign );\n this.slides.push( slide );\n slide.addCell( cell );\n }\n } );\n // last slide\n slide.updateTarget();\n // update .selectedSlide\n this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n let { groupCells } = this.options;\n if ( !groupCells ) return () => false;\n\n if ( typeof groupCells == 'number' ) {\n // group by number. 3 -> [0,1,2], [3,4,5], ...\n let number = parseInt( groupCells, 10 );\n return ( i ) => ( i % number ) !== 0;\n }\n // default, group by width of slide\n let percent = 1;\n // parse '75%\n let percentMatch = typeof groupCells == 'string' && groupCells.match( /^(\\d+)%$/ );\n if ( percentMatch ) percent = parseInt( percentMatch[1], 10 ) / 100;\n let groupWidth = ( this.size.innerWidth + 1 ) * percent;\n return ( i, slideWidth ) => slideWidth <= groupWidth;\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\nlet cellAlignShorthands = {\n left: 0,\n center: 0.5,\n right: 1,\n};\n\nproto.setCellAlign = function() {\n let { cellAlign, rightToLeft } = this.options;\n let shorthand = cellAlignShorthands[ cellAlign ];\n this.cellAlign = shorthand !== undefined ? shorthand : cellAlign;\n if ( rightToLeft ) this.cellAlign = 1 - this.cellAlign;\n};\n\nproto.setGallerySize = function() {\n if ( !this.options.setGallerySize ) return;\n\n let height = this.options.adaptiveHeight && this.selectedSlide ?\n this.selectedSlide.height : this.maxCellHeight;\n this.viewport.style.height = `${height}px`;\n};\n\nproto._updateWrapShiftCells = function() {\n // update isWrapping\n this.isWrapping = this.getIsWrapping();\n // only for wrap-around\n if ( !this.isWrapping ) return;\n\n // unshift previous cells\n this._unshiftCells( this.beforeShiftCells );\n this._unshiftCells( this.afterShiftCells );\n // get before cells\n // initial gap\n let beforeGapX = this.cursorPosition;\n let lastIndex = this.cells.length - 1;\n this.beforeShiftCells = this._getGapCells( beforeGapX, lastIndex, -1 );\n // get after cells\n // ending gap between last cell and end of gallery viewport\n let afterGapX = this.size.innerWidth - this.cursorPosition;\n // start cloning at first cell, working forwards\n this.afterShiftCells = this._getGapCells( afterGapX, 0, 1 );\n};\n\nproto.getIsWrapping = function() {\n let { wrapAround } = this.options;\n if ( !wrapAround || this.slides.length < 2 ) return false;\n\n if ( wrapAround !== 'fill' ) return true;\n // check that slides can fit\n\n let gapWidth = this.slideableWidth - this.size.innerWidth;\n if ( gapWidth > this.size.innerWidth ) return true; // gap * 2x big, all good\n // check that content width - shifting cell is bigger than viewport width\n for ( let cell of this.cells ) {\n if ( cell.size.outerWidth > gapWidth ) return false;\n }\n return true;\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n // keep adding cells until the cover the initial gap\n let cells = [];\n while ( gapX > 0 ) {\n let cell = this.cells[ cellIndex ];\n if ( !cell ) break;\n\n cells.push( cell );\n cellIndex += increment;\n gapX -= cell.size.outerWidth;\n }\n return cells;\n};\n\n// ----- contain & wrap ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n let isContaining = this.options.contain && !this.isWrapping &&\n this.cells.length;\n if ( !isContaining ) return;\n\n let contentWidth = this.slideableWidth - this.getLastCell().size[ this.endMargin ];\n // content is less than gallery size\n let isContentSmaller = contentWidth < this.size.innerWidth;\n if ( isContentSmaller ) {\n // all cells fit inside gallery\n this.slides.forEach( ( slide ) => {\n slide.target = contentWidth * this.cellAlign;\n } );\n } else {\n // contain to bounds\n let beginBound = this.cursorPosition + this.cells[0].size[ this.beginMargin ];\n let endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n this.slides.forEach( ( slide ) => {\n slide.target = Math.max( slide.target, beginBound );\n slide.target = Math.min( slide.target, endBound );\n } );\n }\n};\n\n// ----- events ----- //\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 let 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 let $event = type;\n if ( event ) {\n // create jQuery event\n let jQEvent = new jQuery.Event( event );\n jQEvent.type = type;\n $event = jQEvent;\n }\n this.$element.trigger( $event, args );\n }\n};\n\nconst unidraggerEvents = [\n 'dragStart',\n 'dragMove',\n 'dragEnd',\n 'pointerDown',\n 'pointerMove',\n 'pointerEnd',\n 'staticClick',\n];\n\nlet _emitEvent = proto.emitEvent;\nproto.emitEvent = function( eventName, args ) {\n if ( eventName === 'staticClick' ) {\n // add cellElem and cellIndex args to staticClick\n let clickedCell = this.getParentCell( args[0].target );\n let cellElem = clickedCell && clickedCell.element;\n let cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n args = args.concat( cellElem, cellIndex );\n }\n // do regular thing\n _emitEvent.call( this, eventName, args );\n // duck-punch in jQuery events for Unidragger events\n let isUnidraggerEvent = unidraggerEvents.includes( eventName );\n if ( !isUnidraggerEvent || !jQuery || !this.$element ) return;\n\n eventName += this.options.namespaceJQueryEvents ? '.flickity' : '';\n let event = args.shift( 0 );\n let jQEvent = new jQuery.Event( event );\n jQEvent.type = eventName;\n this.$element.trigger( jQEvent, args );\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 ) return;\n\n index = parseInt( index, 10 );\n this._wrapSelect( index );\n\n if ( this.isWrapping || isWrap ) {\n index = utils.modulo( index, this.slides.length );\n }\n // bail if invalid index\n if ( !this.slides[ index ] ) return;\n\n let 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};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n if ( !this.isWrapping ) return;\n\n const { selectedIndex, slideableWidth, slides: { length } } = this;\n // shift index for wrap, do not wrap dragSelect\n if ( !this.isDragSelect ) {\n let wrapIndex = utils.modulo( index, length );\n // go to shortest\n let delta = Math.abs( wrapIndex - selectedIndex );\n let backWrapDelta = Math.abs( ( wrapIndex + length ) - selectedIndex );\n let forewardWrapDelta = Math.abs( ( wrapIndex - length ) - selectedIndex );\n if ( backWrapDelta < delta ) {\n index += length;\n } else if ( forewardWrapDelta < delta ) {\n index -= length;\n }\n }\n\n // wrap position so slider is within normal area\n if ( index < 0 ) {\n this.x -= slideableWidth;\n } else if ( index >= length ) {\n this.x += 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 let slide = this.slides[ this.selectedIndex ];\n // selectedIndex could be outside of slides, if triggered before resize()\n if ( !slide ) 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 this.selectedCell = slide.cells[0];\n this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n if ( this.selectedSlide ) this.selectedSlide.unselect();\n};\n\nproto.selectInitialIndex = function() {\n let 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 let cell = this.queryCell( initialIndex );\n if ( cell ) {\n this.selectCell( initialIndex, false, true );\n return;\n }\n }\n\n let 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 let cell = this.queryCell( value );\n if ( !cell ) return;\n\n let index = this.getCellSlideIndex( cell );\n this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n // get index of slide that has cell\n let cellSlide = this.slides.find( ( slide ) => slide.cells.includes( cell ) );\n return this.slides.indexOf( cellSlide );\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 ( let cell of this.cells ) {\n if ( cell.element === elem ) return cell;\n }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {[Element, Array, NodeList]} elems - multiple elements\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n elems = utils.makeArray( elems );\n return elems.map( ( elem ) => this.getCell( elem ) ).filter( Boolean );\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n return this.cells.map( ( cell ) => cell.element );\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem - child element\n * @returns {Flickit.Cell} cell - parent cell\n */\nproto.getParentCell = function( elem ) {\n // first check if elem is cell\n let cell = this.getCell( elem );\n if ( cell ) return cell;\n\n // try to get parent cell elem\n let closest = elem.closest('.flickity-slider > *');\n return this.getCell( closest );\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 ) return this.selectedSlide.getCellElements();\n\n index = index === undefined ? this.selectedIndex : index;\n\n let len = this.slides.length;\n if ( 1 + ( adjCount * 2 ) >= len ) {\n return this.getCellElements(); // get all\n }\n\n let cellElems = [];\n for ( let i = index - adjCount; i <= index + adjCount; i++ ) {\n let slideIndex = this.isWrapping ? utils.modulo( i, len ) : i;\n let 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 // do not select invalid selectors from hash: #123, #/. #791\n let isSelectorString = typeof selector == 'string' && !selector.match( /^[#.]?[\\d/]/ );\n if ( isSelectorString ) {\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// ----- 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 ) return;\n this.getSize();\n // wrap values\n if ( this.isWrapping ) {\n this.x = utils.modulo( this.x, this.slideableWidth );\n }\n this.positionCells();\n this._updateWrapShiftCells();\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 let 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 if ( !this.options.watchCSS ) return;\n\n let afterContent = getComputedStyle( this.element, ':after' ).content;\n // activate if :after { content: 'flickity' }\n if ( afterContent.includes('flickity') ) {\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 let { activeElement } = document;\n let handler = Flickity.keyboardHandlers[ event.key ];\n // only work if element is in focus\n if ( !this.options.accessibility || !activeElement || !handler ) return;\n\n let isFocused = this.focusableElems.some( ( elem ) => activeElement === elem );\n if ( isFocused ) handler.call( this );\n};\n\nFlickity.keyboardHandlers = {\n ArrowLeft: function() {\n this.uiChange();\n let leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n this[ leftMethod ]();\n },\n ArrowRight: function() {\n this.uiChange();\n let rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n this[ rightMethod ]();\n },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n this.element.focus({ preventScroll: true });\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n if ( !this.isActive ) 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( ( cell ) => cell.destroy() );\n this.viewport.remove();\n // move child elements back into element\n this.element.append( ...this.slider.children );\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\nObject.assign( 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 if ( elem ) return instances[ elem.flickityGUID ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nlet { jQueryBridget } = window;\nif ( jQuery && jQueryBridget ) {\n jQueryBridget( 'flickity', Flickity, jQuery );\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 * Unidragger v3.0.1\n * Draggable base class\n * MIT license\n */\n\n( function( window, factory ) {\n // universal module definition\n 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.Unidragger = factory(\n window,\n window.EvEmitter,\n );\n }\n\n}( typeof window != 'undefined' ? window : this, function factory( window, EvEmitter ) {\n\nfunction Unidragger() {}\n\n// inherit EvEmitter\nlet proto = Unidragger.prototype = Object.create( EvEmitter.prototype );\n\n// ----- bind start ----- //\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n let method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nlet startEvent, activeEvents;\nif ( '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 activeEvents = [ 'touchmove', 'touchend', 'touchcancel' ];\n} else if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n activeEvents = [ 'pointermove', 'pointerup', 'pointercancel' ];\n} else {\n // mouse events\n startEvent = 'mousedown';\n activeEvents = [ 'mousemove', 'mouseup' ];\n}\n\n// prototype so it can be overwriteable by Flickity\nproto.touchActionValue = 'none';\n\nproto.bindHandles = function() {\n this._bindHandles( 'addEventListener', this.touchActionValue );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( 'removeEventListener', '' );\n};\n\n/**\n * Add or remove start event\n * @param {String} bindMethod - addEventListener or removeEventListener\n * @param {String} touchAction - value for touch-action CSS property\n */\nproto._bindHandles = function( bindMethod, touchAction ) {\n this.handles.forEach( ( handle ) => {\n handle[ bindMethod ]( startEvent, this );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if ( window.PointerEvent ) handle.style.touchAction = touchAction;\n } );\n};\n\nproto.bindActivePointerEvents = function() {\n activeEvents.forEach( ( eventName ) => {\n window.addEventListener( eventName, this );\n } );\n};\n\nproto.unbindActivePointerEvents = function() {\n activeEvents.forEach( ( eventName ) => {\n window.removeEventListener( eventName, this );\n } );\n};\n\n// ----- event handler helpers ----- //\n\n// trigger method with matching pointer\nproto.withPointer = function( methodName, event ) {\n if ( event.pointerId === this.pointerIdentifier ) {\n this[ methodName ]( event, event );\n }\n};\n\n// trigger method with matching touch\nproto.withTouch = function( methodName, event ) {\n let touch;\n for ( let changedTouch of event.changedTouches ) {\n if ( changedTouch.identifier === this.pointerIdentifier ) {\n touch = changedTouch;\n }\n }\n if ( touch ) this[ methodName ]( event, touch );\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\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// nodes that have text fields\nconst cursorNodes = [ 'TEXTAREA', 'INPUT', 'SELECT', 'OPTION' ];\n// input types that do not have text fields\nconst clickTypes = [ 'radio', 'checkbox', 'button', 'submit', 'image', 'file' ];\n\n/**\n * any time you set `event, pointer` it refers to:\n * @param {Event} event\n * @param {Event | Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n // dismiss multi-touch taps, right clicks, and clicks on text fields\n let isCursorNode = cursorNodes.includes( event.target.nodeName );\n let isClickType = clickTypes.includes( event.target.type );\n let isOkayElement = !isCursorNode || isClickType;\n let isOkay = !this.isPointerDown && !event.button && isOkayElement;\n if ( !isOkay ) return;\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 // track position for move\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n this.bindActivePointerEvents();\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// ----- move ----- //\n\nproto.onmousemove = function( event ) {\n this.pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n this.withPointer( 'pointerMove', event );\n};\n\nproto.ontouchmove = function( event ) {\n this.withTouch( 'pointerMove', event );\n};\n\nproto.pointerMove = function( event, pointer ) {\n let moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY,\n };\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n // start drag if pointer has moved far enough to start drag\n let isDragStarting = !this.isDragging && this.hasDragStarted( moveVector );\n if ( isDragStarting ) this.dragStart( event, pointer );\n if ( this.isDragging ) this.dragMove( event, pointer, 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// ----- drag ----- //\n\nproto.dragStart = function( event, pointer ) {\n this.isDragging = true;\n this.isPreventingClicks = true; // set flag to prevent clicks\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// ----- end ----- //\n\nproto.onmouseup = function( event ) {\n this.pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n this.withPointer( 'pointerUp', event );\n};\n\nproto.ontouchend = function( event ) {\n this.withTouch( 'pointerUp', event );\n};\n\nproto.pointerUp = function( event, pointer ) {\n this.pointerDone();\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n\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\nproto.dragEnd = function( event, pointer ) {\n this.isDragging = false; // reset flag\n // re-enable clicking async\n setTimeout( () => delete this.isPreventingClicks );\n\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// triggered on pointer up & pointer cancel\nproto.pointerDone = function() {\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n this.unbindActivePointerEvents();\n this.emitEvent('pointerDone');\n};\n\n// ----- cancel ----- //\n\nproto.onpointercancel = function( event ) {\n this.withPointer( 'pointerCancel', event );\n};\n\nproto.ontouchcancel = function( event ) {\n this.withTouch( 'pointerCancel', event );\n};\n\nproto.pointerCancel = function( event, pointer ) {\n this.pointerDone();\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- click ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) event.preventDefault();\n};\n\n// triggered after pointer down & up with no/tiny movement\nproto.staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n let isMouseup = event.type === 'mouseup';\n if ( isMouseup && this.isIgnoringMouseUp ) return;\n\n this.emitEvent( 'staticClick', [ event, pointer ] );\n\n // set flag for emulated clicks 300ms after touchend\n if ( isMouseup ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 400ms\n setTimeout( () => {\n delete this.isIgnoringMouseUp;\n }, 400 );\n }\n};\n\n// ----- ----- //\n\nreturn Unidragger;\n\n} ) );\n","// drag\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('./core'),\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}( typeof window != 'undefined' ? window : this,\n function factory( window, Flickity, Unidragger, utils ) {\n\n// ----- defaults ----- //\n\nObject.assign( Flickity.defaults, {\n draggable: '>1',\n dragThreshold: 3,\n} );\n\n// -------------------------- drag prototype -------------------------- //\n\nlet proto = Flickity.prototype;\nObject.assign( proto, Unidragger.prototype ); // inherit Unidragger\nproto.touchActionValue = '';\n\n// -------------------------- -------------------------- //\n\nFlickity.create.drag = 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 this.on( 'pointerDown', this.handlePointerDown );\n this.on( 'pointerUp', this.handlePointerUp );\n this.on( 'pointerDown', this.handlePointerDone );\n this.on( 'dragStart', this.handleDragStart );\n this.on( 'dragMove', this.handleDragMove );\n this.on( 'dragEnd', this.handleDragEnd );\n this.on( 'staticClick', this.handleStaticClick );\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 this.element.classList.toggle( 'is-draggable', this.isDraggable );\n};\n\nproto._uiChangeDrag = function() {\n delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.handlePointerDown = function( event ) {\n if ( !this.isDraggable ) {\n // proceed for staticClick\n this.bindActivePointerEvents( event );\n return;\n }\n\n let isTouchStart = event.type === 'touchstart';\n let isTouchPointer = event.pointerType === 'touch';\n let isFocusNode = event.target.matches('input, textarea, select');\n if ( !isTouchStart && !isTouchPointer && !isFocusNode ) event.preventDefault();\n if ( !isFocusNode ) this.focus();\n // blur\n if ( document.activeElement !== this.element ) document.activeElement.blur();\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 this.bindActivePointerEvents( event );\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.handlePointerUp = function() {\n delete this.isTouchScrolling;\n this.viewport.classList.remove('is-pointer-down');\n};\n\nproto.handlePointerDone = function() {\n window.removeEventListener( 'scroll', this );\n delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.handleDragStart = function() {\n if ( !this.isDraggable ) return;\n\n this.dragStartPosition = this.x;\n this.startAnimation();\n window.removeEventListener( 'scroll', this );\n};\n\nproto.handleDragMove = function( event, pointer, moveVector ) {\n if ( !this.isDraggable ) return;\n\n event.preventDefault();\n\n this.previousDragX = this.dragX;\n // reverse if right-to-left\n let direction = this.options.rightToLeft ? -1 : 1;\n // wrap around move. #589\n if ( this.isWrapping ) moveVector.x %= this.slideableWidth;\n let dragX = this.dragStartPosition + moveVector.x * direction;\n\n if ( !this.isWrapping ) {\n // slow drag\n let originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n let endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n }\n\n this.dragX = dragX;\n this.dragMoveTime = new Date();\n};\n\nproto.handleDragEnd = function() {\n if ( !this.isDraggable ) return;\n\n let { freeScroll } = this.options;\n if ( freeScroll ) this.isFreeScrolling = true;\n // set selectedIndex based on where flick will end up\n let index = this.dragEndRestingSelect();\n\n if ( freeScroll && !this.isWrapping ) {\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 let restingX = this.getRestingPosition();\n this.isFreeScrolling = -restingX > this.slides[0].target &&\n -restingX < this.getLastSlide().target;\n } else if ( !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 // HACK, set flag so dragging stays in correct direction\n this.isDragSelect = this.isWrapping;\n this.select( index );\n delete this.isDragSelect;\n};\n\nproto.dragEndRestingSelect = function() {\n let restingX = this.getRestingPosition();\n // how far away from selected slide\n let distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n // get closet resting going up and going down\n let positiveResting = this._getClosestResting( restingX, distance, 1 );\n let negativeResting = this._getClosestResting( restingX, distance, -1 );\n // use closer resting for wrap-around\n return positiveResting.distance < negativeResting.distance ?\n positiveResting.index : negativeResting.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 let index = this.selectedIndex;\n let minDistance = Infinity;\n let condition = this.options.contain && !this.isWrapping ?\n // if containing, keep going if distance is equal to minDistance\n ( dist, minDist ) => dist <= minDist :\n ( dist, minDist ) => 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 ) 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 let len = this.slides.length;\n // wrap around if at least 2 slides\n let isWrapAround = this.options.wrapAround && len > 1;\n let slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n let slide = this.slides[ slideIndex ];\n if ( !slide ) return null;\n\n // add distance for wrap-around slides\n let 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 let distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n let 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// ----- scroll ----- //\n\nproto.onscroll = function() {\n let scroll = getScrollPosition();\n let scrollMoveX = this.pointerDownScroll.x - scroll.x;\n let 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","// prev/next buttons\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory( require('./core') );\n } else {\n // browser global\n factory( window.Flickity );\n }\n\n}( typeof window != 'undefined' ? window : this, function factory( Flickity ) {\n\nconst svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( increment, direction, arrowShape ) {\n this.increment = increment;\n this.direction = direction;\n this.isPrevious = increment === 'previous';\n this.isLeft = direction === 'left';\n this._create( arrowShape );\n}\n\nPrevNextButton.prototype._create = function( arrowShape ) {\n // properties\n let element = this.element = document.createElement('button');\n element.className = `flickity-button flickity-prev-next-button ${this.increment}`;\n let label = this.isPrevious ? 'Previous' : 'Next';\n // prevent button from submitting form https://stackoverflow.com/a/10836076/182183\n element.setAttribute( 'type', 'button' );\n element.setAttribute( 'aria-label', label );\n // init as disabled\n this.disable();\n // create arrow\n let svg = this.createSVG( label, arrowShape );\n element.append( svg );\n};\n\nPrevNextButton.prototype.createSVG = function( label, arrowShape ) {\n let svg = document.createElementNS( svgURI, 'svg' );\n svg.setAttribute( 'class', 'flickity-button-icon' );\n svg.setAttribute( 'viewBox', '0 0 100 100' );\n // add title #1189\n let title = document.createElementNS( svgURI, 'title' );\n title.append( label );\n // add path\n let path = document.createElementNS( svgURI, 'path' );\n let pathMovements = getArrowMovements( 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.append( title, 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' ) return shape;\n\n let { x0, x1, x2, x3, y1, y2 } = shape;\n\n // create movement string\n return `M ${x0}, 50\n L ${x1}, ${y1 + 50}\n L ${x2}, ${y2 + 50}\n L ${x3}, 50\n L ${x2}, ${50 - y2}\n L ${x1}, ${50 - y1}\n Z`;\n}\n\n// ----- ----- //\n\nPrevNextButton.prototype.enable = function() {\n this.element.removeAttribute('disabled');\n};\n\nPrevNextButton.prototype.disable = function() {\n this.element.setAttribute( 'disabled', true );\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nObject.assign( 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.create.prevNextButtons = function() {\n if ( !this.options.prevNextButtons ) return;\n\n let { rightToLeft, arrowShape } = this.options;\n let prevDirection = rightToLeft ? 'right' : 'left';\n let nextDirection = rightToLeft ? 'left' : 'right';\n this.prevButton = new PrevNextButton( 'previous', prevDirection, arrowShape );\n this.nextButton = new PrevNextButton( 'next', nextDirection, arrowShape );\n this.focusableElems.push( this.prevButton.element );\n this.focusableElems.push( this.nextButton.element );\n\n this.handlePrevButtonClick = () => {\n this.uiChange();\n this.previous();\n };\n\n this.handleNextButtonClick = () => {\n this.uiChange();\n this.next();\n };\n\n this.on( 'activate', this.activatePrevNextButtons );\n this.on( 'select', this.updatePrevNextButtons );\n};\n\nlet proto = Flickity.prototype;\n\nproto.updatePrevNextButtons = function() {\n let lastIndex = this.slides.length ? this.slides.length - 1 : 0;\n this.updatePrevNextButton( this.prevButton, 0 );\n this.updatePrevNextButton( this.nextButton, lastIndex );\n};\n\nproto.updatePrevNextButton = function( button, disabledIndex ) {\n // enable is wrapAround and at least 2 slides\n if ( this.isWrapping && this.slides.length > 1 ) {\n button.enable();\n return;\n }\n\n let isEnabled = this.selectedIndex !== disabledIndex;\n button[ isEnabled ? 'enable' : 'disable' ]();\n // if disabling button that is focused,\n // shift focus to element to maintain keyboard accessibility\n let isDisabledFocused = !isEnabled && document.activeElement === button.element;\n if ( isDisabledFocused ) this.focus();\n};\n\nproto.activatePrevNextButtons = function() {\n this.prevButton.element.addEventListener( 'click', this.handlePrevButtonClick );\n this.nextButton.element.addEventListener( 'click', this.handleNextButtonClick );\n this.element.append( this.prevButton.element, this.nextButton.element );\n this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n this.prevButton.element.remove();\n this.nextButton.element.remove();\n this.prevButton.element.removeEventListener( 'click', this.handlePrevButtonClick );\n this.nextButton.element.removeEventListener( 'click', this.handleNextButtonClick );\n this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// -------------------------- -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n} ) );\n","// page dots\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./core'),\n require('fizzy-ui-utils'),\n );\n } else {\n // browser global\n factory(\n window.Flickity,\n window.fizzyUIUtils,\n );\n }\n\n}( typeof window != 'undefined' ? window : this, function factory( Flickity, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\nfunction PageDots() {\n // create holder element\n this.holder = document.createElement('div');\n this.holder.className = 'flickity-page-dots';\n // create dots, array of elements\n this.dots = [];\n}\n\nPageDots.prototype.setDots = function( slidesLength ) {\n // get difference between number of slides and number of dots\n let delta = slidesLength - 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 let newDots = new Array( count ).fill()\n .map( ( item, i ) => {\n let dot = document.createElement('button');\n dot.setAttribute( 'type', 'button' );\n let num = i + 1 + this.dots.length;\n dot.className = 'flickity-page-dot';\n dot.textContent = `View slide ${num}`;\n return dot;\n } );\n\n this.holder.append( ...newDots );\n this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n // remove from this.dots collection\n let removeDots = this.dots.splice( this.dots.length - count, count );\n // remove from DOM\n removeDots.forEach( ( dot ) => dot.remove() );\n};\n\nPageDots.prototype.updateSelected = function( index ) {\n // remove selected class on previous\n if ( this.selectedDot ) {\n this.selectedDot.classList.remove('is-selected');\n this.selectedDot.removeAttribute('aria-current');\n }\n // don't proceed if no dots\n if ( !this.dots.length ) return;\n\n this.selectedDot = this.dots[ index ];\n this.selectedDot.classList.add('is-selected');\n this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nObject.assign( Flickity.defaults, {\n pageDots: true,\n} );\n\nFlickity.create.pageDots = function() {\n if ( !this.options.pageDots ) return;\n\n this.pageDots = new PageDots();\n this.handlePageDotsClick = this.onPageDotsClick.bind( 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\nlet proto = Flickity.prototype;\n\nproto.activatePageDots = function() {\n this.pageDots.setDots( this.slides.length );\n this.focusableElems.push( ...this.pageDots.dots );\n this.pageDots.holder.addEventListener( 'click', this.handlePageDotsClick );\n this.element.append( this.pageDots.holder );\n};\n\nproto.onPageDotsClick = function( event ) {\n let index = this.pageDots.dots.indexOf( event.target );\n if ( index === -1 ) return; // only dot clicks\n\n this.uiChange();\n this.select( index );\n};\n\nproto.updateSelectedPageDots = function() {\n this.pageDots.updateSelected( this.selectedIndex );\n};\n\nproto.updatePageDots = function() {\n this.pageDots.dots.forEach( ( dot ) => {\n utils.removeFrom( this.focusableElems, dot );\n } );\n this.pageDots.setDots( this.slides.length );\n this.focusableElems.push( ...this.pageDots.dots );\n};\n\nproto.deactivatePageDots = function() {\n this.pageDots.holder.remove();\n this.pageDots.holder.removeEventListener( 'click', this.handlePageDotsClick );\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 module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory( require('./core') );\n } else {\n // browser global\n factory( window.Flickity );\n }\n\n}( typeof window != 'undefined' ? window : this, function factory( Flickity ) {\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( autoPlay, onTick ) {\n this.autoPlay = autoPlay;\n this.onTick = onTick;\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\n// start play\nPlayer.prototype.play = function() {\n if ( this.state === 'playing' ) return;\n\n // do not play if page is hidden, start playing when page is visible\n let 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' ) return;\n\n // default to 3 seconds\n let time = typeof this.autoPlay == 'number' ? this.autoPlay : 3000;\n // HACK: reset ticks if stopped and started within interval\n this.clear();\n this.timeout = setTimeout( () => {\n this.onTick();\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' ) this.play();\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n let 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\nObject.assign( Flickity.defaults, {\n pauseAutoPlayOnHover: true,\n} );\n\nFlickity.create.player = function() {\n this.player = new Player( this.options.autoPlay, () => {\n this.next( true );\n } );\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\nlet proto = Flickity.prototype;\n\nproto.activatePlayer = function() {\n if ( !this.options.autoPlay ) 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 ) 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","// add, remove cell\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./core'),\n require('fizzy-ui-utils'),\n );\n } else {\n // browser global\n factory(\n window.Flickity,\n window.fizzyUIUtils,\n );\n }\n\n}( typeof window != 'undefined' ? window : this, function factory( Flickity, utils ) {\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n let fragment = document.createDocumentFragment();\n cells.forEach( ( cell ) => fragment.appendChild( cell.element ) );\n return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nlet 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 let cells = this._makeCells( elems );\n if ( !cells || !cells.length ) return;\n\n let len = this.cells.length;\n // default to append\n index = index === undefined ? len : index;\n // add cells with document fragment\n let fragment = getCellsFragment( cells );\n // append to slider\n let isAppend = index === len;\n if ( isAppend ) {\n this.slider.appendChild( fragment );\n } else {\n let 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 let 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 );\n this.positionSliderAtSelected();\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 let cells = this.getCells( elems );\n if ( !cells || !cells.length ) return;\n\n let minCellIndex = this.cells.length - 1;\n // remove cells from collection & DOM\n cells.forEach( ( cell ) => {\n cell.remove();\n let index = this.cells.indexOf( cell );\n minCellIndex = Math.min( index, minCellIndex );\n utils.removeFrom( this.cells, cell );\n } );\n\n this.cellChange( minCellIndex );\n this.positionSliderAtSelected();\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 let cell = this.getCell( elem );\n if ( !cell ) return;\n\n cell.getSize();\n\n let index = this.cells.indexOf( cell );\n this.cellChange( index );\n // do not position slider after lazy load\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 */\nproto.cellChange = function( changedCellIndex ) {\n let prevSelectedElem = this.selectedElement;\n this._positionCells( changedCellIndex );\n this._updateWrapShiftCells();\n this.setGallerySize();\n // update selectedIndex, try to maintain position & select previous selected element\n let cell = this.getCell( prevSelectedElem );\n if ( cell ) this.selectedIndex = this.getCellSlideIndex( cell );\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};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","// lazyload\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./core'),\n require('fizzy-ui-utils'),\n );\n } else {\n // browser global\n factory(\n window.Flickity,\n window.fizzyUIUtils,\n );\n }\n\n}( typeof window != 'undefined' ? window : this, function factory( Flickity, utils ) {\n\nconst lazyAttr = 'data-flickity-lazyload';\nconst lazySrcAttr = `${lazyAttr}-src`;\nconst lazySrcsetAttr = `${lazyAttr}-srcset`;\nconst imgSelector = `img[${lazyAttr}], img[${lazySrcAttr}], ` +\n `img[${lazySrcsetAttr}], source[${lazySrcsetAttr}]`;\n\nFlickity.create.lazyLoad = function() {\n this.on( 'select', this.lazyLoad );\n\n this.handleLazyLoadComplete = this.onLazyLoadComplete.bind( this );\n};\n\nlet proto = Flickity.prototype;\n\nproto.lazyLoad = function() {\n let { lazyLoad } = this.options;\n if ( !lazyLoad ) return;\n\n // get adjacent cells, use lazyLoad option for adjacent count\n let adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n // lazy load images\n this.getAdjacentCellElements( adjCount )\n .map( getCellLazyImages )\n .flat()\n .forEach( ( img ) => new LazyLoader( img, this.handleLazyLoadComplete ) );\n};\n\nfunction getCellLazyImages( cellElem ) {\n // check if cell element is lazy image\n if ( cellElem.matches('img') ) {\n let cellAttr = cellElem.getAttribute( lazyAttr );\n let cellSrcAttr = cellElem.getAttribute( lazySrcAttr );\n let cellSrcsetAttr = cellElem.getAttribute( lazySrcsetAttr );\n if ( cellAttr || cellSrcAttr || cellSrcsetAttr ) {\n return cellElem;\n }\n }\n // select lazy images in cell\n return [ ...cellElem.querySelectorAll( imgSelector ) ];\n}\n\nproto.onLazyLoadComplete = function( img, event ) {\n let cell = this.getParentCell( img );\n let cellElem = cell && cell.element;\n this.cellSizeChange( cellElem );\n\n this.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n * @param {Image} img - Image element\n * @param {Function} onComplete - callback function\n */\nfunction LazyLoader( img, onComplete ) {\n this.img = img;\n this.onComplete = onComplete;\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 let src = this.img.getAttribute( lazyAttr ) ||\n this.img.getAttribute( lazySrcAttr );\n let srcset = this.img.getAttribute( lazySrcsetAttr );\n // set src & serset\n this.img.src = src;\n if ( srcset ) this.img.setAttribute( 'srcset', srcset );\n // remove attr\n this.img.removeAttribute( lazyAttr );\n this.img.removeAttribute( lazySrcAttr );\n this.img.removeAttribute( lazySrcsetAttr );\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 let mediaElem = this.img.parentNode.matches('picture') ? this.img.parentNode : this.img;\n mediaElem.classList.add( className );\n\n this.onComplete( this.img, event );\n};\n\n// ----- ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n} ) );\n","/*!\n * imagesLoaded v5.0.0\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory( window, require('ev-emitter') );\n } else {\n // browser global\n window.imagesLoaded = factory( window, window.EvEmitter );\n }\n\n} )( typeof window !== 'undefined' ? window : this,\n function factory( window, EvEmitter ) {\n\nlet $ = window.jQuery;\nlet console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n // use object if already an array\n if ( Array.isArray( obj ) ) return obj;\n\n let isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n // convert nodeList to array\n if ( isArrayLike ) return [ ...obj ];\n\n // array of single index\n return [ obj ];\n}\n\n// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {[Array, Element, NodeList, String]} elem\n * @param {[Object, Function]} options - if function, use as callback\n * @param {Function} onAlways - callback function\n * @returns {ImagesLoaded}\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n if ( !( this instanceof ImagesLoaded ) ) {\n return new ImagesLoaded( elem, options, onAlways );\n }\n // use elem as selector string\n let queryElem = elem;\n if ( typeof elem == 'string' ) {\n queryElem = document.querySelectorAll( elem );\n }\n // bail if bad element\n if ( !queryElem ) {\n console.error(`Bad element for imagesLoaded ${queryElem || elem}`);\n return;\n }\n\n this.elements = makeArray( queryElem );\n this.options = {};\n // shift arguments if no options set\n if ( typeof options == 'function' ) {\n onAlways = options;\n } else {\n Object.assign( this.options, options );\n }\n\n if ( onAlways ) this.on( 'always', onAlways );\n\n this.getImages();\n // add jQuery Deferred object\n if ( $ ) this.jqDeferred = new $.Deferred();\n\n // HACK check async to allow time to bind listeners\n setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.getImages = function() {\n this.images = [];\n\n // filter & find items if we have an item selector\n this.elements.forEach( this.addElementImages, this );\n};\n\nconst elementNodeTypes = [ 1, 9, 11 ];\n\n/**\n * @param {Node} elem\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n // filter siblings\n if ( elem.nodeName === 'IMG' ) {\n this.addImage( elem );\n }\n // get background image on element\n if ( this.options.background === true ) {\n this.addElementBackgroundImages( elem );\n }\n\n // find children\n // no non-element nodes, #143\n let { nodeType } = elem;\n if ( !nodeType || !elementNodeTypes.includes( nodeType ) ) return;\n\n let childImgs = elem.querySelectorAll('img');\n // concat childElems to filterFound array\n for ( let img of childImgs ) {\n this.addImage( img );\n }\n\n // get child background images\n if ( typeof this.options.background == 'string' ) {\n let children = elem.querySelectorAll( this.options.background );\n for ( let child of children ) {\n this.addElementBackgroundImages( child );\n }\n }\n};\n\nconst reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n let style = getComputedStyle( elem );\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n if ( !style ) return;\n\n // get url inside url(\"...\")\n let matches = reURL.exec( style.backgroundImage );\n while ( matches !== null ) {\n let url = matches && matches[2];\n if ( url ) {\n this.addBackground( url, elem );\n }\n matches = reURL.exec( style.backgroundImage );\n }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n let loadingImage = new LoadingImage( img );\n this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n let background = new Background( url, elem );\n this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n this.progressedCount = 0;\n this.hasAnyBroken = false;\n // complete if no images\n if ( !this.images.length ) {\n this.complete();\n return;\n }\n\n /* eslint-disable-next-line func-style */\n let onProgress = ( image, elem, message ) => {\n // HACK - Chrome triggers event before object properties have changed. #83\n setTimeout( () => {\n this.progress( image, elem, message );\n } );\n };\n\n this.images.forEach( function( loadingImage ) {\n loadingImage.once( 'progress', onProgress );\n loadingImage.check();\n } );\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n this.progressedCount++;\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n // progress event\n this.emitEvent( 'progress', [ this, image, elem ] );\n if ( this.jqDeferred && this.jqDeferred.notify ) {\n this.jqDeferred.notify( this, image );\n }\n // check if completed\n if ( this.progressedCount === this.images.length ) {\n this.complete();\n }\n\n if ( this.options.debug && console ) {\n console.log( `progress: ${message}`, image, elem );\n }\n};\n\nImagesLoaded.prototype.complete = function() {\n let eventName = this.hasAnyBroken ? 'fail' : 'done';\n this.isComplete = true;\n this.emitEvent( eventName, [ this ] );\n this.emitEvent( 'always', [ this ] );\n if ( this.jqDeferred ) {\n let jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n this.jqDeferred[ jqMethod ]( this );\n }\n};\n\n// -------------------------- -------------------------- //\n\nfunction LoadingImage( img ) {\n this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n // If complete is true and browser supports natural sizes,\n // try to check for image status manually.\n let isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n // report based on naturalWidth\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n return;\n }\n\n // If none of the checks above matched, simulate loading on detached element.\n this.proxyImage = new Image();\n // add crossOrigin attribute. #204\n if ( this.img.crossOrigin ) {\n this.proxyImage.crossOrigin = this.img.crossOrigin;\n }\n this.proxyImage.addEventListener( 'load', this );\n this.proxyImage.addEventListener( 'error', this );\n // bind to image as well for Firefox. #191\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.proxyImage.src = this.img.currentSrc || this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n // check for non-zero, non-undefined naturalWidth\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n let { parentNode } = this.img;\n // emit progress with parent or self \n let elem = parentNode.nodeName === 'PICTURE' ? parentNode : this.img;\n this.emitEvent( 'progress', [ this, elem, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n let method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\nLoadingImage.prototype.onload = function() {\n this.confirm( true, 'onload' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n this.confirm( false, 'onerror' );\n this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n this.proxyImage.removeEventListener( 'load', this );\n this.proxyImage.removeEventListener( 'error', this );\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n this.url = url;\n this.element = element;\n this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n this.img.addEventListener( 'load', this );\n this.img.addEventListener( 'error', this );\n this.img.src = this.url;\n // check if image is already complete\n let isComplete = this.getIsImageComplete();\n if ( isComplete ) {\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n this.unbindEvents();\n }\n};\n\nBackground.prototype.unbindEvents = function() {\n this.img.removeEventListener( 'load', this );\n this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n this.isLoaded = isLoaded;\n this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n jQuery = jQuery || window.jQuery;\n if ( !jQuery ) return;\n\n // set local variable\n $ = jQuery;\n // $().imagesLoaded()\n $.fn.imagesLoaded = function( options, onAlways ) {\n let instance = new ImagesLoaded( this, options, onAlways );\n return instance.jqDeferred.promise( $( this ) );\n };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// -------------------------- -------------------------- //\n\nreturn ImagesLoaded;\n\n} );\n","// imagesloaded\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('./core'),\n require('imagesloaded'),\n );\n } else {\n // browser global\n factory(\n window.Flickity,\n window.imagesLoaded,\n );\n }\n\n}( typeof window != 'undefined' ? window : this,\n function factory( Flickity, imagesLoaded ) {\n\nFlickity.create.imagesLoaded = function() {\n this.on( 'activate', this.imagesLoaded );\n};\n\nFlickity.prototype.imagesLoaded = function() {\n if ( !this.options.imagesLoaded ) return;\n\n let onImagesLoadedProgress = ( instance, image ) => {\n let cell = this.getParentCell( image.img );\n this.cellSizeChange( cell && cell.element );\n if ( !this.options.freeScroll ) this.positionSliderAtSelected();\n };\n imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\n};\n\nreturn Flickity;\n\n} ) );\n","/*!\n * Flickity v3.0.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-2022 Metafizzy\n */\n\nif ( typeof module == 'object' && module.exports ) {\n const Flickity = require('./core');\n require('./drag');\n require('./prev-next-button');\n require('./page-dots');\n require('./player');\n require('./add-remove-cell');\n require('./lazyload');\n require('./imagesloaded');\n\n module.exports = Flickity;\n}\n","
\n\t
\n\t\t

Vorstellungen

\n\t\t
\n\t\t\t

{{ location.name }}

\n\n\t\t\t
\n\t\t\t\t
\n\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\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
{{ $formatters.humanizeDate(date) }}
\n\t\t\t\t\t\t\t\t\t\t{{ $formatters.formatDate(date, \"EEEE\") }}\n\t\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
\n\t\t\t\t\t\t\t
\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
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
neues Kinoprogramm jeweils am Montagabend
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n","
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
{{ spokenLanguages }}
\n\t\t\t\t
Untertitel: {{ subtitleLanguages }}
\n\t\t\t
\n\t\t\t
{{ version.auditorium }}
\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\n\t\t\t
0\">\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t
\n
\n","/*!\n * Flickity sync v2.0.0\n * enable sync for Flickity\n */\n\n( function( window, factory ) {\n // universal module definition\n if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n require('flickity'),\n require('fizzy-ui-utils'),\n );\n } else {\n // browser global\n factory(\n window.Flickity,\n window.fizzyUIUtils,\n );\n }\n\n}( typeof window != 'undefined' ? window : this, function factory( Flickity, utils ) {\n\n// -------------------------- sync prototype -------------------------- //\n\n// Flickity.defaults.sync = false;\n\nFlickity.create.sync = function() {\n this.syncers = {};\n let syncOption = this.options.sync;\n\n this.on( 'destroy', this.unsyncAll );\n\n if ( !syncOption ) return;\n // HACK do async, give time for other flickity to be initalized\n setTimeout( () => {\n this.sync( syncOption );\n } );\n};\n\nlet proto = Flickity.prototype;\n\n/**\n * sync\n * @param {[Element, String]} elem\n */\nproto.sync = function( elem ) {\n elem = utils.getQueryElement( elem );\n let companion = Flickity.data( elem );\n if ( !companion ) return;\n // two hearts, that beat as one\n this._syncCompanion( companion );\n companion._syncCompanion( this );\n};\n\n/**\n * @param {Flickity} companion\n */\nproto._syncCompanion = function( companion ) {\n let _this = this;\n function syncListener() {\n let index = _this.selectedIndex;\n // do not select if already selected, prevent infinite loop\n if ( companion.selectedIndex !== index ) {\n companion.select( index );\n }\n }\n this.on( 'select', syncListener );\n // keep track of all synced flickities\n // hold on to listener to unsync\n this.syncers[ companion.guid ] = {\n flickity: companion,\n listener: syncListener,\n };\n};\n\n/**\n * unsync\n * @param {[Element, String]} elem\n */\nproto.unsync = function( elem ) {\n elem = utils.getQueryElement( elem );\n let companion = Flickity.data( elem );\n this._unsync( companion );\n};\n\n/**\n * @param {Flickity} companion\n */\nproto._unsync = function( companion ) {\n if ( !companion ) return;\n // I love you but I've chosen darkness\n this._unsyncCompanion( companion );\n companion._unsyncCompanion( this );\n};\n\n/**\n * @param {Flickity} companion\n */\nproto._unsyncCompanion = function( companion ) {\n let id = companion.guid;\n let syncer = this.syncers[ id ];\n this.off( 'select', syncer.listener );\n delete this.syncers[ id ];\n};\n\nproto.unsyncAll = function() {\n for ( let id in this.syncers ) {\n let syncer = this.syncers[ id ];\n this._unsync( syncer.flickity );\n }\n};\n\n// ----- ----- //\n\nreturn Flickity;\n\n} ) );\n","
\n\t\n\n\t
\n\t\t
\n\t\t\t
{{ $formatters.humanizeDate(day.date) }}
\n\t\t\t{{ $formatters.formatDate(day.date, \"EEEE\") }}\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t
\n\t
Weitere Vorstellungen jeden Montag im neuen Kinoprogramm.
\n
\n","import { Vue, Component, Prop, Watch, Ref } from \"@wagich/vue-facing-decorator-metadata\";\nimport Flickity from \"flickity\";\nimport \"flickity-sync\";\nimport { differenceInCalendarDays } from \"date-fns\";\n\nimport { render } from \"./version-shows.html\";\n\nimport { eventBus } from \"../event-bus\";\nimport { jsonHeaders, humanizeDate, formatDate as formatDateFilter, expandLanguages } from \"../utils\";\nimport { TicketButton } from \"./ticket-button\";\nimport { DisplayMode } from \"./movie-tickets\";\nimport { SetupChildSliderEvent, type SetupChildSliderArgs } from \"./events\";\nimport { MatchVersionHeaderHeightEvent, type MatchVersionHeaderHeightArgs } from \"./version-header\";\nimport type { Version } from \"./models\";\nimport type { MovieListItem } from \"../common/models\";\n\nexport interface HeaderHeightChangedArgs {\n\ttargetVersionHash: string;\n\theight: number;\n}\nexport const HeaderHeightChangedEvent = \"VersionShows:HeaderHeightChanged\";\n\n@Component({\n\trender,\n\tcomponents: {\n\t\tTicketButton\n\t},\n})\nexport class VersionShows extends Vue {\n\tprivate onResizeThrottled = (e: Event) => window.requestAnimationFrame(() => this.emitHeightChanged());\n\tprivate flickity: Flickity;\n\tprivate syncTarget: string | null;\n\n\t@Ref() shows: HTMLElement;\n\n\t@Prop() movie: MovieListItem;\n\t@Prop() version: Version;\n\t@Prop() startsFromToday: boolean;\n\t@Prop() displayMode: DisplayMode;\n\n\tget id(): string {\n\t\treturn this.version.hash;\n\t}\n\n\tget today(): Date {\n\t\treturn new Date();\n\t}\n\n\tget showSeparator(): boolean {\n\t\tif (this.version.days.length == 0) {\n\t\t\treturn false;\n\t\t}\n\t\tvar dayDifference = differenceInCalendarDays(this.version.days[0].date, new Date);\n\t\treturn dayDifference > 1;\n\t}\n\n\tmounted() {\n\t\twindow.addEventListener(\"resize\", this.onResizeThrottled);\n\n\t\teventBus.on(SetupChildSliderEvent, (e: SetupChildSliderArgs) => {\n\t\t\tif (e.targetHash === this.version.hash) {\n\t\t\t\tthis.syncTarget = e.syncTarget;\n\t\t\t\tthis.setupView();\n\t\t\t\tthis.emitHeightChanged();\n\t\t\t}\n\t\t});\n\n\t\teventBus.on(MatchVersionHeaderHeightEvent, (e: MatchVersionHeaderHeightArgs) => {\n\t\t\tif (this.displayMode === DisplayMode.Wide && e.targetVersionHash === this.version.hash) {\n\t\t\t\tthis.shows.style.height = `${e.height}px`;\n\t\t\t}\n\t\t});\n\n\t\tif (this.displayMode === DisplayMode.Wide) {\n\t\t\tthis.emitHeightChanged();\n\t\t}\n\t}\n\n\t@Watch(\"displayMode\")\n\tsetupView() {\n\t\tif (this.displayMode === DisplayMode.Compact) {\n\t\t\tthis.shows.style.height = \"\";\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.flickity = new Flickity(this.shows, {\n\t\t\t\t\tpageDots: false,\n\t\t\t\t\tfreeScroll: true,\n\t\t\t\t\tcontain: true,\n\t\t\t\t\tcellAlign: \"left\",\n\t\t\t\t\tsync: this.syncTarget ?? undefined\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tif (this.flickity != null) {\n\t\t\t\tthis.flickity.destroy();\n\t\t\t}\n\t\t}\n\t}\n\n\temitHeightChanged() {\n\t\tthis.$nextTick(() => {\n\t\t\tlet rect = this.$el.getBoundingClientRect();\n\t\t\tlet args: HeaderHeightChangedArgs = {\n\t\t\t\ttargetVersionHash: this.version.hash,\n\t\t\t\theight: rect.height\n\t\t\t};\n\t\t\teventBus.emit(HeaderHeightChangedEvent, args);\n\t\t});\n\t}\n}\n","import { Vue, Component, Prop, Watch } from \"@wagich/vue-facing-decorator-metadata\";\nimport imagesLoaded from \"imagesloaded\";\n\nimport { render } from \"./version-header.html\";\n\nimport { eventBus } from \"../event-bus\";\nimport { expandLanguages } from \"../utils\";\nimport { type HeaderHeightChangedArgs, HeaderHeightChangedEvent } from \"./version-shows\";\nimport { DisplayMode } from \"./movie-tickets\";\nimport type { Version } from \"./models\";\n\nexport interface MatchVersionHeaderHeightArgs {\n\ttargetVersionHash: string;\n\theight: number;\n}\nexport const MatchVersionHeaderHeightEvent = \"VersionHeader:MatchVersionHeaderHeight\";\n\n@Component({\n\trender\n})\nexport class VersionHeader extends Vue {\n\t@Prop()\n\tversion: Version;\n\n\t@Prop()\n\tdisplayMode: DisplayMode\n\n\tget spokenLanguages() {\n\t\tif (!this.version.isDubbed && this.version.spokenLanguages.length === 0) {\n\t\t\treturn \"Originalversion\";\n\t\t}\n\t\treturn expandLanguages(this.version.spokenLanguages);\n\t}\n\n\tget subtitleLanguages() {\n\t\treturn expandLanguages(this.version.subtitleLanguages, true);\n\t}\n\n\tget firstSpecialLogoUrl(): string {\n\t\tif (this.version.specials == null || this.version.specials.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn this.version.specials[0].logoNegativeUrl\n\t\t\t?? this.version.specials[0].logoPositiveUrl\n\t\t\t?? \"\";\n\t}\n\n\tmounted() {\n\t\tlet header = this.$refs.header;\n\t\teventBus.on(HeaderHeightChangedEvent, (e: HeaderHeightChangedArgs) => {\n\t\t\tif (this.displayMode === DisplayMode.Wide && e.targetVersionHash === this.version.hash) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\timagesLoaded(this.$el, () => {\n\t\t\t\t\t\tvar rect = header.getBoundingClientRect();\n\t\t\t\t\t\tif (rect.height < e.height) {\n\t\t\t\t\t\t\theader.style.height = `${e.height}px`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t(this.$el as HTMLElement).style.height = `${rect.height}px`;\n\t\t\t\t\t\t\tlet args: MatchVersionHeaderHeightArgs = {\n\t\t\t\t\t\t\t\ttargetVersionHash: this.version.hash,\n\t\t\t\t\t\t\t\theight: rect.height\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\teventBus.emit(MatchVersionHeaderHeightEvent, args);\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});\n\t}\n\n\t@Watch(\"displayMode\")\n\tdisplayModeChanged() {\n\t\tif (this.displayMode === DisplayMode.Compact) {\n\t\t\tlet header = this.$refs.header;\n\t\t\theader.style.height = \"\";\n\t\t}\n\t}\n}\n","import { Vue, Component, Prop, Watch } from \"@wagich/vue-facing-decorator-metadata\";\nimport groupBy from \"lodash/groupBy\";\nimport orderBy from \"lodash/orderBy\";\nimport keyBy from \"lodash/keyBy\";\nimport minBy from \"lodash/minBy\";\nimport maxBy from \"lodash/maxBy\";\nimport map from \"lodash/map\";\nimport range from \"lodash/range\";\nimport flatMap from \"lodash/flatMap\";\nimport { format as formatDate, differenceInCalendarDays as dayDifference, parseISO, addDays } from \"date-fns\";\nimport scrollTo from \"scrollto-with-animation\";\nimport Flickity from \"flickity\";\nimport { differenceInCalendarDays } from \"date-fns\";\n\nimport { render } from \"./movie-tickets.html\";\n\nimport { MediaQueries } from \"../mediaqueries\";\nimport { eventBus } from \"../event-bus\";\nimport { TicketButton } from \"./ticket-button\";\nimport { VersionHeader } from \"./version-header\";\nimport { VersionShows } from \"./version-shows\";\nimport { MatchVersionHeaderHeightEvent, type MatchVersionHeaderHeightArgs } from \"./version-header\";\nimport type { Timeslot, Version, Day, Location } from \"./models\";\nimport type { MovieListItem, MovieListShow, MovieListSpecial } from \"../common/models\";\nimport { ScrollIntoViewEvent, SetupChildSliderEvent, type SetupChildSliderArgs } from \"~/tickets/events\";\n\nexport enum DisplayMode {\n\tCompact = \"compact\",\n\tWide = \"wide\"\n}\n\nfunction createVersionHash(show: MovieListShow): string {\n\t// create a sortable hash for the show\n\tvar json = JSON.stringify([\n\t\tshow.auditoriumName === \"Rex Event\" ? 0 : 1, // special case this auditorium to show before the others\n\t\tshow.spokenLanguages,\n\t\tshow.subtitleLanguages,\n\t\tshow.is3D ? 0 : 1,\n\t\tshow.isAtmos ? 0 : 1,\n\t\tshow.isDubbed ? 0 : 1,\n\t\tshow.specialIds.length > 0 ? 0 : 1,\n\t\tshow.specialIds,\n\t\tshow.auditoriumName\n\t]);\n\treturn `hash-${json.replace(/\\W+/g, \"\")}`;\n}\n\n\n@Component({\n\trender,\n\tcomponents: {\n\t\tTicketButton,\n\t\tVersionHeader,\n\t\tVersionShows\n\t},\n})\nexport default class MovieTickets extends Vue {\n\tprivate flickities: Flickity[] = [];\n\n\tmovie: MovieListItem = null!;\n\tshows: MovieListShow[] = [];\n\tspecials: Map = null!;\n\tdays: Date[] = [];\n\tstartsFromToday: boolean = true;\n\tdisplayMode: DisplayMode = DisplayMode.Compact;\n\n\t@Prop() dataSelector: string;\n\n\tget today(): Date {\n\t\treturn new Date();\n\t}\n\n\tget showSeparator(): boolean {\n\t\tif (this.days.length == 0) {\n\t\t\treturn false;\n\t\t}\n\t\tvar dayDifference = differenceInCalendarDays(this.days[0], new Date);\n\t\treturn dayDifference > 1;\n\t}\n\n\tget locations(): Location[] {\n\t\treturn map(groupBy(this.shows, show => show.siteName), (locationShows, location) => {\n\t\t\tlet versions = map(groupBy(locationShows, show => createVersionHash(show)), versionShows => {\n\t\t\t\tlet showsByDateTime = keyBy(versionShows, show => formatDate(parseISO(show.begin), \"yyyy-MM-dd'T'HH:mm\"));\n\t\t\t\tlet timeslots = orderBy(map(groupBy(map(versionShows, show => formatDate(parseISO(show.begin), \"HH:mm\")), time => time), (shows, time) => time), time => time);\n\n\t\t\t\tlet version: Version = {\n\t\t\t\t\thash: createVersionHash(versionShows[0]),\n\t\t\t\t\tauditorium: versionShows[0].auditoriumName,\n\t\t\t\t\tspokenLanguages: versionShows[0].spokenLanguages,\n\t\t\t\t\tsubtitleLanguages: versionShows[0].subtitleLanguages,\n\t\t\t\t\tis3d: versionShows[0].is3D,\n\t\t\t\t\tisAtmos: versionShows[0].isAtmos,\n\t\t\t\t\tisDubbed: versionShows[0].isDubbed,\n\t\t\t\t\thasSpecials: versionShows[0].specialIds.length > 0,\n\t\t\t\t\tspecials: versionShows[0].specialIds.map(id => this.specials.get(id)!).filter(s => s != null),\n\t\t\t\t\tdays: map(this.days, date => {\n\t\t\t\t\t\tlet day: Day = {\n\t\t\t\t\t\t\tdate,\n\t\t\t\t\t\t\ttimes: map(timeslots, time => {\n\t\t\t\t\t\t\t\tlet timeslot: Timeslot = {\n\t\t\t\t\t\t\t\t\ttime,\n\t\t\t\t\t\t\t\t\tshow: showsByDateTime[`${formatDate(date, \"yyyy-MM-dd\")}T${time}`]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn timeslot;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn day;\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn version;\n\t\t\t});\n\n\t\t\tversions = orderBy(versions, v => v.hash);\n\n\t\t\tlet group: Location = {\n\t\t\t\tname: location,\n\t\t\t\tversions\n\t\t\t}\n\t\t\treturn group;\n\t\t});\n\t}\n\n\tcreated() {\n\t\twindow.matchMedia(MediaQueries.medium).addEventListener(\"change\", e => {\n\t\t\tif (e.matches) {\n\t\t\t\tthis.displayMode = DisplayMode.Wide;\n\t\t\t} else {\n\t\t\t\tthis.displayMode = DisplayMode.Compact;\n\t\t\t}\n\t\t});\n\n\t\tif (window.matchMedia(MediaQueries.medium).matches) {\n\t\t\tthis.displayMode = DisplayMode.Wide;\n\t\t} else {\n\t\t\tthis.displayMode = DisplayMode.Compact;\n\t\t}\n\n\t\tlet dataElement = document.querySelector(this.dataSelector);\n\t\tif (dataElement != null) {\n\t\t\tlet data: { movie: MovieListItem, shows: MovieListShow[], specials: MovieListSpecial[] } = JSON.parse(dataElement.innerHTML);\n\t\t\tthis.movie = data.movie;\n\t\t\tthis.shows = data.shows;\n\t\t\tthis.specials = new Map(data.specials.map(s => [s.id, s]));\n\t\t}\n\n\t\teventBus.on(ScrollIntoViewEvent, () => this.scrollIntoView());\n\t}\n\n\tmounted() {\n\t\tlet firstDate = parseISO(minBy(this.shows, show => parseISO(show.begin))!.begin);\n\t\tlet lastDate = parseISO(maxBy(this.shows, show => parseISO(show.begin))!.begin);\n\n\t\tthis.startsFromToday = dayDifference(new Date(), firstDate) === 0;\n\t\tthis.days = map(range(0, Math.max(dayDifference(lastDate, firstDate) + 1, 1)), i => addDays(firstDate, i));\n\n\t\tthis.setupView();\n\t}\n\n\t@Watch(\"displayMode\")\n\tsetupView() {\n\t\tif (this.displayMode == DisplayMode.Wide) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tvar scrollers = this.$refs.locationScroller;\n\t\t\t\tif (scrollers != null) {\n\t\t\t\t\tfor (var scroller of scrollers) {\n\t\t\t\t\t\tlet flickity = new Flickity(scroller, {\n\t\t\t\t\t\t\tpageDots: false,\n\t\t\t\t\t\t\tfreeScroll: true,\n\t\t\t\t\t\t\tcontain: true,\n\t\t\t\t\t\t\tcellAlign: \"left\",\n\t\t\t\t\t\t\tpercentPosition: false\n\t\t\t\t\t\t});\n\t\t\t\t\t\tflickity.resize();\n\t\t\t\t\t\tthis.flickities.push(flickity);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\teventBus.on(MatchVersionHeaderHeightEvent, (e: MatchVersionHeaderHeightArgs) => {\n\t\t\t\tthis.flickities.forEach(f => f.resize());\n\t\t\t});\n\t\t} else {\n\t\t\tthis.flickities.forEach(f => f.destroy());\n\n\t\t\tlet versions = flatMap(this.locations.map(l => l.versions));\n\t\t\tfor (var i = 0; i < versions.length; i++) {\n\t\t\t\tlet prev = i === 0 ? null : versions[i - 1];\n\t\t\t\tlet current = versions[i];\n\t\t\t\tlet args: SetupChildSliderArgs = {\n\t\t\t\t\ttargetHash: current.hash,\n\t\t\t\t\tsyncTarget: i === 0 ? null : `#${prev!.hash}`\n\t\t\t\t}\n\t\t\t\teventBus.emit(SetupChildSliderEvent, args);\n\t\t\t}\n\t\t}\n\t}\n\n\tscrollIntoView() {\n\t\tscrollTo(document.documentElement, \"scrollTop\", (this.$el as HTMLElement).offsetTop, 500);\n\t}\n}\n"],"names":["require$$0","require$$1","baseExtremum","baseLt","baseIteratee","require$$2","baseGt","baseRange","createRange","findAnimation","defineAnimation","scrollToWithAnimation","animateScroll","this","require$$3","require$$4","require$$5","require$$6","require$$7","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_14","_createElementVNode","_createElementBlock","_normalizeClass","displayMode","_createVNode","_createTextVNode","_openBlock","_Fragment","_renderList","locations","_toDisplayString","_hoisted_6","_createBlock","_createCommentVNode","startsFromToday","$formatters","today","showSeparator","_hoisted_13","days","movie","spokenLanguages","version","subtitleLanguages","firstSpecialLogoUrl","id","_withCtx","HeaderHeightChangedEvent","VersionShows","Vue","hash","Date","length","dayDifference","differenceInCalendarDays","date","mounted","window","addEventListener","onResizeThrottled","eventBus","on","SetupChildSliderEvent","e","targetHash","syncTarget","setupView","emitHeightChanged","MatchVersionHeaderHeightEvent","DisplayMode","Wide","targetVersionHash","shows","style","height","Compact","$nextTick","flickity","Flickity","pageDots","freeScroll","contain","cellAlign","sync","undefined","destroy","rect","$el","getBoundingClientRect","args","emit","requestAnimationFrame","render","components","TicketButton","VersionHeader","isDubbed","expandLanguages","specials","logoNegativeUrl","logoPositiveUrl","header","$refs","imagesLoaded","displayModeChanged","createVersionHash","show","json","JSON","stringify","auditoriumName","is3D","isAtmos","specialIds","replace","MovieTickets","map","groupBy","siteName","locationShows","location","versions","versionShows","showsByDateTime","keyBy","formatDate","parseISO","begin","timeslots","orderBy","time","auditorium","is3d","hasSpecials","get","filter","s","day","times","timeslot","v","group","name","created","matchMedia","MediaQueries","medium","matches","dataElement","document","querySelector","dataSelector","data","parse","innerHTML","Map","ScrollIntoViewEvent","scrollIntoView","firstDate","minBy","lastDate","maxBy","range","Math","max","i","addDays","scrollers","locationScroller","scroller","percentPosition","resize","flickities","push","forEach","f","flatMap","l","prev","current","scrollTo","documentElement","offsetTop"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,30]}