File tree Expand file tree Collapse file tree 4 files changed +81
-2
lines changed Expand file tree Collapse file tree 4 files changed +81
-2
lines changed Original file line number Diff line number Diff line change
1
+ import { createElement as h } from 'react' ;
2
+ import { storiesOf } from '@storybook/react' ;
3
+ const { action} = require ( '@storybook/addon-actions' ) ;
4
+ const { linkTo} = require ( '@storybook/addon-links' ) ;
5
+ const { create} = require ( '../index' ) ;
6
+ const { addon : addonRule } = require ( '../addon/rule' ) ;
7
+ const { addon : addonPrefixer } = require ( '../addon/inline-style-prefixer' ) ;
8
+
9
+ const renderer = create ( ) ;
10
+ addonRule ( renderer ) ;
11
+ addonPrefixer ( renderer ) ;
12
+ const { rule} = renderer ;
13
+
14
+ const className1 = rule ( {
15
+ alignItems : 'center'
16
+ } ) ;
17
+
18
+ storiesOf ( 'Addons/inline-style-prefixer' , module )
19
+ . add ( 'Default' , ( ) =>
20
+ h ( 'div' , { className : className1 } , 'Hello world' )
21
+ )
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ var prefixAll = require ( 'inline-style-prefixer/static' ) ;
4
+
5
+ var CAMEL_REGEX = / - [ a - z \u00E0 - \u00F6 \u00F8 - \u00FE ] / g;
6
+
7
+ var matchCallback = function ( match ) {
8
+ return match . slice ( 1 ) . toUpperCase ( ) ;
9
+ } ;
10
+
11
+ exports . addon = function ( renderer ) {
12
+ var decl = renderer . decl ;
13
+
14
+ renderer . toCamel = function ( prop ) {
15
+ return prop . replace ( CAMEL_REGEX , matchCallback ) ;
16
+ } ;
17
+
18
+ renderer . prefix = function ( prop , value ) {
19
+ var obj = { } ;
20
+ obj [ renderer . toCamel ( prop ) ] = value ;
21
+ obj = prefixAll ( obj ) ;
22
+
23
+ var str = '' ;
24
+
25
+ for ( var propPrefixed in obj ) {
26
+ str += propPrefixed + ':' + obj [ propPrefixed ] + ';' ;
27
+ }
28
+
29
+ return str ;
30
+ } ;
31
+
32
+ renderer . decl = function ( prop , value ) {
33
+ var str = decl ( prop , value ) ;
34
+ var declarations = str . split ( ';' ) ;
35
+
36
+ if ( ! declarations . length ) {
37
+ return str ;
38
+ }
39
+
40
+ var prefixed = '' ;
41
+
42
+ for ( var i = 0 ; i < declarations . length ; i ++ ) {
43
+ var declaration = declarations [ i ] ;
44
+
45
+ if ( declaration ) {
46
+ var pos = declaration . indexOf ( ':' ) ;
47
+
48
+ prefixed += renderer . prefix ( declaration . substr ( 0 , pos ) , declaration . substr ( pos + 1 ) ) ;
49
+ }
50
+ }
51
+
52
+ return prefixed ;
53
+ } ;
54
+ } ;
Original file line number Diff line number Diff line change @@ -20,8 +20,11 @@ exports.create = function (config) {
20
20
client : typeof window === 'object' ,
21
21
assign : assign ,
22
22
stringify : JSON . stringify ,
23
+ toKebab : function ( prop ) {
24
+ return prop . replace ( KEBAB_REGEX , '-$&' ) . toLowerCase ( ) ;
25
+ } ,
23
26
decl : function ( key , value ) {
24
- key = key . replace ( KEBAB_REGEX , '-$&' ) . toLowerCase ( ) ;
27
+ key = renderer . toKebab ( key ) ;
25
28
return key + ':' + value + ';' ;
26
29
} ,
27
30
hash : function ( obj ) {
Original file line number Diff line number Diff line change 37
37
},
38
38
"dependencies" : {
39
39
"fastest-stable-stringify" : " ^1.0.1" ,
40
- "stylis" : " 3.5.0"
40
+ "stylis" : " 3.5.0" ,
41
+ "inline-style-prefixer" : " ^4.0.0"
41
42
},
42
43
"devDependencies" : {
43
44
"@types/react" : " 16.0.40" ,
You can’t perform that action at this time.
0 commit comments