Commit c0bb55d9b169c5943cb5dfabbd5a58a241a238af
new styles setup
mix irving committed on 2/21/2017, 10:22:50 PMParent: 4ed25d0653cf7fe85f8e3eb411723ec297f60638
Files changed
package.json | changed |
styles/css.js | added |
styles/mcss.js | added |
package.json | ||
---|---|---|
@@ -24,10 +24,12 @@ | ||
24 | 24 | "electro": "^2.0.3", |
25 | 25 | "electron": "^1.4.15", |
26 | 26 | "hypertabs": "^4.1.1", |
27 | 27 | "insert-css": "^2.0.0", |
28 | + "libnested": "^1.2.1", | |
28 | 29 | "micro-css": "^1.0.0", |
29 | 30 | "mutant": "^3.14.2", |
30 | 31 | "open-external": "^0.1.1", |
32 | + "read-directory": "^2.0.0", | |
31 | 33 | "setimmediate": "^1.0.5" |
32 | 34 | } |
33 | 35 | } |
styles/css.js | ||
---|---|---|
@@ -1,0 +1,37 @@ | ||
1 | +const { assign } = Object | |
2 | +const { each, map } = require('libnested') | |
3 | +const nest = require('depnest') | |
4 | + | |
5 | +exports.gives = nest('styles.css') | |
6 | + | |
7 | +exports.needs = { | |
8 | + styles: { | |
9 | + mcss: 'reduce', | |
10 | + mixins: 'reduce' | |
11 | + } | |
12 | +} | |
13 | + | |
14 | +exports.create = (api) => (sofar = {}) => { | |
15 | + const mcssObj = api.styles.mcss() | |
16 | + const mixinObj = api.styles.mixins() | |
17 | + | |
18 | + const mcssMixinsStr = mixinsToMcss(mixinObj) | |
19 | + const cssObj = mcssToCss(mcssObj, mcssMixinsStr) | |
20 | + return assign(sofar, cssObj) | |
21 | +} | |
22 | + | |
23 | +function mixinsToMcss (mixinsObj) { | |
24 | + var mcss = '' | |
25 | + each(mixinsObj, (mixinStr, [name]) => { | |
26 | + // QUESTION: are mixins mcss specific or should we convert to mcss here? | |
27 | + // as in, mixins are dom style objects and we use something like `inline-style` package | |
28 | + mcss += mixinStr +'\n' | |
29 | + }) | |
30 | + return mcss | |
31 | +} | |
32 | + | |
33 | +function mcssToCss (mcssObj, mixinsStr) { | |
34 | + return map(mcssObj, (mcssStr, [name]) => { | |
35 | + return compile(mixinsStr + '\n' + mcssStr) | |
36 | + }) | |
37 | +} |
styles/mcss.js | ||
---|---|---|
@@ -1,0 +1,18 @@ | ||
1 | +const { basename } = require('path') | |
2 | +const readDirectory = require('read-directory') | |
3 | +const { each } = require('libnested') | |
4 | +const nest = require('depnest') | |
5 | + | |
6 | +const contents = readDirectory.sync(__dirname, { | |
7 | + extensions: false, | |
8 | + filter: '**/*.mcss' | |
9 | +}) | |
10 | + | |
11 | +exports.gives = nest('styles.mcss') | |
12 | +exports.create = () => (sofar = {}) => { | |
13 | + each(contents, (content, [filename]) => { | |
14 | + const name = basename(filename) | |
15 | + sofar[name] = content | |
16 | + }) | |
17 | + return sofar | |
18 | +} |
Built with git-ssb-web