{"version":3,"file":"js/5749-0751a07fa75de2389a61.js","mappings":"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","sources":["webpack:///./node_modules/lodash/_baseRest.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/assign.js","webpack:///./node_modules/lodash/clone.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/noop.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/performance-now/lib/performance-now.js","webpack:///./node_modules/raf/index.js","webpack:///./node_modules/react-stickynode/dist/Sticky.js","webpack:///./node_modules/react-stickynode/index.js","webpack:///./node_modules/shallowequal/index.js","webpack:///./node_modules/subscribe-ui-event/dist-es/lib/supportPassiveEvent.js","webpack:///./node_modules/subscribe-ui-event/dist-es/globalVars.js","webpack:///./node_modules/subscribe-ui-event/dist-es/lib/listen.js","webpack:///./node_modules/subscribe-ui-event/dist-es/lib/leIE8.js","webpack:///./node_modules/subscribe-ui-event/dist-es/AugmentedEvent.js","webpack:///./node_modules/subscribe-ui-event/dist-es/lib/rAFThrottle.js","webpack:///./node_modules/subscribe-ui-event/dist-es/mainEventConnectors.js","webpack:///./node_modules/subscribe-ui-event/dist-es/constants.js","webpack:///./node_modules/subscribe-ui-event/dist-es/subscribe.js","webpack:///./node_modules/subscribe-ui-event/dist-es/unsubscribe.js","webpack:///./node_modules/subscribe-ui-event/index.es.js","webpack:///./node_modules/subscribe-ui-event/node_modules/eventemitter3/index.js"],"sourcesContent":["var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var assignValue = require('./_assignValue'),\n copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n isArrayLike = require('./isArrayLike'),\n isPrototype = require('./_isPrototype'),\n keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n/* global window, document */\n\n'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _subscribeUiEvent = require('subscribe-ui-event');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _shallowequal = require('shallowequal');\n\nvar _shallowequal2 = _interopRequireDefault(_shallowequal);\n\n// constants\nvar STATUS_ORIGINAL = 0; // The default status, locating at the original position.\nvar STATUS_RELEASED = 1; // The released status, locating at somewhere on document but not default one.\nvar STATUS_FIXED = 2; // The sticky status, locating fixed to the top or the bottom of screen.\n\nvar TRANSFORM_PROP = 'transform';\n\n// global variable for all instances\nvar doc;\nvar docBody;\nvar docEl;\nvar canEnableTransforms = true; // Use transform by default, so no Sticky on lower-end browser when no Modernizr\nvar M;\nvar scrollDelta = 0;\nvar win;\nvar winHeight = -1;\n\nvar Sticky = (function (_Component) {\n _inherits(Sticky, _Component);\n\n function Sticky(props, context) {\n _classCallCheck(this, Sticky);\n\n _get(Object.getPrototypeOf(Sticky.prototype), 'constructor', this).call(this, props, context);\n this.handleResize = this.handleResize.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.handleScrollStart = this.handleScrollStart.bind(this);\n this.delta = 0;\n this.stickyTop = 0;\n this.stickyBottom = 0;\n this.frozen = false;\n this.skipNextScrollEvent = false;\n this.scrollTop = -1;\n\n this.bottomBoundaryTarget;\n this.topTarget;\n this.subscribers;\n\n this.state = {\n top: 0, // A top offset from viewport top where Sticky sticks to when scrolling up\n bottom: 0, // A bottom offset from viewport top where Sticky sticks to when scrolling down\n width: 0, // Sticky width\n height: 0, // Sticky height\n x: 0, // The original x of Sticky\n y: 0, // The original y of Sticky\n topBoundary: 0, // The top boundary on document\n bottomBoundary: Infinity, // The bottom boundary on document\n status: STATUS_ORIGINAL, // The Sticky status\n pos: 0, // Real y-axis offset for rendering position-fixed and position-relative\n activated: false // once browser info is available after mounted, it becomes true to avoid checksum error\n };\n }\n\n _createClass(Sticky, [{\n key: 'getTargetHeight',\n value: function getTargetHeight(target) {\n return target && target.offsetHeight || 0;\n }\n }, {\n key: 'getTopPosition',\n value: function getTopPosition(top) {\n // TODO, topTarget is for current layout, may remove\n // a top argument can be provided to override reading from the props\n top = top || this.props.top || this.props.topTarget || 0;\n if (typeof top === 'string') {\n if (!this.topTarget) {\n this.topTarget = doc.querySelector(top);\n }\n top = this.getTargetHeight(this.topTarget);\n }\n return top;\n }\n }, {\n key: 'getTargetBottom',\n value: function getTargetBottom(target) {\n if (!target) {\n return -1;\n }\n var rect = target.getBoundingClientRect();\n return this.scrollTop + rect.bottom;\n }\n }, {\n key: 'getBottomBoundary',\n value: function getBottomBoundary(bottomBoundary) {\n // a bottomBoundary can be provided to avoid reading from the props\n var boundary = bottomBoundary || this.props.bottomBoundary;\n\n // TODO, bottomBoundary was an object, depricate it later.\n if (typeof boundary === 'object') {\n boundary = boundary.value || boundary.target || 0;\n }\n\n if (typeof boundary === 'string') {\n if (!this.bottomBoundaryTarget) {\n this.bottomBoundaryTarget = doc.querySelector(boundary);\n }\n boundary = this.getTargetBottom(this.bottomBoundaryTarget);\n }\n return boundary && boundary > 0 ? boundary : Infinity;\n }\n }, {\n key: 'reset',\n value: function reset() {\n this.setState({\n status: STATUS_ORIGINAL,\n pos: 0\n });\n }\n }, {\n key: 'release',\n value: function release(pos) {\n this.setState({\n status: STATUS_RELEASED,\n pos: pos - this.state.y\n });\n }\n }, {\n key: 'fix',\n value: function fix(pos) {\n this.setState({\n status: STATUS_FIXED,\n pos: pos\n });\n }\n\n /**\n * Update the initial position, width, and height. It should update whenever children change.\n * @param {Object} options optional top and bottomBoundary new values\n */\n }, {\n key: 'updateInitialDimension',\n value: function updateInitialDimension(options) {\n options = options || {};\n\n var outerRect = this.outerElement.getBoundingClientRect();\n var innerRect = this.innerElement.getBoundingClientRect();\n\n var width = outerRect.width || outerRect.right - outerRect.left;\n var height = innerRect.height || innerRect.bottom - innerRect.top;;\n var outerY = outerRect.top + this.scrollTop;\n\n this.setState({\n top: this.getTopPosition(options.top),\n bottom: Math.min(this.state.top + height, winHeight),\n width: width,\n height: height,\n x: outerRect.left,\n y: outerY,\n bottomBoundary: this.getBottomBoundary(options.bottomBoundary),\n topBoundary: outerY\n });\n }\n }, {\n key: 'handleResize',\n value: function handleResize(e, ae) {\n if (this.props.shouldFreeze()) {\n return;\n }\n\n winHeight = ae.resize.height;\n this.updateInitialDimension();\n this.update();\n }\n }, {\n key: 'handleScrollStart',\n value: function handleScrollStart(e, ae) {\n this.frozen = this.props.shouldFreeze();\n\n if (this.frozen) {\n return;\n }\n\n if (this.scrollTop === ae.scroll.top) {\n // Scroll position hasn't changed,\n // do nothing\n this.skipNextScrollEvent = true;\n } else {\n this.scrollTop = ae.scroll.top;\n this.updateInitialDimension();\n }\n }\n }, {\n key: 'handleScroll',\n value: function handleScroll(e, ae) {\n // Scroll doesn't need to be handled\n if (this.skipNextScrollEvent) {\n this.skipNextScrollEvent = false;\n return;\n }\n\n scrollDelta = ae.scroll.delta;\n this.scrollTop = ae.scroll.top;\n this.update();\n }\n\n /**\n * Update Sticky position.\n */\n }, {\n key: 'update',\n value: function update() {\n var disabled = !this.props.enabled || this.state.bottomBoundary - this.state.topBoundary <= this.state.height || this.state.width === 0 && this.state.height === 0;\n\n if (disabled) {\n if (this.state.status !== STATUS_ORIGINAL) {\n this.reset();\n }\n return;\n }\n\n var delta = scrollDelta;\n // \"top\" and \"bottom\" are the positions that this.state.top and this.state.bottom project\n // on document from viewport.\n var top = this.scrollTop + this.state.top;\n var bottom = this.scrollTop + this.state.bottom;\n\n // There are 2 principles to make sure Sticky won't get wrong so much:\n // 1. Reset Sticky to the original postion when \"top\" <= topBoundary\n // 2. Release Sticky to the bottom boundary when \"bottom\" >= bottomBoundary\n if (top <= this.state.topBoundary) {\n // #1\n this.reset();\n } else if (bottom >= this.state.bottomBoundary) {\n // #2\n this.stickyBottom = this.state.bottomBoundary;\n this.stickyTop = this.stickyBottom - this.state.height;\n this.release(this.stickyTop);\n } else {\n if (this.state.height > winHeight - this.state.top) {\n // In this case, Sticky is higher then viewport minus top offset\n switch (this.state.status) {\n case STATUS_ORIGINAL:\n this.release(this.state.y);\n this.stickyTop = this.state.y;\n this.stickyBottom = this.stickyTop + this.state.height;\n // Commentting out \"break\" is on purpose, because there is a chance to transit to FIXED\n // from ORIGINAL when calling window.scrollTo().\n // break;\n case STATUS_RELEASED:\n // If \"top\" and \"bottom\" are inbetween stickyTop and stickyBottom, then Sticky is in\n // RELEASE status. Otherwise, it changes to FIXED status, and its bottom sticks to\n // viewport bottom when scrolling down, or its top sticks to viewport top when scrolling up.\n this.stickyBottom = this.stickyTop + this.state.height;\n if (delta > 0 && bottom > this.stickyBottom) {\n this.fix(this.state.bottom - this.state.height);\n } else if (delta < 0 && top < this.stickyTop) {\n this.fix(this.state.top);\n }\n break;\n case STATUS_FIXED:\n var toRelease = true;\n var pos = this.state.pos;\n var height = this.state.height;\n // In regular cases, when Sticky is in FIXED status,\n // 1. it's top will stick to the screen top,\n // 2. it's bottom will stick to the screen bottom,\n // 3. if not the cases above, then it's height gets changed\n if (delta > 0 && pos === this.state.top) {\n // case 1, and scrolling down\n this.stickyTop = top - delta;\n this.stickyBottom = this.stickyTop + height;\n } else if (delta < 0 && pos === this.state.bottom - height) {\n // case 2, and scrolling up\n this.stickyBottom = bottom - delta;\n this.stickyTop = this.stickyBottom - height;\n } else if (pos !== this.state.bottom - height && pos !== this.state.top) {\n // case 3\n // This case only happens when Sticky's bottom sticks to the screen bottom and\n // its height gets changed. Sticky should be in RELEASE status and update its\n // sticky bottom by calculating how much height it changed.\n var deltaHeight = pos + height - this.state.bottom;\n this.stickyBottom = bottom - delta + deltaHeight;\n this.stickyTop = this.stickyBottom - height;\n } else {\n toRelease = false;\n }\n\n if (toRelease) {\n this.release(this.stickyTop);\n }\n break;\n }\n } else {\n // In this case, Sticky is shorter then viewport minus top offset\n // and will always fix to the top offset of viewport\n this.fix(this.state.top);\n }\n }\n this.delta = delta;\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.updateInitialDimension(nextProps);\n this.update();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _this = this;\n\n if (prevState.status !== this.state.status && this.props.onStateChange) {\n this.props.onStateChange({ status: this.state.status });\n }\n // if the props for enabling are toggled, then trigger the update or reset depending on the current props\n if (prevProps.enabled !== this.props.enabled) {\n if (this.props.enabled) {\n this.setState({ activated: true }, function () {\n _this.updateInitialDimension();\n _this.update();\n });\n } else {\n this.setState({ activated: false }, function () {\n _this.reset();\n });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var subscribers = this.subscribers || [];\n for (var i = subscribers.length - 1; i >= 0; i--) {\n this.subscribers[i].unsubscribe();\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Only initialize the globals if this is the first\n // time this component type has been mounted\n if (!win) {\n win = window;\n doc = document;\n docEl = doc.documentElement;\n docBody = doc.body;\n winHeight = win.innerHeight || docEl.clientHeight;\n M = window.Modernizr;\n // No Sticky on lower-end browser when no Modernizr\n if (M && M.prefixed) {\n canEnableTransforms = M.csstransforms3d;\n TRANSFORM_PROP = M.prefixed('transform');\n }\n }\n\n // when mount, the scrollTop is not necessary on the top\n this.scrollTop = docBody.scrollTop + docEl.scrollTop;\n\n if (this.props.enabled) {\n this.setState({ activated: true });\n this.updateInitialDimension();\n this.update();\n }\n // bind the listeners regardless if initially enabled - allows the component to toggle sticky functionality\n this.subscribers = [(0, _subscribeUiEvent.subscribe)('scrollStart', this.handleScrollStart.bind(this), { useRAF: true }), (0, _subscribeUiEvent.subscribe)('scroll', this.handleScroll.bind(this), { useRAF: true, enableScrollInfo: true }), (0, _subscribeUiEvent.subscribe)('resize', this.handleResize.bind(this), { enableResizeInfo: true })];\n }\n }, {\n key: 'translate',\n value: function translate(style, pos) {\n var enableTransforms = canEnableTransforms && this.props.enableTransforms;\n if (enableTransforms && this.state.activated) {\n style[TRANSFORM_PROP] = 'translate3d(0,' + Math.round(pos) + 'px,0)';\n } else {\n style.top = pos + 'px';\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !this.props.shouldFreeze() && !((0, _shallowequal2['default'])(this.props, nextProps) && (0, _shallowequal2['default'])(this.state, nextState));\n }\n }, {\n key: 'render',\n value: function render() {\n var _classNames,\n _this2 = this;\n\n // TODO, \"overflow: auto\" prevents collapse, need a good way to get children height\n var innerStyle = {\n position: this.state.status === STATUS_FIXED ? 'fixed' : 'relative',\n top: this.state.status === STATUS_FIXED ? '0px' : '',\n zIndex: this.props.innerZ\n };\n var outerStyle = {};\n\n // always use translate3d to enhance the performance\n this.translate(innerStyle, this.state.pos);\n if (this.state.status !== STATUS_ORIGINAL) {\n innerStyle.width = this.state.width + 'px';\n outerStyle.height = this.state.height + 'px';\n }\n\n var outerClasses = (0, _classnames2['default'])('sticky-outer-wrapper', this.props.className, (_classNames = {}, _defineProperty(_classNames, this.props.activeClass, this.state.status === STATUS_FIXED), _defineProperty(_classNames, this.props.releasedClass, this.state.status === STATUS_RELEASED), _classNames));\n\n var children = this.props.children;\n\n return _react2['default'].createElement(\n 'div',\n { ref: function (outer) {\n _this2.outerElement = outer;\n }, className: outerClasses, style: outerStyle },\n _react2['default'].createElement(\n 'div',\n { ref: function (inner) {\n _this2.innerElement = inner;\n }, className: 'sticky-inner-wrapper', style: innerStyle },\n typeof children === 'function' ? children({ status: this.state.status }) : children\n )\n );\n }\n }]);\n\n return Sticky;\n})(_react.Component);\n\nSticky.displayName = 'Sticky';\n\nSticky.defaultProps = {\n shouldFreeze: function shouldFreeze() {\n return false;\n },\n enabled: true,\n top: 0,\n bottomBoundary: 0,\n enableTransforms: true,\n activeClass: 'active',\n releasedClass: 'released',\n onStateChange: null\n};\n\n/**\n * @param {Bool} enabled A switch to enable or disable Sticky.\n * @param {String/Number} top A top offset px for Sticky. Could be a selector representing a node\n * whose height should serve as the top offset.\n * @param {String/Number} bottomBoundary A bottom boundary px on document where Sticky will stop.\n * Could be a selector representing a node whose bottom should serve as the bottom boudary.\n */\nSticky.propTypes = {\n enabled: _propTypes2['default'].bool,\n top: _propTypes2['default'].oneOfType([_propTypes2['default'].string, _propTypes2['default'].number]),\n bottomBoundary: _propTypes2['default'].oneOfType([_propTypes2['default'].object, // TODO, may remove\n _propTypes2['default'].string, _propTypes2['default'].number]),\n enableTransforms: _propTypes2['default'].bool,\n activeClass: _propTypes2['default'].string,\n releasedClass: _propTypes2['default'].string,\n onStateChange: _propTypes2['default'].func,\n shouldFreeze: _propTypes2['default'].func,\n innerZ: _propTypes2['default'].oneOfType([_propTypes2['default'].string, _propTypes2['default'].number])\n};\n\nSticky.STATUS_ORIGINAL = STATUS_ORIGINAL;\nSticky.STATUS_RELEASED = STATUS_RELEASED;\nSticky.STATUS_FIXED = STATUS_FIXED;\n\nmodule.exports = Sticky;\n","module.exports = require('./dist/Sticky');\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","/* global window */\n\nvar passiveSupported = false; // eslint-disable-line import/no-mutable-exports\n\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passiveSupported = true;\n }\n });\n\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (err) {} // eslint-disable-line no-empty\n}\n\nexport default passiveSupported;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport EventEmitter from 'eventemitter3';\nimport supportPassiveEvent from './lib/supportPassiveEvent';\n\nexport default {\n connections: {},\n EE: new EventEmitter(),\n enableResizeInfo: false,\n enableScrollInfo: false,\n listeners: {},\n removers: [],\n supportPassiveEvent: supportPassiveEvent\n};\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport assign from 'lodash/assign';\nimport globalVars from '../globalVars';\n\nvar supportPassiveEvent = globalVars.supportPassiveEvent;\n\n\nvar defaultEventOption = {\n capture: false,\n passive: false\n};\n\n/**\n * Cross-browser addEventListener.\n * @method listen\n * @param {Object} target - The target to add event listener.\n * @param {String} eventType - The event type.\n * @param {Function} handler - The event handler.\n * @param {Object} handler - The options object that specifies\n * characteristics about the event listener.\n * @return {Object} The object to be able to remove the handler.\n */\nfunction listen(target, eventType, handler, options) {\n var add = 'addEventListener';\n var _remove = 'removeEventListener';\n var type = eventType;\n\n var eventOptions = supportPassiveEvent ? assign({}, defaultEventOption, options) : false;\n\n if (!target.addEventListener && target.attachEvent) {\n add = 'attachEvent';\n _remove = 'detachEvent';\n type = 'on' + eventType;\n }\n target[add](type, handler, eventOptions);\n\n return {\n remove: function remove() {\n target[_remove](eventType, handler);\n }\n };\n}\n\nexport default listen;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n/* global navigator, parseFloat */\n\n// less then or equal to IE8\nvar leIE8 = false; // eslint-disable-line import/no-mutable-exports\n\nif (typeof navigator !== 'undefined') {\n var matches = navigator.userAgent.match(/MSIE (\\d+\\.\\d+)/);\n if (matches) {\n leIE8 = parseFloat(matches[1], 10) < 9;\n }\n}\n\nexport default leIE8;\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n/* global window, document */\n\nimport globalVars from './globalVars';\n\nvar resize = { // eslint-disable-line prefer-const\n width: 0,\n height: 0\n};\nvar scroll = { // eslint-disable-line prefer-const\n delta: 0,\n top: 0\n};\nvar touch = { // eslint-disable-line prefer-const\n axisIntention: '',\n startX: 0,\n startY: 0,\n deltaX: 0,\n deltaY: 0\n};\n\nvar INTENTION_THRESHOLD = 5;\n\nvar getXY = function getXY(pos) {\n var t = { x: 0, y: 0 }; // eslint-disable-line prefer-const\n var docBody = document.body;\n var docEl = document.documentElement;\n\n if (pos.pageX || pos.pageY) {\n t.x = pos.pageX;\n t.y = pos.pageY;\n } else {\n t.x = pos.clientX + docBody.scrollLeft + docEl.scrollLeft;\n t.y = pos.clientY + docBody.scrollTop + docEl.scrollTop;\n }\n\n return t;\n};\n\n/**\n * ArgmentedEvent will hold some global information, such like window scroll postion,\n * so that those information is only calculated once.\n * @param {Object} option - The option for SyntheticEvent\n */\n\nvar AugmentedEvent = function () {\n function AugmentedEvent() {\n var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, AugmentedEvent);\n\n var mainType = (option.mainType || '').toLowerCase();\n var subType = (option.subType || '').toLowerCase();\n\n this.mainType = mainType;\n this.subType = subType;\n this.type = mainType + subType.charAt(0).toUpperCase() + subType.slice(1) || '';\n this.scroll = scroll;\n this.resize = resize;\n this.touch = touch;\n }\n\n _createClass(AugmentedEvent, [{\n key: 'update',\n value: function update(e) {\n var mainType = this.mainType,\n subType = this.subType;\n\n var docEl = document.documentElement;\n\n if (globalVars.enableScrollInfo && (mainType === 'scroll' || mainType === 'touchmove')) {\n var top = docEl.scrollTop + document.body.scrollTop;\n // Prevent delta from being 0\n if (top !== this.scroll.top) {\n this.scroll.delta = top - this.scroll.top;\n this.scroll.top = top;\n }\n }\n if (globalVars.enableResizeInfo && mainType === 'resize') {\n this.resize.width = window.innerWidth || docEl.clientWidth;\n this.resize.height = window.innerHeight || docEl.clientHeight;\n }\n if (globalVars.enableTouchInfo && e.touches && (mainType === 'touchstart' || mainType === 'touchmove' || mainType === 'touchend')) {\n var pos = void 0;\n var absX = void 0;\n var absY = void 0;\n if (mainType === 'touchstart' || subType === 'start') {\n pos = getXY(e.touches[0]);\n this.touch.axisIntention = '';\n this.touch.startX = pos.x;\n this.touch.startY = pos.y;\n this.touch.deltaX = 0;\n this.touch.deltaY = 0;\n } else if (mainType === 'touchmove') {\n pos = getXY(e.touches[0]);\n this.touch.deltaX = pos.x - this.touch.startX;\n this.touch.deltaY = pos.y - this.touch.startY;\n if (this.touch.axisIntention === '') {\n absX = Math.abs(this.touch.deltaX);\n absY = Math.abs(this.touch.deltaY);\n if (absX > INTENTION_THRESHOLD && absX >= absY) {\n this.touch.axisIntention = 'x';\n } else if (absY > INTENTION_THRESHOLD && absY > absX) {\n this.touch.axisIntention = 'y';\n }\n }\n }\n }\n }\n }]);\n\n return AugmentedEvent;\n}();\n\nexport default AugmentedEvent;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport rAF from 'raf';\n\nvar getTime = Date.now ||\n/* istanbul ignore next */function () {\n return new Date().getTime();\n};\n\nfunction rAFThrottle(func) {\n var throttle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 15;\n\n var context = void 0;\n var args = void 0;\n var last = 0;\n var requestId = 0;\n\n var later = function later() {\n var now = getTime();\n var remaining = throttle - (now - last);\n\n if (remaining <= 0) {\n last = now;\n requestId = 0;\n func.apply(context, args);\n } else {\n requestId = rAF(later);\n }\n };\n\n return function throttledFunc() {\n context = this;\n args = arguments; // eslint-disable-line prefer-rest-params\n\n if (!requestId) {\n requestId = rAF(later);\n }\n };\n}\n\nexport default rAFThrottle;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n/* global window, document, setTimeout */\n\nimport clone from 'lodash/clone';\nimport throttle from 'lodash/throttle';\nimport noop from 'lodash/noop';\n\nimport AugmentedEvent from './AugmentedEvent';\nimport globalVars from './globalVars';\nimport leIE8 from './lib/leIE8';\nimport listen from './lib/listen';\nimport rAFThrottle from './lib/rAFThrottle';\n\n// constants\nimport { EVENT_END_DELAY } from './constants';\n\nvar connections = globalVars.connections,\n EE = globalVars.EE,\n listeners = globalVars.listeners,\n removers = globalVars.removers;\n\n// global variables\n\nvar doc = void 0;\nvar win = void 0;\nvar body = void 0;\nvar hashId = 0;\n\nif (typeof window !== 'undefined') {\n win = window;\n doc = win.document || document;\n body = doc.body;\n}\n\nfunction getHash(domNode) {\n return domNode.id || 'target-id-' + hashId++; // eslint-disable-line\n}\n\n/**\n * Connect a throttled event to a throttled main event, and return an event remover.\n * The number of connections to a throttled main event will be kept. If all throttled events\n * are removed, then remove throttled main event.\n * @method connectThrottle\n * @param {String} throttledEvent - A throttled event\n * @param {Function} cb - Callback function\n * @param {Object} ctx - The \"this\"\n * @param {String} throttledMainEvent - A throttled main event\n * @return {Object} An event remover\n */\nfunction connectThrottle(throttledEvent, cb, ctx, throttledMainEvent) {\n EE.on(throttledEvent, cb || noop, ctx);\n throttledMainEvent = throttledMainEvent || throttledEvent;\n connections[throttledMainEvent] = (connections[throttledMainEvent] || 0) + 1;\n return {\n _type: throttledEvent,\n _cb: cb,\n _ctx: ctx,\n unsubscribe: function unsubscribe() {\n if (!this._type) {\n return;\n }\n\n EE.removeListener(throttledEvent, cb, ctx);\n connections[throttledMainEvent]--;\n if (connections[throttledMainEvent] === 0) {\n listeners[throttledMainEvent].remove();\n listeners[throttledMainEvent] = undefined;\n }\n\n this._type = undefined;\n this._cb = undefined;\n this._ctx = undefined;\n\n // remove the remover from removers array\n for (var i = removers.length - 1; i >= 0; i--) {\n var remover = removers[i];\n if (remover === this) {\n removers.splice(i, 1);\n break;\n }\n }\n }\n };\n}\n\n/**\n * Connect to event, event start and event end.\n * @method connectContinuousEvent\n * @param {Object} target - The target of a main event, window or document.\n * @param {String} mainEvent - A browser event, like scroll or resize.\n * @param {String} event - A subscribe event.\n * @param {Object} eventOptions - An options pass to event listener\n */\nfunction connectContinuousEvent(target, mainEvent, event) {\n return function throttleEvent(throttleRate, cb, options, eventOptions) {\n var context = options.context;\n var domTarget = options.target;\n var domId = domTarget && getHash(domTarget);\n var targetPart = domId ? ':' + domId : '';\n\n var throttledStartEvent = mainEvent + 'Start:' + throttleRate + targetPart;\n var throttledEndEvent = mainEvent + 'End:' + throttleRate + targetPart;\n var throttledMainEvent = mainEvent + ':' + throttleRate + targetPart;\n var throttledEvent = event + ':' + throttleRate + targetPart;\n\n var remover = connectThrottle(throttledEvent, cb, context, throttledMainEvent);\n removers.push(remover);\n\n if (listeners[throttledMainEvent]) {\n return remover;\n }\n\n var ae = {\n start: new AugmentedEvent({ mainType: mainEvent, subType: 'start' }), // start\n main: new AugmentedEvent({ mainType: mainEvent }), // main\n end: new AugmentedEvent({ mainType: mainEvent, subType: 'end' })\n };\n\n // No throttle for throttleRate = 0\n // end\n if (throttleRate === 'raf') {\n throttleRate = 16; // Set as a number for setTimeout later.\n handler = rAFThrottle(handler);\n } else if (throttleRate > 0) {\n handler = throttle(handler, throttleRate);\n }\n\n var timer = void 0;\n function endCallback(e) {\n ae.end.update(e);\n EE.emit(throttledEndEvent, e, ae.end);\n timer = null;\n }\n function handler(e) {\n if (!timer) {\n ae.start.update(e);\n EE.emit(throttledStartEvent, e, ae.start);\n }\n clearTimeout(timer);\n\n ae.main.update(e);\n EE.emit(throttledMainEvent, e, ae.main);\n if (!leIE8) {\n timer = setTimeout(endCallback.bind(null, e), throttleRate + EVENT_END_DELAY);\n } else {\n // For browser less then and equal to IE8, event object need to be cloned for setTimeout.\n timer = setTimeout(function () {\n endCallback(clone(e));\n }, throttleRate + EVENT_END_DELAY);\n }\n }\n\n listeners[throttledMainEvent] = listen(domTarget || target, mainEvent, handler, eventOptions);\n return remover;\n };\n}\n\nfunction connectDiscreteEvent(target, event) {\n return function throttleEvent(throttleRate, cb, options, eventOptions) {\n var context = options.context;\n var domTarget = options.target;\n var domId = domTarget && getHash(domTarget);\n\n // no throttling for discrete event\n var throttledEvent = event + ':0' + (domId ? ':' + domId : '');\n\n var remover = connectThrottle(throttledEvent, cb, context);\n removers.push(remover);\n\n if (listeners[throttledEvent]) {\n return remover;\n }\n\n var ae = new AugmentedEvent({ mainType: event });\n\n function handler(e) {\n ae.update(e);\n EE.emit(throttledEvent, e, ae);\n }\n\n listeners[throttledEvent] = listen(domTarget || target, event, handler, eventOptions);\n return remover;\n };\n}\n\nexport default {\n scrollStart: connectContinuousEvent(win, 'scroll', 'scrollStart'),\n scrollEnd: connectContinuousEvent(win, 'scroll', 'scrollEnd'),\n scroll: connectContinuousEvent(win, 'scroll', 'scroll'),\n resizeStart: connectContinuousEvent(win, 'resize', 'resizeStart'),\n resizeEnd: connectContinuousEvent(win, 'resize', 'resizeEnd'),\n resize: connectContinuousEvent(win, 'resize', 'resize'),\n visibilitychange: connectDiscreteEvent(doc, 'visibilitychange'),\n touchmoveStart: connectContinuousEvent(body, 'touchmove', 'touchmoveStart'),\n touchmoveEnd: connectContinuousEvent(body, 'touchmove', 'touchmoveEnd'),\n touchmove: connectContinuousEvent(body, 'touchmove', 'touchmove'),\n touchstart: connectDiscreteEvent(body, 'touchstart'),\n touchend: connectDiscreteEvent(body, 'touchend')\n};\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nexport var EVENT_END_DELAY = 100;\nexport var DEFAULT_THROTTLE_RATE = 50;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport globalVars from './globalVars';\nimport leIE8 from './lib/leIE8'; // less then or equal to IE8\nimport mainEventConnectors from './mainEventConnectors';\n\n// constants\nimport { DEFAULT_THROTTLE_RATE } from './constants';\n\n/**\n * Subscribe to UI events.\n * @method subscribe\n * @param {String} type - The type of event.\n * @param {Function} cb - The callback function.\n * @param {Object} options.context - The caller.\n * @param {Number} options.throttleRate - The amount of time for throttling.\n * @param {Boolean} options.useRAF - Use rAF for throttling if true.\n * @param {Object} options.eventOptions - Option to pass to event listener\n * @return {Object} The object with unsubscribe function.\n */\nfunction subscribe(type, cb) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var useRAF = options.useRAF || false;\n var throttleRate = parseInt(options.throttleRate, 10);\n var eventOptions = options.eventOptions;\n\n if (isNaN(throttleRate)) {\n throttleRate = DEFAULT_THROTTLE_RATE;\n }\n\n if (useRAF) {\n throttleRate = 'raf';\n }\n\n // turn off throttle if the browser is IE8 or less, because window.event will be reset\n // when using any delayed function, i.g., setTimeout, or rAF.\n if (leIE8) {\n throttleRate = 0;\n }\n\n // once those variables enabled, then never disabled.\n globalVars.enableScrollInfo = globalVars.enableScrollInfo || options.enableScrollInfo || false;\n globalVars.enableResizeInfo = globalVars.enableResizeInfo || options.enableResizeInfo || false;\n globalVars.enableTouchInfo = globalVars.enableTouchInfo || options.enableTouchInfo || false;\n\n return mainEventConnectors[type](throttleRate, cb, options, eventOptions);\n}\n\nexport default subscribe;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport globalVars from './globalVars';\n\nvar removers = globalVars.removers;\n\n/**\n * Unsubscribe to UI events.\n * @method unsubscribe\n * @param {String} type - The type of event.\n * @param {Function} cb - The callback function.\n */\n\nfunction unsubscribe(type, cb) {\n var remover = void 0;\n for (var i = removers.length - 1; i >= 0; i -= 1) {\n remover = removers[i];\n if (remover._cb === cb && remover._type.indexOf(type) >= 0) {\n remover.unsubscribe();\n removers.splice(i, 1);\n }\n }\n}\n\nexport default unsubscribe;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nimport listenLib from './dist-es/lib/listen';\nimport subscribeLib from './dist-es/subscribe';\nimport unsubscribeLib from './dist-es/unsubscribe';\n\nvar IS_CLIENT = typeof window !== 'undefined';\n\nfunction warn() {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Warning: the function is client-side only, does not work on server side'); // eslint-disable-line\n }\n}\n\nexport var listen = IS_CLIENT ? listenLib : warn;\nexport var subscribe = IS_CLIENT ? subscribeLib : warn;\nexport var unsubscribe = IS_CLIENT ? unsubscribeLib : warn;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n"],"names":["identity","overRest","setToString","module","exports","func","start","trimmedEndIndex","reTrimStart","string","slice","replace","baseRest","isIterateeCall","assigner","object","sources","index","length","customizer","undefined","guard","Object","source","eq","isArrayLike","isIndex","isObject","value","type","reWhitespace","test","charAt","assignValue","copyObject","createAssigner","isPrototype","keys","hasOwnProperty","prototype","assign","key","call","baseClone","now","toNumber","nativeMax","Math","max","nativeMin","min","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","clearTimeout","cancel","flush","root","Date","debounce","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","process","hr","uptime","getTime","window","g","vendors","suffix","raf","caf","i","last","id","queue","callback","_now","next","cp","cancelled","e","round","push","handle","fn","polyfill","requestAnimationFrame","cancelAnimationFrame","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","_interopRequireDefault","obj","__esModule","_defineProperty","doc","docBody","docEl","M","win","_react","_react2","_propTypes2","_subscribeUiEvent","_classnames2","_shallowequal2","TRANSFORM_PROP","canEnableTransforms","scrollDelta","winHeight","Sticky","_Component","context","instance","_classCallCheck","_x","_x2","_x3","_again","property","receiver","Function","desc","getOwnPropertyDescriptor","getter","get","parent","getPrototypeOf","_get","handleResize","bind","handleScroll","handleScrollStart","delta","stickyTop","stickyBottom","frozen","skipNextScrollEvent","scrollTop","bottomBoundaryTarget","topTarget","subscribers","state","top","bottom","width","height","x","y","topBoundary","bottomBoundary","Infinity","status","pos","activated","subClass","superClass","create","constructor","setPrototypeOf","__proto__","_inherits","offsetHeight","querySelector","getTargetHeight","rect","getBoundingClientRect","boundary","getTargetBottom","setState","outerRect","outerElement","innerRect","innerElement","right","left","outerY","getTopPosition","getBottomBoundary","ae","shouldFreeze","resize","updateInitialDimension","update","scroll","enabled","reset","release","fix","toRelease","deltaHeight","nextProps","prevProps","prevState","_this","onStateChange","unsubscribe","document","documentElement","body","innerHeight","clientHeight","Modernizr","prefixed","csstransforms3d","subscribe","useRAF","enableScrollInfo","enableResizeInfo","style","enableTransforms","nextState","_classNames","_this2","innerStyle","position","zIndex","innerZ","outerStyle","translate","outerClasses","className","activeClass","releasedClass","children","createElement","ref","outer","inner","Component","displayName","defaultProps","propTypes","bool","oneOfType","number","STATUS_ORIGINAL","STATUS_RELEASED","STATUS_FIXED","objA","objB","compare","compareContext","ret","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","passiveSupported","addEventListener","removeEventListener","err","connections","EE","listeners","removers","supportPassiveEvent","globalVars","defaultEventOption","capture","passive","eventType","handler","add","_remove","eventOptions","attachEvent","remove","leIE8","navigator","matches","userAgent","match","parseFloat","touch","axisIntention","startX","startY","deltaX","deltaY","getXY","t","pageX","pageY","clientX","scrollLeft","clientY","AugmentedEvent","option","mainType","toLowerCase","subType","toUpperCase","innerWidth","clientWidth","enableTouchInfo","touches","absX","absY","abs","throttle","requestId","later","hashId","getHash","domNode","connectThrottle","throttledEvent","cb","ctx","throttledMainEvent","on","_type","_cb","_ctx","removeListener","splice","connectContinuousEvent","mainEvent","event","throttleRate","domTarget","domId","targetPart","throttledStartEvent","throttledEndEvent","remover","main","end","timer","endCallback","emit","connectDiscreteEvent","scrollStart","scrollEnd","resizeStart","resizeEnd","visibilitychange","touchmoveStart","touchmoveEnd","touchmove","touchstart","touchend","isNaN","mainEventConnectors","IS_CLIENT","warn","indexOf","has","prefix","Events","once","addListener","emitter","listener","evt","_events","_eventsCount","clearEvent","EventEmitter","eventNames","events","name","names","getOwnPropertySymbols","concat","handlers","l","ee","Array","listenerCount","a1","a2","a3","a4","a5","len","j","removeAllListeners","off"],"sourceRoot":""}