text: /* eslint-disable */
  
  /**
   * Copyright 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.
   *
   * Based on React 16.3.0
   */
  
  var emptyFunction = require('fbjs/lib/emptyFunction');
  
  var warnValidStyle = emptyFunction;
  
  if (process.env.NODE_ENV !== 'production') {
    var getComponentName = function getComponentName(instanceOrFiber) {
      if (typeof instanceOrFiber.getName === 'function') {
        // Stack reconciler
        var instance = instanceOrFiber;
        return instance.getName();
      }
      if (typeof instanceOrFiber.tag === 'number') {
        // Fiber reconciler
        var fiber = instanceOrFiber;
        var type = fiber.type;
  
        if (typeof type === 'string') {
          return type;
        }
        if (typeof type === 'function') {
          return type.displayName || type.name;
        }
      }
      return null;
    };
  
    // 'msTransform' is correct, but the other prefixes should be capitalized
  
  
    var camelizeStyleName = require('fbjs/lib/camelizeStyleName');
    var warning = require('fbjs/lib/warning');
  
    var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
  
    // style values shouldn't contain a semicolon
    var badStyleValueWithSemicolonPattern = /;\s*$/;
  
    var warnedStyleNames = {};
    var warnedStyleValues = {};
    var warnedForNaNValue = false;
    var warnedForInfinityValue = false;
  
    var warnHyphenatedStyleName = function warnHyphenatedStyleName(name, owner) {
      if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
        return;
      }
  
      warnedStyleNames[name] = true;
      warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner));
    };
  
    var warnBadVendoredStyleName = function warnBadVendoredStyleName(name, owner) {
      if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
        return;
      }
  
      warnedStyleNames[name] = true;
      warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner));
    };
  
    var warnStyleValueWithSemicolon = function warnStyleValueWithSemicolon(name, value, owner) {
      if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
        return;
      }
  
      warnedStyleValues[value] = true;
      warning(false, "Style property values shouldn't contain a semicolon.%s " + 'Try "%s: %s" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, ''));
    };
  
    var warnStyleValueIsNaN = function warnStyleValueIsNaN(name, value, owner) {
      if (warnedForNaNValue) {
        return;
      }
  
      warnedForNaNValue = true;
      warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner));
    };
  
    var warnStyleValueIsInfinity = function warnStyleValueIsInfinity(name, value, owner) {
      if (warnedForInfinityValue) {
        return;
      }
  
      warnedForInfinityValue = true;
      warning(false, '`Infinity` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner));
    };
  
    var checkRenderMessage = function checkRenderMessage(owner) {
      var ownerName;
      if (owner != null) {
        // Stack passes the owner manually all the way to CSSPropertyOperations.
        ownerName = getComponentName(owner);
      } else {
        // Fiber doesn't pass it but uses ReactDebugCurrentFiber to track it.
        // It is only enabled in development and tracks host components too.
        // var {getCurrentFiberOwnerName} = require('ReactDebugCurrentFiber');
        //  ownerName = getCurrentFiberOwnerName();
        // TODO: also report the stack.
      }
      if (ownerName) {
        return '\n\nCheck the render method of `' + ownerName + '`.';
      }
      return '';
    };
  
    warnValidStyle = function warnValidStyle(name, value, component) {
      var owner;
      if (component) {
        // TODO: this only works with Stack. Seems like we need to add unit tests?
        // owner = component._currentElement._owner;
      }
      if (name.indexOf('-') > -1) {
        warnHyphenatedStyleName(name, owner);
      } else if (badVendoredStyleNamePattern.test(name)) {
        warnBadVendoredStyleName(name, owner);
      } else if (badStyleValueWithSemicolonPattern.test(value)) {
        warnStyleValueWithSemicolon(name, value, owner);
      }
  
      if (typeof value === 'number') {
        if (isNaN(value)) {
          warnStyleValueIsNaN(name, value, owner);
        } else if (!isFinite(value)) {
          warnStyleValueIsInfinity(name, value, owner);
        }
      }
    };
  }
  
  export default warnValidStyle;