useHoverValue.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
  2. import raf from '../../_util/raf';
  3. import { ref, onBeforeUnmount, watch } from 'vue';
  4. import useValueTexts from './useValueTexts';
  5. export default function useHoverValue(valueText, _ref) {
  6. var formatList = _ref.formatList,
  7. generateConfig = _ref.generateConfig,
  8. locale = _ref.locale;
  9. var innerValue = ref(null);
  10. var rafId;
  11. function setValue(val) {
  12. var immediately = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  13. raf.cancel(rafId);
  14. if (immediately) {
  15. innerValue.value = val;
  16. return;
  17. }
  18. rafId = raf(function () {
  19. innerValue.value = val;
  20. });
  21. }
  22. var _useValueTexts = useValueTexts(innerValue, {
  23. formatList: formatList,
  24. generateConfig: generateConfig,
  25. locale: locale
  26. }),
  27. _useValueTexts2 = _slicedToArray(_useValueTexts, 2),
  28. firstText = _useValueTexts2[1];
  29. function onEnter(date) {
  30. setValue(date);
  31. }
  32. function onLeave() {
  33. var immediately = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
  34. setValue(null, immediately);
  35. }
  36. watch(valueText, function () {
  37. onLeave(true);
  38. });
  39. onBeforeUnmount(function () {
  40. raf.cancel(rafId);
  41. });
  42. return [firstText, onEnter, onLeave];
  43. }