{"version":3,"file":"cssTransitions.mjs","sourceRoot":"","sources":["../../../src/animations/cssTransitions.ts"],"names":[],"mappings":"AAEA,IAAI,qCAAqC,GAAG,EAAE,CAAC;AAC/C,IAAI,oCAAoC,GAAG,EAAE,CAAC;AAE9C,oCAAoC,OAAoB;IACvD,EAAE,CAAC,CAAC,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,qCAAqC,GAAG,qBAAqB,CAAC;QAC9D,oCAAoC,GAAG,oBAAoB,CAAC;IAC7D,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,IAAI,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9E,qCAAqC,GAAG,eAAe,CAAC;QACxD,oCAAoC,GAAG,cAAc,CAAC;IACvD,CAAC;IAAC,IAAI,CAAC,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAClD,CAAC;AACF,CAAC;AAED,oBAAoB,OAAoB;IACvC,EAAE,CAAC,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjD,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;AACF,CAAC;AAED,uBAAuB,OAAoB,EAAE,cAA0B,EAAE,eAA2B;IACnG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,aAAa,GAAG;QACnB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACf,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,CAAC,mBAAmB,CAAC,qCAAqC,EAAE,aAAa,CAAC,CAAC;YAClF,OAAO,CAAC,mBAAmB,CAAC,oCAAoC,EAAE,aAAa,CAAC,CAAC;YAEjF,eAAe,EAAE,CAAC;QACnB,CAAC;IACF,CAAC,CAAC;IAEF,cAAc,EAAE,CAAC;IAEjB,OAAO,CAAC,gBAAgB,CAAC,oCAAoC,EAAE,aAAa,CAAC,CAAC;IAC9E,OAAO,CAAC,gBAAgB,CAAC,qCAAqC,EAAE,aAAa,CAAC,CAAC;AAChF,CAAC;AAED,cAAc,IAAiB,EAAE,UAA2B,EAAE,aAAqB,EAAE,UAAsB;IAC1G,MAAM,WAAW,GAAG,UAAU,CAAC,mBAAmB,IAAI,GAAG,aAAa,SAAS,CAAC;IAEhF,aAAa,CACZ,IAAI,EACJ,GAAG,EAAE;QACJ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAElC,qBAAqB,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC,EACD,GAAG,EAAE;QACJ,UAAU,EAAE,CAAC;IACd,CAAC,CACD,CAAC;AACH,CAAC;AAED,eAAe,IAAiB,EAAE,UAA2B,EAAE,cAAsB;IACpF,MAAM,WAAW,GAAG,UAAU,CAAC,oBAAoB,IAAI,GAAG,cAAc,SAAS,CAAC;IAElF,aAAa,CACZ,IAAI,EACJ,GAAG,EAAE;QACJ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEnC,qBAAqB,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACJ,CAAC,EACD,GAAG,EAAE;QACJ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC,CACD,CAAC;AACH,CAAC;AAED,eAAe;IACd,KAAK;IACL,IAAI;CACJ,CAAC","sourcesContent":["import { VNodeProperties } from './../interfaces';\n\nlet browserSpecificTransitionEndEventName = '';\nlet browserSpecificAnimationEndEventName = '';\n\nfunction determineBrowserStyleNames(element: HTMLElement) {\n\tif ('WebkitTransition' in element.style) {\n\t\tbrowserSpecificTransitionEndEventName = 'webkitTransitionEnd';\n\t\tbrowserSpecificAnimationEndEventName = 'webkitAnimationEnd';\n\t} else if ('transition' in element.style || 'MozTransition' in element.style) {\n\t\tbrowserSpecificTransitionEndEventName = 'transitionend';\n\t\tbrowserSpecificAnimationEndEventName = 'animationend';\n\t} else {\n\t\tthrow new Error('Your browser is not supported');\n\t}\n}\n\nfunction initialize(element: HTMLElement) {\n\tif (browserSpecificAnimationEndEventName === '') {\n\t\tdetermineBrowserStyleNames(element);\n\t}\n}\n\nfunction runAndCleanUp(element: HTMLElement, startAnimation: () => void, finishAnimation: () => void) {\n\tinitialize(element);\n\n\tlet finished = false;\n\n\tlet transitionEnd = function() {\n\t\tif (!finished) {\n\t\t\tfinished = true;\n\t\t\telement.removeEventListener(browserSpecificTransitionEndEventName, transitionEnd);\n\t\t\telement.removeEventListener(browserSpecificAnimationEndEventName, transitionEnd);\n\n\t\t\tfinishAnimation();\n\t\t}\n\t};\n\n\tstartAnimation();\n\n\telement.addEventListener(browserSpecificAnimationEndEventName, transitionEnd);\n\telement.addEventListener(browserSpecificTransitionEndEventName, transitionEnd);\n}\n\nfunction exit(node: HTMLElement, properties: VNodeProperties, exitAnimation: string, removeNode: () => void) {\n\tconst activeClass = properties.exitAnimationActive || `${exitAnimation}-active`;\n\n\trunAndCleanUp(\n\t\tnode,\n\t\t() => {\n\t\t\tnode.classList.add(exitAnimation);\n\n\t\t\trequestAnimationFrame(function() {\n\t\t\t\tnode.classList.add(activeClass);\n\t\t\t});\n\t\t},\n\t\t() => {\n\t\t\tremoveNode();\n\t\t}\n\t);\n}\n\nfunction enter(node: HTMLElement, properties: VNodeProperties, enterAnimation: string) {\n\tconst activeClass = properties.enterAnimationActive || `${enterAnimation}-active`;\n\n\trunAndCleanUp(\n\t\tnode,\n\t\t() => {\n\t\t\tnode.classList.add(enterAnimation);\n\n\t\t\trequestAnimationFrame(function() {\n\t\t\t\tnode.classList.add(activeClass);\n\t\t\t});\n\t\t},\n\t\t() => {\n\t\t\tnode.classList.remove(enterAnimation);\n\t\t\tnode.classList.remove(activeClass);\n\t\t}\n\t);\n}\n\nexport default {\n\tenter,\n\texit\n};\n"]}