@zenkit/typography
Version:
ZenKit components for impliments typography
85 lines (66 loc) • 2.5 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.styles = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var React = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _styles = require("@zenkit/styles");
var _text = _interopRequireDefault(require("./text"));
var _pre = _interopRequireDefault(require("./pre"));
var styles = {
root: {
margin: 0,
borderRadius: '3px',
fontSize: '85%',
padding: '.2em .4em'
},
block: {
display: 'block',
lineHeight: '1.45'
}
};
exports.styles = styles;
function Code(props) {
var block = props.block,
classes = props.classes,
classNameProps = props.className,
childrenProps = props.children,
otherProps = (0, _objectWithoutProperties2.default)(props, ["block", "classes", "className", "children"]);
var children;
if (typeof childrenProps === 'string') {
if (block) {
var minPadding;
var lines = childrenProps.replace('\t', ' ').split('\n');
lines.filter(function (line) {
return line.search(/\S|$/) !== line.length;
}).forEach(function (line) {
minPadding = !minPadding || minPadding > line.search(/\S|$/) ? line.search(/\S|$/) : minPadding;
});
children = lines.map(function (line) {
return line.search(/\S|$/) === line.length ? '' : line.slice(minPadding);
}).join('\n').trim();
} else {
children = childrenProps.trim();
}
} else {
children = childrenProps;
}
var content = React.createElement(_text.default, (0, _extends2.default)({
is: "code",
background: "#f6f8fa",
family: "monospace",
className: (0, _classnames.default)(classes.root, (0, _defineProperty2.default)({}, classes.block, block), classNameProps)
}, otherProps), children);
if (block) {
return React.createElement(_pre.default, null, content);
}
return content;
}
var _default = (0, _styles.withStyles)(styles)(Code);
exports.default = _default;
;