No classname will be generated from objects that have the "push" member set to true
micnic opened this issue · comments
In the following case all the classnames defined in the object are missing from the result:
clsx('stack', { pop: true, push: true }); // => 'stack'
This is caused by the if (!!mix.push) {
check for Array, this makes clsx
so fast, but I think it should be replaced with Array.isArray()
or at least add this case to readme to warn people that get into this issue.
Hey, thanks!
Yeah, I forgot to mention this. It actually wasn't for speed (Array.isArray
is really fast) but it was mostly for 100% browser support, including all old versions of IE. Most people won't care about this, but not 100% of people have that luxury (even today).
A silly side effect was that !!mix.push
was 6 fewer bytes 😆
Let me make the rounds and talk to some folks and see if they care about this change in support – the "floor" would still only be IE9.. still pretty far back.
I'd then release a minor with Array.isArray
support and a note for those who care about anything older.
As I know Array.isArray()
is supported by IE9
sources:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray#Browser_compatibility
https://kangax.github.io/compat-table/es5/ (check "Show obsolete platforms")
Yup, that's what I meant by "the floor would becomes IE9"
Still very good 👍 Especially when paired with a note for the ~6 people (maybe) who actually benefitted from the IE5-8 support 😜
I'll get to this this weekend – I started talking to some others & this does not appear to affect them.