UNPKG

1.37 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = transitionEnd;
7
8var _css = _interopRequireDefault(require("./css"));
9
10var _listen = _interopRequireDefault(require("./listen"));
11
12var _triggerEvent = _interopRequireDefault(require("./triggerEvent"));
13
14function parseDuration(node) {
15 var str = (0, _css.default)(node, 'transitionDuration') || '';
16 var mult = str.indexOf('ms') === -1 ? 1000 : 1;
17 return parseFloat(str) * mult;
18}
19
20function emulateTransitionEnd(element, duration, padding) {
21 if (padding === void 0) {
22 padding = 5;
23 }
24
25 var called = false;
26 var handle = setTimeout(function () {
27 if (!called) (0, _triggerEvent.default)(element, 'transitionend', true);
28 }, duration + padding);
29 var remove = (0, _listen.default)(element, 'transitionend', function () {
30 called = true;
31 }, {
32 once: true
33 });
34 return function () {
35 clearTimeout(handle);
36 remove();
37 };
38}
39
40function transitionEnd(element, handler, duration, padding) {
41 if (duration == null) duration = parseDuration(element) || 0;
42 var removeEmulate = emulateTransitionEnd(element, duration, padding);
43 var remove = (0, _listen.default)(element, 'transitionend', handler);
44 return function () {
45 removeEmulate();
46 remove();
47 };
48}
49
50module.exports = exports["default"];
\No newline at end of file