91de93bb2db6afc04e5ce9f633cd9828b117f68e381f58204c5e766c5a4ccbfd8840c88ede61e53fcffdc486749049ead4dfd66468f62698e231852d610dc8 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var core = require('@vueuse/core');
  5. var constants = require('./constants.js');
  6. var root = require('./root.js');
  7. var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
  8. var types = require('../../../utils/types.js');
  9. var index = require('../../../hooks/use-namespace/index.js');
  10. var index$1 = require('../../../hooks/use-id/index.js');
  11. const __default__ = vue.defineComponent({
  12. name: "ElTooltipV2Root"
  13. });
  14. const _sfc_main = /* @__PURE__ */ vue.defineComponent({
  15. ...__default__,
  16. props: root.tooltipV2RootProps,
  17. setup(__props, { expose }) {
  18. const props = __props;
  19. const _open = vue.ref(props.defaultOpen);
  20. const triggerRef = vue.ref(null);
  21. const open = vue.computed({
  22. get: () => types.isPropAbsent(props.open) ? _open.value : props.open,
  23. set: (open2) => {
  24. var _a;
  25. _open.value = open2;
  26. (_a = props["onUpdate:open"]) == null ? void 0 : _a.call(props, open2);
  27. }
  28. });
  29. const isOpenDelayed = vue.computed(() => types.isNumber(props.delayDuration) && props.delayDuration > 0);
  30. const { start: onDelayedOpen, stop: clearTimer } = core.useTimeoutFn(() => {
  31. open.value = true;
  32. }, vue.computed(() => props.delayDuration), {
  33. immediate: false
  34. });
  35. const ns = index.useNamespace("tooltip-v2");
  36. const contentId = index$1.useId();
  37. const onNormalOpen = () => {
  38. clearTimer();
  39. open.value = true;
  40. };
  41. const onDelayOpen = () => {
  42. vue.unref(isOpenDelayed) ? onDelayedOpen() : onNormalOpen();
  43. };
  44. const onOpen = onNormalOpen;
  45. const onClose = () => {
  46. clearTimer();
  47. open.value = false;
  48. };
  49. const onChange = (open2) => {
  50. var _a;
  51. if (open2) {
  52. document.dispatchEvent(new CustomEvent(constants.TOOLTIP_V2_OPEN));
  53. onOpen();
  54. }
  55. (_a = props.onOpenChange) == null ? void 0 : _a.call(props, open2);
  56. };
  57. vue.watch(open, onChange);
  58. vue.onMounted(() => {
  59. document.addEventListener(constants.TOOLTIP_V2_OPEN, onClose);
  60. });
  61. vue.onBeforeUnmount(() => {
  62. clearTimer();
  63. document.removeEventListener(constants.TOOLTIP_V2_OPEN, onClose);
  64. });
  65. vue.provide(constants.tooltipV2RootKey, {
  66. contentId,
  67. triggerRef,
  68. ns,
  69. onClose,
  70. onDelayOpen,
  71. onOpen
  72. });
  73. expose({
  74. onOpen,
  75. onClose
  76. });
  77. return (_ctx, _cache) => {
  78. return vue.renderSlot(_ctx.$slots, "default", { open: vue.unref(open) });
  79. };
  80. }
  81. });
  82. var TooltipV2Root = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "root.vue"]]);
  83. exports["default"] = TooltipV2Root;
  84. //# sourceMappingURL=root2.js.map