UNPKG

@zenkit/typography

Version:

ZenKit components for impliments typography

85 lines (66 loc) 2.5 kB
"use strict"; 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;