{"version":3,"file":"animate.js","names":["getEventName","eventName","el","document","createElement","eventname","toLowerCase","animations","animation","WebkitAnimation","MozAnimation","OAnimation","msAnimation","activeAnimation","Object","keys","forEach","key","style","transition","element","callback","HTMLElement","Error","transitionName","once","b","c","d","a","animate","animationClassName","Promise","resolve","reject","classList","add","animationName","remove","setters","execute"],"sources":["toolbox/animate.js"],"sourcesContent":["import { once } from 'toolbox/event';\n\n/**\n * Get name of the animation event depending on the browser\n * @param {string} eventName - Name of the event\n * @returns {boolean|string} - Get the animation name based on browser engine\n */\nfunction getEventName(eventName) {\n const el = document.createElement('div');\n const eventname = eventName.toLowerCase();\n\n const animations = {\n animation: eventname,\n WebkitAnimation: `webkit${eventName}`,\n MozAnimation: eventname,\n OAnimation: `on${eventname}`,\n msAnimation: `MS${eventName}`,\n };\n\n let activeAnimation = false;\n\n Object.keys(animations).forEach((key) => {\n if (!activeAnimation && el.style[key] !== undefined) {\n activeAnimation = animations[key];\n }\n });\n\n return activeAnimation;\n}\n\nconst animationName = getEventName('AnimationEnd');\nconst transitionName = getEventName('TransitionEnd');\n\n/**\n * Setup an animation and animationEnd callback\n * @param {String} animationClassName - Classname\n * @param {HTMLElement} element - Element to be animated\n * @returns {Promise} - Promise\n */\nexport function animate(animationClassName, element) {\n return new Promise((resolve, reject) => {\n if (typeof animationClassName !== 'string') {\n reject(new Error('animation name has to be a string'));\n } else if (animationClassName === '') {\n reject(new Error('animation name cannot be an empty string'));\n }\n\n if (!element || (element && !(element instanceof HTMLElement))) {\n reject(new Error('element should be an HTML Element'));\n }\n\n element.classList.add(animationClassName);\n\n if (!animationName) {\n resolve(element);\n return;\n }\n\n once(animationName, element, () => {\n element.classList.remove(animationClassName);\n\n resolve(element);\n });\n });\n}\n\n/**\n * Transition callback to handle transition end\n * @param {HTMLElement} element - Element to be animated\n * @param {Function} callback - Callback when animation has ended\n */\nexport function transition(element, callback) {\n if (!element || !(element instanceof HTMLElement)) {\n throw new Error('element should be an HTML Element');\n }\n\n if (!transitionName && typeof callback === 'function') {\n callback();\n return;\n }\n\n once(transitionName, element, () => {\n if (typeof callback === 'function') {\n callback();\n }\n });\n}\n"],"mappings":"wEAOA,QAAS,CAAAA,YAAYA,CAACC,CAAS,CAAE,MACvB,CAAAC,CAAE,CAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAClCC,CAAS,CAAGJ,CAAS,CAACK,WAAW,CAAC,CAAC,CAEnCC,CAAU,CAAG,CACfC,SAAS,CAAEH,CAAS,CACpBI,eAAe,CAAG,SAAQR,CAAU,EAAC,CACrCS,YAAY,CAAEL,CAAS,CACvBM,UAAU,CAAG,KAAIN,CAAU,EAAC,CAC5BO,WAAW,CAAG,KAAIX,CAAU,EAChC,CAAC,CAED,GAAI,CAAAY,CAAe,GAAQ,CAQ3B,MANA,CAAAC,MAAM,CAACC,IAAI,CAACR,CAAU,CAAC,CAACS,OAAO,CAAEC,CAAG,EAAK,CAChCJ,CAAe,EAAI,SAAAX,CAAE,CAACgB,KAAK,CAACD,CAAG,CAAe,GAC/CJ,CAAe,CAAGN,CAAU,CAACU,CAAG,CAAC,CAEzC,CAAC,CAAC,CAEKJ,CACX,CA2CO,QAAS,CAAAM,UAAUA,CAACC,CAAO,CAAEC,CAAQ,CAAE,CAC1C,GAAI,CAACD,CAAO,EAAI,EAAEA,CAAO,WAAY,CAAAE,WAAW,CAAC,CAC7C,KAAM,IAAI,CAAAC,KAAK,CAAC,mCAAmC,CAAC,CACvD,MAEI,CAAAC,CAAc,EAAwB,UAAU,EAA9B,MAAO,CAAAH,CAAuB,KAKrD,CAAAI,CAAI,CAACD,CAAc,CAAEJ,CAAO,CAAE,IAAM,CACR,UAAU,EAA9B,MAAO,CAAAC,CAAuB,EAC9BA,CAAQ,CAAC,CAEjB,CAAC,CAAC,KARE,CAAAA,CAAQ,CAAC,CASjB,CAAC,IAAAK,CAAA,CAAAC,CAAA,CAAAC,CAAA,QAAAC,CAAA,EAAAC,OAAA,CA/CM,QAAS,CAAAA,OAAOA,CAACC,CAAkB,CAAEX,CAAO,CAAE,CACjD,MAAO,IAAI,CAAAY,OAAO,CAAC,CAACC,CAAO,CAAEC,CAAM,IACG,QAAQ,EAAtC,MAAO,CAAAH,CAA+B,CAER,EAAE,EAAzBA,CAAyB,EAChCG,CAAM,CAAC,GAAI,CAAAX,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAF7DW,CAAM,CAAC,GAAI,CAAAX,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAKrDH,CAAO,GAAK,CAAAA,CAAO,EAAMA,CAAO,WAAY,CAAAE,WAAY,CAAC,EAC1DY,CAAM,CAAC,GAAI,CAAAX,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAG1DH,CAAO,CAACe,SAAS,CAACC,GAAG,CAACL,CAAkB,CAAC,CAEpCM,CAAa,KAKlB,CAAAZ,CAAI,CAACY,CAAa,CAAEjB,CAAO,CAAE,IAAM,CAC/BA,CAAO,CAACe,SAAS,CAACG,MAAM,CAACP,CAAkB,CAAC,CAE5CE,CAAO,CAACb,CAAO,CACnB,CAAC,CAAC,KARE,CAAAa,CAAO,CAACb,CAAO,CAAC,CASvB,CACL,CAAC,CAAAD,UAAA,CAOeA,UAAU,IAAAoB,OAAA,WAAAV,CAAA,EAvEjBJ,CAAI,CAAAI,CAAA,CAAJJ,IAAI,GAAAe,OAAA,SAAAA,CAAA,EA8BPH,CAAa,CAAGrC,YAAY,CAAC,cAAc,CAAC,CAC5CwB,CAAc,CAAGxB,YAAY,CAAC,eAAe,CAAC","ignoreList":[]}