{"version":3,"file":"jarallax.min.js","sources":["../src/utils/ready.js","../src/utils/global.js","../src/core.js","../src/core.umd.js"],"sourcesContent":["function ready(callback) {\n if ('complete' === document.readyState || 'interactive' === document.readyState) {\n // Already ready or interactive, execute callback\n callback();\n } else {\n document.addEventListener('DOMContentLoaded', callback, {\n capture: true,\n once: true,\n passive: true,\n });\n }\n}\n\nexport default ready;\n","/* eslint-disable import/no-mutable-exports */\n/* eslint-disable no-restricted-globals */\nlet win;\n\nif ('undefined' !== typeof window) {\n win = window;\n} else if ('undefined' !== typeof global) {\n win = global;\n} else if ('undefined' !== typeof self) {\n win = self;\n} else {\n win = {};\n}\n\nexport default win;\n","import domReady from './utils/ready';\nimport global from './utils/global';\n\nconst { navigator } = global;\n\nconst isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n);\n\nlet $deviceHelper;\n\n/**\n * The most popular mobile browsers changes height after page scroll and this generates image jumping.\n * We can fix it using this workaround with vh units.\n */\nfunction getDeviceHeight() {\n if (!$deviceHelper && document.body) {\n $deviceHelper = document.createElement('div');\n $deviceHelper.style.cssText =\n 'position: fixed; top: -9999px; left: 0; height: 100vh; width: 0;';\n document.body.appendChild($deviceHelper);\n }\n\n return (\n ($deviceHelper ? $deviceHelper.clientHeight : 0) ||\n global.innerHeight ||\n document.documentElement.clientHeight\n );\n}\n\n// Window height data\nlet wndH;\nfunction updateWndVars() {\n if (isMobile) {\n wndH = getDeviceHeight();\n } else {\n wndH = global.innerHeight || document.documentElement.clientHeight;\n }\n}\nupdateWndVars();\nglobal.addEventListener('resize', updateWndVars);\nglobal.addEventListener('orientationchange', updateWndVars);\nglobal.addEventListener('load', updateWndVars);\ndomReady(() => {\n updateWndVars({\n type: 'dom-loaded',\n });\n});\n\n// list with all jarallax instances\n// need to render all in one scroll/resize event\nconst jarallaxList = [];\n\n// get all parents of the element.\nfunction getParents(elem) {\n const parents = [];\n\n while (null !== elem.parentElement) {\n elem = elem.parentElement;\n\n if (1 === elem.nodeType) {\n parents.push(elem);\n }\n }\n\n return parents;\n}\n\nfunction updateParallax() {\n if (!jarallaxList.length) {\n return;\n }\n\n jarallaxList.forEach((data, k) => {\n const { instance, oldData } = data;\n\n const clientRect = instance.$item.getBoundingClientRect();\n\n const newData = {\n width: clientRect.width,\n height: clientRect.height,\n top: clientRect.top,\n bottom: clientRect.bottom,\n wndW: global.innerWidth,\n wndH,\n };\n\n const isResized =\n !oldData ||\n oldData.wndW !== newData.wndW ||\n oldData.wndH !== newData.wndH ||\n oldData.width !== newData.width ||\n oldData.height !== newData.height;\n const isScrolled =\n isResized || !oldData || oldData.top !== newData.top || oldData.bottom !== newData.bottom;\n\n jarallaxList[k].oldData = newData;\n\n if (isResized) {\n instance.onResize();\n }\n if (isScrolled) {\n instance.onScroll();\n }\n });\n\n global.requestAnimationFrame(updateParallax);\n}\n\nlet instanceID = 0;\n\n// Jarallax class\nclass Jarallax {\n constructor(item, userOptions) {\n const self = this;\n\n self.instanceID = instanceID;\n instanceID += 1;\n\n self.$item = item;\n\n self.defaults = {\n type: 'scroll', // type of parallax: scroll, scale, opacity, scale-opacity, scroll-opacity\n speed: 0.5, // supported value from -1 to 2\n imgSrc: null,\n imgElement: '.jarallax-img',\n imgSize: 'cover',\n imgPosition: '50% 50%',\n imgRepeat: 'no-repeat', // supported only for background, not for tag\n keepImg: false, // keep tag in it's default place\n elementInViewport: null,\n zIndex: -100,\n disableParallax: false,\n disableVideo: false,\n\n // video\n videoSrc: null,\n videoStartTime: 0,\n videoEndTime: 0,\n videoVolume: 0,\n videoLoop: true,\n videoPlayOnlyVisible: true,\n videoLazyLoading: true,\n\n // events\n onScroll: null, // function(calculations) {}\n onInit: null, // function() {}\n onDestroy: null, // function() {}\n onCoverImage: null, // function() {}\n };\n\n // prepare data-options\n const dataOptions = self.$item.dataset || {};\n const pureDataOptions = {};\n Object.keys(dataOptions).forEach((key) => {\n const loweCaseOption = key.substr(0, 1).toLowerCase() + key.substr(1);\n if (loweCaseOption && 'undefined' !== typeof self.defaults[loweCaseOption]) {\n pureDataOptions[loweCaseOption] = dataOptions[key];\n }\n });\n\n self.options = self.extend({}, self.defaults, pureDataOptions, userOptions);\n self.pureOptions = self.extend({}, self.options);\n\n // prepare 'true' and 'false' strings to boolean\n Object.keys(self.options).forEach((key) => {\n if ('true' === self.options[key]) {\n self.options[key] = true;\n } else if ('false' === self.options[key]) {\n self.options[key] = false;\n }\n });\n\n // fix speed option [-1.0, 2.0]\n self.options.speed = Math.min(2, Math.max(-1, parseFloat(self.options.speed)));\n\n // prepare disableParallax callback\n if ('string' === typeof self.options.disableParallax) {\n self.options.disableParallax = new RegExp(self.options.disableParallax);\n }\n if (self.options.disableParallax instanceof RegExp) {\n const disableParallaxRegexp = self.options.disableParallax;\n self.options.disableParallax = () => disableParallaxRegexp.test(navigator.userAgent);\n }\n if ('function' !== typeof self.options.disableParallax) {\n self.options.disableParallax = () => false;\n }\n\n // prepare disableVideo callback\n if ('string' === typeof self.options.disableVideo) {\n self.options.disableVideo = new RegExp(self.options.disableVideo);\n }\n if (self.options.disableVideo instanceof RegExp) {\n const disableVideoRegexp = self.options.disableVideo;\n self.options.disableVideo = () => disableVideoRegexp.test(navigator.userAgent);\n }\n if ('function' !== typeof self.options.disableVideo) {\n self.options.disableVideo = () => false;\n }\n\n // custom element to check if parallax in viewport\n let elementInVP = self.options.elementInViewport;\n // get first item from array\n if (\n elementInVP &&\n 'object' === typeof elementInVP &&\n 'undefined' !== typeof elementInVP.length\n ) {\n [elementInVP] = elementInVP;\n }\n // check if dom element\n if (!(elementInVP instanceof Element)) {\n elementInVP = null;\n }\n self.options.elementInViewport = elementInVP;\n\n self.image = {\n src: self.options.imgSrc || null,\n $container: null,\n useImgTag: false,\n\n // 1. Position fixed is needed for the most of browsers because absolute position have glitches\n // 2. On MacOS with smooth scroll there is a huge lags with absolute position - https://github.com/nk-o/jarallax/issues/75\n // 3. Previously used 'absolute' for mobile devices. But we re-tested on iPhone 12 and 'fixed' position is working better, then 'absolute', so for now position is always 'fixed'\n position: 'fixed',\n };\n\n if (self.initImg() && self.canInitParallax()) {\n self.init();\n }\n }\n\n // add styles to element\n // eslint-disable-next-line class-methods-use-this\n css(el, styles) {\n if ('string' === typeof styles) {\n return global.getComputedStyle(el).getPropertyValue(styles);\n }\n\n Object.keys(styles).forEach((key) => {\n el.style[key] = styles[key];\n });\n return el;\n }\n\n // Extend like jQuery.extend\n // eslint-disable-next-line class-methods-use-this\n extend(out, ...args) {\n out = out || {};\n\n Object.keys(args).forEach((i) => {\n if (!args[i]) {\n return;\n }\n Object.keys(args[i]).forEach((key) => {\n out[key] = args[i][key];\n });\n });\n\n return out;\n }\n\n // get window size and scroll position. Useful for extensions\n // eslint-disable-next-line class-methods-use-this\n getWindowData() {\n return {\n width: global.innerWidth || document.documentElement.clientWidth,\n height: wndH,\n y: document.documentElement.scrollTop,\n };\n }\n\n // Jarallax functions\n initImg() {\n const self = this;\n\n // find image element\n let $imgElement = self.options.imgElement;\n if ($imgElement && 'string' === typeof $imgElement) {\n $imgElement = self.$item.querySelector($imgElement);\n }\n\n // check if dom element\n if (!($imgElement instanceof Element)) {\n if (self.options.imgSrc) {\n $imgElement = new Image();\n $imgElement.src = self.options.imgSrc;\n } else {\n $imgElement = null;\n }\n }\n\n if ($imgElement) {\n if (self.options.keepImg) {\n self.image.$item = $imgElement.cloneNode(true);\n } else {\n self.image.$item = $imgElement;\n self.image.$itemParent = $imgElement.parentNode;\n }\n self.image.useImgTag = true;\n }\n\n // true if there is img tag\n if (self.image.$item) {\n return true;\n }\n\n // get image src\n if (null === self.image.src) {\n self.image.src =\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n self.image.bgImage = self.css(self.$item, 'background-image');\n }\n return !(!self.image.bgImage || 'none' === self.image.bgImage);\n }\n\n canInitParallax() {\n return !this.options.disableParallax();\n }\n\n init() {\n const self = this;\n const containerStyles = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n };\n let imageStyles = {\n pointerEvents: 'none',\n transformStyle: 'preserve-3d',\n backfaceVisibility: 'hidden',\n };\n\n if (!self.options.keepImg) {\n // save default user styles\n const curStyle = self.$item.getAttribute('style');\n if (curStyle) {\n self.$item.setAttribute('data-jarallax-original-styles', curStyle);\n }\n if (self.image.useImgTag) {\n const curImgStyle = self.image.$item.getAttribute('style');\n if (curImgStyle) {\n self.image.$item.setAttribute('data-jarallax-original-styles', curImgStyle);\n }\n }\n }\n\n // set relative position and z-index to the parent\n if ('static' === self.css(self.$item, 'position')) {\n self.css(self.$item, {\n position: 'relative',\n });\n }\n if ('auto' === self.css(self.$item, 'z-index')) {\n self.css(self.$item, {\n zIndex: 0,\n });\n }\n\n // container for parallax image\n self.image.$container = document.createElement('div');\n self.css(self.image.$container, containerStyles);\n self.css(self.image.$container, {\n 'z-index': self.options.zIndex,\n });\n\n // it will remove some image overlapping\n // overlapping occur due to an image position fixed inside absolute position element\n // needed only when background in fixed position\n if ('fixed' === this.image.position) {\n self.css(self.image.$container, {\n '-webkit-clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)',\n 'clip-path': 'polygon(0 0, 100% 0, 100% 100%, 0 100%)',\n });\n }\n\n self.image.$container.setAttribute('id', `jarallax-container-${self.instanceID}`);\n self.$item.appendChild(self.image.$container);\n\n // use img tag\n if (self.image.useImgTag) {\n imageStyles = self.extend(\n {\n 'object-fit': self.options.imgSize,\n 'object-position': self.options.imgPosition,\n 'max-width': 'none',\n },\n containerStyles,\n imageStyles\n );\n\n // use div with background image\n } else {\n self.image.$item = document.createElement('div');\n if (self.image.src) {\n imageStyles = self.extend(\n {\n 'background-position': self.options.imgPosition,\n 'background-size': self.options.imgSize,\n 'background-repeat': self.options.imgRepeat,\n 'background-image': self.image.bgImage || `url(\"${self.image.src}\")`,\n },\n containerStyles,\n imageStyles\n );\n }\n }\n\n if (\n 'opacity' === self.options.type ||\n 'scale' === self.options.type ||\n 'scale-opacity' === self.options.type ||\n 1 === self.options.speed\n ) {\n self.image.position = 'absolute';\n }\n\n // 1. Check if one of parents have transform style (without this check, scroll transform will be inverted if used parallax with position fixed)\n // discussion - https://github.com/nk-o/jarallax/issues/9\n // 2. Check if parents have overflow scroll\n if ('fixed' === self.image.position) {\n const $parents = getParents(self.$item).filter((el) => {\n const styles = global.getComputedStyle(el);\n const parentTransform =\n styles['-webkit-transform'] || styles['-moz-transform'] || styles.transform;\n const overflowRegex = /(auto|scroll)/;\n\n return (\n (parentTransform && 'none' !== parentTransform) ||\n overflowRegex.test(styles.overflow + styles['overflow-y'] + styles['overflow-x'])\n );\n });\n\n self.image.position = $parents.length ? 'absolute' : 'fixed';\n }\n\n // add position to parallax block\n imageStyles.position = self.image.position;\n\n // insert parallax image\n self.css(self.image.$item, imageStyles);\n self.image.$container.appendChild(self.image.$item);\n\n // set initial position and size\n self.onResize();\n self.onScroll(true);\n\n // call onInit event\n if (self.options.onInit) {\n self.options.onInit.call(self);\n }\n\n // remove default user background\n if ('none' !== self.css(self.$item, 'background-image')) {\n self.css(self.$item, {\n 'background-image': 'none',\n });\n }\n\n self.addToParallaxList();\n }\n\n // add to parallax instances list\n addToParallaxList() {\n jarallaxList.push({\n instance: this,\n });\n\n if (1 === jarallaxList.length) {\n global.requestAnimationFrame(updateParallax);\n }\n }\n\n // remove from parallax instances list\n removeFromParallaxList() {\n const self = this;\n\n jarallaxList.forEach((data, key) => {\n if (data.instance.instanceID === self.instanceID) {\n jarallaxList.splice(key, 1);\n }\n });\n }\n\n destroy() {\n const self = this;\n\n self.removeFromParallaxList();\n\n // return styles on container as before jarallax init\n const originalStylesTag = self.$item.getAttribute('data-jarallax-original-styles');\n self.$item.removeAttribute('data-jarallax-original-styles');\n // null occurs if there is no style tag before jarallax init\n if (!originalStylesTag) {\n self.$item.removeAttribute('style');\n } else {\n self.$item.setAttribute('style', originalStylesTag);\n }\n\n if (self.image.useImgTag) {\n // return styles on img tag as before jarallax init\n const originalStylesImgTag = self.image.$item.getAttribute('data-jarallax-original-styles');\n self.image.$item.removeAttribute('data-jarallax-original-styles');\n // null occurs if there is no style tag before jarallax init\n if (!originalStylesImgTag) {\n self.image.$item.removeAttribute('style');\n } else {\n self.image.$item.setAttribute('style', originalStylesTag);\n }\n\n // move img tag to its default position\n if (self.image.$itemParent) {\n self.image.$itemParent.appendChild(self.image.$item);\n }\n }\n\n // remove additional dom elements\n if (self.image.$container) {\n self.image.$container.parentNode.removeChild(self.image.$container);\n }\n\n // call onDestroy event\n if (self.options.onDestroy) {\n self.options.onDestroy.call(self);\n }\n\n // delete jarallax from item\n delete self.$item.jarallax;\n }\n\n // Fallback for removed function.\n // Does nothing now.\n // eslint-disable-next-line class-methods-use-this\n clipContainer() {}\n\n coverImage() {\n const self = this;\n\n const rect = self.image.$container.getBoundingClientRect();\n const contH = rect.height;\n const { speed } = self.options;\n const isScroll = 'scroll' === self.options.type || 'scroll-opacity' === self.options.type;\n let scrollDist = 0;\n let resultH = contH;\n let resultMT = 0;\n\n // scroll parallax\n if (isScroll) {\n // scroll distance and height for image\n if (0 > speed) {\n scrollDist = speed * Math.max(contH, wndH);\n\n if (wndH < contH) {\n scrollDist -= speed * (contH - wndH);\n }\n } else {\n scrollDist = speed * (contH + wndH);\n }\n\n // size for scroll parallax\n if (1 < speed) {\n resultH = Math.abs(scrollDist - wndH);\n } else if (0 > speed) {\n resultH = scrollDist / speed + Math.abs(scrollDist);\n } else {\n resultH += (wndH - contH) * (1 - speed);\n }\n\n scrollDist /= 2;\n }\n\n // store scroll distance\n self.parallaxScrollDistance = scrollDist;\n\n // vertical center\n if (isScroll) {\n resultMT = (wndH - resultH) / 2;\n } else {\n resultMT = (contH - resultH) / 2;\n }\n\n // apply result to item\n self.css(self.image.$item, {\n height: `${resultH}px`,\n marginTop: `${resultMT}px`,\n left: 'fixed' === self.image.position ? `${rect.left}px` : '0',\n width: `${rect.width}px`,\n });\n\n // call onCoverImage event\n if (self.options.onCoverImage) {\n self.options.onCoverImage.call(self);\n }\n\n // return some useful data. Used in the video cover function\n return {\n image: {\n height: resultH,\n marginTop: resultMT,\n },\n container: rect,\n };\n }\n\n isVisible() {\n return this.isElementInViewport || false;\n }\n\n onScroll(force) {\n const self = this;\n\n const rect = self.$item.getBoundingClientRect();\n const contT = rect.top;\n const contH = rect.height;\n const styles = {};\n\n // check if in viewport\n let viewportRect = rect;\n if (self.options.elementInViewport) {\n viewportRect = self.options.elementInViewport.getBoundingClientRect();\n }\n self.isElementInViewport =\n 0 <= viewportRect.bottom &&\n 0 <= viewportRect.right &&\n viewportRect.top <= wndH &&\n viewportRect.left <= global.innerWidth;\n\n // stop calculations if item is not in viewport\n if (force ? false : !self.isElementInViewport) {\n return;\n }\n\n // calculate parallax helping variables\n const beforeTop = Math.max(0, contT);\n const beforeTopEnd = Math.max(0, contH + contT);\n const afterTop = Math.max(0, -contT);\n const beforeBottom = Math.max(0, contT + contH - wndH);\n const beforeBottomEnd = Math.max(0, contH - (contT + contH - wndH));\n const afterBottom = Math.max(0, -contT + wndH - contH);\n const fromViewportCenter = 1 - 2 * ((wndH - contT) / (wndH + contH));\n\n // calculate on how percent of section is visible\n let visiblePercent = 1;\n if (contH < wndH) {\n visiblePercent = 1 - (afterTop || beforeBottom) / contH;\n } else if (beforeTopEnd <= wndH) {\n visiblePercent = beforeTopEnd / wndH;\n } else if (beforeBottomEnd <= wndH) {\n visiblePercent = beforeBottomEnd / wndH;\n }\n\n // opacity\n if (\n 'opacity' === self.options.type ||\n 'scale-opacity' === self.options.type ||\n 'scroll-opacity' === self.options.type\n ) {\n styles.transform = 'translate3d(0,0,0)';\n styles.opacity = visiblePercent;\n }\n\n // scale\n if ('scale' === self.options.type || 'scale-opacity' === self.options.type) {\n let scale = 1;\n if (0 > self.options.speed) {\n scale -= self.options.speed * visiblePercent;\n } else {\n scale += self.options.speed * (1 - visiblePercent);\n }\n styles.transform = `scale(${scale}) translate3d(0,0,0)`;\n }\n\n // scroll\n if ('scroll' === self.options.type || 'scroll-opacity' === self.options.type) {\n let positionY = self.parallaxScrollDistance * fromViewportCenter;\n\n // fix if parallax block in absolute position\n if ('absolute' === self.image.position) {\n positionY -= contT;\n }\n\n styles.transform = `translate3d(0,${positionY}px,0)`;\n }\n\n self.css(self.image.$item, styles);\n\n // call onScroll event\n if (self.options.onScroll) {\n self.options.onScroll.call(self, {\n section: rect,\n\n beforeTop,\n beforeTopEnd,\n afterTop,\n beforeBottom,\n beforeBottomEnd,\n afterBottom,\n\n visiblePercent,\n fromViewportCenter,\n });\n }\n }\n\n onResize() {\n this.coverImage();\n }\n}\n\n// global definition\nconst jarallax = function (items, options, ...args) {\n // check for dom element\n // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n if (\n 'object' === typeof HTMLElement\n ? items instanceof HTMLElement\n : items &&\n 'object' === typeof items &&\n null !== items &&\n 1 === items.nodeType &&\n 'string' === typeof items.nodeName\n ) {\n items = [items];\n }\n\n const len = items.length;\n let k = 0;\n let ret;\n\n for (k; k < len; k += 1) {\n if ('object' === typeof options || 'undefined' === typeof options) {\n if (!items[k].jarallax) {\n items[k].jarallax = new Jarallax(items[k], options);\n }\n } else if (items[k].jarallax) {\n // eslint-disable-next-line prefer-spread\n ret = items[k].jarallax[options].apply(items[k].jarallax, args);\n }\n if ('undefined' !== typeof ret) {\n return ret;\n }\n }\n\n return items;\n};\njarallax.constructor = Jarallax;\n\nexport default jarallax;\n","import domReady from './utils/ready';\nimport global from './utils/global';\nimport jarallax from './core';\n\nconst $ = global.jQuery;\n\n// jQuery support\nif ('undefined' !== typeof $) {\n const $Plugin = function (...args) {\n Array.prototype.unshift.call(args, this);\n const res = jarallax.apply(global, args);\n return 'object' !== typeof res ? res : this;\n };\n $Plugin.constructor = jarallax.constructor;\n\n // no conflict\n const old$Plugin = $.fn.jarallax;\n $.fn.jarallax = $Plugin;\n $.fn.jarallax.noConflict = function () {\n $.fn.jarallax = old$Plugin;\n return this;\n };\n}\n\n// data-jarallax initialization\ndomReady(() => {\n jarallax(document.querySelectorAll('[data-jarallax]'));\n});\n\nexport default jarallax;\n"],"names":["ready","callback","document","readyState","addEventListener","capture","once","passive","win","window","global","self","global$1","navigator","isMobile","test","userAgent","$deviceHelper","wndH","updateWndVars","body","createElement","style","cssText","appendChild","clientHeight","innerHeight","documentElement","domReady","jarallaxList","updateParallax","length","forEach","data","k","instance","oldData","clientRect","$item","getBoundingClientRect","newData","width","height","top","bottom","wndW","innerWidth","isResized","isScrolled","onResize","onScroll","requestAnimationFrame","instanceID","Jarallax","constructor","item","userOptions","this","defaults","type","speed","imgSrc","imgElement","imgSize","imgPosition","imgRepeat","keepImg","elementInViewport","zIndex","disableParallax","disableVideo","videoSrc","videoStartTime","videoEndTime","videoVolume","videoLoop","videoPlayOnlyVisible","videoLazyLoading","onInit","onDestroy","onCoverImage","dataOptions","dataset","pureDataOptions","Object","keys","key","loweCaseOption","substr","toLowerCase","options","extend","pureOptions","Math","min","max","parseFloat","RegExp","disableParallaxRegexp","disableVideoRegexp","elementInVP","Element","image","src","$container","useImgTag","position","initImg","canInitParallax","init","css","el","styles","getComputedStyle","getPropertyValue","out","args","i","getWindowData","clientWidth","y","scrollTop","$imgElement","querySelector","Image","cloneNode","$itemParent","parentNode","bgImage","containerStyles","left","overflow","imageStyles","pointerEvents","transformStyle","backfaceVisibility","curStyle","getAttribute","setAttribute","curImgStyle","$parents","elem","parents","parentElement","nodeType","push","getParents","filter","parentTransform","transform","call","addToParallaxList","removeFromParallaxList","splice","destroy","originalStylesTag","removeAttribute","originalStylesImgTag","removeChild","jarallax","clipContainer","coverImage","rect","contH","isScroll","scrollDist","resultH","resultMT","abs","parallaxScrollDistance","marginTop","container","isVisible","isElementInViewport","force","contT","viewportRect","right","beforeTop","beforeTopEnd","afterTop","beforeBottom","beforeBottomEnd","afterBottom","fromViewportCenter","visiblePercent","opacity","scale","positionY","section","items","HTMLElement","nodeName","len","ret","apply","$","jQuery","$Plugin","Array","prototype","unshift","res","old$Plugin","fn","noConflict","querySelectorAll"],"mappings":"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"}