/** * 该文件截取自 "ant-design-vue/es/_util/props-util.js" 文件,并对其做出特殊修改 */ function classNames() { let classes = [] for (let i = 0; i < arguments.length; i++) { let arg = arguments[i] if (!arg) continue let argType = typeof arg if (argType === 'string' || argType === 'number') { classes.push(arg) } else if (Array.isArray(arg) && arg.length) { let inner = classNames.apply(null, arg) if (inner) { classes.push(inner) } } else if (argType === 'object') { for (let key in arg) { if (arg.hasOwnProperty(key) && arg[key]) { classes.push(key) } } } } return classes.join(' ') } const camelizeRE = /-(\w)/g function camelize(str) { return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')) } function objectCamelize(obj) { let res = {} Object.keys(obj).forEach(k => (res[camelize(k)] = obj[k])) return res } function parseStyleText(cssText = '', camel) { const res = {} const listDelimiter = /;(?![^(]*\))/g const propertyDelimiter = /:(.+)/ cssText.split(listDelimiter).forEach(function (item) { if (item) { const tmp = item.split(propertyDelimiter) if (tmp.length > 1) { const k = camel ? camelize(tmp[0].trim()) : tmp[0].trim() res[k] = tmp[1].trim() } } }) return res } export function getClass(ele) { let data = {} if (ele.data) { data = ele.data } else if (ele.$vnode && ele.$vnode.data) { data = ele.$vnode.data } const tempCls = data.class || {} const staticClass = data.staticClass let cls = {} staticClass && staticClass.split(' ').forEach(c => { cls[c.trim()] = true }) if (typeof tempCls === 'string') { tempCls.split(' ').forEach(c => { cls[c.trim()] = true }) } else if (Array.isArray(tempCls)) { classNames(tempCls) .split(' ') .forEach(c => { cls[c.trim()] = true }) } else { cls = {...cls, ...tempCls} } return cls } export function getStyle(ele, camel) { getClass(ele) let data = {} if (ele.data) { data = ele.data } else if (ele.$vnode && ele.$vnode.data) { data = ele.$vnode.data } // update-begin-author:sunjianlei date:20200303 for: style 和 staticStyle 可以共存 let style = data.style || {} let staticStyle = data.staticStyle staticStyle = staticStyle ? objectCamelize(data.staticStyle) : {} // update-end-author:sunjianlei date:20200303 for: style 和 staticStyle 可以共存 if (typeof style === 'string') { style = parseStyleText(style, camel) } else if (camel && style) { // 驼峰化 style = objectCamelize(style) } return {...staticStyle, ...style} }