UNPKG

lucid-ui

Version:

A UI component library from AppNexus.

69 lines (59 loc) 4.29 kB
import _keys from "lodash/keys"; import _startsWith from "lodash/startsWith"; function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } import React from 'react'; import PropTypes from 'react-peek/prop-types'; import { lucidClassNames } from '../../util/style-helpers'; import { omitProps } from '../../util/component-types'; var cx = lucidClassNames.bind('&-AxisLabel'); var number = PropTypes.number, string = PropTypes.string, oneOf = PropTypes.oneOf, object = PropTypes.object; var defaultProps = { color: '#000' }; export var AxisLabel = function AxisLabel(props) { var height = props.height, width = props.width, orient = props.orient, label = props.label, color = props.color, style = props.style, className = props.className, passThroughs = _objectWithoutProperties(props, ["height", "width", "orient", "label", "color", "style", "className"]); var isH = orient === 'top' || orient === 'bottom'; var isCustomColor = _startsWith(color, '#'); var colorStyle = isCustomColor ? { fill: color } : null; return /*#__PURE__*/React.createElement("text", _extends({}, omitProps(passThroughs, undefined, _keys(AxisLabel.propTypes)), { style: _objectSpread(_objectSpread({}, colorStyle), style), className: cx(className, '&', _defineProperty({}, "&-".concat(color), !isCustomColor)), x: isH ? width / 2 : height / 2 * -1, y: orient === 'right' ? width : orient === 'bottom' ? height : 0, dy: orient === 'top' || orient === 'left' ? '1em' : '-.32em', transform: isH ? '' : 'rotate(-90)' }), label); }; AxisLabel.defaultProps = defaultProps; AxisLabel.displayName = 'AxisLabel'; AxisLabel.peek = { description: "\n\t\t`AxisLabel` is used within a `svg`\n\n\t\tCentered labels for axes that typically are fit into the margins of a\n\t\tchart.\n\t", categories: ['visualizations', 'chart primitives'] }; AxisLabel.propTypes = { style: object, className: string, height: number.isRequired, width: number.isRequired, color: string, label: string, orient: oneOf(['top', 'bottom', 'left', 'right']) }; export default AxisLabel;