{"version":3,"file":"static/js/376.f8f224a4.chunk.js","mappings":"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","sources":["../node_modules/eventemitter3/index.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_baseRest.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/assign.js","../node_modules/lodash/clone.js","../node_modules/lodash/constant.js","../node_modules/lodash/debounce.js","../node_modules/lodash/identity.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/now.js","../node_modules/lodash/throttle.js","../node_modules/lodash/toNumber.js","../node_modules/performance-now/src/performance-now.coffee","../node_modules/raf/index.js","../node_modules/react-addons-shallow-compare/index.js","../node_modules/react-stickynode/dist/Sticky.js","../node_modules/react-stickynode/index.js","../node_modules/subscribe-ui-event/dist/AugmentedEvent.js","../node_modules/subscribe-ui-event/dist/constants.js","../node_modules/subscribe-ui-event/dist/globalVars.js","../node_modules/subscribe-ui-event/dist/lib/leIE8.js","../node_modules/subscribe-ui-event/dist/lib/listen.js","../node_modules/subscribe-ui-event/dist/lib/rAFThrottle.js","../node_modules/subscribe-ui-event/dist/lib/supportPassiveEvent.js","../node_modules/subscribe-ui-event/dist/mainEventConnectors.js","../node_modules/subscribe-ui-event/dist/subscribe.js","../node_modules/subscribe-ui-event/dist/unsubscribe.js","../node_modules/subscribe-ui-event/index.js"],"sourcesContent":["'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 * @api 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 {Mixed} 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 * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api 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 * @api 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 * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\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 * @api 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 {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\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 {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\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 {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api 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 if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[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 if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[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 if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[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 * @api 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]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\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// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\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","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","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 constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\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","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\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 * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\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","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\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 the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\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","if performance? and performance.now\n module.exports = -> performance.now()\nelse if process? and process.hrtime\n module.exports = -> (getNanoSeconds() - nodeLoadTime) / 1e6\n hrtime = process.hrtime\n getNanoSeconds = ->\n hr = hrtime()\n hr[0] * 1e9 + hr[1]\n moduleLoadTime = getNanoSeconds()\n upTime = process.uptime() * 1e9\n nodeLoadTime = moduleLoadTime - upTime\nelse if Date.now\n module.exports = -> Date.now() - loadTime\n loadTime = Date.now()\nelse\n module.exports = -> new Date().getTime() - loadTime\n loadTime = new Date().getTime()\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 (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @providesModule shallowCompare\n */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\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 // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Does a shallow comparison for props and state.\n * See ReactComponentWithPureRenderMixin\n * See also https://facebook.github.io/react/docs/shallow-compare.html\n */\nfunction shallowCompare(instance, nextProps, nextState) {\n return (\n !shallowEqual(instance.props, nextProps) ||\n !shallowEqual(instance.state, nextState)\n );\n}\n\nmodule.exports = shallowCompare;\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 _reactAddonsShallowCompare = require('react-addons-shallow-compare');\n\nvar _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare);\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 _refs = this.refs;\n var outer = _refs.outer;\n var inner = _refs.inner;\n\n var outerRect = outer.getBoundingClientRect();\n var innerRect = inner.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,' + 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, _reactAddonsShallowCompare2['default'])(this, nextProps, nextState);\n }\n }, {\n key: 'render',\n value: function render() {\n var _classNames;\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 return _react2['default'].createElement(\n 'div',\n { ref: 'outer', className: outerClasses, style: outerStyle },\n _react2['default'].createElement(\n 'div',\n { ref: 'inner', className: 'sticky-inner-wrapper', style: innerStyle },\n this.props.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 * 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 globalVars = require('./globalVars');\nvar resize = {\n width: 0,\n height: 0\n};\nvar scroll = {\n delta: 0,\n top: 0\n};\nvar touch = {\n axisIntention: '',\n startX: 0,\n startY: 0,\n deltaX: 0,\n deltaY: 0\n};\n\nvar INTENTION_THRESHOLD = 5;\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 */\nfunction ArgmentedEvent(option) {\n option = option || {};\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\nArgmentedEvent.prototype = {\n getXY: function getXY(touch) {\n var t = { x: 0, y: 0 };\n var docBody = document.body;\n var docEl = document.documentElement;\n\n if (touch.pageX || touch.pageY) {\n t.x = touch.pageX;\n t.y = touch.pageY;\n } else {\n t.x = touch.clientX + docBody.scrollLeft + docEl.scrollLeft;\n t.y = touch.clientY + docBody.scrollTop + docEl.scrollTop;\n }\n\n return t;\n },\n\n update: function update(e) {\n var mainType = this.mainType;\n var subType = this.subType;\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;\n var absX;\n var absY;\n if (mainType === 'touchstart' || subType === 'start') {\n pos = this.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 = this.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\nmodule.exports = ArgmentedEvent;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nmodule.exports = {\n EVENT_END_DELAY: 100,\n DEFAULT_THROTTLE_RATE: 50\n};\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nvar EventEmitter = require('eventemitter3');\nvar supportPassiveEvent = require('./lib/supportPassiveEvent');\n\nmodule.exports = {\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/* global navigator, parseFloat */\n'use strict';\n\nvar leIE8 = false; // less then or equal to IE8\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\nmodule.exports = leIE8;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\nvar _assign = require('lodash/assign');\nvar globalVars = require('../globalVars');\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 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 eventOptions = globalVars.supportPassiveEvent ? _assign({}, defaultEventOption, options) : false;\n\n if (!target.addEventListener && target.attachEvent) {\n add = 'attachEvent';\n _remove = 'detachEvent';\n eventType = 'on' + eventType;\n }\n target[add](eventType, handler, eventOptions);\n\n return {\n remove: function remove() {\n target[_remove](eventType, handler);\n }\n };\n}\n\nmodule.exports = listen;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nvar rAF = require('raf');\nvar getTime = Date.now || /* istanbul ignore next */function () {\n return new Date().getTime();\n};\nfunction rAFThrottle(func, throttle) {\n var context;\n var args;\n var last = 0;\n var requestId = 0;\n\n throttle = throttle || 15;\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;\n\n if (!requestId) {\n requestId = rAF(later);\n }\n };\n}\n\nmodule.exports = rAFThrottle;\n","'use strict';\n\nvar passiveSupported = false;\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 } catch (err) {}\n}\n\nmodule.exports = passiveSupported;\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'use strict';\n\nvar _clone = require('lodash/clone');\nvar _throttle = require('lodash/throttle');\nvar AugmentedEvent = require('./AugmentedEvent');\nvar globalVars = require('./globalVars');\nvar connections = globalVars.connections;\nvar EE = globalVars.EE;\nvar leIE8 = require('./lib/leIE8');\nvar listen = require('./lib/listen');\nvar listeners = globalVars.listeners;\nvar rAFThrottle = require('./lib/rAFThrottle');\nvar removers = globalVars.removers;\nvar subscriptions = globalVars.subscriptions;\n\n// constants\nvar EVENT_END_DELAY = require('./constants').EVENT_END_DELAY;\n\n// global variables\nvar doc;\nvar win;\nvar body;\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++;\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, 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, eventOptions) {\n return function throttleEvent(throttleRate, cb, options) {\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 // 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;\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 e = _clone(e);\n timer = setTimeout(function eventEndDelay() {\n endCallback(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) {\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);\n return remover;\n };\n}\n\nmodule.exports = {\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'use strict';\n\nvar globalVars = require('./globalVars');\nvar leIE8 = require('./lib/leIE8'); // less then or equal to IE8\nvar mainEventConnectors = require('./mainEventConnectors');\n\n// constants\nvar DEFAULT_THROTTLE_RATE = require('./constants').DEFAULT_THROTTLE_RATE;\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, options) {\n options = options || {};\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\nmodule.exports = subscribe;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nvar removers = require('./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 */\nfunction unsubscribe(type, cb, options) {\n var remover;\n for (var i = removers.length - 1; i >= 0; i--) {\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\nmodule.exports = unsubscribe;\n","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nfunction warn() {\n if ('production' !== process.env.NODE_ENV) {\n console.warn('Warning: the function is client-side only, does not work on server side');\n }\n}\n\nif (typeof window !== 'undefined') {\n module.exports = {\n listen: require('./dist/lib/listen'),\n subscribe: require('./dist/subscribe'),\n unsubscribe: require('./dist/unsubscribe')\n };\n} else {\n module.exports = {\n listen: warn,\n subscribe: warn,\n unsubscribe: warn\n };\n}\n"],"names":["has","Object","prototype","hasOwnProperty","prefix","Events","EE","fn","context","once","this","EventEmitter","_events","_eventsCount","create","__proto__","eventNames","events","name","names","call","push","slice","getOwnPropertySymbols","concat","listeners","event","exists","evt","available","i","l","length","ee","Array","emit","a1","a2","a3","a4","a5","args","len","arguments","removeListener","undefined","apply","j","on","listener","removeAllListeners","off","addListener","setMaxListeners","prefixed","module","exports","func","thisArg","identity","require","overRest","setToString","start","constant","defineProperty","baseSetToString","string","trimmedEndIndex","reTrimStart","replace","baseRest","isIterateeCall","assigner","object","sources","index","customizer","guard","source","eq","isArrayLike","isIndex","isObject","value","type","nativeMax","Math","max","transform","array","otherArgs","shortOut","nativeNow","Date","now","count","lastCalled","stamp","remaining","reWhitespace","test","charAt","assignValue","copyObject","createAssigner","isPrototype","keys","assign","key","baseClone","toNumber","nativeMin","min","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","clearTimeout","cancel","flush","baseGetTag","isObjectLike","root","debounce","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","process","hr","uptime","getTime","window","global","vendors","suffix","raf","caf","last","id","queue","callback","_now","next","cp","cancelled","e","round","handle","polyfill","requestAnimationFrame","cancelAnimationFrame","is","x","y","shallowEqual","objA","objB","keysA","keysB","instance","nextProps","nextState","props","state","_createClass","defineProperties","target","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_interopRequireDefault","obj","__esModule","_defineProperty","doc","docBody","docEl","M","win","_react","_react2","_propTypes2","_subscribeUiEvent","_classnames2","_reactAddonsShallowCompare2","TRANSFORM_PROP","canEnableTransforms","scrollDelta","winHeight","Sticky","_Component","_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","top","bottom","width","height","topBoundary","bottomBoundary","Infinity","status","pos","activated","subClass","superClass","constructor","setPrototypeOf","_inherits","offsetHeight","querySelector","getTargetHeight","rect","getBoundingClientRect","boundary","getTargetBottom","setState","_refs","refs","outer","inner","outerRect","innerRect","right","left","outerY","getTopPosition","getBottomBoundary","ae","shouldFreeze","resize","updateInitialDimension","update","scroll","enabled","reset","release","fix","toRelease","deltaHeight","prevProps","prevState","_this","onStateChange","unsubscribe","document","documentElement","body","innerHeight","clientHeight","Modernizr","csstransforms3d","subscribe","useRAF","enableScrollInfo","enableResizeInfo","style","enableTransforms","_classNames","innerStyle","position","zIndex","innerZ","outerStyle","translate","outerClasses","className","activeClass","releasedClass","createElement","ref","children","Component","displayName","defaultProps","propTypes","bool","oneOfType","number","STATUS_ORIGINAL","STATUS_RELEASED","STATUS_FIXED","globalVars","touch","axisIntention","startX","startY","deltaX","deltaY","ArgmentedEvent","option","mainType","toLowerCase","subType","toUpperCase","getXY","t","pageX","pageY","clientX","scrollLeft","clientY","absX","absY","innerWidth","clientWidth","enableTouchInfo","touches","abs","EVENT_END_DELAY","DEFAULT_THROTTLE_RATE","supportPassiveEvent","connections","removers","leIE8","navigator","matches","userAgent","match","parseFloat","_assign","defaultEventOption","capture","passive","eventType","handler","add","_remove","eventOptions","addEventListener","attachEvent","remove","rAF","throttle","requestId","later","passiveSupported","err","_clone","_throttle","AugmentedEvent","listen","rAFThrottle","subscriptions","hashId","getHash","domNode","connectThrottle","throttledEvent","cb","ctx","throttledMainEvent","_type","_cb","_ctx","splice","connectContinuousEvent","mainEvent","throttleRate","domTarget","domId","targetPart","throttledStartEvent","throttledEndEvent","remover","timer","main","end","endCallback","connectDiscreteEvent","scrollStart","scrollEnd","resizeStart","resizeEnd","visibilitychange","touchmoveStart","touchmoveEnd","touchmove","touchstart","touchend","mainEventConnectors","isNaN","indexOf","warn"],"sourceRoot":""}