This repository was archived by the owner on Aug 31, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathcreateRenderer.js
65 lines (58 loc) · 2.06 KB
/
createRenderer.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import { createRenderer as createFelaRenderer } from 'fela';
import prefixer from 'fela-plugin-prefixer';
import fallbackValue from 'fela-plugin-fallback-value';
import unit from 'fela-plugin-unit';
import lvha from 'fela-plugin-lvha';
import validator from 'fela-plugin-validator';
import embedded from 'fela-plugin-embedded';
import beautifier from 'fela-beautifier';
import namedMediaQuery from 'fela-plugin-named-media-query';
import whitelistMediaQuery from './whitelistMediaQuery';
import { variables } from 'cf-style-const';
const defaultOpts = {
dev: false
};
const mediaQueries = {
mobile: `@media (min-width: ${variables.breakpoints.mobile})`,
mobileWide: `@media (min-width: ${variables.breakpoints.mobileWide})`,
tablet: `@media (min-width: ${variables.breakpoints.tablet})`,
tabletLegacy: `@media (min-width: ${variables.breakpoints.tabletLegacy})`,
tabletWide: `@media (min-width: ${variables.breakpoints.tabletWide})`,
desktop: `@media (min-width: ${variables.breakpoints.desktop})`,
desktopLarge: `@media (min-width: ${variables.breakpoints.desktopLarge})`,
hover: `@media (hover)`
};
const removePrefix = query => query.replace('@media ', '');
const createRenderer = opts => {
const usedOpts = Object.assign({}, defaultOpts, opts);
const plugins = [
prefixer(),
fallbackValue(),
unit(),
lvha(),
embedded(),
namedMediaQuery(mediaQueries)
];
const enhancers = [];
if (usedOpts.dev === true) {
plugins.push(validator());
plugins.push(whitelistMediaQuery(mediaQueries));
enhancers.push(beautifier());
}
return createFelaRenderer({
plugins,
enhancers,
selectorPrefix: usedOpts.selectorPrefix,
mediaQueryOrder: [
removePrefix(mediaQueries.hover),
removePrefix(mediaQueries.mobile),
removePrefix(mediaQueries.mobileWide),
removePrefix(mediaQueries.tablet),
removePrefix(mediaQueries.tabletLegacy),
removePrefix(mediaQueries.tabletWide),
removePrefix(mediaQueries.desktop),
removePrefix(mediaQueries.desktopLarge)
]
});
};
export default createRenderer;