UNPKG

849 BJavaScriptView Raw
1/**
2 * Module dependencies
3 */
4
5var postcss = require('postcss');
6var nested = require('postcss-nested');
7var DOM = require('./dom');
8var slice = Array.prototype.slice;
9
10module.exports = function(mod) {
11 var compiler = postcss([nested]);
12 return function(props) {
13 var out = mod.render(DOM, $get, props, null, genYield(props));
14 var str = Array.isArray(out) ? out.join('') : out;
15 return compiler.process(str).css;
16 };
17};
18
19function $get(path, parent, fallback) {
20 for (var i = 0; i < path.length; i++) {
21 if (!parent) return undefined;
22 parent = parent[path[i]];
23 }
24 return parent;
25}
26
27function genYield(props) {
28 return function $yield(name) {
29 if (!name) return props.children;
30 var prop = props[name];
31 if (typeof prop === 'function') return prop.apply(null, slice.call(arguments, 1));
32 return prop || '';
33 };
34}