// 判断参数是否是其中之一 export function oneOf (value, validList) { for (let i = 0; i < validList.length; i++) { if (value === validList[i]) { return true; } } return false; } export function camelcaseToHyphen (str) { return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); } // For Modal scrollBar hidden let cached; export function getScrollBarSize (fresh) { if (fresh || cached === undefined) { const inner = document.createElement('div'); inner.style.width = '100%'; inner.style.height = '200px'; const outer = document.createElement('div'); const outerStyle = outer.style; outerStyle.position = 'absolute'; outerStyle.top = 0; outerStyle.left = 0; outerStyle.pointerEvents = 'none'; outerStyle.visibility = 'hidden'; outerStyle.width = '200px'; outerStyle.height = '150px'; outerStyle.overflow = 'hidden'; outer.appendChild(inner); document.body.appendChild(outer); const widthContained = inner.offsetWidth; outer.style.overflow = 'scroll'; let widthScroll = inner.offsetWidth; if (widthContained === widthScroll) { widthScroll = outer.clientWidth; } document.body.removeChild(outer); cached = widthContained - widthScroll; } return cached; } // watch DOM change export const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver || false; const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g; const MOZ_HACK_REGEXP = /^moz([A-Z])/; function camelCase(name) { return name.replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) { return offset ? letter.toUpperCase() : letter; }).replace(MOZ_HACK_REGEXP, 'Moz$1'); } // getStyle export function getStyle (element, styleName) { if (!element || !styleName) return null; styleName = camelCase(styleName); if (styleName === 'float') { styleName = 'cssFloat'; } try { var computed = document.defaultView.getComputedStyle(element, ''); return element.style[styleName] || computed ? computed[styleName] : null; } catch(e) { return element.style[styleName]; } } // firstUpperCase function firstUpperCase(str) { return str.toString()[0].toUpperCase() + str.toString().slice(1); } // Warn export function warnProp(component, prop, correctType, wrongType) { correctType = firstUpperCase(correctType); wrongType = firstUpperCase(wrongType); console.error(`[iView warn]: Invalid prop: type check failed for prop ${prop}. Expected ${correctType}, got ${wrongType}. (found in component: ${component})`); }