UNPKG

backpack-ui

Version:
143 lines (113 loc) 3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _propTypes = require("prop-types"); var _propTypes2 = _interopRequireDefault(_propTypes); var _radium = require("radium"); var _radium2 = _interopRequireDefault(_radium); var _font = require("../../utils/font"); var _font2 = _interopRequireDefault(_font); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var styles = { container: { base: { backgroundColor: "#e3e5e9", color: "#c4c7cc", fontFamily: (0, _font2.default)("miller"), lineHeight: 1, textAlign: "center", textTransform: "uppercase" } } }; function Placeholder(_ref) { var title = _ref.title, width = _ref.width, height = _ref.height, aspectRatio = _ref.aspectRatio, fontSize = _ref.fontSize, style = _ref.style; var createLetter = function createLetter() { var letter = ""; var matches = title.split(/\b/); if (matches.length > 0) { if (matches[0] === "The") { letter = title.slice(4, 5); } else if (matches[0] === "A") { letter = title.slice(2, 3); } else { letter = title.slice(0, 1); } } return letter; }; return _react2.default.createElement( "div", { className: "Placeholder", style: [styles.container.base, { fontSize: fontSize + "px" }, width && height && { height: height + "px", lineHeight: "" + (height + 1) / fontSize, width: width + "px" }, aspectRatio && { paddingBottom: aspectRatio * 100 + "%", width: "100%" }, style], "aria-hidden": "true" }, width && height && createLetter(), aspectRatio && _react2.default.createElement( "div", { style: { position: "absolute", top: "50%", transform: "translateY(-50%)", width: "100%" } }, createLetter() ) ); } Placeholder.propTypes = { /** * Title of placeholder; will be truncated to first letter */ title: _propTypes2.default.string.isRequired, /** * Width in pixels */ width: _propTypes2.default.number, /** * Height in pixels */ height: _propTypes2.default.number, /** * Should be written in the form of `16 / 9` */ aspectRatio: _propTypes2.default.number, /** * Font size in pixels */ fontSize: _propTypes2.default.number, /** * Style object */ style: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.object), _propTypes2.default.objectOf(_propTypes2.default.string, _propTypes2.default.number)]) }; Placeholder.defaultProps = { title: "", width: null, height: null, aspectRatio: null, fontSize: 26, style: {} }; Placeholder.styles = styles; exports.default = (0, _radium2.default)(Placeholder);