{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/tooltip/src/index.ts"],"sourcesContent":["import { defineComponent, h, ref, cloneVNode } from 'vue'\nimport {\n  default as ElPopper,\n  popperDefaultProps,\n} from '@element-plus/components/popper'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/utils/constants'\nimport { throwError } from '@element-plus/utils/error'\nimport { getFirstValidNode } from '@element-plus/utils/vnode'\n\n/**\n * ElTooltip\n * Tooltip is essentially an upper layer for Popper, due to popper has already implemented so many functionalities and Popper is essentially a component shared internally\n * Tooltip also does the API translation work for popper.\n * Tooltip shares the exact same API which v2 has, so that the user should be able to\n */\nexport default defineComponent({\n  name: 'ElTooltip',\n  components: {\n    ElPopper,\n  },\n  props: {\n    ...popperDefaultProps,\n    manual: {\n      type: Boolean,\n      default: false,\n    },\n    modelValue: {\n      type: Boolean,\n      validator: (val: unknown) => {\n        return typeof val === 'boolean'\n      },\n      default: undefined,\n    },\n    // This API should be decaprecate since it's confusing with close-delay\n    openDelay: {\n      type: Number,\n      default: 0,\n    },\n    visibleArrow: {\n      type: Boolean,\n      default: true,\n    },\n    tabindex: {\n      type: [String, Number],\n      default: '0',\n    },\n  },\n  emits: [UPDATE_MODEL_EVENT],\n  setup(props, ctx) {\n    // when manual mode is true, v-model must be passed down\n    if (props.manual && typeof props.modelValue === 'undefined') {\n      throwError(\n        '[ElTooltip]',\n        'You need to pass a v-model to el-tooltip when `manual` is true'\n      )\n    }\n\n    const popper = ref(null)\n\n    const onUpdateVisible = (val) => {\n      ctx.emit(UPDATE_MODEL_EVENT, val)\n    }\n\n    const updatePopper = () => {\n      return popper.value.update()\n    }\n\n    return {\n      popper,\n      onUpdateVisible,\n      updatePopper,\n    }\n  },\n  render() {\n    const {\n      $slots,\n      content,\n      manual,\n      openDelay,\n      onUpdateVisible,\n      showAfter,\n      visibleArrow,\n      modelValue,\n      tabindex,\n    } = this\n\n    const throwErrorTip = () => {\n      throwError('[ElTooltip]', 'you need to provide a valid default slot.')\n    }\n\n    const popper = h(\n      ElPopper,\n      {\n        ...Object.keys(popperDefaultProps).reduce((result, key) => {\n          return { ...result, [key]: this[key] }\n        }, {}),\n        ref: 'popper',\n        manualMode: manual,\n        showAfter: openDelay || showAfter, // this is for mapping API due to we decided to rename the current openDelay API to showAfter for better readability,\n        showArrow: visibleArrow,\n        visible: modelValue,\n        'onUpdate:visible': onUpdateVisible,\n      },\n      {\n        default: () => ($slots.content ? $slots.content() : content),\n        trigger: () => {\n          if ($slots.default) {\n            const firstVnode = getFirstValidNode($slots.default(), 1)\n            if (!firstVnode) throwErrorTip()\n            return cloneVNode(firstVnode, { tabindex }, true)\n          }\n          throwErrorTip()\n        },\n      }\n    )\n\n    return popper\n  },\n})\n"],"names":["ElPopper"],"mappings":";;;;;;;AAeA,cAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,cACVA;AAAA;AAAA,EAEF,OAAO;AAAA,OACF;AAAA,IACH,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,YAAY;AAAA,MACV,MAAM;AAAA,MACN,WAAW,CAAC,QAAiB;AAC3B,eAAO,OAAO,QAAQ;AAAA;AAAA,MAExB,SAAS;AAAA;AAAA,IAGX,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAEX,UAAU;AAAA,MACR,MAAM,CAAC,QAAQ;AAAA,MACf,SAAS;AAAA;AAAA;AAAA,EAGb,OAAO,CAAC;AAAA,EACR,MAAM,OAAO,KAAK;AAEhB,QAAI,MAAM,UAAU,OAAO,MAAM,eAAe,aAAa;AAC3D,iBACE,eACA;AAAA;AAIJ,UAAM,SAAS,IAAI;AAEnB,UAAM,kBAAkB,CAAC,QAAQ;AAC/B,UAAI,KAAK,oBAAoB;AAAA;AAG/B,UAAM,eAAe,MAAM;AACzB,aAAO,OAAO,MAAM;AAAA;AAGtB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA,EAGJ,SAAS;AACP,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE;AAEJ,UAAM,gBAAgB,MAAM;AAC1B,iBAAW,eAAe;AAAA;AAG5B,UAAM,SAAS,EACbA,SACA;AAAA,SACK,OAAO,KAAK,oBAAoB,OAAO,CAAC,QAAQ,QAAQ;AACzD,eAAO,KAAK,SAAS,MAAM,KAAK;AAAA,SAC/B;AAAA,MACH,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,WAAW,aAAa;AAAA,MACxB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,oBAAoB;AAAA,OAEtB;AAAA,MACE,SAAS,MAAO,OAAO,UAAU,OAAO,YAAY;AAAA,MACpD,SAAS,MAAM;AACb,YAAI,OAAO,SAAS;AAClB,gBAAM,aAAa,kBAAkB,OAAO,WAAW;AACvD,cAAI,CAAC;AAAY;AACjB,iBAAO,WAAW,YAAY,EAAE,YAAY;AAAA;AAE9C;AAAA;AAAA;AAKN,WAAO;AAAA;AAAA;;;;"}