UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

169 lines (164 loc) 4.41 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var error = require('./error.js'); const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g; const MOZ_HACK_REGEXP = /^moz([A-Z])/; function camelCase(name) { return name.replace(SPECIAL_CHARS_REGEXP, (_, separator, letter, offset) => { return offset ? letter.toUpperCase() : letter; }).replace(MOZ_HACK_REGEXP, "Moz$1"); } const trim = function(s) { return (s || "").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, ""); }; function typeOf(obj) { const toString = Object.prototype.toString; const map = { "[object Boolean]": "boolean", "[object Number]": "number", "[object String]": "string", "[object Function]": "function", "[object Array]": "array", "[object Date]": "date", "[object RegExp]": "regExp", "[object Undefined]": "undefined", "[object Null]": "null", "[object Object]": "object" }; return map[toString.call(obj)]; } const oneOf = (value, validList) => { for (let i = 0; i < validList.length; i++) { if (value === validList[i]) { return true; } } return false; }; const getStyle = (element, styleName) => { if (!element || !styleName) { return null; } styleName = camelCase(styleName); if (styleName === "float") { styleName = "cssFloat"; } try { const computed = document.defaultView.getComputedStyle(element, ""); return element.style[styleName] || computed ? computed[styleName] : null; } catch (e) { return element.style[styleName]; } }; function hasClass(el, cls) { if (!el || !cls) { return false; } if (cls.indexOf(" ") !== -1) { error.throwError("hasClass", "className should not contain space"); } if (el.classList) { return el.classList.contains(cls); } else { return (" " + el.className + " ").indexOf(" " + cls + " ") > -1; } } function removeClass(el, cls) { if (!el || !cls) { return; } const classes = cls.split(" "); let curClass = " " + el.className + " "; for (let i = 0, j = classes.length; i < j; i++) { const clsName = classes[i]; if (!clsName) { continue; } if (el.classList) { el.classList.remove(clsName); } else { if (hasClass(el, clsName)) { curClass = curClass.replace(" " + clsName + " ", " "); } } } if (!el.classList) { el.className = trim(curClass); } } function addClass(el, cls) { if (!el) { return; } let curClass = el.className; const classes = (cls || "").split(" "); for (let i = 0, j = classes.length; i < j; i++) { const clsName = classes[i]; if (!clsName) { continue; } if (el.classList) { el.classList.add(clsName); } else if (!hasClass(el, clsName)) { curClass += " " + clsName; } } if (!el.classList) { el.className = curClass; } } function scrollTop(el, from = 0, to, duration = 500, endCallback) { if (!window.requestAnimationFrame) { window.requestAnimationFrame = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { return window.setTimeout(callback, 1e3 / 60); }; } const difference = Math.abs(from - to); const step = Math.ceil(difference / duration * 50); function scroll(start, end, step2) { if (start === end) { endCallback && endCallback(); return; } let d = start + step2 > end ? end : start + step2; if (start > end) { d = start - step2 < end ? end : start - step2; } if (el === window) { window.scrollTo(d, d); } else { el.scrollTop = d; } window.requestAnimationFrame(() => scroll(d, end, step2)); } scroll(from, to, step); } const deepCopy = (data) => { const _typeOf = typeOf(data); let object; if (_typeOf === "array") { object = []; } else if (_typeOf === "object") { object = {}; } else { return data; } if (_typeOf === "array") { for (let i = 0; i < data.length; i++) { object.push(deepCopy(data[i])); } } else if (_typeOf === "object") { for (let i in data) { object[i] = deepCopy(data[i]); } } return object; }; exports.addClass = addClass; exports.deepCopy = deepCopy; exports.getStyle = getStyle; exports.hasClass = hasClass; exports.oneOf = oneOf; exports.removeClass = removeClass; exports.scrollTop = scrollTop; //# sourceMappingURL=assist.js.map