{"version":3,"file":"wow.min.js","sources":["https:\/\/lakademia.e-learning.pl\/theme\/elpl\/amd\/src\/wow.js"],"sourcesContent":["\/\/ This file is part of Moodle - http:\/\/moodle.org\/\n\/\/\n\/\/ Moodle is free software: you can redistribute it and\/or modify\n\/\/ it under the terms of the GNU General Public License as published by\n\/\/ the Free Software Foundation, either version 3 of the License, or\n\/\/ (at your option) any later version.\n\/\/\n\/\/ Moodle is distributed in the hope that it will be useful,\n\/\/ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\/\/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\/\/ GNU General Public License for more details.\n\/\/\n\/\/ You should have received a copy of the GNU General Public License\n\/\/ along with Moodle. If not, see .\n\n\/**\n * WOW Animations.\n *\n * @package theme_elpl\n * @copyright 2021 e-learning.pl\n * @author Kamil \u0141uczak \n * @license All right reserved.\n *\/\n\ndefine(['jquery'], function () {\n\n function isIn(needle, haystack) {\n return haystack.indexOf(needle) >= 0;\n }\n\n function extend(custom, defaults) {\n for (const key in defaults) {\n if (custom[key] === null) {\n const value = defaults[key];\n custom[key] = value;\n }\n }\n return custom;\n }\n\n function isMobile(agent) {\n return \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(agent);\n }\n\n function createEvent(event, bubble = false, cancel = false, detail = null) {\n let customEvent;\n if (document.createEvent != null) { \/\/ W3C DOM\n customEvent = document.createEvent('CustomEvent');\n customEvent.initCustomEvent(event, bubble, cancel, detail);\n } else if (document.createEventObject != null) { \/\/ IE DOM < 9\n customEvent = document.createEventObject();\n customEvent.eventType = event;\n } else {\n customEvent.eventName = event;\n }\n\n return customEvent;\n }\n\n function emitEvent(elem, event) {\n if (elem.dispatchEvent != null) { \/\/ W3C DOM\n elem.dispatchEvent(event);\n } else if (event in (elem != null)) {\n elem[event]();\n } else if (`on${event}` in (elem != null)) {\n elem[`on${event}`]();\n }\n }\n\n function addEvent(elem, event, fn) {\n if (elem.addEventListener != null) { \/\/ W3C DOM\n elem.addEventListener(event, fn, false);\n } else if (elem.attachEvent != null) { \/\/ IE DOM\n elem.attachEvent(`on${event}`, fn);\n } else { \/\/ fallback\n elem[event] = fn;\n }\n }\n\n function removeEvent(elem, event, fn) {\n if (elem.removeEventListener != null) { \/\/ W3C DOM\n elem.removeEventListener(event, fn, false);\n } else if (elem.detachEvent != null) { \/\/ IE DOM\n elem.detachEvent(`on${event}`, fn);\n } else { \/\/ fallback\n delete elem[event];\n }\n }\n\n function getInnerHeight() {\n if ('innerHeight' in window) {\n return window.innerHeight;\n }\n\n return document.documentElement.clientHeight;\n }\n\n\/\/ Minimalistic WeakMap shim, just in case.\n const WeakMap = window.WeakMap || window.MozWeakMap ||\n class WeakMap {\n constructor() {\n this.keys = [];\n this.values = [];\n }\n\n get(key) {\n for (let i = 0; i < this.keys.length; i++) {\n const item = this.keys[i];\n if (item === key) {\n return this.values[i];\n }\n }\n return undefined;\n }\n\n set(key, value) {\n for (let i = 0; i < this.keys.length; i++) {\n const item = this.keys[i];\n if (item === key) {\n this.values[i] = value;\n return this;\n }\n }\n this.keys.push(key);\n this.values.push(value);\n return this;\n }\n };\n\n\/\/ Dummy MutationObserver, to avoid raising exceptions.\n const MutationObserver =\n window.MutationObserver || window.WebkitMutationObserver ||\n window.MozMutationObserver ||\n class MutationObserver {\n constructor() {\n if (typeof console !== 'undefined') {\n console.warn('MutationObserver is not supported by your browser.');\n console.warn(\n 'WOW.js cannot detect dom mutations, please call .sync() after loading new content.'\n );\n }\n }\n\n static notSupported = true;\n\n observe() {\n }\n };\n\n\/\/ getComputedStyle shim, from http:\/\/stackoverflow.com\/a\/21797294\n const getComputedStyle = window.getComputedStyle ||\n function getComputedStyle(el) {\n const getComputedStyleRX = \/(\\-([a-z]){1})\/g;\n return {\n getPropertyValue(prop) {\n if (prop === 'float') {\n prop = 'styleFloat';\n }\n if (getComputedStyleRX.test(prop)) {\n prop.replace(getComputedStyleRX, (_, _char) => _char.toUpperCase());\n }\n const {currentStyle} = el;\n return (currentStyle != null ? currentStyle[prop] : void 0) || null;\n },\n };\n };\n\n class WOW {\n defaults = {\n boxClass: 'wow',\n animateClass: 'animated',\n offset: 0,\n mobile: true,\n live: true,\n callback: null,\n scrollContainer: null,\n resetAnimation: true,\n };\n\n constructor(options = {}) {\n this.start = this.start.bind(this);\n this.resetAnimation = this.resetAnimation.bind(this);\n this.scrollHandler = this.scrollHandler.bind(this);\n this.scrollCallback = this.scrollCallback.bind(this);\n this.scrolled = true;\n this.config = extend(options, this.defaults);\n if (options.scrollContainer != null) {\n this.config.scrollContainer = document.querySelector(options.scrollContainer);\n }\n \/\/ Map of elements to animation names:\n this.animationNameCache = new WeakMap();\n this.wowEvent = createEvent(this.config.boxClass);\n }\n\n init() {\n this.element = window.document.documentElement;\n if (isIn(document.readyState, ['interactive', 'complete'])) {\n this.start();\n } else {\n addEvent(document, 'DOMContentLoaded', this.start);\n }\n this.finished = [];\n }\n\n start() {\n this.stopped = false;\n this.boxes = [].slice.call(this.element.querySelectorAll(`.${this.config.boxClass}`));\n this.all = this.boxes.slice(0);\n if (this.boxes.length) {\n if (this.disabled()) {\n this.resetStyle();\n } else {\n for (let i = 0; i < this.boxes.length; i++) {\n const box = this.boxes[i];\n this.applyStyle(box, true);\n }\n }\n }\n if (!this.disabled()) {\n addEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);\n addEvent(window, 'resize', this.scrollHandler);\n this.interval = setInterval(this.scrollCallback, 50);\n }\n if (this.config.live) {\n const mut = new MutationObserver(records => {\n for (let j = 0; j < records.length; j++) {\n const record = records[j];\n for (let k = 0; k < record.addedNodes.length; k++) {\n const node = record.addedNodes[k];\n this.doSync(node);\n }\n }\n return undefined;\n });\n mut.observe(document.body, {\n childList: true,\n subtree: true,\n });\n }\n }\n\n\/\/ unbind the scroll event\n stop() {\n this.stopped = true;\n removeEvent(this.config.scrollContainer || window, 'scroll', this.scrollHandler);\n removeEvent(window, 'resize', this.scrollHandler);\n if (this.interval != null) {\n clearInterval(this.interval);\n }\n }\n\n sync() {\n if (MutationObserver.notSupported) {\n this.doSync(this.element);\n }\n }\n\n doSync(element) {\n if (typeof element === 'undefined' || element === null) {\n ({element} = this);\n }\n if (element.nodeType !== 1) {\n return;\n }\n element = element.parentNode || element;\n const iterable = element.querySelectorAll(`.${this.config.boxClass}`);\n for (let i = 0; i < iterable.length; i++) {\n const box = iterable[i];\n if (!isIn(box, this.all)) {\n this.boxes.push(box);\n this.all.push(box);\n if (this.stopped || this.disabled()) {\n this.resetStyle();\n } else {\n this.applyStyle(box, true);\n }\n this.scrolled = true;\n }\n }\n }\n\n\/\/ show box element\n show(box) {\n this.applyStyle(box);\n box.className = `${box.className} ${this.config.animateClass}`;\n if (this.config.callback != null) {\n this.config.callback(box);\n }\n emitEvent(box, this.wowEvent);\n\n\n if (this.config.resetAnimation) {\n addEvent(box, 'animationend', this.resetAnimation);\n addEvent(box, 'oanimationend', this.resetAnimation);\n addEvent(box, 'webkitAnimationEnd', this.resetAnimation);\n addEvent(box, 'MSAnimationEnd', this.resetAnimation);\n }\n\n return box;\n }\n\n applyStyle(box, hidden) {\n const duration = box.getAttribute('data-wow-duration');\n const delay = box.getAttribute('data-wow-delay');\n const iteration = box.getAttribute('data-wow-iteration');\n\n return this.animate(() => this.customStyle(box, hidden, duration, delay, iteration));\n }\n\n animate = (function animateFactory() {\n if ('requestAnimationFrame' in window) {\n return callback => window.requestAnimationFrame(callback);\n }\n return callback => callback();\n }());\n\n resetStyle() {\n for (let i = 0; i < this.boxes.length; i++) {\n const box = this.boxes[i];\n box.style.visibility = 'visible';\n }\n return undefined;\n }\n\n resetAnimation(event) {\n if (event.type.toLowerCase().indexOf('animationend') >= 0) {\n const target = event.target || event.srcElement;\n target.className = target.className.replace(this.config.animateClass, '').trim();\n }\n }\n\n customStyle(box, hidden, duration, delay, iteration) {\n if (hidden) {\n this.cacheAnimationName(box);\n }\n box.style.visibility = hidden ? 'hidden' : 'visible';\n\n if (duration) {\n this.vendorSet(box.style, {animationDuration: duration});\n }\n if (delay) {\n this.vendorSet(box.style, {animationDelay: delay});\n }\n if (iteration) {\n this.vendorSet(box.style, {animationIterationCount: iteration});\n }\n this.vendorSet(box.style, {animationName: hidden ? 'none' : this.cachedAnimationName(box)});\n\n return box;\n }\n\n vendors = ['moz', 'webkit'];\n\n vendorSet(elem, properties) {\n for (const name in properties) {\n if (properties.hasOwnProperty(name)) {\n const value = properties[name];\n elem[`${name}`] = value;\n for (let i = 0; i < this.vendors.length; i++) {\n const vendor = this.vendors[i];\n elem[`${vendor}${name.charAt(0).toUpperCase()}${name.substr(1)}`] = value;\n }\n }\n }\n }\n\n vendorCSS(elem, property) {\n const style = getComputedStyle(elem);\n let result = style.getPropertyCSSValue(property);\n for (let i = 0; i < this.vendors.length; i++) {\n const vendor = this.vendors[i];\n result = result || style.getPropertyCSSValue(`-${vendor}-${property}`);\n }\n return result;\n }\n\n animationName(box) {\n let aName;\n try {\n aName = this.vendorCSS(box, 'animation-name').cssText;\n } catch (error) { \/\/ Opera, fall back to plain property value\n aName = getComputedStyle(box).getPropertyValue('animation-name');\n }\n\n if (aName === 'none') {\n return ''; \/\/ SVG\/Firefox, unable to get animation name?\n }\n\n return aName;\n }\n\n cacheAnimationName(box) {\n \/\/ https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=921834\n \/\/ box.dataset is not supported for SVG elements in Firefox\n return this.animationNameCache.set(box, this.animationName(box));\n }\n\n cachedAnimationName(box) {\n return this.animationNameCache.get(box);\n }\n\n \/\/ fast window.scroll callback\n scrollHandler() {\n this.scrolled = true;\n }\n\n scrollCallback() {\n if (this.scrolled) {\n this.scrolled = false;\n const results = [];\n for (let i = 0; i < this.boxes.length; i++) {\n const box = this.boxes[i];\n if (box) {\n if (this.isVisible(box)) {\n this.show(box);\n continue;\n }\n results.push(box);\n }\n }\n this.boxes = results;\n if (!this.boxes.length && !this.config.live) {\n this.stop();\n }\n }\n }\n\n\n \/\/ Calculate element offset top\n offsetTop(element) {\n \/\/ SVG elements don't have an offsetTop in Firefox.\n \/\/ This will use their nearest parent that has an offsetTop.\n \/\/ Also, using ('offsetTop' of element) causes an exception in Firefox.\n while (element.offsetTop === undefined) {\n element = element.parentNode;\n }\n let top = element.offsetTop;\n while (element.offsetParent) {\n element = element.offsetParent;\n top += element.offsetTop;\n }\n return top;\n }\n\n\/\/ check if box is visible\n isVisible(box) {\n const offset = box.getAttribute('data-wow-offset') || this.config.offset;\n const viewTop = (\n this.config.scrollContainer && this.config.scrollContainer.scrollTop\n ) || window.pageYOffset;\n const viewBottom =\n viewTop + Math.min(this.element.clientHeight, getInnerHeight()) - offset;\n const top = this.offsetTop(box);\n const bottom = top + box.clientHeight;\n\n return top <= viewBottom && bottom >= viewTop;\n }\n\n disabled() {\n return !this.config.mobile && isMobile(navigator.userAgent);\n }\n }\n\n return {\n \/\/ Public variables and functions.\n\n \/**\n * Assigns listeners to the requested select box.\n *\n * @method init\n * @param {Number} id The search wrapper div id\n *\/\n init: function () {\n new WOW().init();\n }\n };\n});"],"names":["define","isIn","needle","haystack","indexOf","addEvent","elem","event","fn","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","WeakMap","window","MozWeakMap","constructor","keys","values","get","key","i","this","length","set","value","push","MutationObserver","WebkitMutationObserver","MozMutationObserver","console","warn","observe","getComputedStyle","el","getComputedStyleRX","getPropertyValue","prop","test","replace","_","_char","toUpperCase","currentStyle","WOW","options","boxClass","animateClass","offset","mobile","live","callback","scrollContainer","resetAnimation","requestAnimationFrame","start","bind","scrollHandler","scrollCallback","scrolled","config","custom","defaults","extend","document","querySelector","animationNameCache","wowEvent","customEvent","bubble","cancel","detail","createEvent","initCustomEvent","createEventObject","eventType","eventName","init","element","documentElement","readyState","finished","stopped","boxes","slice","call","querySelectorAll","all","disabled","resetStyle","box","applyStyle","interval","setInterval","records","j","record","k","addedNodes","node","doSync","body","childList","subtree","stop","clearInterval","sync","notSupported","nodeType","iterable","parentNode","show","className","dispatchEvent","hidden","duration","getAttribute","delay","iteration","animate","customStyle","style","visibility","type","toLowerCase","target","srcElement","trim","cacheAnimationName","vendorSet","animationDuration","animationDelay","animationIterationCount","animationName","cachedAnimationName","properties","name","hasOwnProperty","vendors","vendor","charAt","substr","vendorCSS","property","result","getPropertyCSSValue","aName","cssText","error","results","isVisible","offsetTop","undefined","top","offsetParent","viewTop","scrollTop","pageYOffset","viewBottom","Math","min","clientHeight","innerHeight","bottom","agent","navigator","userAgent"],"mappings":"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\/B,UAAW,IAM5BoD,KAAKrB,SA\/NUrF,KAAMC,kBAgOZqF,WAAWD,KAChBA,IAAIsB,oBAAetB,IAAIsB,sBAAa1F,KAAKsC,OAAOb,cACpB,MAAxBzB,KAAKsC,OAAOT,eACPS,OAAOT,SAASuC,KAnOdrF,KAqODqF,IArOOpF,MAqOFgB,KAAK6C,SApOE,MAAtB9D,KAAK4G,cACL5G,KAAK4G,cAAc3G,OACZA,SAAkB,MAARD,MACjBA,KAAKC,SACE,YAAKA,SAAoB,MAARD,OACxBA,iBAAUC,UAkONgB,KAAKsC,OAAOP,iBACZjD,SAASsF,IAAK,eAAgBpE,KAAK+B,gBACnCjD,SAASsF,IAAK,gBAAiBpE,KAAK+B,gBACpCjD,SAASsF,IAAK,qBAAsBpE,KAAK+B,gBACzCjD,SAASsF,IAAK,iBAAkBpE,KAAK+B,iBAGlCqC,IAGXC,WAAWD,IAAKwB,cACNC,SAAWzB,IAAI0B,aAAa,qBAC5BC,MAAQ3B,IAAI0B,aAAa,kBACzBE,UAAY5B,IAAI0B,aAAa,6BAE5B9F,KAAKiG,SAAQ,IAAMjG,KAAKkG,YAAY9B,IAAKwB,OAAQC,SAAUE,MAAOC,aAU7E7B,iBACS,IAAIpE,EAAI,EAAGA,EAAIC,KAAK6D,MAAM5D,OAAQF,IAAK,CAC5BC,KAAK6D,MAAM9D,GACnBoG,MAAMC,WAAa,WAK\/BrE,eAAe\/C,UACPA,MAAMqH,KAAKC,cAAczH,QAAQ,iBAAmB,EAAG,OACjD0H,OAASvH,MAAMuH,QAAUvH,MAAMwH,WACrCD,OAAOb,UAAYa,OAAOb,UAAUzE,QAAQjB,KAAKsC,OAAOb,aAAc,IAAIgF,QAIlFP,YAAY9B,IAAKwB,OAAQC,SAAUE,MAAOC,kBAClCJ,aACKc,mBAAmBtC,KAE5BA,IAAI+B,MAAMC,WAAaR,OAAS,SAAW,UAEvCC,eACKc,UAAUvC,IAAI+B,MAAO,CAACS,kBAAmBf,WAE9CE,YACKY,UAAUvC,IAAI+B,MAAO,CAACU,eAAgBd,QAE3CC,gBACKW,UAAUvC,IAAI+B,MAAO,CAACW,wBAAyBd,iBAEnDW,UAAUvC,IAAI+B,MAAO,CAACY,cAAenB,OAAS,OAAS5F,KAAKgH,oBAAoB5C,OAE9EA,IAKXuC,UAAU5H,KAAMkI,gBACP,MAAMC,QAAQD,cACXA,WAAWE,eAAeD,MAAO,OAC3B\/G,MAAQ8G,WAAWC,MACzBnI,eAAQmI,OAAU\/G,UACb,IAAIJ,EAAI,EAAGA,EAAIC,KAAKoH,QAAQnH,OAAQF,IAAK,OACpCsH,OAASrH,KAAKoH,QAAQrH,GAC5BhB,eAAQsI,eAASH,KAAKI,OAAO,GAAGlG,sBAAgB8F,KAAKK,OAAO,KAAQpH,QAMpFqH,UAAUzI,KAAM0I,gBACNtB,MAAQxF,iBAAiB5B,UAC3B2I,OAASvB,MAAMwB,oBAAoBF,cAClC,IAAI1H,EAAI,EAAGA,EAAIC,KAAKoH,QAAQnH,OAAQF,IAAK,OACpCsH,OAASrH,KAAKoH,QAAQrH,GAC5B2H,OAASA,QAAUvB,MAAMwB,+BAAwBN,mBAAUI,kBAExDC,OAGXX,cAAc3C,SACNwD,UAEAA,MAAQ5H,KAAKwH,UAAUpD,IAAK,kBAAkByD,QAChD,MAAOC,OACLF,MAAQjH,iBAAiByD,KAAKtD,iBAAiB,wBAGrC,SAAV8G,MACO,GAGJA,MAGXlB,mBAAmBtC,YAGRpE,KAAK4C,mBAAmB1C,IAAIkE,IAAKpE,KAAK+G,cAAc3C,MAG\/D4C,oBAAoB5C,YACTpE,KAAK4C,mBAAmB\/C,IAAIuE,KAIvCjC,qBACSE,UAAW,EAGpBD,oBACQpC,KAAKqC,SAAU,MACVA,UAAW,QACV0F,QAAU,OACX,IAAIhI,EAAI,EAAGA,EAAIC,KAAK6D,MAAM5D,OAAQF,IAAK,OAClCqE,IAAMpE,KAAK6D,MAAM9D,MACnBqE,IAAK,IACDpE,KAAKgI,UAAU5D,KAAM,MAChBqB,KAAKrB,cAGd2D,QAAQ3H,KAAKgE,WAGhBP,MAAQkE,QACR\/H,KAAK6D,MAAM5D,QAAWD,KAAKsC,OAAOV,WAC9BsD,QAOjB+C,UAAUzE,mBAIuB0E,IAAtB1E,QAAQyE,WACXzE,QAAUA,QAAQgC,eAElB2C,IAAM3E,QAAQyE,eACXzE,QAAQ4E,cAEXD,MADA3E,QAAUA,QAAQ4E,cACHH,iBAEZE,IAIXH,UAAU5D,WACA1C,OAAS0C,IAAI0B,aAAa,oBAAsB9F,KAAKsC,OAAOZ,OAC5D2G,QACFrI,KAAKsC,OAAOR,iBAAmB9B,KAAKsC,OAAOR,gBAAgBwG,WAC1D9I,OAAO+I,YACNC,WACFH,QAAUI,KAAKC,IAAI1I,KAAKwD,QAAQmF,aAzWpC,gBAAiBnJ,OACVA,OAAOoJ,YAGXlG,SAASe,gBAAgBkF,cAqW0CjH,OAChEyG,IAAMnI,KAAKiI,UAAU7D,KACrByE,OAASV,IAAM\/D,IAAIuE,oBAElBR,KAAOK,YAAcK,QAAUR,QAG1CnE,kBACYlE,KAAKsC,OAAOX,SAnaVmH,MAma6BC,UAAUC,UAla9C,iEAAiEhI,KAAK8H,YAD\/DA,aAuaX,CASHvF,KAAM,gBACEjC,KAAMiC"}