| /* utils */ | 
|   | 
| /** | 
|  * addUnit */ | 
| // 为 css 添加单位 | 
| function addUnit(value) { | 
|   var REGEXP = getRegExp('^-?\d+(.\d+)?$'); | 
|   if (value == null) { | 
|     return undefined; | 
|   } | 
|   return REGEXP.test('' + value) ? value + 'px' : value; | 
| } | 
|   | 
| function isString(string) { | 
|   return string && string.constructor === 'String'; | 
| } | 
|   | 
| function isArray(array) { | 
|   return array && array.constructor === 'Array'; | 
| } | 
|   | 
| function isObject(obj) { | 
|   return obj && obj.constructor === 'Object'; | 
| } | 
|   | 
| var isNoEmptyObj = function (obj) { | 
|   return isObject(obj) && JSON.stringify(obj) !== '{}'; | 
| }; | 
|   | 
| function includes(arr, value) { | 
|   if (!arr || !isArray(arr)) return false; | 
|   | 
|   var i = 0; | 
|   var len = arr.length; | 
|   | 
|   for (; i < len; i++) { | 
|     if (arr[i] === value) return true; | 
|   } | 
|   return false; | 
| } | 
|   | 
| function cls(base, arr) { | 
|   var res = [base]; | 
|   var i = 0; | 
|   for (var size = arr.length; i < size; i++) { | 
|     var item = arr[i]; | 
|   | 
|     if (item && item.constructor === 'Array') { | 
|       var key = arr[i][0]; | 
|       var value = arr[i][1]; | 
|   | 
|       if (value) { | 
|         res.push(base + '--' + key); | 
|       } | 
|     } else if (typeof item === 'string' || typeof item === 'number') { | 
|       if (item) { | 
|         res.push(base + '--' + item); | 
|       } | 
|     } | 
|   } | 
|   return res.join(' '); | 
| } | 
|   | 
| function getBadgeAriaLabel(options) { | 
|   var maxCount = options.maxCount || 99; | 
|   if (options.dot) { | 
|     return '有新的消息'; | 
|   } | 
|   if (options.count === '...') { | 
|     return '有很多消息'; | 
|   } | 
|   if (isNaN(options.count)) { | 
|     return options.count; | 
|   } | 
|   var str1 = '有' + maxCount + '+条消息'; | 
|   var str2 = '有' + options.count + '条消息'; | 
|   return Number(options.count) > maxCount ? str1 : str2; | 
| } | 
|   | 
| function endsWith(str, endStr) { | 
|   return str.slice(-endStr.length) === endStr ? str : str + endStr; | 
| } | 
|   | 
| function keys(obj) { | 
|   return JSON.stringify(obj) | 
|     .replace(getRegExp('{|}|"', 'g'), '') | 
|     .split(',') | 
|     .map(function (item) { | 
|       return item.split(':')[0]; | 
|     }); | 
| } | 
|   | 
| function kebabCase(str) { | 
|   return str | 
|     .replace(getRegExp('[A-Z]', 'g'), function (ele) { | 
|       return '-' + ele; | 
|     }) | 
|     .toLowerCase(); | 
| } | 
|   | 
| function _style(styles) { | 
|   if (isArray(styles)) { | 
|     return styles | 
|       .filter(function (item) { | 
|         return item != null && item !== ''; | 
|       }) | 
|       .map(function (item) { | 
|         return isArray(item) ? _style(item) : endsWith(item, ';'); | 
|       }) | 
|       .join(' '); | 
|   } | 
|   | 
|   if (isObject(styles)) { | 
|     return keys(styles) | 
|       .filter(function (key) { | 
|         return styles[key] != null && styles[key] !== ''; | 
|       }) | 
|       .map(function (key) { | 
|         return [kebabCase(key), [styles[key]]].join(':'); | 
|       }) | 
|       .join(';'); | 
|   } | 
|   | 
|   return styles; | 
| } | 
|   | 
| module.exports = { | 
|   addUnit: addUnit, | 
|   isString: isString, | 
|   isArray: isArray, | 
|   isObject: isObject, | 
|   isNoEmptyObj: isNoEmptyObj, | 
|   includes: includes, | 
|   cls: cls, | 
|   getBadgeAriaLabel: getBadgeAriaLabel, | 
|   _style: _style, | 
| }; |