{"version":3,"sources":["webpack:///../node_modules/react-plx/lib/index.js","webpack:///../node_modules/window-scroll-manager/index.js","webpack:///../node_modules/react-plx/lib/Plx.js","webpack:///../node_modules/bezier-easing/src/index.js"],"names":["Object","defineProperty","exports","value","ScrollManager","undefined","_windowScrollManager2","_interopRequireDefault","_Plx2","obj","__esModule","default","instance","instancesCount","ticking","isWindowDefined","window","supportsPassiveEvents","addEventListener","passive","options","get","noop","removeEventListener","detectPassiveEvents","supportsCustomEvents","CustomEvent","this","handleScroll","bind","eventListenerOptions","prototype","removeListener","destroy","getScrollPosition","scrollPositionY","scrollY","document","documentElement","scrollTop","scrollPositionX","scrollX","scrollLeft","scrollPosition","event","detail","createEvent","initCustomEvent","dispatchEvent","requestAnimationFrame","module","call","_extends","assign","target","i","arguments","length","source","key","hasOwnProperty","_createClass","defineProperties","props","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_typeof","Symbol","iterator","constructor","_react","_react2","_propTypes2","_bezierEasing2","WINDOW_EXISTS","START_END_DURATION_REGEX","ANGLE_PROPERTIES","EASINGS","ease","easeIn","easeOut","easeInOut","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","REGEX_0_255","HEX_REGEX","RegExp","RGB_REGEX","RGBA_REGEX","TRANSFORM_MAP","rotate","unit","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","skewZ","translateX","translateY","translateZ","ORDER_OF_TRANSFORMS","COLOR_PROPERTIES","FILTER_MAP","blur","brightness","contrast","grayscale","hueRotate","invert","opacityFilter","saturate","sepia","FILTER_PROPERTIES","PROPS_TO_OMIT","getElementTop","el","top","element","offsetTop","offsetParent","getUnit","property","propertyUnit","indexOf","getValueInPx","maxScroll","floatValue","parseFloat","match","vh","innerHeight","valueInPx","convertPropToPixels","propName","propValue","offset","propValueInPx","isElement","HTMLElement","keyCodes","ZERO","NINE","test","charCodeAt","console","warn","querySelector","offsetHeight","offsetInPx","hexToObject","hex","color","result","exec","r","parseInt","g","b","a","rgbToObject","rgb","isRgba","toLowerCase","replace","parallax","start","duration","startValue","endValue","easing","min","max","percentage","easingPropType","Math","floor","colorParallax","startObject","endObject","applyProperty","propertyData","startPosition","style","transformMethod","filterMethod","newStyle","transform","_propertyUnit","filter","checkIfActive","classes","getNewState","state","animateWhenNotInViewport","disabled","freeze","parallaxData","showElement","plxStyle","plxStateClasses","rect","getBoundingClientRect","isTopAboveBottomEdge","isBottomBelowTopEdge","height","newState","appliedProperties","segments","isInSegment","lastSegmentScrolledBy","scrollHeight","body","_loop","_parallaxData$i","endOffset","properties","startOffset","end","startInPx","durationInPx","endInPx","forEach","push","data","transformsOrdered","transformKey","join","WebkitTransform","filtersArray","filterKey","WebkitFilter","JSON","stringify","newPlxStateClasses","cssClasses","name","getClasses","keys","Plx","_Component","TypeError","_classCallCheck","_this","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","handleScrollChange","handleResize","plxStartEnabled","onPlxStart","plxEndEnabled","onPlxEnd","subClass","superClass","create","setPrototypeOf","_inherits","scrollManager","update","prevProps","prevState","wasActive","isActive","clearTimeout","resizeDebounceTimeoutID","_this2","currentScrollPosition","setState","_this3","setTimeout","e","_this4","_props","children","className","tagName","_state","Tag","elementStyle","visibility","createElement","object","keysToOmit","omit","ref","Component","propertiesItemType","shape","oneOfType","string","number","isRequired","SafeHTMLElement","parallaxDataType","instanceOf","arrayOf","array","func","propTypes","bool","any","objectOf","defaultProps","float32ArraySupported","Float32Array","A","aA1","aA2","B","C","calcBezier","aT","getSlope","LinearEasing","x","mX1","mY1","mX2","mY2","Error","sampleValues","Array","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","abs","binarySubdivide"],"mappings":"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","file":"pex-static/3.0c01aaa7bd4e1940f705.chunk.js","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ScrollManager = undefined;\n\nvar _windowScrollManager = require('window-scroll-manager');\n\nvar _windowScrollManager2 = _interopRequireDefault(_windowScrollManager);\n\nvar _Plx = require('./Plx');\n\nvar _Plx2 = _interopRequireDefault(_Plx);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Plx2.default;\nexports.ScrollManager = _windowScrollManager2.default;","'use strict';\n\n(function() {\n var instance = null;\n var instancesCount = 0;\n var ticking = false;\n\n var EVENT_NAME = 'window-scroll';\n\n var isWindowDefined = typeof window !== 'undefined';\n\n // ------------------------------------------------\n // Passive events support detection\n // ------------------------------------------------\n function detectPassiveEvents() {\n if (isWindowDefined && typeof window.addEventListener === 'function') {\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function() { passive = true; }\n });\n // note: have to set and remove a no-op listener instead of null\n // (which was used previously), because Edge v15 throws an error\n // when providing a null callback.\n // https://github.com/rafrex/detect-passive-events/pull/3\n var noop = function() {};\n window.addEventListener('TEST_PASSIVE_EVENT_SUPPORT', noop, options);\n window.removeEventListener('TEST_PASSIVE_EVENT_SUPPORT', noop, options);\n\n return passive;\n }\n\n return false;\n }\n\n var supportsPassiveEvents = detectPassiveEvents();\n\n // ------------------------------------------------\n // Custom Event detection\n // ------------------------------------------------\n var supportsCustomEvents = isWindowDefined && typeof window.CustomEvent === 'function';\n\n // ------------------------------------------------\n // Scroll manager\n // ------------------------------------------------\n function ScrollManager() {\n if (typeof window === 'undefined') {\n // Silently return null if it is used on server\n return null;\n }\n\n // Increase reference count\n instancesCount++;\n\n // If singleton instance exists, return it rather than creating a new one\n if (instance) {\n return instance;\n }\n\n // Save singleton instance\n instance = this;\n\n // Bind handlers\n this.handleScroll = this.handleScroll.bind(this);\n\n // Use passive listener when supported with fallback to capture option\n this.eventListenerOptions = supportsPassiveEvents ? { passive: true } : true;\n\n // Add scroll listener\n window.addEventListener('scroll', this.handleScroll, this.eventListenerOptions);\n }\n\n ScrollManager.prototype.removeListener = function() {\n instancesCount--;\n\n // There is not components listening to our event\n if (instancesCount === 0) {\n this.destroy();\n }\n };\n\n ScrollManager.prototype.destroy = function() {\n // Remove event listener\n window.removeEventListener('scroll', this.handleScroll, this.eventListenerOptions);\n\n // Clear singleton instance and count\n instance = null;\n instancesCount = 0;\n };\n\n ScrollManager.prototype.getScrollPosition = function() {\n // Get scroll position, with IE fallback\n var scrollPositionY = window.scrollY || document.documentElement.scrollTop;\n var scrollPositionX = window.scrollX || document.documentElement.scrollLeft;\n\n // Disable overscrolling in safari\n if (scrollPositionY < 0) {\n scrollPositionY = 0;\n }\n if (scrollPositionX < 0) {\n scrollPositionX = 0;\n }\n\n return {\n // Alias for scrollPositionY for backwards compatibility\n scrollPosition: scrollPositionY,\n scrollPositionY: scrollPositionY,\n scrollPositionX: scrollPositionX\n };\n };\n\n ScrollManager.prototype.handleScroll = function() {\n // Fire the event only once per requestAnimationFrame\n if (!ticking) {\n ticking = true;\n\n var event;\n\n if (supportsCustomEvents) {\n event = new CustomEvent(EVENT_NAME, {\n detail: this.getScrollPosition()\n });\n } else {\n event = document.createEvent('CustomEvent');\n event.initCustomEvent(EVENT_NAME, false, false, this.getScrollPosition());\n }\n\n window.dispatchEvent(event);\n\n window.requestAnimationFrame(function() {\n ticking = false;\n });\n }\n };\n\n if (typeof module !== 'undefined' && module.exports) {\n ScrollManager.default = ScrollManager;\n module.exports = ScrollManager;\n } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { // eslint-disable-line no-undef\n // register as 'window-scroll-manager', consistent with npm package name\n define('window-scroll-manager', [], function() { // eslint-disable-line no-undef\n return ScrollManager;\n });\n } else {\n window.ScrollManager = ScrollManager;\n }\n}).call(this);\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\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 _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _bezierEasing = require('bezier-easing');\n\nvar _bezierEasing2 = _interopRequireDefault(_bezierEasing);\n\nvar _windowScrollManager = require('window-scroll-manager');\n\nvar _windowScrollManager2 = _interopRequireDefault(_windowScrollManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\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\n// Check if code is running in the browser (important for universal rendering)\nvar WINDOW_EXISTS = typeof window !== 'undefined';\n\n// Regex that checks for numbers in string\n// formatted as \"{number}{unit}\" where unit is \"px\", \"vh\", \"%\" or none\nvar START_END_DURATION_REGEX = /^-?\\d+(\\.\\d+)?(px|vh|%)?$/;\n\nvar DEFAULT_UNIT = 'px';\nvar DEFAULT_ANGLE_UNIT = 'deg';\nvar ANGLE_PROPERTIES = ['rotate', 'rotateX', 'rotateY', 'rotateZ', 'skew', 'skewX', 'skewY', 'skewZ', 'hueRotate'];\n\nvar EASINGS = {\n ease: [0.25, 0.1, 0.25, 1.0],\n easeIn: [0.42, 0.0, 1.00, 1.0],\n easeOut: [0.00, 0.0, 0.58, 1.0],\n easeInOut: [0.42, 0.0, 0.58, 1.0],\n easeInSine: [0.47, 0, 0.745, 0.715],\n easeOutSine: [0.39, 0.575, 0.565, 1],\n easeInOutSine: [0.445, 0.05, 0.55, 0.95],\n easeInQuad: [0.55, 0.085, 0.68, 0.53],\n easeOutQuad: [0.25, 0.46, 0.45, 0.94],\n easeInOutQuad: [0.455, 0.03, 0.515, 0.955],\n easeInCubic: [0.55, 0.055, 0.675, 0.19],\n easeOutCubic: [0.215, 0.61, 0.355, 1],\n easeInOutCubic: [0.645, 0.045, 0.355, 1],\n easeInQuart: [0.895, 0.03, 0.685, 0.22],\n easeOutQuart: [0.165, 0.84, 0.44, 1],\n easeInOutQuart: [0.77, 0, 0.175, 1],\n easeInQuint: [0.755, 0.05, 0.855, 0.06],\n easeOutQuint: [0.23, 1, 0.32, 1],\n easeInOutQuint: [0.86, 0, 0.07, 1],\n easeInExpo: [0.95, 0.05, 0.795, 0.035],\n easeOutExpo: [0.19, 1, 0.22, 1],\n easeInOutExpo: [1, 0, 0, 1],\n easeInCirc: [0.6, 0.04, 0.98, 0.335],\n easeOutCirc: [0.075, 0.82, 0.165, 1],\n easeInOutCirc: [0.785, 0.135, 0.15, 0.86]\n};\n\n// Color regexes\n\n// 0 - 199 | 200 - 249 | 250 - 255\nvar REGEX_0_255 = '(1?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])';\n// 0.0 - 1.9999...\nvar REGEX_0_1 = '([01](\\\\.\\\\d+)?)';\n// 00 - FF\nvar REGEX_TWO_HEX_DIGITS = '([a-f\\\\d]{2})';\n\nvar HEX_REGEX = new RegExp('^#' + REGEX_TWO_HEX_DIGITS + REGEX_TWO_HEX_DIGITS + REGEX_TWO_HEX_DIGITS + '$', 'i');\nvar RGB_REGEX = new RegExp('^rgb\\\\(' + REGEX_0_255 + ',' + REGEX_0_255 + ',' + REGEX_0_255 + '\\\\)$', 'i');\nvar RGBA_REGEX = new RegExp('^rgba\\\\(' + REGEX_0_255 + ',' + REGEX_0_255 + ',' + REGEX_0_255 + ',' + REGEX_0_1 + '\\\\)$', 'i');\n\nvar SCROLL_OFFSET = 50;\n\nvar RESIZE_DEBOUNCE_TIMEOUT = 150;\n\n// CSS transform map\nvar TRANSFORM_MAP = {\n rotate: function rotate(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_ANGLE_UNIT;\n return 'rotate(' + value + unit + ')';\n },\n rotateX: function rotateX(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_ANGLE_UNIT;\n return 'rotateX(' + value + unit + ')';\n },\n rotateY: function rotateY(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_ANGLE_UNIT;\n return 'rotateY(' + value + unit + ')';\n },\n rotateZ: function rotateZ(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_ANGLE_UNIT;\n return 'rotateZ(' + value + unit + ')';\n },\n scale: function scale(value) {\n return 'scale(' + value + ')';\n },\n scaleX: function scaleX(value) {\n return 'scaleX(' + value + ')';\n },\n scaleY: function scaleY(value) {\n return 'scaleY(' + value + ')';\n },\n scaleZ: function scaleZ(value) {\n return 'scaleZ(' + value + ')';\n },\n skew: function skew(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_UNIT;\n return 'skew(' + value + unit + ')';\n },\n skewX: function skewX(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_UNIT;\n return 'skewX(' + value + unit + ')';\n },\n skewY: function skewY(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_UNIT;\n return 'skewY(' + value + unit + ')';\n },\n skewZ: function skewZ(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_UNIT;\n return 'skewZ(' + value + unit + ')';\n },\n translateX: function translateX(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_UNIT;\n return 'translateX(' + value + unit + ')';\n },\n translateY: function translateY(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_UNIT;\n return 'translateY(' + value + unit + ')';\n },\n translateZ: function translateZ(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_UNIT;\n return 'translateZ(' + value + unit + ')';\n }\n};\n\n// Order of CSS transforms matters\nvar ORDER_OF_TRANSFORMS = ['translateX', 'translateY', 'translateZ', 'skew', 'skewX', 'skewY', 'skewZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ'];\n\n// CSS properties that use color values\nvar COLOR_PROPERTIES = ['backgroundColor', 'borderBottomColor', 'borderColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'fill', 'stroke'];\n\n// CSS filter map\n// blur()\n// brightness()\n// contrast()\n// grayscale()\n// hue-rotate()\n// invert()\n// opacity() // use opacityFilter\n// saturate()\n// sepia()\n\n// Not supported\n// drop-shadow()\n// url()\nvar FILTER_MAP = {\n blur: function blur(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_UNIT;\n return 'blur(' + value + unit + ')';\n },\n brightness: function brightness(value) {\n return 'brightness(' + value + ')';\n },\n contrast: function contrast(value) {\n return 'contrast(' + value + ')';\n },\n grayscale: function grayscale(value) {\n return 'grayscale(' + value + ')';\n },\n hueRotate: function hueRotate(value) {\n var unit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_ANGLE_UNIT;\n return 'hue-rotate(' + value + unit + ')';\n },\n invert: function invert(value) {\n return 'invert(' + value + ')';\n },\n opacityFilter: function opacityFilter(value) {\n return 'opacity(' + value + ')';\n },\n saturate: function saturate(value) {\n return 'saturate(' + value + ')';\n },\n sepia: function sepia(value) {\n return 'sepia(' + value + ')';\n }\n};\n\nvar FILTER_PROPERTIES = ['blur', 'brightness', 'contrast', 'grayscale', 'hueRotate', 'invert', 'opacityFilter', 'saturate', 'sepia'];\n\n// Props to be removed from passing directly to the component element\nvar PROPS_TO_OMIT = ['animateWhenNotInViewport', 'children', 'className', 'freeze', 'parallaxData', 'style', 'tagName', 'onPlxStart', 'onPlxEnd'];\n\n// Get element's top offset\nfunction getElementTop(el) {\n var top = 0;\n var element = el;\n\n do {\n top += element.offsetTop || 0;\n element = element.offsetParent;\n } while (element);\n\n return top;\n}\n\n// Returns CSS unit\nfunction getUnit(property, unit) {\n var propertyUnit = unit || DEFAULT_UNIT;\n\n if (ANGLE_PROPERTIES.indexOf(property) >= 0) {\n propertyUnit = unit || DEFAULT_ANGLE_UNIT;\n }\n\n return propertyUnit;\n}\n\n// Takes string value (in px/vh/%) and returns number\nfunction getValueInPx(value, maxScroll) {\n var floatValue = parseFloat(value);\n var unit = value.match(START_END_DURATION_REGEX)[2] || null;\n var vh = window.innerHeight / 100;\n var valueInPx = value;\n\n switch (unit) {\n case 'vh':\n valueInPx = vh * floatValue;\n break;\n case '%':\n valueInPx = maxScroll * floatValue / 100;\n break;\n default:\n valueInPx = floatValue;\n }\n\n return valueInPx;\n}\n\n// Takes start/end/duration props\n// and return number (in pixels) based on prop type (number, string, dom element)\nfunction convertPropToPixels(propName, propValue, maxScroll) {\n var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n var propValueInPx = propValue;\n var isElement = propValue instanceof HTMLElement;\n var keyCodes = {\n ZERO: 48,\n NINE: 57\n };\n\n if (typeof propValue === 'number') {\n propValueInPx = propValue;\n } else if (START_END_DURATION_REGEX.test(propValue)) {\n propValueInPx = getValueInPx(propValue, maxScroll);\n } else if (isElement || typeof propValue === 'string' && (propValue.charCodeAt(0) < keyCodes.ZERO || propValue.charCodeAt(0) > keyCodes.NINE)) {\n var element = isElement ? propValue : document.querySelector(propValue);\n\n if (!element) {\n console.warn('Plx, ERROR: ' + propName + ' selector matches no elements: \"' + propValue + '\"'); // eslint-disable-line\n return null;\n }\n\n if (propName === 'start' || propName === 'end') {\n // START or END\n // Element enters the viewport\n propValueInPx = getElementTop(element) - window.innerHeight;\n } else if (propName === 'duration') {\n // DURATION\n // Height of the element\n propValueInPx = element.offsetHeight;\n }\n } else {\n console.warn('Plx, ERROR: \"' + propValue + '\" is not a valid ' + propName + ' value, check documenation'); // eslint-disable-line\n return null;\n }\n\n // Transform offset to px\n var offsetInPx = 0;\n\n if (typeof offset === 'number') {\n offsetInPx = offset;\n } else if (START_END_DURATION_REGEX.test(offset)) {\n offsetInPx = getValueInPx(offset, maxScroll);\n }\n // Add offset\n propValueInPx += offsetInPx;\n\n if (propValueInPx < 0) {\n propValueInPx = 0;\n }\n\n return propValueInPx;\n}\n\n// Convers color in hex format into object { r, g, b, a }\nfunction hexToObject(hex) {\n // Convert #abc to #aabbcc\n var color = hex.length === 4 ? '#' + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3] : hex;\n var result = HEX_REGEX.exec(color);\n\n // Safety check, if color is in the wrong format\n if (!result) {\n console.warn('Plx, ERROR: hex color is not in the right format: \"' + hex + '\"'); // eslint-disable-line no-console\n return null;\n }\n\n // All color functions are returning { r, g, b, a } object\n return {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n a: 1\n };\n}\n\n// Convers color in rgb format into object { r, g, b, a }\nfunction rgbToObject(rgb) {\n var isRgba = rgb.toLowerCase().indexOf('rgba') === 0;\n var color = rgb.replace(/ /g, '');\n var result = isRgba ? RGBA_REGEX.exec(color) : RGB_REGEX.exec(color);\n\n // Safety check, if color is in the wrong format\n if (!result) {\n console.warn('Plx, ERROR: rgb or rgba color is not in the right format: \"' + rgb + '\"'); // eslint-disable-line\n return null;\n }\n\n // All color functions are returning { r, g, b, a } object\n return {\n r: parseInt(result[1], 10),\n g: parseInt(result[2], 10),\n b: parseInt(result[3], 10),\n a: isRgba ? parseFloat(result[4]) : 1\n };\n}\n\n// Calculates the current value for parallaxing property\nfunction parallax(scrollPosition, start, duration, startValue, endValue, easing) {\n var min = startValue;\n var max = endValue;\n var invert = startValue > endValue;\n\n // Safety check, if \"startValue\" is in the wrong format\n if (typeof startValue !== 'number') {\n console.warn('Plx, ERROR: startValue is not a number (type: \"' + (typeof endValue === 'undefined' ? 'undefined' : _typeof(endValue)) + '\", value: \"' + endValue + '\")'); // eslint-disable-line\n return null;\n }\n\n // Safety check, if \"endValue\" is in the wrong format\n if (typeof endValue !== 'number') {\n console.warn('Plx, ERROR: endValue is not a number (type: \"' + (typeof endValue === 'undefined' ? 'undefined' : _typeof(endValue)) + '\", value: \"' + endValue + '\")'); // eslint-disable-line\n return null;\n }\n\n // Safety check, if \"duration\" is in the wrong format\n if (typeof duration !== 'number' || duration === 0) {\n console.warn('Plx, ERROR: duration is zero or not a number (type: \"' + (typeof duration === 'undefined' ? 'undefined' : _typeof(duration)) + '\", value: \"' + duration + '\")'); // eslint-disable-line\n return null;\n }\n\n if (invert) {\n min = endValue;\n max = startValue;\n }\n\n var percentage = (scrollPosition - start) / duration;\n\n if (percentage > 1) {\n percentage = 1;\n } else if (percentage < 0) {\n percentage = 0;\n }\n\n // Apply easing\n if (easing) {\n var easingPropType = typeof easing === 'undefined' ? 'undefined' : _typeof(easing);\n if (easingPropType === 'object' && easing.length === 4) {\n percentage = (0, _bezierEasing2.default)(easing[0], easing[1], easing[2], easing[3])(percentage);\n } else if (easingPropType === 'string' && EASINGS[easing]) {\n percentage = (0, _bezierEasing2.default)(EASINGS[easing][0], EASINGS[easing][1], EASINGS[easing][2], EASINGS[easing][3])(percentage);\n } else if (easingPropType === 'function') {\n percentage = easing(percentage);\n }\n }\n\n var value = percentage * (max - min);\n\n if (invert) {\n value = max - value;\n } else {\n value += min;\n }\n\n return Math.floor(value * 100) / 100;\n}\n\n// Calculates current value for color parallax\nfunction colorParallax(scrollPosition, start, duration, startValue, endValue, easing) {\n var startObject = null;\n var endObject = null;\n\n if (startValue[0].toLowerCase() === 'r') {\n startObject = rgbToObject(startValue);\n } else {\n startObject = hexToObject(startValue);\n }\n\n if (endValue[0].toLowerCase() === 'r') {\n endObject = rgbToObject(endValue);\n } else {\n endObject = hexToObject(endValue);\n }\n\n if (startObject && endObject) {\n var r = parallax(scrollPosition, start, duration, startObject.r, endObject.r, easing);\n var g = parallax(scrollPosition, start, duration, startObject.g, endObject.g, easing);\n var b = parallax(scrollPosition, start, duration, startObject.b, endObject.b, easing);\n var a = parallax(scrollPosition, start, duration, startObject.a, endObject.a, easing);\n\n return 'rgba(' + parseInt(r, 10) + ', ' + parseInt(g, 10) + ', ' + parseInt(b, 10) + ', ' + a + ')';\n }\n\n return null;\n}\n\n// Applies property parallax to the style object\nfunction applyProperty(scrollPosition, propertyData, startPosition, duration, style, easing) {\n var startValue = propertyData.startValue,\n endValue = propertyData.endValue,\n property = propertyData.property,\n unit = propertyData.unit;\n\n // If property is one of the color properties\n // Use it's parallax method\n\n var isColor = COLOR_PROPERTIES.indexOf(property) > -1;\n var parallaxMethod = isColor ? colorParallax : parallax;\n\n // Get new CSS value\n var value = parallaxMethod(scrollPosition, startPosition, duration, startValue, endValue, easing);\n\n // Get transform function\n var transformMethod = TRANSFORM_MAP[property];\n var filterMethod = FILTER_MAP[property];\n var newStyle = style;\n\n if (transformMethod) {\n // Get CSS unit\n var propertyUnit = getUnit(property, unit);\n // Transforms, apply value to transform function\n newStyle.transform[property] = transformMethod(value, propertyUnit);\n } else if (filterMethod) {\n // Get CSS unit\n var _propertyUnit = getUnit(property, unit);\n // Filters, apply value to filter function\n newStyle.filter[property] = filterMethod(value, _propertyUnit);\n } else {\n // All other properties\n newStyle[property] = value;\n\n // Add unit if it is passed\n if (unit) {\n newStyle[property] += unit;\n }\n }\n\n return newStyle;\n}\n\n// Returns CSS classes based on animation state\nfunction getClasses(lastSegmentScrolledBy, isInSegment, parallaxData) {\n var cssClasses = null;\n\n if (lastSegmentScrolledBy === null) {\n cssClasses = 'Plx--above';\n } else if (lastSegmentScrolledBy === parallaxData.length - 1 && !isInSegment) {\n cssClasses = 'Plx--below';\n } else if (lastSegmentScrolledBy !== null && isInSegment) {\n var segmentName = parallaxData[lastSegmentScrolledBy].name || lastSegmentScrolledBy;\n\n cssClasses = 'Plx--active Plx--in Plx--in-' + segmentName;\n } else if (lastSegmentScrolledBy !== null && !isInSegment) {\n var _segmentName = parallaxData[lastSegmentScrolledBy].name || lastSegmentScrolledBy;\n var nextSegmentName = parallaxData[lastSegmentScrolledBy + 1].name || lastSegmentScrolledBy + 1;\n\n cssClasses = 'Plx--active Plx--between Plx--between-' + _segmentName + '-and-' + nextSegmentName;\n }\n\n return cssClasses;\n}\n\n// Checks if class contains 'active'\nfunction checkIfActive(classes) {\n return classes.indexOf('Plx--active') > -1;\n}\n\n// Omits \"keysToOmit\" from \"object\"\nfunction omit(object, keysToOmit) {\n var result = {};\n\n Object.keys(object).forEach(function (key) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n });\n\n return result;\n}\n\n// Main update function\n// Returns new state object based on props and scroll position\nfunction getNewState(scrollPosition, props, state, element) {\n var animateWhenNotInViewport = props.animateWhenNotInViewport,\n disabled = props.disabled,\n freeze = props.freeze,\n parallaxData = props.parallaxData;\n var showElement = state.showElement,\n plxStyle = state.plxStyle,\n plxStateClasses = state.plxStateClasses;\n\n // Do nothing if animation is disabled, frozen\n // or if element is not rendered yet\n\n if (freeze && showElement || !element || disabled) {\n return null;\n }\n\n // Check if element is in viewport\n // Small offset is added to prevent page jumping\n if (!animateWhenNotInViewport) {\n var rect = element.getBoundingClientRect();\n var isTopAboveBottomEdge = rect.top < window.innerHeight + SCROLL_OFFSET;\n var isBottomBelowTopEdge = rect.top + rect.height > -SCROLL_OFFSET;\n\n if (!isTopAboveBottomEdge || !isBottomBelowTopEdge) {\n return null;\n }\n }\n\n var newState = {};\n\n // Style to be applied to our element\n var newStyle = {\n transform: {},\n filter: {}\n };\n\n // This means \"componentDidMount\" did happen and that we should show our element\n if (!showElement) {\n newState.showElement = true;\n }\n\n var appliedProperties = [];\n var segments = [];\n var isInSegment = false;\n var lastSegmentScrolledBy = null;\n var bodyHeight = document.documentElement.scrollHeight || document.body.scrollHeight;\n var maxScroll = bodyHeight - window.innerHeight;\n\n var _loop = function _loop(i) {\n var _parallaxData$i = parallaxData[i],\n duration = _parallaxData$i.duration,\n easing = _parallaxData$i.easing,\n endOffset = _parallaxData$i.endOffset,\n properties = _parallaxData$i.properties,\n startOffset = _parallaxData$i.startOffset;\n\n\n var start = parallaxData[i].start === 'self' ? element : parallaxData[i].start;\n var end = parallaxData[i].end === 'self' ? element : parallaxData[i].end;\n\n var startInPx = convertPropToPixels('start', start, maxScroll, startOffset);\n var durationInPx = null;\n var endInPx = null;\n\n // End has higher priority than duration\n if (typeof end !== 'undefined') {\n endInPx = convertPropToPixels('end', end, maxScroll, endOffset);\n durationInPx = endInPx - startInPx;\n } else {\n durationInPx = convertPropToPixels('duration', duration, maxScroll);\n endInPx = startInPx + durationInPx;\n }\n\n // If segment is below scroll position skip it\n if (scrollPosition < startInPx) {\n return 'break';\n }\n\n var isScrolledByStart = scrollPosition >= startInPx;\n\n if (isScrolledByStart) {\n lastSegmentScrolledBy = i;\n }\n\n // If active segment exists, apply his properties\n if (scrollPosition >= startInPx && scrollPosition <= endInPx) {\n isInSegment = true;\n\n properties.forEach(function (propertyData) {\n // eslint-disable-line no-loop-func\n var property = propertyData.property;\n\n // Save which properties are applied to the active segment\n // So they are not re-applied for other segments\n\n appliedProperties.push(property);\n\n // Apply property style\n newStyle = applyProperty(scrollPosition, propertyData, startInPx, durationInPx, newStyle, easing);\n });\n } else {\n // Push non active segments above the scroll position to separate array\n // This way \"durationInPx\" and \"startInPx\" are not calculated again\n // and segments below scroll position are skipped in the next step\n segments.push({\n easing: easing,\n durationInPx: durationInPx,\n properties: properties,\n startInPx: startInPx\n });\n }\n };\n\n for (var i = 0; i < parallaxData.length; i++) {\n var _ret = _loop(i);\n\n if (_ret === 'break') break;\n }\n\n // These are only segments that are completly above scroll position\n segments.forEach(function (data) {\n var easing = data.easing,\n durationInPx = data.durationInPx,\n properties = data.properties,\n startInPx = data.startInPx;\n\n\n properties.forEach(function (propertyData) {\n var property = propertyData.property;\n\n // Skip propery that was changed for active segment\n\n if (appliedProperties.indexOf(property) > -1) {\n return;\n }\n\n // These styles that are the ones changed by segments\n // that are above active segment\n newStyle = applyProperty(scrollPosition, propertyData, startInPx, durationInPx, newStyle, easing);\n });\n });\n\n // Sort transforms by ORDER_OF_TRANSFORMS\n // as order of CSS transforms matters\n var transformsOrdered = [];\n\n ORDER_OF_TRANSFORMS.forEach(function (transformKey) {\n if (newStyle.transform[transformKey]) {\n transformsOrdered.push(newStyle.transform[transformKey]);\n }\n });\n\n // Concat transforms and add webkit prefix\n newStyle.transform = transformsOrdered.join(' ');\n newStyle.WebkitTransform = newStyle.transform;\n\n var filtersArray = [];\n FILTER_PROPERTIES.forEach(function (filterKey) {\n if (newStyle.filter[filterKey]) {\n filtersArray.push(newStyle.filter[filterKey]);\n }\n });\n\n // Concat filters and add webkit prefix\n newStyle.filter = filtersArray.join(' ');\n newStyle.WebkitFilter = newStyle.filter;\n\n // \"Stupid\" check if style should be updated\n if (JSON.stringify(plxStyle) !== JSON.stringify(newStyle)) {\n newState.plxStyle = newStyle;\n }\n\n // Adding state class\n var newPlxStateClasses = getClasses(lastSegmentScrolledBy, isInSegment, parallaxData);\n\n if (newPlxStateClasses !== plxStateClasses) {\n newState.plxStateClasses = newPlxStateClasses;\n }\n\n if (Object.keys(newState).length) {\n return newState;\n }\n\n return null;\n}\n\nvar Plx = function (_Component) {\n _inherits(Plx, _Component);\n\n function Plx(props) {\n _classCallCheck(this, Plx);\n\n // Binding handlers\n var _this = _possibleConstructorReturn(this, (Plx.__proto__ || Object.getPrototypeOf(Plx)).call(this, props));\n\n _this.handleScrollChange = _this.handleScrollChange.bind(_this);\n _this.handleResize = _this.handleResize.bind(_this);\n\n _this.state = {\n element: null,\n showElement: false,\n plxStateClasses: '',\n plxStyle: {}\n };\n\n // Skipping type checking as PropTypes will give a warning if the props aren't functions\n _this.plxStartEnabled = _this.props.onPlxStart !== null;\n _this.plxEndEnabled = _this.props.onPlxEnd !== null;\n return _this;\n }\n\n _createClass(Plx, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Get scroll manager singleton\n this.scrollManager = new _windowScrollManager2.default();\n // Add listeners\n window.addEventListener('window-scroll', this.handleScrollChange);\n window.addEventListener('resize', this.handleResize);\n\n this.update();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var wasActive = checkIfActive(prevState.plxStateClasses);\n var isActive = checkIfActive(this.state.plxStateClasses);\n if (prevProps !== this.props) {\n this.update();\n }\n if ((this.plxStartEnabled || this.plxEndEnabled) && prevState.plxStateClasses !== this.state.plxStateClasses) {\n if (this.plxStartEnabled && !wasActive && isActive) {\n this.props.onPlxStart();\n } else if (this.plxEndEnabled && wasActive && !isActive) {\n this.props.onPlxEnd();\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('window-scroll', this.handleScrollChange);\n window.removeEventListener('resize', this.handleResize);\n\n clearTimeout(this.resizeDebounceTimeoutID);\n this.resizeDebounceTimeoutID = null;\n\n if (this.scrollManager) {\n this.scrollManager.removeListener();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var _this2 = this;\n\n var scrollPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n var currentScrollPosition = scrollPosition === null ? this.scrollManager.getScrollPosition().scrollPositionY : scrollPosition;\n\n var newState = getNewState(currentScrollPosition, this.props, this.state, this.element);\n\n if (newState) {\n requestAnimationFrame(function () {\n return _this2.setState(newState);\n });\n }\n }\n }, {\n key: 'handleResize',\n value: function handleResize() {\n var _this3 = this;\n\n clearTimeout(this.resizeDebounceTimeoutID);\n this.resizeDebounceTimeoutID = setTimeout(function () {\n _this3.update();\n }, RESIZE_DEBOUNCE_TIMEOUT);\n }\n }, {\n key: 'handleScrollChange',\n value: function handleScrollChange(e) {\n this.update(e.detail.scrollPositionY);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n disabled = _props.disabled,\n style = _props.style,\n tagName = _props.tagName;\n var _state = this.state,\n showElement = _state.showElement,\n plxStyle = _state.plxStyle,\n plxStateClasses = _state.plxStateClasses;\n\n\n var Tag = tagName;\n\n var elementStyle = style;\n\n if (!disabled) {\n elementStyle = _extends({}, style, plxStyle, {\n // Hide element before until it is rendered\n // This prevents jumps if page is scrolled and then refreshed\n visibility: showElement ? null : 'hidden'\n });\n }\n\n return _react2.default.createElement(\n Tag,\n _extends({}, omit(this.props, PROPS_TO_OMIT), {\n className: 'Plx ' + plxStateClasses + ' ' + className,\n style: elementStyle,\n ref: function ref(el) {\n return _this4.element = el;\n }\n }),\n children\n );\n }\n }]);\n\n return Plx;\n}(_react.Component);\n\nexports.default = Plx;\n\n\nvar propertiesItemType = _propTypes2.default.shape({\n startValue: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]).isRequired,\n endValue: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]).isRequired,\n property: _propTypes2.default.string.isRequired,\n unit: _propTypes2.default.string\n});\n\n// Check for the universal rendering\n// HTMLElement in the proptypes breaks on server\n// https://github.com/Stanko/react-plx/issues/25\nvar SafeHTMLElement = WINDOW_EXISTS ? window.HTMLElement : {};\n\nvar parallaxDataType = _propTypes2.default.shape({\n start: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.instanceOf(SafeHTMLElement)]).isRequired,\n startOffset: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n duration: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.instanceOf(SafeHTMLElement)]),\n end: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.instanceOf(SafeHTMLElement)]),\n endOffset: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),\n properties: _propTypes2.default.arrayOf(propertiesItemType).isRequired,\n easing: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.array, _propTypes2.default.func]),\n name: _propTypes2.default.string\n});\n\nPlx.propTypes = {\n animateWhenNotInViewport: _propTypes2.default.bool,\n children: _propTypes2.default.any,\n className: _propTypes2.default.string,\n disabled: _propTypes2.default.bool,\n freeze: _propTypes2.default.bool,\n parallaxData: _propTypes2.default.arrayOf(parallaxDataType),\n style: _propTypes2.default.objectOf(_propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number, _propTypes2.default.object])),\n tagName: _propTypes2.default.string,\n onPlxStart: _propTypes2.default.func,\n onPlxEnd: _propTypes2.default.func\n};\n\nPlx.defaultProps = {\n animateWhenNotInViewport: false,\n children: null,\n className: '',\n disabled: false,\n freeze: false,\n parallaxData: [],\n style: {},\n tagName: 'div',\n onPlxStart: null,\n onPlxEnd: null\n};","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1) { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n throw new Error('bezier x values must be in [0, 1] range');\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return LinearEasing;\n }\n\n // Precompute samples table\n var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n\n function getTForX (aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n\n // Interpolate to provide an initial guess for t\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n\n return function BezierEasing (x) {\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n if (x === 0) {\n return 0;\n }\n if (x === 1) {\n return 1;\n }\n return calcBezier(getTForX(x), mY1, mY2);\n };\n};\n"],"sourceRoot":""}