SliderTooltip.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. "use strict";
  2. "use client";
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  5. Object.defineProperty(exports, "__esModule", {
  6. value: true
  7. });
  8. exports.default = void 0;
  9. var _react = _interopRequireWildcard(require("react"));
  10. var React = _react;
  11. var _raf = _interopRequireDefault(require("rc-util/lib/raf"));
  12. var _ref = require("rc-util/lib/ref");
  13. var _tooltip = _interopRequireDefault(require("../tooltip"));
  14. const SliderTooltip = /*#__PURE__*/React.forwardRef((props, ref) => {
  15. const {
  16. open,
  17. draggingDelete,
  18. value
  19. } = props;
  20. const innerRef = (0, _react.useRef)(null);
  21. const mergedOpen = open && !draggingDelete;
  22. const rafRef = (0, _react.useRef)(null);
  23. function cancelKeepAlign() {
  24. _raf.default.cancel(rafRef.current);
  25. rafRef.current = null;
  26. }
  27. function keepAlign() {
  28. rafRef.current = (0, _raf.default)(() => {
  29. var _a;
  30. (_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.forceAlign();
  31. rafRef.current = null;
  32. });
  33. }
  34. React.useEffect(() => {
  35. if (mergedOpen) {
  36. keepAlign();
  37. } else {
  38. cancelKeepAlign();
  39. }
  40. return cancelKeepAlign;
  41. }, [mergedOpen, props.title, value]);
  42. return /*#__PURE__*/React.createElement(_tooltip.default, Object.assign({
  43. ref: (0, _ref.composeRef)(innerRef, ref)
  44. }, props, {
  45. open: mergedOpen
  46. }));
  47. });
  48. if (process.env.NODE_ENV !== 'production') {
  49. SliderTooltip.displayName = 'SliderTooltip';
  50. }
  51. var _default = exports.default = SliderTooltip;