@@ -14,20 +14,15 @@ const linkElement = (element: ReactElement, styles: Object, configuration: Objec
14
14
15
15
elementShallowCopy = element ;
16
16
17
- if ( Object . isFrozen && Object . isFrozen ( elementShallowCopy ) ) {
18
- elementIsFrozen = true ;
19
-
20
- // https://github.com/facebook/react/blob/v0.13.3/src/classic/element/ReactElement.js#L131
21
- elementShallowCopy = objectUnfreeze ( elementShallowCopy ) ;
22
- elementShallowCopy . props = objectUnfreeze ( elementShallowCopy . props ) ;
23
- }
17
+ let children = elementShallowCopy . props . children ;
18
+ let className = elementShallowCopy . props . className ;
24
19
25
20
const styleNames = parseStyleName ( elementShallowCopy . props . styleName || '' , configuration . allowMultiple ) ;
26
21
27
22
if ( React . isValidElement ( elementShallowCopy . props . children ) ) {
28
- elementShallowCopy . props . children = linkElement ( React . Children . only ( elementShallowCopy . props . children ) , styles , configuration ) ;
29
- } else if ( _ . isArray ( elementShallowCopy . props . children ) || isIterable ( elementShallowCopy . props . children ) ) {
30
- elementShallowCopy . props . children = React . Children . map ( elementShallowCopy . props . children , ( node ) => {
23
+ children = linkElement ( React . Children . only ( children ) , styles , configuration ) ;
24
+ } else if ( _ . isArray ( children ) || isIterable ( children ) ) {
25
+ children = React . Children . map ( children , ( node ) => {
31
26
if ( React . isValidElement ( node ) ) {
32
27
return linkElement ( node , styles , configuration ) ;
33
28
} else {
@@ -40,20 +35,15 @@ const linkElement = (element: ReactElement, styles: Object, configuration: Objec
40
35
appendClassName = generateAppendClassName ( styles , styleNames , configuration . errorWhenNotFound ) ;
41
36
42
37
if ( appendClassName ) {
43
- if ( elementShallowCopy . props . className ) {
44
- appendClassName = elementShallowCopy . props . className + ' ' + appendClassName ;
38
+ if ( className ) {
39
+ appendClassName = className + ' ' + appendClassName ;
45
40
}
46
41
47
- elementShallowCopy . props . className = appendClassName ;
42
+ className = appendClassName ;
48
43
}
49
44
}
50
45
51
- delete elementShallowCopy . props . styleName ;
52
-
53
- if ( elementIsFrozen ) {
54
- Object . freeze ( elementShallowCopy . props ) ;
55
- Object . freeze ( elementShallowCopy ) ;
56
- }
46
+ elementShallowCopy = React . cloneElement ( elementShallowCopy , { children, className, styleName : undefined } ) ;
57
47
58
48
return elementShallowCopy ;
59
49
} ;
0 commit comments