{"version":3,"sources":["webpack:///./node_modules/gvue/src/assets/js/directives/vue-parallax-js.js"],"names":["Parallax","_this","this","minWidth","arguments","length","undefined","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default","items","itemsInVp","active","getActive","iom","IntersectionObserverManager","isLandscape","rootMargin","isPortrait","scrollEvent","move","resizeEvent","debounce","reset","window","innerWidth","el","_this2","modifiers","_ref","value","style","transition","willChange","currentStyle","getComputedStyle","height","absY","innerHeight","clientHeight","offsetHeight","scrollHeight","offsetTopParent","offsetParent","offsetTop","push","initialOffsetTop","parseInt","marginTop","addItem","element","onViewportEnter","parallaxItem","onViewportOut","unparallaxItem","find","item","filter","_this3","requestAnimationFrame","windowHeight","windowSize","scrollY","pageYOffset","map","elH","offset","pos","toFixed","setTransform","_this4","enableParallax","disableParallax","unobserveItems","disableEvent","observeItems","enableEvent","removeEventListener","addEventListener","passive","centerX","prop","__webpack_exports__","install","Vue","_ref2","p","prototype","$parallaxjs","directive","inserted","binding","add","enable"],"mappings":"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","file":"js/9.29f3d1805d084852cb14.js","sourcesContent":["import IntersectionObserverManager from 'nespresso-library/src/utils/IntersectionObserverManager'\nimport debounce from 'nespresso-library/src/utils/debounce'\n\nclass Parallax {\n constructor (minWidth = 767) {\n this.items = [] // Items to apply parallax\n this.itemsInVp = [] // Items in viewport to parallax\n this.minWidth = minWidth // Screen width to activate the parallax\n this.active = this.getActive() // Enable/Disable parallax\n this.iom = new IntersectionObserverManager({\n isLandscape: {\n rootMargin: '200% 0px'\n },\n isPortrait: {\n rootMargin: '200% 0px'\n }\n })\n\n this.scrollEvent = () => {\n this.move()\n }\n this.resizeEvent = debounce(() => {\n this.reset()\n this.move()\n }, 500)\n }\n\n getActive () {\n return this.minWidth <= window.innerWidth\n }\n\n add (el, { modifiers, value }) {\n // Exclude element with no speed\n if (!this.getActive() || value === 0) {\n return\n }\n el.style.transition = 'none'\n el.style.willChange = 'transform'\n const style = el.currentStyle || window.getComputedStyle(el)\n const height = modifiers.absY ? window.innerHeight : el.clientHeight || el.offsetHeight || el.scrollHeight\n const offsetTopParent = el.offsetParent ? el.offsetParent.offsetTop : 0\n\n // Add element in general array with all calcul\n this.items.push({\n el: el,\n initialOffsetTop: el.offsetTop + offsetTopParent - parseInt(style.marginTop, 10),\n style: style,\n modifiers: modifiers,\n value: value,\n clientHeight: height\n })\n\n // Observe element\n this.iom.addItem({\n element: el,\n onViewportEnter: () => {\n this.parallaxItem(el)\n },\n onViewportOut: () => {\n this.unparallaxItem(el)\n }\n })\n }\n\n parallaxItem (el) {\n this.itemsInVp.push(this.items.find(item => item.el === el))\n }\n\n unparallaxItem (el) {\n this.itemsInVp = this.itemsInVp.filter(item => item.el !== el)\n }\n\n move () {\n requestAnimationFrame(() => {\n const windowHeight = window.innerHeight\n const windowSize = (window.scrollY || window.pageYOffset) + windowHeight\n\n this.itemsInVp.map((item) => {\n const elH = item.clientHeight\n let offset = item.initialOffsetTop\n let pos = windowSize\n pos = pos - elH / 2\n pos = pos - windowHeight / 2\n pos = pos * item.value\n\n offset = item.initialOffsetTop\n offset = offset * -1\n offset = offset * item.value\n pos = pos + offset\n\n pos = pos.toFixed(2)\n\n this.setTransform(item, `translateY(${pos}px)`)\n })\n })\n }\n\n // Remove all transformations\n reset () {\n this.active = this.getActive()\n if (!this.active) {\n this.disableParallax()\n } else {\n this.enableParallax()\n }\n requestAnimationFrame(() => {\n this.items.map(item => {\n item.el.style = item.style\n })\n })\n }\n\n enable () {\n if (this.items.length === 0) {\n return\n }\n\n this.enableParallax()\n }\n\n disableParallax () {\n this.itemsInVp = []\n this.iom.unobserveItems()\n this.disableEvent()\n }\n\n enableParallax () {\n this.iom.observeItems()\n this.enableEvent()\n }\n\n disableEvent () {\n window.removeEventListener('scroll', this.scrollEvent)\n window.removeEventListener('resize', this.resizeEvent)\n }\n\n enableEvent () {\n window.addEventListener('scroll', this.scrollEvent, { passive: true })\n window.addEventListener('resize', this.resizeEvent, { passive: true })\n }\n\n // Apply style on item\n setTransform (item, value) {\n if (item.modifiers.centerX) {\n value += ' translateX(-50%)'\n }\n\n const el = item.el\n const prop = 'Transform'\n el.style[`webkit${prop}`] = value\n el.style[`moz${prop}`] = value\n el.style[`ms${prop}`] = value\n }\n}\n\nexport default {\n install: (Vue, { minWidth }) => {\n const p = new Parallax(minWidth)\n\n Vue.prototype.$parallaxjs = p\n Vue.directive('parallax', {\n inserted (el, binding) {\n p.add(el, binding)\n p.move()\n p.enable()\n }\n })\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/gvue/src/assets/js/directives/vue-parallax-js.js"],"sourceRoot":""}