@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>
76 lines (75 loc) • 2.87 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { createElement, useCallback } from "react";
import { useSpring, animated } from "@react-spring/web";
import { useMotionConfig } from "@dfnivo/core";
import { useTooltip } from "@dfnivo/tooltip";
export var SankeyNodesItem = function(param) {
var node = param.node, x = param.x, y = param.y, width = param.width, height = param.height, color = param.color, opacity = param.opacity, borderWidth = param.borderWidth, borderColor = param.borderColor, borderRadius = param.borderRadius, setCurrent = param.setCurrent, isInteractive = param.isInteractive, onClick = param.onClick, tooltip = param.tooltip;
var _useMotionConfig = useMotionConfig(), animate = _useMotionConfig.animate, springConfig = _useMotionConfig.config;
var animatedProps = useSpring({
x: x,
y: y,
width: width,
height: height,
opacity: opacity,
color: color,
config: springConfig,
immediate: !animate
});
var _useTooltip = useTooltip(), showTooltipFromEvent = _useTooltip.showTooltipFromEvent, hideTooltip = _useTooltip.hideTooltip;
var handleMouseEnter = useCallback(function(event) {
setCurrent(node);
showTooltipFromEvent(/*#__PURE__*/ createElement(tooltip, {
node: node
}), event, "left");
}, [
setCurrent,
node,
showTooltipFromEvent,
tooltip
]);
var handleMouseMove = useCallback(function(event) {
showTooltipFromEvent(/*#__PURE__*/ createElement(tooltip, {
node: node
}), event, "left");
}, [
showTooltipFromEvent,
node,
tooltip
]);
var handleMouseLeave = useCallback(function() {
setCurrent(null);
hideTooltip();
}, [
setCurrent,
hideTooltip
]);
var handleClick = useCallback(function(event) {
onClick === null || onClick === void 0 ? void 0 : onClick(node, event);
}, [
onClick,
node
]);
return /*#__PURE__*/ _jsx(animated.rect, {
x: animatedProps.x,
y: animatedProps.y,
rx: borderRadius,
ry: borderRadius,
width: animatedProps.width.to(function(v) {
return Math.max(v, 0);
}),
height: animatedProps.height.to(function(v) {
return Math.max(v, 0);
}),
fill: animatedProps.color,
fillOpacity: animatedProps.opacity,
strokeWidth: borderWidth,
stroke: borderColor,
strokeOpacity: opacity,
onMouseEnter: isInteractive ? handleMouseEnter : undefined,
onMouseMove: isInteractive ? handleMouseMove : undefined,
onMouseLeave: isInteractive ? handleMouseLeave : undefined,
onClick: isInteractive ? handleClick : undefined
});
};
//# sourceMappingURL=SankeyNodesItem.js.map