-
-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathindex.js
31 lines (27 loc) · 967 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const sass = require('node-sass');
const path = require('path');
module.exports = (css, settings) => {
const cssWithPlaceholders = css
.replace(/%%styled-jsx-placeholder-(\d+)%%(\w*\s*[),;!{])/g, (_, id, p1) =>
`styled-jsx-placeholder-${id}-${p1}`
)
.replace(/%%styled-jsx-placeholder-(\d+)%%/g, (_, id) =>
`/*%%styled-jsx-placeholder-${id}%%*/`
)
// Prepend option data to cssWithPlaceholders
const optionData = settings.sassOptions && settings.sassOptions.data || "";
const data = optionData + "\n" + cssWithPlaceholders;
const preprocessed = sass.renderSync(
Object.assign(
{},
settings.sassOptions,
{ data }
)).css.toString()
return preprocessed
.replace(/styled-jsx-placeholder-(\d+)-(\w*\s*[),;!{])/g, (_, id, p1) =>
`%%styled-jsx-placeholder-${id}%%${p1}`
)
.replace(/\/\*%%styled-jsx-placeholder-(\d+)%%\*\//g, (_, id) =>
`%%styled-jsx-placeholder-${id}%%`
)
}