Skip to content

Commit 3927293

Browse files
Andaristemmatown
authored andcommittedOct 25, 2019
Add dev hint about css object (generated by Babel) being stringified by accident (#1569)
1 parent 9ff27de commit 3927293

File tree

12 files changed

+509
-133
lines changed

12 files changed

+509
-133
lines changed
 

‎.changeset/green-worms-grab.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'babel-plugin-emotion': patch
3+
'@emotion/babel-preset-css-prop': patch
4+
---
5+
6+
Add dev hint about css object (generated by Babel) being stringified by accident

‎packages/babel-plugin-emotion/__tests__/__snapshots__/css-requires-options.js.snap

+56-14
Large diffs are not rendered by default.

‎packages/babel-plugin-emotion/__tests__/__snapshots__/css.js.snap

+81-20
Large diffs are not rendered by default.

‎packages/babel-plugin-emotion/__tests__/__snapshots__/index.js.snap

+25-6
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ const SomeComponent = props => (
1616
1717
↓ ↓ ↓ ↓ ↓ ↓
1818
19+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
20+
1921
/** @jsx jsx */
2022
import { jsx, css } from '@emotion/core';
2123
@@ -25,7 +27,8 @@ var _ref = process.env.NODE_ENV === \\"production\\" ? {
2527
} : {
2628
name: \\"zszx19-SomeComponent\\",
2729
styles: \\"color:hotpink;;label:SomeComponent;\\",
28-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUtd2l0aC1jc3MtaW1wb3J0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtZIiwiZmlsZSI6ImNvcmUtd2l0aC1jc3MtaW1wb3J0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3gsIGNzcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnXG5cbmNvbnN0IFNvbWVDb21wb25lbnQgPSBwcm9wcyA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e2Nzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGB9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKVxuIl19 */\\"
30+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcmUtd2l0aC1jc3MtaW1wb3J0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtZIiwiZmlsZSI6ImNvcmUtd2l0aC1jc3MtaW1wb3J0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3gsIGNzcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnXG5cbmNvbnN0IFNvbWVDb21wb25lbnQgPSBwcm9wcyA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e2Nzc2BcbiAgICAgIGNvbG9yOiBob3RwaW5rO1xuICAgIGB9XG4gICAgey4uLnByb3BzfVxuICAvPlxuKVxuIl19 */\\",
31+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
2932
};
3033
3134
const SomeComponent = props => <div css={_ref} {...props} />;"
@@ -65,6 +68,8 @@ function Logo(props) {
6568
6669
↓ ↓ ↓ ↓ ↓ ↓
6770
71+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
72+
6873
// @flow
6974
import * as React from 'react';
7075
import { jsx } from '@emotion/core';
@@ -75,7 +80,8 @@ var _ref = process.env.NODE_ENV === \\"production\\" ? {
7580
} : {
7681
name: \\"1f6ttp4-Logo\\",
7782
styles: \\"display:block;;label:Logo;\\",
78-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9NIiwiZmlsZSI6ImZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vY29yZSdcblxuZnVuY3Rpb24gTG9nbyhwcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICBjc3M9e3tcbiAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgfX1cbiAgICAvPlxuICApXG59XG4iXX0= */\\"
83+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9NIiwiZmlsZSI6ImZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vY29yZSdcblxuZnVuY3Rpb24gTG9nbyhwcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICBjc3M9e3tcbiAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgfX1cbiAgICAvPlxuICApXG59XG4iXX0= */\\",
84+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
7985
};
8086
8187
function Logo(props) {
@@ -109,6 +115,8 @@ const SomeComponent = props => (
109115
110116
↓ ↓ ↓ ↓ ↓ ↓
111117
118+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
119+
112120
/** @jsx jsx */
113121
import { jsx } from '@emotion/core';
114122
@@ -118,7 +126,8 @@ var _ref = process.env.NODE_ENV === \\"production\\" ? {
118126
} : {
119127
name: \\"zszx19-SomeComponent\\",
120128
styles: \\"color:hotpink;;label:SomeComponent;\\",
121-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpzeC1ob2lzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLSSIsImZpbGUiOiJqc3gtaG9pc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnXG5cbmNvbnN0IFNvbWVDb21wb25lbnQgPSBwcm9wcyA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e3tcbiAgICAgIGNvbG9yOiAnaG90cGluaydcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbilcbiJdfQ== */\\"
129+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImpzeC1ob2lzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLSSIsImZpbGUiOiJqc3gtaG9pc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnXG5cbmNvbnN0IFNvbWVDb21wb25lbnQgPSBwcm9wcyA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e3tcbiAgICAgIGNvbG9yOiAnaG90cGluaydcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbilcbiJdfQ== */\\",
130+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
122131
};
123132
124133
const SomeComponent = props => <div css={_ref} {...props} />;"
@@ -142,6 +151,9 @@ function Logo(props) {
142151
↓ ↓ ↓ ↓ ↓ ↓
143152
144153
import _styled from \\"@emotion/styled-base\\";
154+
155+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
156+
145157
// @flow
146158
import * as React from 'react';
147159
import { jsx } from '@emotion/core';
@@ -155,7 +167,8 @@ const MyObject = {
155167
} : {
156168
name: \\"1lrxbo5\\",
157169
styles: \\"color:hotpink;\\",
158-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9iamVjdC1wcm9wZXJ0eS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNYyIsImZpbGUiOiJvYmplY3QtcHJvcGVydHkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJ1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5cbmNvbnN0IE15T2JqZWN0ID0ge1xuICBNeVByb3BlcnR5OiBzdHlsZWQuZGl2KHsgY29sb3I6ICdob3RwaW5rJyB9KVxufVxuXG5mdW5jdGlvbiBMb2dvKHByb3BzKSB7XG4gIHJldHVybiA8TXlPYmplY3QuTXlQcm9wZXJ0eSAvPlxufVxuIl19 */\\"
170+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9iamVjdC1wcm9wZXJ0eS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNYyIsImZpbGUiOiJvYmplY3QtcHJvcGVydHkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJ1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5cbmNvbnN0IE15T2JqZWN0ID0ge1xuICBNeVByb3BlcnR5OiBzdHlsZWQuZGl2KHsgY29sb3I6ICdob3RwaW5rJyB9KVxufVxuXG5mdW5jdGlvbiBMb2dvKHByb3BzKSB7XG4gIHJldHVybiA8TXlPYmplY3QuTXlQcm9wZXJ0eSAvPlxufVxuIl19 */\\",
171+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
159172
})
160173
};
161174
@@ -181,6 +194,8 @@ const SomeComponent = props => (
181194
182195
↓ ↓ ↓ ↓ ↓ ↓
183196
197+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
198+
184199
/** @jsx jsx */
185200
import { jsx } from '@emotion/core';
186201
@@ -190,7 +205,8 @@ var _ref = process.env.NODE_ENV === \\"production\\" ? {
190205
} : {
191206
name: \\"dwt66v-SomeComponent\\",
192207
styles: \\"color:hotpink;background-color:green;;label:SomeComponent;\\",
193-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YXRpYy1vYmplY3Qtd2l0aC1jYW1lbC1jYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtJIiwiZmlsZSI6InN0YXRpYy1vYmplY3Qtd2l0aC1jYW1lbC1jYXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJ1xuXG5jb25zdCBTb21lQ29tcG9uZW50ID0gcHJvcHMgPT4gKFxuICA8ZGl2XG4gICAgY3NzPXt7XG4gICAgICBjb2xvcjogJ2hvdHBpbmsnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnZ3JlZW4nXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pXG4iXX0= */\\"
208+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YXRpYy1vYmplY3Qtd2l0aC1jYW1lbC1jYXNlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtJIiwiZmlsZSI6InN0YXRpYy1vYmplY3Qtd2l0aC1jYW1lbC1jYXNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJ1xuXG5jb25zdCBTb21lQ29tcG9uZW50ID0gcHJvcHMgPT4gKFxuICA8ZGl2XG4gICAgY3NzPXt7XG4gICAgICBjb2xvcjogJ2hvdHBpbmsnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAnZ3JlZW4nXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pXG4iXX0= */\\",
209+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
194210
};
195211
196212
const SomeComponent = props => <div css={_ref} {...props} />;"
@@ -218,6 +234,8 @@ const SomeComponent = props => {
218234
219235
↓ ↓ ↓ ↓ ↓ ↓
220236
237+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
238+
221239
/** @jsx jsx */
222240
import { jsx } from '@emotion/core';
223241
@@ -227,7 +245,8 @@ var _ref = process.env.NODE_ENV === \\"production\\" ? {
227245
} : {
228246
name: \\"1vvht02-SomeComponent\\",
229247
styles: \\"color:green;:hover{color:hotpink;};label:SomeComponent;\\",
230-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YXRpYy1vYmplY3Qtd2l0aC1jaGlsZC1zZWxlY3RvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT00iLCJmaWxlIjoic3RhdGljLW9iamVjdC13aXRoLWNoaWxkLXNlbGVjdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJ1xuXG5jb25zdCBTb21lQ29tcG9uZW50ID0gcHJvcHMgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17e1xuICAgICAgICBjb2xvcjogJ2dyZWVuJyxcbiAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICBjb2xvcjogJ2hvdHBpbmsnXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuIl19 */\\"
248+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YXRpYy1vYmplY3Qtd2l0aC1jaGlsZC1zZWxlY3RvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT00iLCJmaWxlIjoic3RhdGljLW9iamVjdC13aXRoLWNoaWxkLXNlbGVjdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBAanN4IGpzeCAqL1xuXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJ1xuXG5jb25zdCBTb21lQ29tcG9uZW50ID0gcHJvcHMgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17e1xuICAgICAgICBjb2xvcjogJ2dyZWVuJyxcbiAgICAgICAgJzpob3Zlcic6IHtcbiAgICAgICAgICBjb2xvcjogJ2hvdHBpbmsnXG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKVxufVxuIl19 */\\",
249+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
231250
};
232251
233252
const SomeComponent = props => {

‎packages/babel-plugin-emotion/__tests__/__snapshots__/styled.js.snap

+51-13
Large diffs are not rendered by default.

‎packages/babel-plugin-emotion/__tests__/__snapshots__/vanilla-emotion.js.snap

+57-20
Large diffs are not rendered by default.

‎packages/babel-plugin-emotion/__tests__/css-macro/__snapshots__/index.js.snap

+77-19
Large diffs are not rendered by default.

‎packages/babel-plugin-emotion/__tests__/source-maps/__snapshots__/index.js.snap

+22-5
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,17 @@ css({ color: 'hotpink' })
99
↓ ↓ ↓ ↓ ↓ ↓
1010
1111
import _css from \\"@emotion/css\\";
12+
13+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
14+
1215
process.env.NODE_ENV === \\"production\\" ? {
1316
name: \\"1lrxbo5\\",
1417
styles: \\"color:hotpink;\\"
1518
} : {
1619
name: \\"1lrxbo5\\",
1720
styles: \\"color:hotpink;\\",
18-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSIsImZpbGUiOiJzb3VyY2UtbWFwLnRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3NzIGZyb20gJ0BlbW90aW9uL2NzcydcblxuY3NzKHsgY29sb3I6ICdob3RwaW5rJyB9KVxuIl19 */\\"
21+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSIsImZpbGUiOiJzb3VyY2UtbWFwLnRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3NzIGZyb20gJ0BlbW90aW9uL2NzcydcblxuY3NzKHsgY29sb3I6ICdob3RwaW5rJyB9KVxuIl19 */\\",
22+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
1923
};"
2024
`;
2125

@@ -28,6 +32,8 @@ const SomeComponent = props => <div css={{ color: 'hotpink' }} {...props} />
2832
2933
↓ ↓ ↓ ↓ ↓ ↓
3034
35+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
36+
3137
/** @jsx jsx */
3238
import { jsx } from '@emotion/core';
3339
@@ -37,7 +43,8 @@ var _ref = process.env.NODE_ENV === \\"production\\" ? {
3743
} : {
3844
name: \\"zszx19-SomeComponent\\",
3945
styles: \\"color:hotpink;;label:SomeComponent;\\",
40-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHb0MiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJ1xuXG5jb25zdCBTb21lQ29tcG9uZW50ID0gcHJvcHMgPT4gPGRpdiBjc3M9e3sgY29sb3I6ICdob3RwaW5rJyB9fSB7Li4ucHJvcHN9IC8+XG4iXX0= */\\"
46+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHb0MiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJ1xuXG5jb25zdCBTb21lQ29tcG9uZW50ID0gcHJvcHMgPT4gPGRpdiBjc3M9e3sgY29sb3I6ICdob3RwaW5rJyB9fSB7Li4ucHJvcHN9IC8+XG4iXX0= */\\",
47+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
4148
};
4249
4350
const SomeComponent = props => <div css={_ref} {...props} />;"
@@ -82,13 +89,17 @@ css\`
8289
↓ ↓ ↓ ↓ ↓ ↓
8390
8491
import _css from \\"@emotion/css\\";
92+
93+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
94+
8595
process.env.NODE_ENV === \\"production\\" ? {
8696
name: \\"1lrxbo5\\",
8797
styles: \\"color:hotpink;\\"
8898
} : {
8999
name: \\"1lrxbo5\\",
90100
styles: \\"color:hotpink;\\",
91-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFRyIsImZpbGUiOiJzb3VyY2UtbWFwLnRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3NzIGZyb20gJ0BlbW90aW9uL2NzcydcblxuY3NzYFxuICBjb2xvcjogaG90cGluaztcbmBcbiJdfQ== */\\"
101+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFRyIsImZpbGUiOiJzb3VyY2UtbWFwLnRlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3NzIGZyb20gJ0BlbW90aW9uL2NzcydcblxuY3NzYFxuICBjb2xvcjogaG90cGluaztcbmBcbiJdfQ== */\\",
102+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
92103
};"
93104
`;
94105

@@ -130,6 +141,8 @@ const SomeComponent = styled.div({
130141
131142
import _styled from \\"@emotion/styled-base\\";
132143
144+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
145+
133146
const SomeComponent = _styled(\\"div\\", {
134147
target: \\"eb28ebz0\\",
135148
label: \\"SomeComponent\\"
@@ -139,7 +152,8 @@ const SomeComponent = _styled(\\"div\\", {
139152
} : {
140153
name: \\"1lrxbo5\\",
141154
styles: \\"color:hotpink;\\",
142-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFc0IiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5cbmNvbnN0IFNvbWVDb21wb25lbnQgPSBzdHlsZWQuZGl2KHtcbiAgY29sb3I6ICdob3RwaW5rJ1xufSlcbiJdfQ== */\\"
155+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFc0IiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5cbmNvbnN0IFNvbWVDb21wb25lbnQgPSBzdHlsZWQuZGl2KHtcbiAgY29sb3I6ICdob3RwaW5rJ1xufSlcbiJdfQ== */\\",
156+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
143157
});"
144158
`;
145159

@@ -155,6 +169,8 @@ const SomeComponent = styled.div\`
155169
156170
import _styled from \\"@emotion/styled-base\\";
157171
172+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
173+
158174
const SomeComponent = _styled(\\"div\\", {
159175
target: \\"eb28ebz0\\",
160176
label: \\"SomeComponent\\"
@@ -164,6 +180,7 @@ const SomeComponent = _styled(\\"div\\", {
164180
} : {
165181
name: \\"1lrxbo5\\",
166182
styles: \\"color:hotpink;\\",
167-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFZ0MiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5cbmNvbnN0IFNvbWVDb21wb25lbnQgPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogaG90cGluaztcbmBcbiJdfQ== */\\"
183+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS1tYXAudGVzdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFZ0MiLCJmaWxlIjoic291cmNlLW1hcC50ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5cbmNvbnN0IFNvbWVDb21wb25lbnQgPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogaG90cGluaztcbmBcbiJdfQ== */\\",
184+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
168185
});"
169186
`;

‎packages/babel-plugin-emotion/__tests__/styled-macro/__snapshots__/index.js.snap

+45-13
Large diffs are not rendered by default.

‎packages/babel-plugin-emotion/__tests__/vanilla-emotion-macro/__snapshots__/index.js.snap

+57-20
Large diffs are not rendered by default.

‎packages/babel-plugin-emotion/src/utils/transform-expression-with-styles.js

+28-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ import { simplifyObject } from './object-to-string'
88
import { appendStringToArguments, joinStringLiterals } from './strings'
99
import { isTaggedTemplateExpressionTranspiledByTypeScript } from './checks'
1010

11+
const CSS_OBJECT_STRINGIFIED_ERROR =
12+
"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."
13+
14+
// with babel@6 fallback
15+
const cloneNode = (t, node) =>
16+
typeof t.cloneNode === 'function' ? t.cloneNode(node) : t.cloneDeep(node)
17+
1118
function createSourceMapConditional(t, production, development) {
1219
return t.conditionalExpression(
1320
t.binaryExpression(
@@ -91,10 +98,29 @@ export let transformExpressionWithStyles = ({
9198
])
9299
let node = prodNode
93100
if (sourceMap) {
101+
if (!state.emotionStringifiedCssId) {
102+
const uid = state.file.scope.generateUidIdentifier(
103+
'__EMOTION_STRINGIFIED_CSS_ERROR__'
104+
)
105+
state.emotionStringifiedCssId = uid
106+
const cssObjectToString = t.functionDeclaration(
107+
uid,
108+
[],
109+
t.blockStatement([
110+
t.returnStatement(t.stringLiteral(CSS_OBJECT_STRINGIFIED_ERROR))
111+
])
112+
)
113+
cssObjectToString._compact = true
114+
state.file.path.unshiftContainer('body', [cssObjectToString])
115+
}
94116
let devNode = t.objectExpression([
95117
t.objectProperty(t.identifier('name'), t.stringLiteral(res.name)),
96118
t.objectProperty(t.identifier('styles'), t.stringLiteral(res.styles)),
97-
t.objectProperty(t.identifier('map'), t.stringLiteral(sourceMap))
119+
t.objectProperty(t.identifier('map'), t.stringLiteral(sourceMap)),
120+
t.objectProperty(
121+
t.identifier('toString'),
122+
cloneNode(t, state.emotionStringifiedCssId)
123+
)
98124
])
99125
node = createSourceMapConditional(t, prodNode, devNode)
100126
}
@@ -128,7 +154,7 @@ export let transformExpressionWithStyles = ({
128154
t.binaryExpression(
129155
'+',
130156
lastElement.node,
131-
t.cloneNode(sourceMapConditional)
157+
cloneNode(t, sourceMapConditional)
132158
)
133159
)
134160
})

‎packages/babel-preset-css-prop/__tests__/__snapshots__/index.js.snap

+4-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ import { jsx as ___EmotionJSX } from \\"@emotion/core\\";
2323
2424
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2525
26+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return \\"You have tried to stringify object returned from \`css\` function. It isn't supposed to be used directly (e.g. as value of the \`className\` prop), but rather handed to emotion so it can handle it (e.g. as value of \`css\` prop).\\"; }
27+
2628
import * as React from 'react';
2729
2830
var _ref = process.env.NODE_ENV === \\"production\\" ? {
@@ -31,7 +33,8 @@ var _ref = process.env.NODE_ENV === \\"production\\" ? {
3133
} : {
3234
name: \\"1q24rv0-Button\\",
3335
styles: \\"color:hotpink;;label:Button;\\",
34-
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1RIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBsZXQgQnV0dG9uID0gcHJvcHMgPT4ge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGNvbG9yOiAnaG90cGluaydcbiAgICAgICAgfX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\\"
36+
map: \\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1RIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmV4cG9ydCBsZXQgQnV0dG9uID0gcHJvcHMgPT4ge1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNzcz17e1xuICAgICAgICAgIGNvbG9yOiAnaG90cGluaydcbiAgICAgICAgfX1cbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKVxufVxuIl19 */\\",
37+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
3538
};
3639
3740
export let Button = props => {

0 commit comments

Comments
 (0)
Please sign in to comment.