UNPKG

@vx/tooltip

Version:
53 lines (51 loc) 1.9 kB
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } import React, { useState, useCallback } from 'react'; export default function useTooltip(initialTooltipState) { var _useState = useState(_extends({ tooltipOpen: false }, initialTooltipState)), tooltipState = _useState[0], setTooltipState = _useState[1]; var updateTooltip = useCallback(function (_ref) { var tooltipOpen = _ref.tooltipOpen, tooltipLeft = _ref.tooltipLeft, tooltipTop = _ref.tooltipTop, tooltipData = _ref.tooltipData; return setTooltipState(function (prevState) { return _extends({}, prevState, { tooltipOpen: tooltipOpen, tooltipLeft: tooltipLeft, tooltipTop: tooltipTop, tooltipData: tooltipData }); }); }, []); var showTooltip = useCallback(function (_ref2) { var tooltipLeft = _ref2.tooltipLeft, tooltipTop = _ref2.tooltipTop, tooltipData = _ref2.tooltipData; return updateTooltip({ tooltipOpen: true, tooltipLeft: tooltipLeft, tooltipTop: tooltipTop, tooltipData: tooltipData }); }, [updateTooltip]); var hideTooltip = useCallback(function () { return updateTooltip({ tooltipOpen: false, tooltipLeft: undefined, tooltipTop: undefined, tooltipData: undefined }); }, [updateTooltip]); return { tooltipOpen: tooltipState.tooltipOpen, tooltipLeft: tooltipState.tooltipLeft, tooltipTop: tooltipState.tooltipTop, tooltipData: tooltipState.tooltipData, updateTooltip: updateTooltip, showTooltip: showTooltip, hideTooltip: hideTooltip }; }