You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
1.5 KiB
77 lines
1.5 KiB
/*! |
|
Copyright (c) 2018 Jed Watson. |
|
Licensed under the MIT License (MIT), see |
|
http://jedwatson.github.io/classnames |
|
*/ |
|
/* global define */ |
|
|
|
(function () { |
|
'use strict'; |
|
|
|
var hasOwn = {}.hasOwnProperty; |
|
|
|
function classNames () { |
|
var classes = ''; |
|
|
|
for (var i = 0; i < arguments.length; i++) { |
|
var arg = arguments[i]; |
|
if (arg) { |
|
classes = appendClass(classes, parseValue.call(this, arg)); |
|
} |
|
} |
|
|
|
return classes; |
|
} |
|
|
|
function parseValue (arg) { |
|
if (typeof arg === 'string' || typeof arg === 'number') { |
|
return this && this[arg] || arg; |
|
} |
|
|
|
if (typeof arg !== 'object') { |
|
return ''; |
|
} |
|
|
|
if (Array.isArray(arg)) { |
|
return classNames.apply(this, arg); |
|
} |
|
|
|
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) { |
|
return arg.toString(); |
|
} |
|
|
|
var classes = ''; |
|
|
|
for (var key in arg) { |
|
if (hasOwn.call(arg, key) && arg[key]) { |
|
classes = appendClass(classes, this && this[key] || key); |
|
} |
|
} |
|
|
|
return classes; |
|
} |
|
|
|
function appendClass (value, newClass) { |
|
if (!newClass) { |
|
return value; |
|
} |
|
|
|
if (value) { |
|
return value + ' ' + newClass; |
|
} |
|
|
|
return value + newClass; |
|
} |
|
|
|
if (typeof module !== 'undefined' && module.exports) { |
|
classNames.default = classNames; |
|
module.exports = classNames; |
|
} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { |
|
// register as 'classnames', consistent with npm package name |
|
define('classnames', [], function () { |
|
return classNames; |
|
}); |
|
} else { |
|
window.classNames = classNames; |
|
} |
|
}());
|
|
|