@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>
86 lines (85 loc) • 3.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "SankeyNodesItem", {
enumerable: true,
get: function() {
return SankeyNodesItem;
}
});
var _jsxRuntime = require("react/jsx-runtime");
var _react = require("react");
var _web = require("@react-spring/web");
var _core = require("@dfnivo/core");
var _tooltip = require("@dfnivo/tooltip");
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 = (0, _core.useMotionConfig)(), animate = _useMotionConfig.animate, springConfig = _useMotionConfig.config;
var animatedProps = (0, _web.useSpring)({
x: x,
y: y,
width: width,
height: height,
opacity: opacity,
color: color,
config: springConfig,
immediate: !animate
});
var _useTooltip = (0, _tooltip.useTooltip)(), showTooltipFromEvent = _useTooltip.showTooltipFromEvent, hideTooltip = _useTooltip.hideTooltip;
var handleMouseEnter = (0, _react.useCallback)(function(event) {
setCurrent(node);
showTooltipFromEvent(/*#__PURE__*/ (0, _react.createElement)(tooltip, {
node: node
}), event, "left");
}, [
setCurrent,
node,
showTooltipFromEvent,
tooltip
]);
var handleMouseMove = (0, _react.useCallback)(function(event) {
showTooltipFromEvent(/*#__PURE__*/ (0, _react.createElement)(tooltip, {
node: node
}), event, "left");
}, [
showTooltipFromEvent,
node,
tooltip
]);
var handleMouseLeave = (0, _react.useCallback)(function() {
setCurrent(null);
hideTooltip();
}, [
setCurrent,
hideTooltip
]);
var handleClick = (0, _react.useCallback)(function(event) {
onClick === null || onClick === void 0 ? void 0 : onClick(node, event);
}, [
onClick,
node
]);
return /*#__PURE__*/ (0, _jsxRuntime.jsx)(_web.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