/** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @providesModule getStyleProperty * @typechecks */ const camelize = require("./camelize"); const hyphenate = require("./hyphenate"); function asString(value) /*?string*/ { return value == null ? value : String(value); } function getStyleProperty( /*DOMNode*/ node, /*string*/ name) /*?string*/ { let computedStyle; // W3C Standard if (window.getComputedStyle) { // In certain cases such as within an iframe in FF3, this returns null. computedStyle = window.getComputedStyle(node, null); if (computedStyle) { return asString(computedStyle.getPropertyValue(hyphenate(name))); } } // Safari if (document.defaultView && document.defaultView.getComputedStyle) { computedStyle = document.defaultView.getComputedStyle(node, null); // A Safari bug causes this to return null for `display: none` elements. if (computedStyle) { return asString(computedStyle.getPropertyValue(hyphenate(name))); } if (name === 'display') { return 'none'; } } // Internet Explorer if (node.currentStyle) { if (name === 'float') { return asString(node.currentStyle.cssFloat || node.currentStyle.styleFloat); } return asString(node.currentStyle[camelize(name)]); } return asString(node.style && node.style[camelize(name)]); } module.exports = getStyleProperty;