@hackoregon/component-library
Version:
Official repo for Hack Oregon React component library
91 lines (71 loc) • 4.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _emotion = require("emotion");
var _checkData = _interopRequireDefault(require("./checkData"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
function _templateObject3() {
var data = _taggedTemplateLiteral([""]);
_templateObject3 = function _templateObject3() {
return data;
};
return data;
}
function _templateObject2() {
var data = _taggedTemplateLiteral(["\n color: red;\n "]);
_templateObject2 = function _templateObject2() {
return data;
};
return data;
}
function _templateObject() {
var data = _taggedTemplateLiteral(["\n margin: 0 auto;\n max-width: 900px;\n width: 90%;\n"]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
var wrapperStyle = (0, _emotion.css)(_templateObject());
var DataChecker = function DataChecker(_ref) {
var data = _ref.data,
dataIsObject = _ref.dataIsObject,
dataAccessors = _ref.dataAccessors,
optionalKeys = _ref.optionalKeys,
message = _ref.message,
children = _ref.children;
var keys = Object.keys(dataAccessors);
var values = Object.values(dataAccessors);
var results = (0, _checkData["default"])(data, values, dataIsObject, optionalKeys);
var component = results.allKeysValid ? children : _react["default"].createElement("div", {
className: wrapperStyle
}, _react["default"].createElement("h1", null, message), results.invalidType && _react["default"].createElement("h2", null, "Invalid Type - check if array or object is expected"), _react["default"].createElement("h2", null, "Data Accessors"), keys.map(function (key, index) {
var isValid = results[values[index]].valid === results[values[index]].total;
var validCount = results[values[index]].valid;
var totalCount = results[values[index]].total;
var keyValue = values[index];
var invalidStyle = !isValid ? (0, _emotion.css)(_templateObject2()) : (0, _emotion.css)(_templateObject3());
return _react["default"].createElement("pre", {
key: key,
className: invalidStyle
}, _react["default"].createElement("strong", null, isValid ? "✅ " : "⛔️ ", "".concat(key, ": ")), JSON.stringify(keyValue, undefined, 2), !isValid && _react["default"].createElement(_react.Fragment, null, _react["default"].createElement("br", null), _react["default"].createElement("small", null, validCount === 0 ? "".concat(key, " is invalid. \"").concat(keyValue, "\" not found in data") : "".concat(key, " is invalid. \"").concat(keyValue, "\" missing in ").concat(totalCount - validCount, "/").concat(totalCount, " objects in data"))));
}), _react["default"].createElement("h2", null, "Data"), _react["default"].createElement("pre", null, _react["default"].createElement("strong", null, "data: "), !dataIsObject && JSON.stringify(data, undefined, 2)));
return component;
};
DataChecker.propTypes = {
data: _propTypes["default"].oneOfType([_propTypes["default"].shape({}), _propTypes["default"].arrayOf(_propTypes["default"].shape({}))]).isRequired,
dataAccessors: _propTypes["default"].objectOf(_propTypes["default"].string).isRequired,
message: _propTypes["default"].string,
optionalKeys: _propTypes["default"].shape({})
};
DataChecker.defaultProps = {
message: "Invalid Data",
dataIsObject: false
};
var _default = DataChecker;
exports["default"] = _default;