From de23a0926c2583db01e7df5ea9a134f5910f96a1 Mon Sep 17 00:00:00 2001 From: Anton Evzhakov Date: Sun, 11 Apr 2021 15:19:57 +0300 Subject: [PATCH] fix(core): remove unnecessary spread operators from css and cx (#746) (#749) --- packages/core/__tests__/cx.test.ts | 7 +++++++ packages/core/src/css.ts | 14 +++++++++----- packages/core/src/cx.ts | 10 +++++++--- 3 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 packages/core/__tests__/cx.test.ts diff --git a/packages/core/__tests__/cx.test.ts b/packages/core/__tests__/cx.test.ts new file mode 100644 index 000000000..97fabff40 --- /dev/null +++ b/packages/core/__tests__/cx.test.ts @@ -0,0 +1,7 @@ +import { cx } from '../src'; + +it('should filter falsy values', () => { + expect(cx('1', 'test', false, '2', 0, '', null, undefined, '3')).toBe( + '1 test 2 3' + ); +}); diff --git a/packages/core/src/css.ts b/packages/core/src/css.ts index f1af18493..82c977fa8 100644 --- a/packages/core/src/css.ts +++ b/packages/core/src/css.ts @@ -1,11 +1,15 @@ import type { CSSProperties } from './CSSProperties'; import type { StyledMeta } from './StyledMeta'; -export default function css( - _strings: TemplateStringsArray, - ..._exprs: Array -): string { +type CSS = ( + strings: TemplateStringsArray, + ...exprs: Array +) => string; + +const css: CSS = () => { throw new Error( 'Using the "css" tag in runtime is not supported. Make sure you have set up the Babel plugin correctly.' ); -} +}; + +export default css; diff --git a/packages/core/src/cx.ts b/packages/core/src/cx.ts index 191554c52..e34fae2d9 100644 --- a/packages/core/src/cx.ts +++ b/packages/core/src/cx.ts @@ -1,5 +1,9 @@ export type ClassName = string | false | void | null | 0; -export default function cx(...classNames: ClassName[]): string { - return classNames.filter(Boolean).join(' '); -} +type CX = (...classNames: ClassName[]) => string; + +const cx: CX = function cx() { + return Array.prototype.slice.call(arguments).filter(Boolean).join(' '); +}; + +export default cx;