53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
|
|
'use strict';
|
||
|
|
|
||
|
|
Object.defineProperty(exports, "__esModule", {
|
||
|
|
value: true
|
||
|
|
});
|
||
|
|
|
||
|
|
var _properties = require('./properties');
|
||
|
|
|
||
|
|
var _properties2 = _interopRequireDefault(_properties);
|
||
|
|
|
||
|
|
var _style = require('../style');
|
||
|
|
|
||
|
|
var _style2 = _interopRequireDefault(_style);
|
||
|
|
|
||
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
|
||
|
|
function onEnd(node, handler, duration) {
|
||
|
|
var fakeEvent = {
|
||
|
|
target: node,
|
||
|
|
currentTarget: node
|
||
|
|
},
|
||
|
|
backup;
|
||
|
|
|
||
|
|
if (!_properties2.default.end) duration = 0;else if (duration == null) duration = parseDuration(node) || 0;
|
||
|
|
|
||
|
|
if (_properties2.default.end) {
|
||
|
|
node.addEventListener(_properties2.default.end, done, false);
|
||
|
|
|
||
|
|
backup = setTimeout(function () {
|
||
|
|
return done(fakeEvent);
|
||
|
|
}, (duration || 100) * 1.5);
|
||
|
|
} else setTimeout(done.bind(null, fakeEvent), 0);
|
||
|
|
|
||
|
|
function done(event) {
|
||
|
|
if (event.target !== event.currentTarget) return;
|
||
|
|
clearTimeout(backup);
|
||
|
|
event.target.removeEventListener(_properties2.default.end, done);
|
||
|
|
handler.call(this);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
onEnd._parseDuration = parseDuration;
|
||
|
|
|
||
|
|
exports.default = onEnd;
|
||
|
|
|
||
|
|
|
||
|
|
function parseDuration(node) {
|
||
|
|
var str = (0, _style2.default)(node, _properties2.default.duration),
|
||
|
|
mult = str.indexOf('ms') === -1 ? 1000 : 1;
|
||
|
|
|
||
|
|
return parseFloat(str) * mult;
|
||
|
|
}
|
||
|
|
module.exports = exports['default'];
|