classnames
Advanced tools
Comparing version 2.3.3 to 2.4.0
59
bind.js
@@ -14,31 +14,54 @@ /*! | ||
function classNames () { | ||
var classes = []; | ||
var classes = ''; | ||
for (var i = 0; i < arguments.length; i++) { | ||
var arg = arguments[i]; | ||
if (!arg) continue; | ||
if (arg) { | ||
classes = appendClass(classes, parseValue.call(this, arg)); | ||
} | ||
} | ||
var argType = typeof arg; | ||
return classes; | ||
} | ||
if (argType === 'string' || argType === 'number') { | ||
classes.push(this && this[arg] || arg); | ||
} else if (Array.isArray(arg)) { | ||
classes.push(classNames.apply(this, arg)); | ||
} else if (argType === 'object') { | ||
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) { | ||
classes.push(arg.toString()); | ||
continue; | ||
} | ||
function parseValue (arg) { | ||
if (typeof arg === 'string' || typeof arg === 'number') { | ||
return this && this[arg] || arg; | ||
} | ||
for (var key in arg) { | ||
if (hasOwn.call(arg, key) && arg[key]) { | ||
classes.push(this && this[key] || key); | ||
} | ||
} | ||
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.join(' '); | ||
return classes; | ||
} | ||
function appendClass (value, newClass) { | ||
if (!newClass) { | ||
return value; | ||
} | ||
if (value) { | ||
return value + ' ' + newClass; | ||
} | ||
return value + newClass; | ||
} | ||
if (typeof module !== 'undefined' && module.exports) { | ||
@@ -45,0 +68,0 @@ classNames.default = classNames; |
# Changelog | ||
## v2.4.0 / 2023-12-26 | ||
- Use string concatenation to increase performance thanks [Jon Koops](https://github.com/jonkoops) ([#336](https://github.com/JedWatson/classnames/pull/336)) | ||
## v2.3.3 / 2023-12-21 | ||
@@ -4,0 +8,0 @@ |
66
index.js
@@ -13,37 +13,55 @@ /*! | ||
function classNames() { | ||
var classes = []; | ||
function classNames () { | ||
var classes = ''; | ||
for (var i = 0; i < arguments.length; i++) { | ||
var arg = arguments[i]; | ||
if (!arg) continue; | ||
if (arg) { | ||
classes = appendClass(classes, parseValue(arg)); | ||
} | ||
} | ||
var argType = typeof arg; | ||
return classes; | ||
} | ||
if (argType === 'string' || argType === 'number') { | ||
classes.push(arg); | ||
} else if (Array.isArray(arg)) { | ||
if (arg.length) { | ||
var inner = classNames.apply(null, arg); | ||
if (inner) { | ||
classes.push(inner); | ||
} | ||
} | ||
} else if (argType === 'object') { | ||
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) { | ||
classes.push(arg.toString()); | ||
continue; | ||
} | ||
function parseValue (arg) { | ||
if (typeof arg === 'string' || typeof arg === 'number') { | ||
return arg; | ||
} | ||
for (var key in arg) { | ||
if (hasOwn.call(arg, key) && arg[key]) { | ||
classes.push(key); | ||
} | ||
} | ||
if (typeof arg !== 'object') { | ||
return ''; | ||
} | ||
if (Array.isArray(arg)) { | ||
return classNames.apply(null, 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, key); | ||
} | ||
} | ||
return classes.join(' '); | ||
return classes; | ||
} | ||
function appendClass (value, newClass) { | ||
if (!newClass) { | ||
return value; | ||
} | ||
if (value) { | ||
return value + ' ' + newClass; | ||
} | ||
return value + newClass; | ||
} | ||
if (typeof module !== 'undefined' && module.exports) { | ||
@@ -50,0 +68,0 @@ classNames.default = classNames; |
{ | ||
"name": "classnames", | ||
"version": "2.3.3", | ||
"version": "2.4.0", | ||
"description": "A simple utility for conditionally joining classNames together", | ||
@@ -14,6 +14,4 @@ "main": "index.js", | ||
"scripts": { | ||
"benchmarks": "node ./benchmarks/run", | ||
"benchmarks-browserify": "./node_modules/.bin/browserify ./benchmarks/runInBrowser.js >./benchmarks/runInBrowser.bundle.js", | ||
"dtslint": "dtslint", | ||
"test": "mocha tests/*.js" | ||
"test": "node --test ./tests/*.mjs", | ||
"check-types": "tsd" | ||
}, | ||
@@ -36,8 +34,11 @@ "keywords": [ | ||
], | ||
"workspaces": [ | ||
"benchmarks" | ||
], | ||
"devDependencies": { | ||
"benchmark": "^2.1.4", | ||
"browserify": "^17.0.0", | ||
"dtslint": "^4.0.9", | ||
"mocha": "^10.0.0" | ||
"tsd": "^0.30.0" | ||
}, | ||
"tsd": { | ||
"directory": "./tests" | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
22146
1
255