{"version":3,"file":"736b421134deab2794131dd973fbb08accab3ed1-be6bda0b198399324ced.js","mappings":"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","sources":["webpack://bubble-corporate-site/./node_modules/rellax/rellax.js","webpack://bubble-corporate-site/./node_modules/scroll-out/lib/index.js"],"sourcesContent":["// ------------------------------------------\n// Rellax.js\n// Buttery smooth parallax library\n// Copyright (c) 2016 Moe Amaya (@moeamaya)\n// MIT license\n//\n// Thanks to Paraxify.js and Jaime Cabllero\n// for parallax concepts\n// ------------------------------------------\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.Rellax = factory();\n }\n})(typeof window !== \"undefined\" ? window : global, function () {\n var Rellax = function (el, options) {\n \"use strict\";\n\n var self = Object.create(Rellax.prototype);\n var posY = 0;\n var screenY = 0;\n var posX = 0;\n var screenX = 0;\n var blocks = [];\n var pause = true;\n\n // check what requestAnimationFrame to use, and if\n // it's not supported, use the onscroll event\n var loop = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || function (callback) {\n return setTimeout(callback, 1000 / 60);\n };\n\n // store the id for later use\n var loopId = null;\n\n // Test via a getter in the options object to see if the passive property is accessed\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"testPassive\", null, opts);\n window.removeEventListener(\"testPassive\", null, opts);\n } catch (e) {}\n\n // check what cancelAnimation method to use\n var clearLoop = window.cancelAnimationFrame || window.mozCancelAnimationFrame || clearTimeout;\n\n // check which transform property to use\n var transformProp = window.transformProp || function () {\n var testEl = document.createElement('div');\n if (testEl.style.transform === null) {\n var vendors = ['Webkit', 'Moz', 'ms'];\n for (var vendor in vendors) {\n if (testEl.style[vendors[vendor] + 'Transform'] !== undefined) {\n return vendors[vendor] + 'Transform';\n }\n }\n }\n return 'transform';\n }();\n\n // Default Settings\n self.options = {\n speed: -2,\n verticalSpeed: null,\n horizontalSpeed: null,\n breakpoints: [576, 768, 1201],\n center: false,\n wrapper: null,\n relativeToWrapper: false,\n round: true,\n vertical: true,\n horizontal: false,\n verticalScrollAxis: \"y\",\n horizontalScrollAxis: \"x\",\n callback: function () {}\n };\n\n // User defined options (might have more in the future)\n if (options) {\n Object.keys(options).forEach(function (key) {\n self.options[key] = options[key];\n });\n }\n function validateCustomBreakpoints() {\n if (self.options.breakpoints.length === 3 && Array.isArray(self.options.breakpoints)) {\n var isAscending = true;\n var isNumerical = true;\n var lastVal;\n self.options.breakpoints.forEach(function (i) {\n if (typeof i !== 'number') isNumerical = false;\n if (lastVal !== null) {\n if (i < lastVal) isAscending = false;\n }\n lastVal = i;\n });\n if (isAscending && isNumerical) return;\n }\n // revert defaults if set incorrectly\n self.options.breakpoints = [576, 768, 1201];\n console.warn(\"Rellax: You must pass an array of 3 numbers in ascending order to the breakpoints option. Defaults reverted\");\n }\n if (options && options.breakpoints) {\n validateCustomBreakpoints();\n }\n\n // By default, rellax class\n if (!el) {\n el = '.rellax';\n }\n\n // check if el is a className or a node\n var elements = typeof el === 'string' ? document.querySelectorAll(el) : [el];\n\n // Now query selector\n if (elements.length > 0) {\n self.elems = elements;\n }\n\n // The elements don't exist\n else {\n console.warn(\"Rellax: The elements you're trying to select don't exist.\");\n return;\n }\n\n // Has a wrapper and it exists\n if (self.options.wrapper) {\n if (!self.options.wrapper.nodeType) {\n var wrapper = document.querySelector(self.options.wrapper);\n if (wrapper) {\n self.options.wrapper = wrapper;\n } else {\n console.warn(\"Rellax: The wrapper you're trying to use doesn't exist.\");\n return;\n }\n }\n }\n\n // set a placeholder for the current breakpoint\n var currentBreakpoint;\n\n // helper to determine current breakpoint\n var getCurrentBreakpoint = function (w) {\n var bp = self.options.breakpoints;\n if (w < bp[0]) return 'xs';\n if (w >= bp[0] && w < bp[1]) return 'sm';\n if (w >= bp[1] && w < bp[2]) return 'md';\n return 'lg';\n };\n\n // Get and cache initial position of all elements\n var cacheBlocks = function () {\n for (var i = 0; i < self.elems.length; i++) {\n var block = createBlock(self.elems[i]);\n blocks.push(block);\n }\n };\n\n // Let's kick this script off\n // Build array for cached element values\n var init = function () {\n for (var i = 0; i < blocks.length; i++) {\n self.elems[i].style.cssText = blocks[i].style;\n }\n blocks = [];\n screenY = window.innerHeight;\n screenX = window.innerWidth;\n currentBreakpoint = getCurrentBreakpoint(screenX);\n setPosition();\n cacheBlocks();\n animate();\n\n // If paused, unpause and set listener for window resizing events\n if (pause) {\n window.addEventListener('resize', init);\n pause = false;\n // Start the loop\n update();\n }\n };\n\n // We want to cache the parallax blocks'\n // values: base, top, height, speed\n // el: is dom object, return: el cache values\n var createBlock = function (el) {\n var dataPercentage = el.getAttribute('data-rellax-percentage');\n var dataSpeed = el.getAttribute('data-rellax-speed');\n var dataXsSpeed = el.getAttribute('data-rellax-xs-speed');\n var dataMobileSpeed = el.getAttribute('data-rellax-mobile-speed');\n var dataTabletSpeed = el.getAttribute('data-rellax-tablet-speed');\n var dataDesktopSpeed = el.getAttribute('data-rellax-desktop-speed');\n var dataVerticalSpeed = el.getAttribute('data-rellax-vertical-speed');\n var dataHorizontalSpeed = el.getAttribute('data-rellax-horizontal-speed');\n var dataVericalScrollAxis = el.getAttribute('data-rellax-vertical-scroll-axis');\n var dataHorizontalScrollAxis = el.getAttribute('data-rellax-horizontal-scroll-axis');\n var dataZindex = el.getAttribute('data-rellax-zindex') || 0;\n var dataMin = el.getAttribute('data-rellax-min');\n var dataMax = el.getAttribute('data-rellax-max');\n var dataMinX = el.getAttribute('data-rellax-min-x');\n var dataMaxX = el.getAttribute('data-rellax-max-x');\n var dataMinY = el.getAttribute('data-rellax-min-y');\n var dataMaxY = el.getAttribute('data-rellax-max-y');\n var mapBreakpoints;\n var breakpoints = true;\n if (!dataXsSpeed && !dataMobileSpeed && !dataTabletSpeed && !dataDesktopSpeed) {\n breakpoints = false;\n } else {\n mapBreakpoints = {\n 'xs': dataXsSpeed,\n 'sm': dataMobileSpeed,\n 'md': dataTabletSpeed,\n 'lg': dataDesktopSpeed\n };\n }\n\n // initializing at scrollY = 0 (top of browser), scrollX = 0 (left of browser)\n // ensures elements are positioned based on HTML layout.\n //\n // If the element has the percentage attribute, the posY and posX needs to be\n // the current scroll position's value, so that the elements are still positioned based on HTML layout\n var wrapperPosY = self.options.wrapper ? self.options.wrapper.scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;\n // If the option relativeToWrapper is true, use the wrappers offset to top, subtracted from the current page scroll.\n if (self.options.relativeToWrapper) {\n var scrollPosY = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;\n wrapperPosY = scrollPosY - self.options.wrapper.offsetTop;\n }\n var posY = self.options.vertical ? dataPercentage || self.options.center ? wrapperPosY : 0 : 0;\n var posX = self.options.horizontal ? dataPercentage || self.options.center ? self.options.wrapper ? self.options.wrapper.scrollLeft : window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft : 0 : 0;\n var blockTop = posY + el.getBoundingClientRect().top;\n var blockHeight = el.clientHeight || el.offsetHeight || el.scrollHeight;\n var blockLeft = posX + el.getBoundingClientRect().left;\n var blockWidth = el.clientWidth || el.offsetWidth || el.scrollWidth;\n\n // apparently parallax equation everyone uses\n var percentageY = dataPercentage ? dataPercentage : (posY - blockTop + screenY) / (blockHeight + screenY);\n var percentageX = dataPercentage ? dataPercentage : (posX - blockLeft + screenX) / (blockWidth + screenX);\n if (self.options.center) {\n percentageX = 0.5;\n percentageY = 0.5;\n }\n\n // Optional individual block speed as data attr, otherwise global speed\n var speed = breakpoints && mapBreakpoints[currentBreakpoint] !== null ? Number(mapBreakpoints[currentBreakpoint]) : dataSpeed ? dataSpeed : self.options.speed;\n var verticalSpeed = dataVerticalSpeed ? dataVerticalSpeed : self.options.verticalSpeed;\n var horizontalSpeed = dataHorizontalSpeed ? dataHorizontalSpeed : self.options.horizontalSpeed;\n\n // Optional individual block movement axis direction as data attr, otherwise gobal movement direction\n var verticalScrollAxis = dataVericalScrollAxis ? dataVericalScrollAxis : self.options.verticalScrollAxis;\n var horizontalScrollAxis = dataHorizontalScrollAxis ? dataHorizontalScrollAxis : self.options.horizontalScrollAxis;\n var bases = updatePosition(percentageX, percentageY, speed, verticalSpeed, horizontalSpeed);\n\n // ~~Store non-translate3d transforms~~\n // Store inline styles and extract transforms\n var style = el.style.cssText;\n var transform = '';\n\n // Check if there's an inline styled transform\n var searchResult = /transform\\s*:/i.exec(style);\n if (searchResult) {\n // Get the index of the transform\n var index = searchResult.index;\n\n // Trim the style to the transform point and get the following semi-colon index\n var trimmedStyle = style.slice(index);\n var delimiter = trimmedStyle.indexOf(';');\n\n // Remove \"transform\" string and save the attribute\n if (delimiter) {\n transform = \" \" + trimmedStyle.slice(11, delimiter).replace(/\\s/g, '');\n } else {\n transform = \" \" + trimmedStyle.slice(11).replace(/\\s/g, '');\n }\n }\n return {\n baseX: bases.x,\n baseY: bases.y,\n top: blockTop,\n left: blockLeft,\n height: blockHeight,\n width: blockWidth,\n speed: speed,\n verticalSpeed: verticalSpeed,\n horizontalSpeed: horizontalSpeed,\n verticalScrollAxis: verticalScrollAxis,\n horizontalScrollAxis: horizontalScrollAxis,\n style: style,\n transform: transform,\n zindex: dataZindex,\n min: dataMin,\n max: dataMax,\n minX: dataMinX,\n maxX: dataMaxX,\n minY: dataMinY,\n maxY: dataMaxY\n };\n };\n\n // set scroll position (posY, posX)\n // side effect method is not ideal, but okay for now\n // returns true if the scroll changed, false if nothing happened\n var setPosition = function () {\n var oldY = posY;\n var oldX = posX;\n posY = self.options.wrapper ? self.options.wrapper.scrollTop : (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posX = self.options.wrapper ? self.options.wrapper.scrollLeft : (document.documentElement || document.body.parentNode || document.body).scrollLeft || window.pageXOffset;\n // If option relativeToWrapper is true, use relative wrapper value instead.\n if (self.options.relativeToWrapper) {\n var scrollPosY = (document.documentElement || document.body.parentNode || document.body).scrollTop || window.pageYOffset;\n posY = scrollPosY - self.options.wrapper.offsetTop;\n }\n if (oldY != posY && self.options.vertical) {\n // scroll changed, return true\n return true;\n }\n if (oldX != posX && self.options.horizontal) {\n // scroll changed, return true\n return true;\n }\n\n // scroll did not change\n return false;\n };\n\n // Ahh a pure function, gets new transform value\n // based on scrollPosition and speed\n // Allow for decimal pixel values\n var updatePosition = function (percentageX, percentageY, speed, verticalSpeed, horizontalSpeed) {\n var result = {};\n var valueX = (horizontalSpeed ? horizontalSpeed : speed) * (100 * (1 - percentageX));\n var valueY = (verticalSpeed ? verticalSpeed : speed) * (100 * (1 - percentageY));\n result.x = self.options.round ? Math.round(valueX) : Math.round(valueX * 100) / 100;\n result.y = self.options.round ? Math.round(valueY) : Math.round(valueY * 100) / 100;\n return result;\n };\n\n // Remove event listeners and loop again\n var deferredUpdate = function () {\n window.removeEventListener('resize', deferredUpdate);\n window.removeEventListener('orientationchange', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : window).removeEventListener('scroll', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : document).removeEventListener('touchmove', deferredUpdate);\n\n // loop again\n loopId = loop(update);\n };\n\n // Loop\n var update = function () {\n if (setPosition() && pause === false) {\n animate();\n\n // loop again\n loopId = loop(update);\n } else {\n loopId = null;\n\n // Don't animate until we get a position updating event\n window.addEventListener('resize', deferredUpdate);\n window.addEventListener('orientationchange', deferredUpdate);\n (self.options.wrapper ? self.options.wrapper : window).addEventListener('scroll', deferredUpdate, supportsPassive ? {\n passive: true\n } : false);\n (self.options.wrapper ? self.options.wrapper : document).addEventListener('touchmove', deferredUpdate, supportsPassive ? {\n passive: true\n } : false);\n }\n };\n\n // Transform3d on parallax element\n var animate = function () {\n var positions;\n for (var i = 0; i < self.elems.length; i++) {\n // Determine relevant movement directions\n var verticalScrollAxis = blocks[i].verticalScrollAxis.toLowerCase();\n var horizontalScrollAxis = blocks[i].horizontalScrollAxis.toLowerCase();\n var verticalScrollX = verticalScrollAxis.indexOf(\"x\") != -1 ? posY : 0;\n var verticalScrollY = verticalScrollAxis.indexOf(\"y\") != -1 ? posY : 0;\n var horizontalScrollX = horizontalScrollAxis.indexOf(\"x\") != -1 ? posX : 0;\n var horizontalScrollY = horizontalScrollAxis.indexOf(\"y\") != -1 ? posX : 0;\n var percentageY = (verticalScrollY + horizontalScrollY - blocks[i].top + screenY) / (blocks[i].height + screenY);\n var percentageX = (verticalScrollX + horizontalScrollX - blocks[i].left + screenX) / (blocks[i].width + screenX);\n\n // Subtracting initialize value, so element stays in same spot as HTML\n positions = updatePosition(percentageX, percentageY, blocks[i].speed, blocks[i].verticalSpeed, blocks[i].horizontalSpeed);\n var positionY = positions.y - blocks[i].baseY;\n var positionX = positions.x - blocks[i].baseX;\n\n // The next two \"if\" blocks go like this:\n // Check if a limit is defined (first \"min\", then \"max\");\n // Check if we need to change the Y or the X\n // (Currently working only if just one of the axes is enabled)\n // Then, check if the new position is inside the allowed limit\n // If so, use new position. If not, set position to limit.\n\n // Check if a min limit is defined\n if (blocks[i].min !== null) {\n if (self.options.vertical && !self.options.horizontal) {\n positionY = positionY <= blocks[i].min ? blocks[i].min : positionY;\n }\n if (self.options.horizontal && !self.options.vertical) {\n positionX = positionX <= blocks[i].min ? blocks[i].min : positionX;\n }\n }\n\n // Check if directional min limits are defined\n if (blocks[i].minY != null) {\n positionY = positionY <= blocks[i].minY ? blocks[i].minY : positionY;\n }\n if (blocks[i].minX != null) {\n positionX = positionX <= blocks[i].minX ? blocks[i].minX : positionX;\n }\n\n // Check if a max limit is defined\n if (blocks[i].max !== null) {\n if (self.options.vertical && !self.options.horizontal) {\n positionY = positionY >= blocks[i].max ? blocks[i].max : positionY;\n }\n if (self.options.horizontal && !self.options.vertical) {\n positionX = positionX >= blocks[i].max ? blocks[i].max : positionX;\n }\n }\n\n // Check if directional max limits are defined\n if (blocks[i].maxY != null) {\n positionY = positionY >= blocks[i].maxY ? blocks[i].maxY : positionY;\n }\n if (blocks[i].maxX != null) {\n positionX = positionX >= blocks[i].maxX ? blocks[i].maxX : positionX;\n }\n var zindex = blocks[i].zindex;\n\n // Move that element\n // (Set the new translation and append initial inline transforms.)\n var translate = 'translate3d(' + (self.options.horizontal ? positionX : '0') + 'px,' + (self.options.vertical ? positionY : '0') + 'px,' + zindex + 'px) ' + blocks[i].transform;\n self.elems[i].style[transformProp] = translate;\n }\n self.options.callback(positions);\n };\n self.destroy = function () {\n for (var i = 0; i < self.elems.length; i++) {\n self.elems[i].style.cssText = blocks[i].style;\n }\n\n // Remove resize event listener if not pause, and pause\n if (!pause) {\n window.removeEventListener('resize', init);\n pause = true;\n }\n\n // Clear the animation loop to prevent possible memory leak\n clearLoop(loopId);\n loopId = null;\n };\n\n // Init\n init();\n\n // Allow to recalculate the initial values whenever we want\n self.refresh = init;\n return self;\n };\n return Rellax;\n});","'use strict';\n\nfunction clamp(v, min, max) {\n return min > v ? min : max < v ? max : v;\n}\nfunction sign(x) {\n return +(x > 0) - +(x < 0);\n}\nfunction round(n) {\n return Math.round(n * 10000) / 10000;\n}\nvar cache = {};\nfunction replacer(match) {\n return '-' + match[0].toLowerCase();\n}\nfunction hyphenate(value) {\n return cache[value] || (cache[value] = value.replace(/([A-Z])/g, replacer));\n}\n\n/** find elements */\nfunction $(e, parent) {\n return !e || e.length === 0 ?\n // null or empty string returns empty array\n [] : e.nodeName ?\n // a single element is wrapped in an array\n [e] :\n // selector and NodeList are converted to Element[]\n [].slice.call(e[0].nodeName ? e : (parent || document.documentElement).querySelectorAll(e));\n}\nfunction setAttrs(el, attrs) {\n // tslint:disable-next-line:forin\n for (var key in attrs) {\n if (key.indexOf('_')) {\n el.setAttribute('data-' + hyphenate(key), attrs[key]);\n }\n }\n}\nfunction setProps(cssProps) {\n return function (el, props) {\n for (var key in props) {\n if (key.indexOf('_') && (cssProps === true || cssProps[key])) {\n el.style.setProperty('--' + hyphenate(key), round(props[key]));\n }\n }\n };\n}\nvar clearTask;\nvar subscribers = [];\nfunction loop() {\n clearTask = 0;\n subscribers.slice().forEach(function (s2) {\n return s2();\n });\n enqueue();\n}\nfunction enqueue() {\n if (!clearTask && subscribers.length) {\n clearTask = requestAnimationFrame(loop);\n }\n}\nfunction subscribe(fn) {\n subscribers.push(fn);\n enqueue();\n return function () {\n subscribers = subscribers.filter(function (s) {\n return s !== fn;\n });\n if (!subscribers.length && clearTask) {\n cancelAnimationFrame(clearTask);\n clearTask = 0;\n }\n };\n}\nfunction unwrap(value, el, ctx, doc) {\n return typeof value === 'function' ? value(el, ctx, doc) : value;\n}\nfunction noop() {}\n\n/**\r\n * Creates a new instance of ScrollOut that marks elements in the viewport with\r\n * an \"in\" class and marks elements outside of the viewport with an \"out\"\r\n */\n// tslint:disable-next-line:no-default-export\nfunction main(opts) {\n // Apply default options.\n opts = opts || {};\n // Debounce onChange/onHidden/onShown.\n var onChange = opts.onChange || noop;\n var onHidden = opts.onHidden || noop;\n var onShown = opts.onShown || noop;\n var onScroll = opts.onScroll || noop;\n var props = opts.cssProps ? setProps(opts.cssProps) : noop;\n var se = opts.scrollingElement;\n var container = se ? $(se)[0] : window;\n var doc = se ? $(se)[0] : document.documentElement;\n var rootChanged = false;\n var scrollingElementContext = {};\n var elementContextList = [];\n var clientOffsetX, clientOffsety;\n var sub;\n function index() {\n elementContextList = $(opts.targets || '[data-scroll]', $(opts.scope || doc)[0]).map(function (el) {\n return {\n element: el\n };\n });\n }\n function update() {\n // Calculate position, direction and ratio.\n var clientWidth = doc.clientWidth;\n var clientHeight = doc.clientHeight;\n var scrollDirX = sign(-clientOffsetX + (clientOffsetX = doc.scrollLeft || window.pageXOffset));\n var scrollDirY = sign(-clientOffsety + (clientOffsety = doc.scrollTop || window.pageYOffset));\n var scrollPercentX = doc.scrollLeft / (doc.scrollWidth - clientWidth || 1);\n var scrollPercentY = doc.scrollTop / (doc.scrollHeight - clientHeight || 1);\n // Detect if the root context has changed.\n rootChanged = rootChanged || scrollingElementContext.scrollDirX !== scrollDirX || scrollingElementContext.scrollDirY !== scrollDirY || scrollingElementContext.scrollPercentX !== scrollPercentX || scrollingElementContext.scrollPercentY !== scrollPercentY;\n scrollingElementContext.scrollDirX = scrollDirX;\n scrollingElementContext.scrollDirY = scrollDirY;\n scrollingElementContext.scrollPercentX = scrollPercentX;\n scrollingElementContext.scrollPercentY = scrollPercentY;\n var childChanged = false;\n for (var index_1 = 0; index_1 < elementContextList.length; index_1++) {\n var ctx = elementContextList[index_1];\n var element = ctx.element;\n // find the distance from the element to the scrolling container\n var target = element;\n var offsetX = 0;\n var offsetY = 0;\n do {\n offsetX += target.offsetLeft;\n offsetY += target.offsetTop;\n target = target.offsetParent;\n } while (target && target !== container);\n // Get element dimensions.\n var elementHeight = element.clientHeight || element.offsetHeight || 0;\n var elementWidth = element.clientWidth || element.offsetWidth || 0;\n // Find visible ratios for each element.\n var visibleX = (clamp(offsetX + elementWidth, clientOffsetX, clientOffsetX + clientWidth) - clamp(offsetX, clientOffsetX, clientOffsetX + clientWidth)) / elementWidth;\n var visibleY = (clamp(offsetY + elementHeight, clientOffsety, clientOffsety + clientHeight) - clamp(offsetY, clientOffsety, clientOffsety + clientHeight)) / elementHeight;\n var intersectX = visibleX === 1 ? 0 : sign(offsetX - clientOffsetX);\n var intersectY = visibleY === 1 ? 0 : sign(offsetY - clientOffsety);\n var viewportX = clamp((clientOffsetX - (elementWidth / 2 + offsetX - clientWidth / 2)) / (clientWidth / 2), -1, 1);\n var viewportY = clamp((clientOffsety - (elementHeight / 2 + offsetY - clientHeight / 2)) / (clientHeight / 2), -1, 1);\n var visible = void 0;\n if (opts.offset) {\n visible = unwrap(opts.offset, element, ctx, doc) <= clientOffsety ? 1 : 0;\n } else if ((unwrap(opts.threshold, element, ctx, doc) || 0) < visibleX * visibleY) {\n visible = 1;\n } else {\n visible = 0;\n }\n var changedVisible = ctx.visible !== visible;\n var changed = ctx._changed || changedVisible || ctx.visibleX !== visibleX || ctx.visibleY !== visibleY || ctx.index !== index_1 || ctx.elementHeight !== elementHeight || ctx.elementWidth !== elementWidth || ctx.offsetX !== offsetX || ctx.offsetY !== offsetY || ctx.intersectX !== ctx.intersectX || ctx.intersectY !== ctx.intersectY || ctx.viewportX !== viewportX || ctx.viewportY !== viewportY;\n if (changed) {\n childChanged = true;\n ctx._changed = true;\n ctx._visibleChanged = changedVisible;\n ctx.visible = visible;\n ctx.elementHeight = elementHeight;\n ctx.elementWidth = elementWidth;\n ctx.index = index_1;\n ctx.offsetX = offsetX;\n ctx.offsetY = offsetY;\n ctx.visibleX = visibleX;\n ctx.visibleY = visibleY;\n ctx.intersectX = intersectX;\n ctx.intersectY = intersectY;\n ctx.viewportX = viewportX;\n ctx.viewportY = viewportY;\n ctx.visible = visible;\n }\n }\n if (!sub && (rootChanged || childChanged)) {\n sub = subscribe(render);\n }\n }\n function render() {\n maybeUnsubscribe();\n // Update root attributes if they have changed.\n if (rootChanged) {\n rootChanged = false;\n setAttrs(doc, {\n scrollDirX: scrollingElementContext.scrollDirX,\n scrollDirY: scrollingElementContext.scrollDirY\n });\n props(doc, scrollingElementContext);\n onScroll(doc, scrollingElementContext, elementContextList);\n }\n var len = elementContextList.length;\n for (var x = len - 1; x > -1; x--) {\n var ctx = elementContextList[x];\n var el = ctx.element;\n var visible = ctx.visible;\n var justOnce = el.hasAttribute('scrollout-once') || false; // Once\n if (ctx._changed) {\n ctx._changed = false;\n props(el, ctx);\n }\n if (ctx._visibleChanged) {\n setAttrs(el, {\n scroll: visible ? 'in' : 'out'\n });\n onChange(el, ctx, doc);\n (visible ? onShown : onHidden)(el, ctx, doc);\n }\n // if this is shown multiple times, keep it in the list\n if (visible && (opts.once || justOnce)) {\n // or if this element just display it once\n elementContextList.splice(x, 1);\n }\n }\n }\n function maybeUnsubscribe() {\n if (sub) {\n sub();\n sub = undefined;\n }\n }\n // Run initialize index.\n index();\n update();\n render();\n // Collapses sequential updates into a single update.\n var updateTaskId = 0;\n var onUpdate = function () {\n updateTaskId = updateTaskId || setTimeout(function () {\n updateTaskId = 0;\n update();\n }, 0);\n };\n // Hook up document listeners to automatically detect changes.\n window.addEventListener('resize', onUpdate);\n container.addEventListener('scroll', onUpdate);\n return {\n index: index,\n update: update,\n teardown: function () {\n maybeUnsubscribe();\n window.removeEventListener('resize', onUpdate);\n container.removeEventListener('scroll', onUpdate);\n }\n };\n}\nmodule.exports = main;"],"names":["window","g","Rellax","el","options","self","Object","create","prototype","posY","screenY","posX","screenX","blocks","pause","loop","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","callback","setTimeout","loopId","supportsPassive","opts","defineProperty","get","addEventListener","removeEventListener","e","clearLoop","cancelAnimationFrame","mozCancelAnimationFrame","clearTimeout","transformProp","testEl","document","createElement","style","transform","vendors","vendor","undefined","validateCustomBreakpoints","breakpoints","length","Array","isArray","lastVal","isAscending","isNumerical","forEach","i","console","warn","speed","verticalSpeed","horizontalSpeed","center","wrapper","relativeToWrapper","round","vertical","horizontal","verticalScrollAxis","horizontalScrollAxis","keys","key","elements","querySelectorAll","elems","nodeType","querySelector","currentBreakpoint","getCurrentBreakpoint","w","bp","cacheBlocks","block","createBlock","push","init","cssText","innerHeight","innerWidth","setPosition","animate","update","mapBreakpoints","dataPercentage","getAttribute","dataSpeed","dataXsSpeed","dataMobileSpeed","dataTabletSpeed","dataDesktopSpeed","dataVerticalSpeed","dataHorizontalSpeed","dataVericalScrollAxis","dataHorizontalScrollAxis","dataZindex","dataMin","dataMax","dataMinX","dataMaxX","dataMinY","dataMaxY","wrapperPosY","scrollTop","pageYOffset","documentElement","body","offsetTop","scrollLeft","pageXOffset","blockTop","getBoundingClientRect","top","blockHeight","clientHeight","offsetHeight","scrollHeight","blockLeft","left","blockWidth","clientWidth","offsetWidth","scrollWidth","percentageY","percentageX","Number","bases","updatePosition","searchResult","exec","index","trimmedStyle","slice","delimiter","indexOf","replace","baseX","x","baseY","y","height","width","zindex","min","max","minX","maxX","minY","maxY","oldY","oldX","parentNode","scrollPosY","result","valueX","valueY","Math","deferredUpdate","passive","positions","toLowerCase","verticalScrollX","verticalScrollY","horizontalScrollX","positionY","positionX","translate","destroy","refresh","clamp","v","sign","clearTask","cache","replacer","match","hyphenate","value","$","parent","nodeName","call","setAttrs","attrs","setAttribute","subscribers","s2","enqueue","unwrap","ctx","doc","noop","module","exports","cssProps","clientOffsetX","clientOffsety","sub","onChange","onHidden","onShown","onScroll","props","setProperty","n","se","scrollingElement","container","rootChanged","scrollingElementContext","elementContextList","targets","scope","map","element","scrollDirX","scrollDirY","scrollPercentX","scrollPercentY","fn","childChanged","index_1","target","offsetX","offsetY","offsetLeft","offsetParent","elementHeight","elementWidth","visibleX","visibleY","intersectX","intersectY","viewportX","viewportY","visible","offset","threshold","changedVisible","_changed","_visibleChanged","render","filter","s","maybeUnsubscribe","justOnce","hasAttribute","scroll","once","splice","updateTaskId","onUpdate","teardown"],"sourceRoot":""}