Skip to content

Commit 8a0a61d

Browse files
committed
Move createStyled to the separate file
1 parent 41a24aa commit 8a0a61d

3 files changed

Lines changed: 56 additions & 58 deletions

File tree

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ const styled = Styled({
4444
baseButton: {
4545
padding: 10,
4646
'& + &': {
47-
marginLeft: 10
47+
marginLeft; 10
4848
}
4949
}
5050
})
@@ -73,11 +73,14 @@ const MyStyledComponent = injectStyled(styled)(MyComponent)
7373

7474
### With custom JSS setup:
7575

76+
`styled-jss` use [jss-preset-default](https://github.com/cssinjs/jss-preset-default) by default.
77+
But you can require `createStyled` and provide your custom jss instance.
78+
7679
```js
7780
import { create as createJss } from 'jss'
7881
import vendorPrefixer from 'jss-vendor-prefixer'
7982

80-
import { createStyled } from 'styled-jss'
83+
import createStyled from 'styled-jss/createStyled'
8184

8285
const jss = createJss()
8386
jss.use(vendorPrefixer())

src/createStyled.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import styled from './styled'
2+
3+
import type {
4+
BaseStylesType,
5+
ComponentStyleType,
6+
StyledType,
7+
StyledElementAttrsType,
8+
StyledElementType,
9+
TagNameOrStyledElementType
10+
} from './types'
11+
12+
const createStyled = (jss: Function) => (
13+
baseStyles: BaseStylesType = {}
14+
): StyledType => {
15+
let staticSheet
16+
let dynamicSheet
17+
18+
const mountSheets = () => {
19+
if (!staticSheet) {
20+
staticSheet = jss.createStyleSheet(baseStyles, {
21+
meta: 'StaticBaseSheet',
22+
}).attach()
23+
24+
dynamicSheet = jss.createStyleSheet({}, {
25+
link: true,
26+
meta: 'DynamicComponentSheet',
27+
}).attach()
28+
}
29+
30+
return {staticSheet, dynamicSheet}
31+
}
32+
33+
return Object.assign((
34+
tagNameOrStyledElement: TagNameOrStyledElementType,
35+
ownStyle: ComponentStyleType
36+
): StyledElementType => {
37+
const {tagName, style}: StyledElementAttrsType = typeof tagNameOrStyledElement === 'string'
38+
? {tagName: tagNameOrStyledElement, style: {}}
39+
: tagNameOrStyledElement
40+
41+
const elementStyle = {...style, ...ownStyle}
42+
43+
return styled({tagName, baseStyles, elementStyle, mountSheets})
44+
}, {mountSheets, styles: baseStyles})
45+
}
46+
47+
export default createStyled

src/index.js

Lines changed: 4 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,11 @@
11
import {create as createJss} from 'jss'
22
import preset from 'jss-preset-default'
33

4-
import styled from './styled'
5-
import type {
6-
BaseStylesType,
7-
ComponentStyleType,
8-
StyledType,
9-
StyledElementAttrsType,
10-
StyledElementType,
11-
TagNameOrStyledElementType
12-
} from './types'
4+
import createStyled from './createStyled'
135

14-
const jssDefault = createJss(preset())
6+
const jss: Function = createJss(preset())
157

16-
const createStyled = (
17-
jss?: Function = jssDefault
18-
) => (
19-
baseStyles: BaseStylesType = {}
20-
): StyledType => {
21-
let staticSheet
22-
let dynamicSheet
23-
24-
const mountSheets = () => {
25-
if (!staticSheet) {
26-
staticSheet = jss.createStyleSheet(baseStyles, {
27-
meta: 'StaticBaseSheet',
28-
}).attach()
29-
30-
dynamicSheet = jss.createStyleSheet({}, {
31-
link: true,
32-
meta: 'DynamicComponentSheet',
33-
}).attach()
34-
}
35-
36-
return {staticSheet, dynamicSheet}
37-
}
38-
39-
return Object.assign((
40-
tagNameOrStyledElement: TagNameOrStyledElementType,
41-
ownStyle: ComponentStyleType
42-
): StyledElementType => {
43-
const {tagName, style}: StyledElementAttrsType = typeof tagNameOrStyledElement === 'string'
44-
? {tagName: tagNameOrStyledElement, style: {}}
45-
: tagNameOrStyledElement
46-
47-
const elementStyle = {...style, ...ownStyle}
48-
49-
return styled({tagName, baseStyles, elementStyle, mountSheets})
50-
}, {mountSheets, styles: baseStyles})
51-
}
52-
53-
const defaultStyledCreator = createStyled()
54-
const defaultStyled = defaultStyledCreator()
55-
56-
export {
57-
createStyled,
58-
defaultStyledCreator as Styled,
59-
}
60-
61-
export default defaultStyled
8+
export const Styled = createStyled(jss)
9+
export default Styled()
6210

6311
export {default as injectStyled} from './injectStyled'

0 commit comments

Comments
 (0)