{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-teleport/index.ts"],"sourcesContent":["import { Teleport, h, onUnmounted, ref } from 'vue'\nimport { NOOP } from '@vue/shared'\nimport { isClient } from '@vueuse/core'\nimport { createGlobalNode, removeGlobalNode } from '@vuesax-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":";;;;;;AAOa,MAAA,WAAA,GAAc,CACzB,eAAA,EACA,YACG,KAAA;AACH,EAAM,MAAA,iBAAA,GAAoB,IAAI,KAAK,CAAA,CAAA;AAEnC,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA;AAAA,MACL,iBAAA;AAAA,MACA,YAAc,EAAA,IAAA;AAAA,MACd,YAAc,EAAA,IAAA;AAAA,MACd,cAAgB,EAAA,IAAA;AAAA,KAClB,CAAA;AAAA,GACF;AAEA,EAAA,IAAI,GAA0B,GAAA,IAAA,CAAA;AAE9B,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,iBAAA,CAAkB,KAAQ,GAAA,IAAA,CAAA;AAG1B,IAAA,IAAI,GAAQ,KAAA,IAAA;AAAM,MAAA,OAAA;AAElB,IAAA,GAAA,GAAM,gBAAiB,EAAA,CAAA;AAAA,GACzB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,iBAAA,CAAkB,KAAQ,GAAA,KAAA,CAAA;AAC1B,IAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,MAAA,gBAAA,CAAiB,GAAG,CAAA,CAAA;AACpB,MAAM,GAAA,GAAA,IAAA,CAAA;AAAA,KACR;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,OAAO,aAAa,KAAU,KAAA,IAAA,GAC1B,eAAgB,EAAA,GAChB,kBAAkB,KAClB,GAAA,CAAC,CAAE,CAAA,QAAA,EAAU,EAAE,EAAI,EAAA,GAAA,IAAO,eAAgB,EAAC,CAAC,CAC5C,GAAA,KAAA,CAAA,CAAA;AAAA,GACN,CAAA;AAEA,EAAA,WAAA,CAAY,YAAY,CAAA,CAAA;AAExB,EAAO,OAAA;AAAA,IACL,iBAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,GACF,CAAA;AACF;;;;"}