From 97b3a91c0e2b703d750babbeda006de6105c4540 Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher Date: Wed, 30 Dec 2015 13:59:29 -0800 Subject: [PATCH] [add] StyleSheet: immutable style in development Fix #66 --- src/modules/StyleSheet/index.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/modules/StyleSheet/index.js b/src/modules/StyleSheet/index.js index 0f1222ca..3f67fe9d 100644 --- a/src/modules/StyleSheet/index.js +++ b/src/modules/StyleSheet/index.js @@ -10,7 +10,7 @@ import StylePropTypes from '../StylePropTypes' * event classes */ const initialState = { classNames: predefinedClassNames } -const options = { obfuscateClassNames: process.env.NODE_ENV === 'production' } +const options = { obfuscateClassNames: !(process.env.NODE_ENV !== 'production') } const createStore = () => new Store(initialState, options) let store = createStore() let isRendered = false @@ -62,6 +62,21 @@ const create = (styles: Object): Object => { } } + if (process.env.NODE_ENV !== 'production') { + const deepFreeze = (obj) => { + const propNames = Object.getOwnPropertyNames(obj) + propNames.forEach((name) => { + const prop = obj[name] + if (typeof prop === 'object' && prop !== null && !Object.isFrozen(prop)) { + deepFreeze(prop) + } + }) + return Object.freeze(obj) + } + + deepFreeze(styles) + } + return styles }