react-native-web-headroom
Version:
React Native Web Headroom
152 lines (131 loc) • 3.84 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _createStyles = require('../styles/createStyles');
var _createStyles2 = _interopRequireDefault(_createStyles);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* A short description of the object values.
* Can be used to render tree node in ObjectInspector
* or render objects in TableInspector.
*/
var ObjectValue = function ObjectValue(_ref, _ref2) {
var object = _ref.object,
styles = _ref.styles;
var theme = _ref2.theme;
var themeStyles = (0, _createStyles2.default)('ObjectValue', theme);
var mkStyle = function mkStyle(key) {
return (0, _extends3.default)({}, themeStyles[key], styles);
};
switch (typeof object === 'undefined' ? 'undefined' : (0, _typeof3.default)(object)) {
case 'number':
return _react2.default.createElement(
'span',
{ style: mkStyle('objectValueNumber') },
String(object)
);
case 'string':
return _react2.default.createElement(
'span',
{ style: mkStyle('objectValueString') },
'"',
object,
'"'
);
case 'boolean':
return _react2.default.createElement(
'span',
{ style: mkStyle('objectValueBoolean') },
String(object)
);
case 'undefined':
return _react2.default.createElement(
'span',
{ style: mkStyle('objectValueUndefined') },
'undefined'
);
case 'object':
if (object === null) {
return _react2.default.createElement(
'span',
{ style: mkStyle('objectValueNull') },
'null'
);
}
if (object instanceof Date) {
return _react2.default.createElement(
'span',
null,
object.toString()
);
}
if (object instanceof RegExp) {
return _react2.default.createElement(
'span',
{ style: mkStyle('objectValueRegExp') },
object.toString()
);
}
if (Array.isArray(object)) {
return _react2.default.createElement(
'span',
null,
'Array[' + object.length + ']'
);
}
if (!object.constructor) {
return _react2.default.createElement(
'span',
null,
'Object'
);
}
return _react2.default.createElement(
'span',
null,
object.constructor.name
);
case 'function':
return _react2.default.createElement(
'span',
null,
_react2.default.createElement(
'span',
{ style: mkStyle('objectValueFunctionKeyword') },
'function'
),
_react2.default.createElement(
'span',
{ style: mkStyle('objectValueFunctionName') },
'\xA0',
object.name,
'()'
)
);
case 'symbol':
return _react2.default.createElement(
'span',
{ style: mkStyle('objectValueSymbol') },
object.toString()
);
default:
return _react2.default.createElement('span', null);
}
};
ObjectValue.propTypes = {
/** the object to describe */
object: _propTypes2.default.any
};
ObjectValue.contextTypes = {
theme: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object])
};
exports.default = ObjectValue;