@@ -22,22 +22,19 @@ const linkArray = (array: Array, styles: Object, configuration: Object) => {
22
22
23
23
const linkElement = ( element : ReactElement , styles : Object , configuration : Object ) : ReactElement => {
24
24
let appendClassName ;
25
- let elementIsFrozen ;
26
25
let elementShallowCopy ;
27
26
28
27
elementShallowCopy = element ;
29
- elementIsFrozen = Object . isFrozen && (
30
- Object . isFrozen ( elementShallowCopy ) ||
31
- Object . isFrozen ( elementShallowCopy . props )
32
- ) || Object . isExtensible && (
33
- ! Object . isExtensible ( elementShallowCopy ) ||
34
- ! Object . isExtensible ( elementShallowCopy . props )
35
- ) ;
28
+
29
+ const elementIsFrozen = Object . isFrozen && Object . isFrozen ( elementShallowCopy ) ;
30
+ const propsNotExtensible = Object . isExtensible && ! Object . isExtensible ( elementShallowCopy . props ) ;
36
31
37
32
if ( elementIsFrozen ) {
38
33
// https://github.com/facebook/react/blob/v0.13.3/src/classic/element/ReactElement.js#L131
39
34
elementShallowCopy = objectUnfreeze ( elementShallowCopy ) ;
40
35
elementShallowCopy . props = objectUnfreeze ( elementShallowCopy . props ) ;
36
+ } else if ( propsNotExtensible ) {
37
+ elementShallowCopy . props = objectUnfreeze ( elementShallowCopy . props ) ;
41
38
}
42
39
43
40
const styleNames = parseStyleName ( elementShallowCopy . props . styleName || '' , configuration . allowMultiple ) ;
@@ -83,6 +80,10 @@ const linkElement = (element: ReactElement, styles: Object, configuration: Objec
83
80
Object . freeze ( elementShallowCopy ) ;
84
81
}
85
82
83
+ if ( propsNotExtensible ) {
84
+ Object . preventExtensions ( elementShallowCopy . props ) ;
85
+ }
86
+
86
87
return elementShallowCopy ;
87
88
} ;
88
89
0 commit comments