UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

66 lines (57 loc) 1.99 kB
export const isFunction = (val) => typeof val === 'function'; export const isArray = Array.isArray; export const isString = (val) => typeof val === 'string'; export const isSymbol = (val) => typeof val === 'symbol'; export const isObject = (val) => val !== null && typeof val === 'object'; const onRE = /^on[^a-z]/; const isOn = (key) => onRE.test(key); const cacheStringFunction = (fn) => { const cache = Object.create(null); return (str) => { const hit = cache[str]; return hit || (cache[str] = fn(str)); }; }; const camelizeRE = /-(\w)/g; const camelize = cacheStringFunction((str) => { return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')); }); const hyphenateRE = /\B([A-Z])/g; const hyphenate = cacheStringFunction((str) => { return str.replace(hyphenateRE, '-$1').toLowerCase(); }); const capitalize = cacheStringFunction((str) => { return str.charAt(0).toUpperCase() + str.slice(1); }); const hasOwnProperty = Object.prototype.hasOwnProperty; const hasOwn = (val, key) => hasOwnProperty.call(val, key); // change from vue sourcecode function resolvePropValue(options, props, key, value) { const opt = options[key]; if (opt != null) { const hasDefault = hasOwn(opt, 'default'); // default values if (hasDefault && value === undefined) { const defaultValue = opt.default; value = opt.type !== Function && isFunction(defaultValue) ? defaultValue() : defaultValue; } // boolean casting if (opt.type === Boolean) { if (!hasOwn(props, key) && !hasDefault) { value = false; } else if (value === '') { value = true; } } } return value; } export function getDataAndAriaProps(props) { return Object.keys(props).reduce((memo, key) => { if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-') { memo[key] = props[key]; } return memo; }, {}); } export { isOn, cacheStringFunction, camelize, hyphenate, capitalize, resolvePropValue };