Skip to content

Commit 1d509ed

Browse files
committedMar 14, 2018
feat: add dsheet() interface
1 parent 50fa646 commit 1d509ed

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed
 

‎.storybook/drule.stories.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,8 @@ storiesOf('drule()', module)
2222
h('div', {className: '' + className1}, 'Hello world')
2323
)
2424
.add('Dynamic styles', () =>
25-
h('div', {className: className1({fontWeight: 'bold'})}, 'Hello world')
25+
h('div', null,
26+
h('div', {className: className1({fontWeight: 'bold'})}, 'Hello world'),
27+
h('div', {className: className1({color: 'blue'})}, 'Hello world')
28+
)
2629
)

‎addon/dsheet.js

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
'use strict';
2+
3+
exports.addon = function (renderer) {
4+
if (process.env.NODE_ENV !== 'production') {
5+
require('./__dev__/warnOnMissingDependencies')('dsheet', renderer, ['sheet', 'cache']);
6+
}
7+
8+
renderer.dsheet = function (map, block) {
9+
var styles = renderer.sheet(map, block);
10+
var closures = {};
11+
12+
var createClosure = function (modifier) {
13+
var closure = function (dynamicStyles) {
14+
if (!dynamicStyles) {
15+
return styles[modifier];
16+
}
17+
18+
var dynamicClassName = renderer.cache(dynamicStyles);
19+
20+
return styles[modifier] + dynamicClassName;
21+
};
22+
23+
closure.toString = function () {
24+
return styles[modifier];
25+
};
26+
27+
return closure;
28+
};
29+
30+
for (var modifier in map) {
31+
closures[modifier] = createClosure(modifier);
32+
}
33+
34+
return closures;
35+
};
36+
};

0 commit comments

Comments
 (0)