{"version":3,"sources":["webpack:///./domain/constants/alignment.ts","webpack:///./presentation/hocs/withLanguage.tsx","webpack:///./presentation/utils/urlLanguageParse.ts","webpack:///src/presentation/components/common/Layer/Parallax.stylesheet.ts","webpack:///./presentation/components/common/Layer/Parallax.tsx","webpack:///src/presentation/components/common/Layer/Static.tsx","webpack:///src/presentation/components/common/Layer/Layer.stylesheet.ts","webpack:///./presentation/components/common/Layer/Layer.tsx","webpack:///./presentation/components/common/Layer/index.ts","webpack:///src/presentation/components/common/Background/Wash.stylesheet.ts","webpack:///./presentation/components/common/Background/Wash.tsx","webpack:///src/presentation/components/common/Background/Background.stylesheet.ts","webpack:///./presentation/components/common/Background/Background.tsx","webpack:///./presentation/components/common/Background/index.ts","webpack:///../node_modules/window-scroll-manager/index.js","webpack:///../node_modules/react-plx/lib/index.js","webpack:///../node_modules/react-plx/lib/Plx.js","webpack:///../node_modules/bezier-easing/src/index.js"],"names":["Alignment","Component","props","currentLanguage","useCurrentLanguage","url","language","length","parsedLanguage","split","toUpperCase","join","replace","classNames","Parallax","layer","data","start","duration","properties","startValue","fx","type","endValue","property","getParallaxData","backgroundImage","urlLanguageParse","imageUrl","className","parallaxData","style","displayName","withLanguage","StaticBackground","Static","image","isChrome","test","navigator","role","PureLayer","Layer","aria-label","createImageAlt","LayerComponent","washColor","LIGHT","NEUTRAL","DARK","PRIMARY","PRIMARY_GRADIENT","HIGHLIGHT","Wash","colorway","layout","duoLayout","hasTiles","useWash","root","cx","Colorway","getClassNames","PureBackground","background","hideGradient","activeBackground","findResponsiveItem","useBreakpoints","backgroundType","Array","isArray","loop","muted","autoPlay","playsInline","poster","fallback","onEnded","e","video","autoplay","load","showFallbackImage","currentTarget","src","mp4","webm","loading","alt","map","i","BackgroundComponent","instance","instancesCount","ticking","isWindowDefined","window","supportsPassiveEvents","addEventListener","passive","options","Object","defineProperty","get","noop","removeEventListener","detectPassiveEvents","supportsCustomEvents","CustomEvent","ScrollManager","this","handleScroll","bind","eventListenerOptions","prototype","removeListener","destroy","getScrollPosition","scrollPositionY","scrollY","document","documentElement","scrollTop","scrollPositionX","scrollX","scrollLeft","scrollPosition","event","detail","createEvent","initCustomEvent","dispatchEvent","requestAnimationFrame","module","exports","default","call","value","undefined","_windowScrollManager2","_interopRequireDefault","_Plx2","obj","__esModule","_extends","assign","target","arguments","source","key","hasOwnProperty","_createClass","defineProperties","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","propertyUnit","indexOf","getValueInPx","maxScroll","floatValue","parseFloat","match","vh","innerHeight","valueInPx","convertPropToPixels","propName","propValue","offset","propValueInPx","isElement","HTMLElement","keyCodes","ZERO","NINE","charCodeAt","console","warn","querySelector","offsetHeight","offsetInPx","hexToObject","hex","color","result","exec","r","parseInt","g","b","a","rgbToObject","rgb","isRgba","toLowerCase","parallax","easing","min","max","percentage","easingPropType","Math","floor","colorParallax","startObject","endObject","applyProperty","propertyData","startPosition","transformMethod","filterMethod","newStyle","transform","_propertyUnit","filter","checkIfActive","classes","getNewState","state","animateWhenNotInViewport","disabled","freeze","showElement","plxStyle","plxStateClasses","rect","getBoundingClientRect","isTopAboveBottomEdge","isBottomBelowTopEdge","height","newState","appliedProperties","segments","isInSegment","lastSegmentScrolledBy","scrollHeight","body","_loop","_parallaxData$i","endOffset","startOffset","end","startInPx","durationInPx","endInPx","forEach","push","transformsOrdered","transformKey","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","_this4","_props","children","tagName","_state","Tag","elementStyle","visibility","createElement","object","keysToOmit","omit","ref","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","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","abs","binarySubdivide"],"mappings":"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","file":"pex-static/34/6.776446af563b9d5f0f26.chunk.js","sourcesContent":["export enum Alignment {\n STARTING = 'STARTING',\n CENTER = 'CENTER',\n}\n\nexport default null;\n","import React from 'react';\nimport { useCurrentLanguage } from 'domain/selectors/page';\n\nexport default (Component: any) => {\n return function EnhancedComponent(props: any) {\n const currentLanguage = useCurrentLanguage();\n return ;\n };\n};\n","export default (url: string, language?: string) => {\n if (url && url.length && language) {\n let parsedLanguage;\n if (language.split('-').length === 2) {\n parsedLanguage = [language.split('-')[0], language.split('-')[1].toUpperCase()].join('-');\n } else {\n parsedLanguage = language;\n }\n return url.replace('{{language}}', parsedLanguage);\n }\n return url;\n};\n","import { css } from 'linaria';\n\nexport const classNames = {\n image: css`\n width: 100%;\n height: 100%;\n background-repeat: no-repeat;\n background-size: cover;\n background-position: center center;\n `,\n plx: css`\n // We add on 400px here as a buffer space to work with parallaxing.\n // Whatever the amount to parallax is set to * 2.\n height: calc(100% + 400px);\n position: absolute;\n top: 0;\n width: 100%;\n `,\n};\n","import React, { ComponentType } from 'react';\nimport Plx from 'react-plx';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport withLanguage from 'presentation/hocs/withLanguage';\n\nimport { classNames } from './Parallax.stylesheet';\nimport { Layer } from './Layer';\n\ninterface OuterProps {\n layer: Layer;\n}\ninterface InnerProps extends OuterProps {\n currentLanguage: string;\n}\n\nconst getParallaxData = ({ layer }: { layer: Layer }) => {\n return [\n {\n start: 'self',\n // @TODO: this value will have to be determined by the ribbon's height.\n // We might have to use react-height here to help us.\n // ---\n // It is double the value of the viewheight to ensure that\n // it keeps performing the parallax scrolling past.\n // 200vh was an arbitary number. This will have to be tweaked with Matt's\n // consent.Make sure that when you tweak this number you also tweak\n // the height calc in the stylesheet\n duration: '200vh',\n properties: [\n {\n startValue: layer.fx.type === 'parallax' ? -400 : 0,\n endValue: 0,\n property: 'translateY',\n },\n ],\n },\n ];\n};\n\nexport const Parallax = ({ layer, currentLanguage }: InnerProps) => {\n const data = getParallaxData({ layer });\n const backgroundImage = urlLanguageParse(layer.imageUrl ?? '', currentLanguage);\n\n return (\n
\n \n
\n );\n};\n\nParallax.displayName = 'Parallax';\n\nexport default withLanguage(Parallax) as ComponentType;\n","import React, { ComponentType } from 'react';\nimport { styled } from 'linaria/react';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport withLanguage from 'presentation/hocs/withLanguage';\n\nimport { Layer } from './Layer';\n\ninterface OuterProps {\n layer: Layer;\n}\ninterface InnerProps extends OuterProps {\n currentLanguage: string;\n}\n\nconst StaticBackground = styled.div<{ layer: Layer; imageUrl: string }>`\n width: 100%;\n height: 100%;\n background-size: cover;\n background-position: ${({ layer }) => layer.focus ?? 'center center'};\n background-repeat: no-repeat;\n background-image: ${({ imageUrl }) => `url(${imageUrl})`};\n`;\n\nexport const Static = ({ layer, currentLanguage }: InnerProps) => {\n const isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n const image = isChrome === true && layer.webpUrl != null ? layer.webpUrl : layer.imageUrl;\n const imageUrl = urlLanguageParse(image ?? '', currentLanguage);\n\n return ;\n};\n\nStatic.displayName = 'Static';\n\nexport default withLanguage(Static) as ComponentType;\n","import { css } from 'linaria';\n\nexport const classNames = {\n root: css`\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n `,\n};\n","import React from 'react';\nimport createImageAlt from 'presentation/utils/createImageAlt';\n\nimport Parallax from './Parallax';\nimport Static from './Static';\nimport { classNames } from './Layer.stylesheet';\n\nexport interface Layer {\n imageUrl?: string;\n focus: string;\n webpUrl?: string;\n fx: {\n type: string;\n };\n}\n\ninterface OuterProps {\n layer: Layer;\n}\n\nexport const PureLayer = ({ layer }: OuterProps) => {\n const isParallax = layer.fx.type === 'parallax';\n const Layer = isParallax ? Parallax : Static;\n\n return (\n
\n \n
\n );\n};\n\nPureLayer.displayName = 'Layer';\n\nexport default PureLayer;\n","import LayerComponent, { Layer } from './Layer';\nexport { Layer };\nexport default LayerComponent;\n","import { css, cx } from 'linaria';\nimport { cssTheme, hex2RgbString, Colorway } from '@uds/theme-utils';\nimport { Layout } from 'domain/constants/layout';\nimport { Alignment } from 'domain/constants/alignment';\n\ninterface Props {\n colorway: Colorway;\n layout: Layout;\n duoLayout: boolean | undefined;\n hasTiles: boolean | undefined;\n}\n\nconst root = css`\n position: absolute;\n top: 0;\n width: 100%;\n height: 100%;\n\n background: rgba(var(--wash-color), var(--wash-opacity));\n\n ${cssTheme.breakpoints.md} {\n background: linear-gradient(\n to right,\n rgba(var(--wash-color), 0.9) 40%,\n rgba(var(--wash-color), 0.8) 50%,\n rgba(var(--wash-color), 0) 65%\n );\n }\n`;\n\nconst washOpacity = css`\n --wash-opacity: 0.75;\n`;\n\nconst lightWashOpacity = css`\n --wash-opacity: 0.9;\n`;\n\nconst wash = css`\n background: rgba(var(--wash-color), var(--wash-opacity));\n`;\n\nconst washColor: Record = {\n LIGHT: css`\n --wash-color: ${hex2RgbString('#fff')};\n `,\n NEUTRAL: css`\n --wash-color: ${cssTheme.palette.rgb.grey10};\n `,\n DARK: css`\n --wash-color: ${hex2RgbString('#000')};\n `,\n PRIMARY: css`\n --wash-color: ${cssTheme.palette.rgb.primary};\n `,\n PRIMARY_GRADIENT: css`\n --wash-color: ${cssTheme.palette.rgb.primary};\n `,\n HIGHLIGHT: css`\n --wash-color: ${cssTheme.palette.rgb.highlight};\n `,\n};\n\nexport const getClassNames = ({ colorway, layout, duoLayout, hasTiles }: Props) => {\n /*\n Creates a gradient or semi opaque wash.\n Use the wash on:\n - mobile\n - we're center aligned text\n - we're a duo layout\n - we have tiles\n Use gradient otherwise\n */\n const useWash = layout.alignment === Alignment.CENTER || duoLayout === true || hasTiles === true;\n\n return {\n root: cx(root, washColor[colorway], colorway === Colorway.LIGHT ? lightWashOpacity : washOpacity, useWash && wash),\n };\n};\n","import React from 'react';\nimport { Colorway } from '@uds/theme-utils';\nimport { Layout } from 'domain/constants/layout';\n\nimport { getClassNames } from './Wash.stylesheet';\n\ninterface OuterProps {\n colorway: Colorway;\n layout: Layout;\n hasTiles: boolean | undefined;\n duoLayout: boolean | undefined;\n}\n\nexport const Wash = ({ colorway, layout, duoLayout, hasTiles }: OuterProps) => {\n const classNames = getClassNames({ colorway, layout, duoLayout, hasTiles });\n\n return
;\n};\n\nWash.displayName = 'Wash';\n\nexport default Wash;\n","import { css } from 'linaria';\n\nconst videoWrapper = css`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n overflow: hidden;\n`;\n\nconst video = css`\n object-fit: cover;\n object-position: center center;\n width: 100%;\n height: 100%;\n`;\n\nconst fallbackVideoImage = css`\n min-height: 100%;\n min-width: 100%;\n position: absolute;\n top: 0;\n`;\n\nexport const classNames = {\n videoWrapper,\n video,\n fallbackVideoImage,\n};\n","import React, { ComponentType } from 'react';\nimport { useBreakpoints } from '@ux/responsive';\nimport Layer, { Layer as ImageLayer } from 'presentation/components/common/Layer';\nimport withLanguage from 'presentation/hocs/withLanguage';\nimport urlLanguageParse from 'presentation/utils/urlLanguageParse';\nimport findResponsiveItem from 'presentation/utils/findResponsiveItem';\nimport { Layout } from 'domain/constants/layout';\nimport { Colorway } from '@uds/theme-utils';\nimport { ResponsiveSet } from 'core/ribbons/primitives';\n\nimport Wash from './Wash';\nimport { classNames } from './Background.stylesheet';\n\nexport interface Background {\n fallback: {\n url: string;\n };\n mp4?: string;\n webm?: string;\n loop?: boolean;\n}\nexport type BackgroundArray = ResponsiveSet;\n\ninterface OuterProps {\n layout: Layout;\n background: BackgroundArray;\n duoLayout?: boolean;\n hasTiles?: boolean;\n colorway: Colorway;\n hideGradient?: boolean;\n}\ninterface InnerProps extends OuterProps {\n currentLanguage: string;\n}\n\nconst showFallbackImage = (video: HTMLVideoElement) => {\n video.autoplay = false;\n video.load();\n};\n\nexport const PureBackground = ({\n layout,\n duoLayout,\n hasTiles,\n colorway,\n currentLanguage,\n background,\n hideGradient = false,\n}: InnerProps) => {\n const activeBackground = findResponsiveItem(useBreakpoints(), background);\n const backgroundType = Array.isArray(activeBackground) ? 'image' : 'video';\n\n if (activeBackground != null) {\n return (\n <>\n {backgroundType === 'video' && (\n
\n showFallbackImage(e.currentTarget)}\n >\n \n \n \n \n
\n )}\n {backgroundType === 'image' && (\n <>\n {activeBackground.map((layer: ImageLayer, i: number) => (\n // eslint-disable-next-line react/no-array-index-key\n \n ))}\n \n )}\n {!hideGradient && }\n \n );\n }\n\n return null;\n};\n\nPureBackground.displayName = 'Background';\n\nexport default withLanguage(PureBackground) as ComponentType;\n","import { default as BackgroundComponent, Background, BackgroundArray } from './Background';\n\nexport { Background, BackgroundArray };\n\nexport default BackgroundComponent;\n","'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});\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\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":""}