File tree Expand file tree Collapse file tree 3 files changed +55
-0
lines changed
packages/babel-plugin/src Expand file tree Collapse file tree 3 files changed +55
-0
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ ' @vanilla-extract/babel-plugin ' : patch
3+ ---
4+
5+ Handle array destructuring from ` createTheme ` when it's already been compiled
Original file line number Diff line number Diff line change @@ -411,6 +411,32 @@ describe('babel plugin', () => {
411411 ` ) ;
412412 } ) ;
413413
414+ it ( 'should handle createTheme using destructuring when already compiled' , ( ) => {
415+ const source = `
416+ import { createTheme } from '@vanilla-extract/css';
417+
418+ var _createTheme = createTheme({}),
419+ _createTheme2 = _slicedToArray(_createTheme, 2),
420+ myThemeClass = _createTheme2[0],
421+ vars = _createTheme2[1];
422+ ` ;
423+
424+ expect ( transform ( source ) ) . toMatchInlineSnapshot ( `
425+ "import * as __vanilla_filescope__ from '@vanilla-extract/css/fileScope';
426+
427+ __vanilla_filescope__.setFileScope(\\"src/dir/mockFilename.css.ts\\", \\"@vanilla-extract/babel-plugin\\");
428+
429+ import { createTheme } from '@vanilla-extract/css';
430+
431+ var _createTheme = createTheme({}, \\"myThemeClass\\"),
432+ _createTheme2 = _slicedToArray(_createTheme, 2),
433+ myThemeClass = _createTheme2[0],
434+ vars = _createTheme2[1];
435+
436+ __vanilla_filescope__.endFileScope();"
437+ ` ) ;
438+ } ) ;
439+
414440 it ( 'should handle createGlobalTheme' , ( ) => {
415441 const source = `
416442 import { createGlobalTheme } from '@vanilla-extract/css';
Original file line number Diff line number Diff line change @@ -87,6 +87,30 @@ const getDebugId = (path: NodePath<t.CallExpression>) => {
8787 return ;
8888 }
8989
90+ // Special case: Handle `export const [themeClass, vars] = createTheme({});`
91+ // when it's already been compiled into this:
92+ //
93+ // var _createTheme = createTheme({}),
94+ // _createTheme2 = _slicedToArray(_createTheme, 2),
95+ // themeClass = _createTheme2[0],
96+ // vars = _createTheme2[1];
97+ if (
98+ t . isVariableDeclaration ( firstRelevantParentPath . parent ) &&
99+ firstRelevantParentPath . parent . declarations . length === 4
100+ ) {
101+ const [ themeDeclarator , , classNameDeclarator ] =
102+ firstRelevantParentPath . parent . declarations ;
103+
104+ if (
105+ t . isCallExpression ( themeDeclarator . init ) &&
106+ t . isIdentifier ( themeDeclarator . init . callee , { name : 'createTheme' } ) &&
107+ t . isVariableDeclarator ( classNameDeclarator ) &&
108+ t . isIdentifier ( classNameDeclarator . id )
109+ ) {
110+ return classNameDeclarator . id . name ;
111+ }
112+ }
113+
90114 const relevantParent = firstRelevantParentPath . node ;
91115
92116 if (
You can’t perform that action at this time.
0 commit comments