wot-design
Version:
Mobile UI components built on vue.js
114 lines (83 loc) • 2.85 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.getType = getType;
exports.bus = exports.isEqual = exports.range = exports.padZero = exports.getScrollTargetEvent = exports.isSupportSticky = exports.isServer = void 0;
var _vue = _interopRequireDefault(require("vue"));
var isServer = _vue.default.prototype.$isServer;
/**
* judge if the browser is support sticky
*/
exports.isServer = isServer;
var isSupportSticky = function isSupportSticky() {
var div = document.createElement('div');
var style = 'display: none; position: -webkit-sticky; position: sticky';
div.style.cssText = style;
var body = document.body;
body.appendChild(div);
var isSupport = /sticky/i.test(window.getComputedStyle(div).position);
body.removeChild(div);
div = null;
return isSupport;
};
/**
* get the overscroll parentNode
* @param {*} element current node
* @param {*} rootElement root node
*/
exports.isSupportSticky = isSupportSticky;
var getScrollTargetEvent = function getScrollTargetEvent(element, rootElement) {
if (rootElement === void 0) {
rootElement = window;
}
var currentNode = element;
while (currentNode && currentNode.tagName !== 'HTML' && currentNode.tagName !== 'BODY' && currentNode !== rootElement && currentNode.nodeType === 1) {
var overflowY = document.defaultView.getComputedStyle(currentNode).overflowY;
if (overflowY === 'auto' || overflowY === 'scroll') {
return currentNode;
}
currentNode = currentNode.parentNode;
}
return rootElement;
};
exports.getScrollTargetEvent = getScrollTargetEvent;
var padZero = function padZero(number, length) {
if (length === void 0) {
length = 2;
}
number = number + '';
while (number.length < length) {
number = '0' + number;
}
return number;
};
exports.padZero = padZero;
var range = function range(value, min, max) {
return Math.min(Math.max(value, min), max);
};
/** @description 比较数值是否相等 */
exports.range = range;
var isEqual = function isEqual(value1, value2) {
if (value1 === value2) return true;
if (!(value1 instanceof Array)) return false;
if (!(value2 instanceof Array)) return false;
if (value1.length !== value2.length) return false;
for (var i = 0; i !== value1.length; ++i) {
if (value1[i] !== value2[i]) return false;
}
return true;
};
exports.isEqual = isEqual;
var bus = new _vue.default();
/**
* @description 获取目标原始类型
* @param target 任意类型
* @returns {string} type 数据类型
*/
exports.bus = bus;
function getType(target) {
// 得到原生类型
var typeStr = Object.prototype.toString.call(target); // 拿到类型值
var type = typeStr.match(/\[object (\w+)\]/)[1]; // 类型值转小写并返回
return type.toLowerCase();
}