UNPKG

react-svg-line-chart

Version:

A lightweight responsive line chart component for React using only SVG

109 lines (90 loc) 2.82 kB
"use strict"; exports.__esModule = true; var _templateObject = _taggedTemplateLiteralLoose(["\n opacity: ", ";\n stroke-width: ", ";\n stroke: ", ";\n"], ["\n opacity: ", ";\n stroke-width: ", ";\n stroke: ", ";\n"]); var _propTypes = require("prop-types"); var _propTypes2 = _interopRequireDefault(_propTypes); var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _styledComponents = require("styled-components"); var _styledComponents2 = _interopRequireDefault(_styledComponents); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _taggedTemplateLiteralLoose(strings, raw) { strings.raw = raw; return strings; } var Wrapper = _styledComponents2.default.g(_templateObject, function (props) { return props.opacity; }, function (props) { return props.width; }, function (props) { return props.color; }); var Grid = function Grid(_ref) { var getX = _ref.getX, getY = _ref.getY, gridColor = _ref.gridColor, gridOpacity = _ref.gridOpacity, gridVisible = _ref.gridVisible, gridWidth = _ref.gridWidth, labelsCountY = _ref.labelsCountY, maxX = _ref.maxX, maxY = _ref.maxY, minX = _ref.minX, minY = _ref.minY; if (gridVisible) { var gridX = []; var gridY = []; for (var i = minX; i <= maxX; i++) { gridX.push(_react2.default.createElement("line", { key: i, x1: getX(i), y1: getY(minY), x2: getX(i), y2: getY(maxY) })); } var yStep = labelsCountY > 0 ? labelsCountY : 1; for (var _i = minY; _i <= maxY; _i += Math.floor(maxY / yStep)) { gridY.push(_react2.default.createElement("line", { key: _i, x1: getX(minX), y1: getY(_i), x2: getX(maxX), y2: getY(_i) })); } return _react2.default.createElement( Wrapper, { color: gridColor, width: gridWidth, opacity: gridOpacity }, gridX, gridY ); } else { return null; } }; Grid.propTypes = process.env.NODE_ENV !== "production" ? { getX: _propTypes2.default.func, getY: _propTypes2.default.func, gridColor: _propTypes2.default.string, gridOpacity: _propTypes2.default.number, gridVisible: _propTypes2.default.bool, gridWidth: _propTypes2.default.number, labelsCountY: _propTypes2.default.number, maxX: _propTypes2.default.number, maxY: _propTypes2.default.number, minX: _propTypes2.default.number, minY: _propTypes2.default.number } : {}; Grid.defaultProps = { getX: function getX(x) { return x; }, getY: function getY(y) { return y; }, gridColor: "#34495e", gridOpacity: 0.2, gridVisible: true, gridWidth: 1, labelsCountY: 5 }; exports.default = Grid; module.exports = exports["default"];