vimo-dt
Version:
A Vue2.x UI Project For Mobile & HyBrid
155 lines (129 loc) • 3.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.transitionEnd = transitionEnd;
exports.docReady = docReady;
exports.pointerCoord = pointerCoord;
exports.isActive = isActive;
exports.hasFocus = hasFocus;
exports.setElementClass = setElementClass;
exports.hasClass = hasClass;
exports.addClass = addClass;
exports.removeClass = removeClass;
exports.clamp = clamp;
exports.defaults = defaults;
exports.firstUpperCase = firstUpperCase;
exports.parsePxUnit = parsePxUnit;
var _registerListener = require('./register-listener');
var _registerListener2 = _interopRequireDefault(_registerListener);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function transitionEnd(el, callbackFn) {
var unRegs = [];
function unregister() {
unRegs.forEach(function (unReg) {
unReg && unReg();
});
}
function onTransitionEnd(ev) {
if (el === ev.target) {
callbackFn && callbackFn(ev);
unregister();
}
}
if (el) {
(0, _registerListener2.default)(el, 'webkitTransitionEnd', onTransitionEnd, {}, unRegs);
(0, _registerListener2.default)(el, 'transitionend', onTransitionEnd, {}, unRegs);
}
return unregister;
}
function docReady(callback) {
var promise = null;
if (!callback) {
promise = new Promise(function (resolve) {
callback = resolve;
});
}
if (document.readyState === 'complete' || document.readyState === 'interactive') {
callback();
} else {
document.addEventListener('DOMContentLoaded', completed, false);
window.addEventListener('load', completed, false);
}
function completed() {
document.removeEventListener('DOMContentLoaded', completed, false);
window.removeEventListener('load', completed, false);
callback();
}
return promise;
}
function pointerCoord(ev) {
if (ev) {
var changedTouches = ev.changedTouches;
if (changedTouches && changedTouches.length > 0) {
var touch = changedTouches[0];
return { x: touch.clientX, y: touch.clientY };
}
var pageX = ev.pageX;
if (pageX !== undefined) {
return { x: pageX, y: ev.pageY };
}
}
return { x: 0, y: 0 };
}
function isActive(ele) {
return !!(ele && document.activeElement === ele);
}
function hasFocus(ele) {
return isActive(ele) && ele.parentElement.querySelector(':focus') === ele;
}
function setElementClass(ele, className, add) {
if (add) {
addClass(ele, className);
} else {
removeClass(ele, className);
}
}
function hasClass(obj, cls) {
return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}
function addClass(obj, cls) {
if (!hasClass(obj, cls)) {
if (obj.className.trim()) {
obj.className += ' ' + cls;
} else {
obj.className = cls;
}
}
}
function removeClass(obj, cls) {
if (hasClass(obj, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
obj.className = obj.className.replace(reg, ' ').trim();
}
}
function clamp(min, n, max) {
return Math.max(min, Math.min(n, max));
}
function defaults(dest) {
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
for (var i = arguments.length - 1; i >= 1; i--) {
var source = arguments[i];
if (source) {
for (var key in source) {
if (source.hasOwnProperty(key) && !dest.hasOwnProperty(key)) {
dest[key] = source[key];
}
}
}
}
return dest;
}
function firstUpperCase(str) {
return str.toString()[0].toUpperCase() + str.toString().slice(1);
}
function parsePxUnit(val) {
return !!val && val.indexOf('px') > 0 ? parseInt(val, 10) : 0;
}