UNPKG

@dfnivo/sankey

Version:

<a href="https://nivo.rocks"><img alt="nivo" src="https://raw.githubusercontent.com/plouc/nivo/master/nivo.png" width="216" height="68"/></a>

143 lines (142 loc) 6 kB
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 _objectSpread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _defineProperty(target, key, source[key]); }); } return target; } 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 _objectSpreadProps(target, source) { source = source != null ? source : {}; 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; } import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime"; import { useSprings, animated } from "@react-spring/web"; import { useTheme, useMotionConfig } from "@dfnivo/core"; export var SankeyLabels = function(param) { var nodes = param.nodes, layout = param.layout, width = param.width, height = param.height, labelPosition = param.labelPosition, labelPadding = param.labelPadding, labelOrientation = param.labelOrientation, getLabelTextColor = param.getLabelTextColor; var theme = useTheme(); var labelRotation = labelOrientation === "vertical" ? -90 : 0; var labels = nodes.map(function(node) { var x; var y; var textAnchor; if (layout === "horizontal") { y = node.y + node.height / 2; if (node.x < width / 2) { if (labelPosition === "inside") { var _node_x1; x = ((_node_x1 = node.x1) !== null && _node_x1 !== void 0 ? _node_x1 : 0) + labelPadding; textAnchor = labelOrientation === "vertical" ? "middle" : "start"; } else { x = node.x - labelPadding; textAnchor = labelOrientation === "vertical" ? "middle" : "end"; } } else { if (labelPosition === "inside") { x = node.x - labelPadding; textAnchor = labelOrientation === "vertical" ? "middle" : "end"; } else { var _node_x11; x = ((_node_x11 = node.x1) !== null && _node_x11 !== void 0 ? _node_x11 : 0) + labelPadding; textAnchor = labelOrientation === "vertical" ? "middle" : "start"; } } } else if (layout === "vertical") { x = node.x + node.width / 2; if (node.y < height / 2) { if (labelPosition === "inside") { var _node_y1; y = ((_node_y1 = node.y1) !== null && _node_y1 !== void 0 ? _node_y1 : 0) + labelPadding; textAnchor = labelOrientation === "vertical" ? "end" : "middle"; } else { y = node.y - labelPadding; textAnchor = labelOrientation === "vertical" ? "start" : "middle"; } } else { if (labelPosition === "inside") { y = node.y - labelPadding; textAnchor = labelOrientation === "vertical" ? "start" : "middle"; } else { var _node_y11; y = ((_node_y11 = node.y1) !== null && _node_y11 !== void 0 ? _node_y11 : 0) + labelPadding; textAnchor = labelOrientation === "vertical" ? "end" : "middle"; } } } return { id: node.id, label: node.label, x: x, y: y, textAnchor: textAnchor, color: getLabelTextColor(node) }; }); var _useMotionConfig = useMotionConfig(), animate = _useMotionConfig.animate, springConfig = _useMotionConfig.config; var springs = useSprings(labels.length, labels.map(function(label) { return { transform: "translate(".concat(label.x, ", ").concat(label.y, ") rotate(").concat(labelRotation, ")"), color: label.color, config: springConfig, immediate: !animate }; })); return /*#__PURE__*/ _jsx(_Fragment, { children: springs.map(function(animatedProps, index) { var _theme_labels; var label = labels[index]; return /*#__PURE__*/ _jsx(animated.text, { dominantBaseline: "central", textAnchor: label.textAnchor, transform: animatedProps.transform, style: _objectSpreadProps(_objectSpread({}, (_theme_labels = theme.labels) === null || _theme_labels === void 0 ? void 0 : _theme_labels.text), { fill: animatedProps.color, pointerEvents: "none" }), children: label.label }, label.id); }) }); }; //# sourceMappingURL=SankeyLabels.js.map