UNPKG

victory-area

Version:
139 lines (136 loc) 5.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Area = void 0; var _react = _interopRequireDefault(require("react")); var _defaults = _interopRequireDefault(require("lodash/defaults")); var d3Shape = _interopRequireWildcard(require("victory-vendor/d3-shape")); var _victoryCore = require("victory-core"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* eslint no-magic-numbers: ["error", { "ignore": [-1, 0, 1, 2] }]*/ const defined = d => { const y = d._y1 !== undefined ? d._y1 : d._y; return y !== null && y !== undefined && d._y0 !== null; }; const getXAccessor = scale => { return d => scale.x(d._x1 !== undefined ? d._x1 : d._x); }; const getYAccessor = scale => { return d => scale.y(d._y1 !== undefined ? d._y1 : d._y); }; const getY0Accessor = scale => { return d => scale.y(d._y0); }; const getAngleAccessor = scale => { return d => { const x = scale.x(d._x1 !== undefined ? d._x1 : d._x); return -1 * x + Math.PI / 2; }; }; const getCartesianArea = props => { const { horizontal, scale } = props; const interpolationFunction = _victoryCore.LineHelpers.getInterpolationFunction(props); return horizontal ? d3Shape.area().defined(defined).curve(interpolationFunction).x0(getY0Accessor(scale)).x1(getYAccessor(scale)).y(getXAccessor(scale)) : d3Shape.area().defined(defined).curve(interpolationFunction).x(getXAccessor(scale)).y1(getYAccessor(scale)).y0(getY0Accessor(scale)); }; const getAreaFunction = props => { const { polar, scale } = props; const interpolationFunction = _victoryCore.LineHelpers.getInterpolationFunction(props); return polar ? d3Shape.radialArea().defined(defined).curve(interpolationFunction).angle(getAngleAccessor(scale)).outerRadius(getYAccessor(scale)).innerRadius(getY0Accessor(scale)) : getCartesianArea(props); }; const evaluateProps = props => { /** * Potential evaluated props are: * `ariaLabel` * `desc` * `id` * `style` * `tabIndex` */ const ariaLabel = _victoryCore.Helpers.evaluateProp(props.ariaLabel, props); const desc = _victoryCore.Helpers.evaluateProp(props.desc, props); const id = _victoryCore.Helpers.evaluateProp(props.id, props); const style = _victoryCore.Helpers.evaluateStyle(Object.assign({ fill: "black" }, props.style), props); const tabIndex = _victoryCore.Helpers.evaluateProp(props.tabIndex, props); return Object.assign({}, props, { ariaLabel, desc, id, style, tabIndex }); }; const defaultProps = { groupComponent: /*#__PURE__*/_react.default.createElement("g", null), pathComponent: /*#__PURE__*/_react.default.createElement(_victoryCore.Path, null), role: "presentation", shapeRendering: "auto" }; /** * The area primitive used by VictoryArea */ const Area = initialProps => { const props = evaluateProps((0, _defaults.default)({}, initialProps, defaultProps)); const { ariaLabel, role, shapeRendering, className, polar, origin, data, pathComponent, events, groupComponent, clipPath, id, style, desc, tabIndex } = props; const userProps = _victoryCore.UserProps.getSafeUserProps(props); const defaultTransform = polar && origin ? `translate(${origin.x}, ${origin.y})` : undefined; const transform = props.transform || defaultTransform; const renderLine = style.stroke && style.stroke !== "none" && style.stroke !== "transparent"; const areaFunction = getAreaFunction(props); const lineFunction = renderLine && _victoryCore.LineHelpers.getLineFunction(props); const areaStroke = style.stroke ? "none" : style.fill; const sharedProps = { "aria-label": ariaLabel, className, role, shapeRendering, transform, ...events, clipPath, tabIndex }; const area = /*#__PURE__*/_react.default.cloneElement(pathComponent, Object.assign({ key: `${id}-area`, style: Object.assign({}, style, { stroke: areaStroke }), d: areaFunction(data), desc, tabIndex }, sharedProps, userProps)); const line = renderLine ? /*#__PURE__*/_react.default.cloneElement(pathComponent, Object.assign({ key: `${id}-area-stroke`, style: Object.assign({}, style, { fill: "none" }), d: lineFunction(data) }, sharedProps)) : null; return renderLine ? /*#__PURE__*/_react.default.cloneElement(groupComponent, userProps, [area, line]) : area; }; exports.Area = Area;