@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>
125 lines (124 loc) • 4.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "SankeyLinksItem", {
enumerable: true,
get: function() {
return SankeyLinksItem;
}
});
var _jsxRuntime = require("react/jsx-runtime");
var _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
var _web = require("@react-spring/web");
var _core = require("@dfnivo/core");
var _tooltip = require("@dfnivo/tooltip");
var _sankeyLinkGradient = require("./SankeyLinkGradient");
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interopRequireWildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
var SankeyLinksItem = function(param) {
var link = param.link, layout = param.layout, path = param.path, color = param.color, opacity = param.opacity, blendMode = param.blendMode, enableGradient = param.enableGradient, setCurrent = param.setCurrent, tooltip = param.tooltip, isInteractive = param.isInteractive, onClick = param.onClick;
var linkId = "".concat(link.source.id, ".").concat(link.target.id);
var _useMotionConfig = (0, _core.useMotionConfig)(), animate = _useMotionConfig.animate, springConfig = _useMotionConfig.config;
var animatedPath = (0, _core.useAnimatedPath)(path);
var animatedProps = (0, _web.useSpring)({
color: color,
opacity: opacity,
config: springConfig,
immediate: !animate
});
var _useTooltip = (0, _tooltip.useTooltip)(), showTooltipFromEvent = _useTooltip.showTooltipFromEvent, hideTooltip = _useTooltip.hideTooltip;
var handleMouseEnter = (0, _react.useCallback)(function(event) {
setCurrent(link);
showTooltipFromEvent(/*#__PURE__*/ (0, _react.createElement)(tooltip, {
link: link
}), event, "left");
}, [
setCurrent,
link,
showTooltipFromEvent,
tooltip
]);
var handleMouseMove = (0, _react.useCallback)(function(event) {
showTooltipFromEvent(/*#__PURE__*/ (0, _react.createElement)(tooltip, {
link: link
}), event, "left");
}, [
showTooltipFromEvent,
link,
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(link, event);
}, [
onClick,
link
]);
return /*#__PURE__*/ (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [
enableGradient && /*#__PURE__*/ (0, _jsxRuntime.jsx)(_sankeyLinkGradient.SankeyLinkGradient, {
id: linkId,
layout: layout,
startColor: link.startColor || link.source.color,
endColor: link.endColor || link.target.color
}),
/*#__PURE__*/ (0, _jsxRuntime.jsx)(_web.animated.path, {
fill: enableGradient ? 'url("#'.concat(encodeURI(linkId), '")') : animatedProps.color,
d: animatedPath,
fillOpacity: animatedProps.opacity,
onMouseEnter: isInteractive ? handleMouseEnter : undefined,
onMouseMove: isInteractive ? handleMouseMove : undefined,
onMouseLeave: isInteractive ? handleMouseLeave : undefined,
onClick: isInteractive ? handleClick : undefined,
style: {
mixBlendMode: blendMode
}
})
]
});
};
//# sourceMappingURL=SankeyLinksItem.js.map