{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-teleport/index.ts"],"sourcesContent":["import { Teleport, h, onUnmounted, ref } from 'vue'\nimport {\n  NOOP,\n  createGlobalNode,\n  isClient,\n  removeGlobalNode,\n} from '@element-plus/utils'\n\nimport type { Ref, VNode } from 'vue'\n\nexport const useTeleport = (\n  contentRenderer: () => VNode,\n  appendToBody: Ref<boolean>\n) => {\n  const isTeleportVisible = ref(false)\n\n  if (!isClient) {\n    return {\n      isTeleportVisible,\n      showTeleport: NOOP,\n      hideTeleport: NOOP,\n      renderTeleport: NOOP,\n    }\n  }\n\n  let $el: HTMLElement | null = null\n\n  const showTeleport = () => {\n    isTeleportVisible.value = true\n    // this allows the delayed showing strategy since the the content itself could be enterable\n    // e.g. el-popper\n    if ($el !== null) return\n\n    $el = createGlobalNode()\n  }\n\n  const hideTeleport = () => {\n    isTeleportVisible.value = false\n    if ($el !== null) {\n      removeGlobalNode($el)\n      $el = null\n    }\n  }\n\n  const renderTeleport = () => {\n    return appendToBody.value !== true\n      ? contentRenderer()\n      : isTeleportVisible.value\n        ? [h(Teleport, { to: $el }, contentRenderer())]\n        : undefined\n  }\n\n  onUnmounted(hideTeleport)\n\n  return {\n    isTeleportVisible,\n    showTeleport,\n    hideTeleport,\n    renderTeleport,\n  }\n}\n"],"names":[],"mappings":";;;;;AAUO,MAAM,WAAA,GAAc,CACzB,eAAA,EACA,YAAA,KACG;AACH,EAAA,MAAM,iBAAA,GAAoB,IAAI,KAAK,CAAA;AAEnC,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO;AAAA,MACL,iBAAA;AAAA,MACA,YAAA,EAAc,IAAA;AAAA,MACd,YAAA,EAAc,IAAA;AAAA,MACd,cAAA,EAAgB;AAAA,KAClB;AAAA,EACF;AAEA,EAAA,IAAI,GAAA,GAA0B,IAAA;AAE9B,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,iBAAA,CAAkB,KAAA,GAAQ,IAAA;AAG1B,IAAA,IAAI,QAAQ,IAAA,EAAM;AAElB,IAAA,GAAA,GAAM,gBAAA,EAAiB;AAAA,EACzB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,iBAAA,CAAkB,KAAA,GAAQ,KAAA;AAC1B,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,gBAAA,CAAiB,GAAG,CAAA;AACpB,MAAA,GAAA,GAAM,IAAA;AAAA,IACR;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,OAAO,aAAa,KAAA,KAAU,IAAA,GAC1B,eAAA,EAAgB,GAChB,kBAAkB,KAAA,GAChB,CAAC,CAAA,CAAE,QAAA,EAAU,EAAE,EAAA,EAAI,GAAA,IAAO,eAAA,EAAiB,CAAC,CAAA,GAC5C,MAAA;AAAA,EACR,CAAA;AAEA,EAAA,WAAA,CAAY,YAAY,CAAA;AAExB,EAAA,OAAO;AAAA,IACL,iBAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}