react-native-web-headroom
Version:
React Native Web Headroom
115 lines (93 loc) • 3.03 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _ObjectValue = require('../object/ObjectValue');
var _ObjectValue2 = _interopRequireDefault(_ObjectValue);
var _ObjectName = require('../object/ObjectName');
var _ObjectName2 = _interopRequireDefault(_ObjectName);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* NOTE: Chrome console.log is italic */
var styles = {
preview: {
fontStyle: 'italic'
}
};
/* intersperse arr with separator */
function intersperse(arr, sep) {
if (arr.length === 0) {
return [];
}
return arr.slice(1).reduce(function (xs, x) {
return xs.concat([sep, x]);
}, [arr[0]]);
}
/**
* A preview of the object
*/
var ObjectPreview = function ObjectPreview(_ref) {
var data = _ref.data,
maxProperties = _ref.maxProperties;
var object = data;
if ((typeof object === 'undefined' ? 'undefined' : (0, _typeof3.default)(object)) !== 'object' || object === null || object instanceof Date || object instanceof RegExp) {
return _react2.default.createElement(_ObjectValue2.default, { object: object });
}
if (Array.isArray(object)) {
return _react2.default.createElement(
'span',
{ style: styles.preview },
'[',
intersperse(object.map(function (element, index) {
return _react2.default.createElement(_ObjectValue2.default, { key: index, object: element });
}), ', '),
']'
);
} else {
var propertyNodes = [];
for (var propertyName in object) {
var propertyValue = object[propertyName];
if (object.hasOwnProperty(propertyName)) {
var ellipsis = void 0;
if (propertyNodes.length === maxProperties - 1 && Object.keys(object).length > maxProperties) {
ellipsis = _react2.default.createElement(
'span',
{ key: 'ellipsis' },
'\u2026'
);
}
propertyNodes.push(_react2.default.createElement(
'span',
{ key: propertyName },
_react2.default.createElement(_ObjectName2.default, { name: propertyName || '""' }),
':\xA0',
_react2.default.createElement(_ObjectValue2.default, { object: propertyValue }),
ellipsis
));
if (ellipsis) break;
}
}
return _react2.default.createElement(
'span',
{ style: styles.preview },
object.constructor.name + ' {',
intersperse(propertyNodes, ', '),
'}'
);
}
};
ObjectPreview.propTypes = {
/**
* max number of properties shown in the property view
*/
maxProperties: _propTypes2.default.number
};
ObjectPreview.defaultProps = {
maxProperties: 5
};
exports.default = ObjectPreview;