UNPKG

@visx/shape

Version:
121 lines (120 loc) 3.98 kB
import { arc as d3Arc, area as d3Area, line as d3Line, pie as d3Pie, radialLine as d3RadialLine, stack as d3Stack } from '@visx/vendor/d3-shape'; import setNumberOrNumberAccessor from "./setNumberOrNumberAccessor.js"; import stackOrder from "./stackOrder.js"; import stackOffset from "./stackOffset.js"; export function arc() { let { innerRadius, outerRadius, cornerRadius, startAngle, endAngle, padAngle, padRadius } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; const path = d3Arc(); if (innerRadius != null) setNumberOrNumberAccessor(path.innerRadius, innerRadius); if (outerRadius != null) setNumberOrNumberAccessor(path.outerRadius, outerRadius); if (cornerRadius != null) setNumberOrNumberAccessor(path.cornerRadius, cornerRadius); if (startAngle != null) setNumberOrNumberAccessor(path.startAngle, startAngle); if (endAngle != null) setNumberOrNumberAccessor(path.endAngle, endAngle); if (padAngle != null) setNumberOrNumberAccessor(path.padAngle, padAngle); if (padRadius != null) setNumberOrNumberAccessor(path.padRadius, padRadius); return path; } export function area() { let { x, x0, x1, y, y0, y1, defined, curve } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; const path = d3Area(); if (x) setNumberOrNumberAccessor(path.x, x); if (x0) setNumberOrNumberAccessor(path.x0, x0); if (x1) setNumberOrNumberAccessor(path.x1, x1); if (y) setNumberOrNumberAccessor(path.y, y); if (y0) setNumberOrNumberAccessor(path.y0, y0); if (y1) setNumberOrNumberAccessor(path.y1, y1); if (defined) path.defined(defined); if (curve) path.curve(curve); return path; } export function line() { let { x, y, defined, curve } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; const path = d3Line(); if (x) setNumberOrNumberAccessor(path.x, x); if (y) setNumberOrNumberAccessor(path.y, y); if (defined) path.defined(defined); if (curve) path.curve(curve); return path; } export function pie() { let { startAngle, endAngle, padAngle, value, sort, sortValues } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; const path = d3Pie(); // In d3-shape v3+, sortValues defaults to descending sort. // To maintain visx's behavior of preserving input order by default, // we explicitly set sortValues to null when neither sort nor sortValues is provided. // Note: d3's pie generator clears sortValues when sort is set, and vice versa. if (sortValues !== undefined) { path.sortValues(sortValues); } else if (sort === undefined) { // Neither provided - disable sorting to preserve input order path.sortValues(null); } else if (sort === null) { // explicit null: clear comparator path.sort(null); } else { // here sort is narrowed to a comparator function path.sort(sort); } if (value != null) path.value(value); if (padAngle != null) setNumberOrNumberAccessor(path.padAngle, padAngle); if (startAngle != null) setNumberOrNumberAccessor(path.startAngle, startAngle); if (endAngle != null) setNumberOrNumberAccessor(path.endAngle, endAngle); return path; } export function radialLine() { let { angle, radius, defined, curve } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; const path = d3RadialLine(); if (angle) setNumberOrNumberAccessor(path.angle, angle); if (radius) setNumberOrNumberAccessor(path.radius, radius); if (defined) path.defined(defined); if (curve) path.curve(curve); return path; } export function stack(_ref) { let { keys, value, order, offset } = _ref; const path = d3Stack(); if (keys) path.keys(keys); if (value) setNumberOrNumberAccessor(path.value, value); if (order) path.order(stackOrder(order)); if (offset) path.offset(stackOffset(offset)); return path; }