{"version":3,"file":"useTeleport.mjs","sources":["../../src/hooks/useTeleport.ts"],"sourcesContent":["import { getSSRAttach, getAttach } from '../utils/dom';\nimport { computed, Ref, onMounted, ref, watch } from 'vue';\nimport { AttachNode } from '../common';\nimport isFunction from 'lodash/isFunction';\n\nconst useTeleport = (\n  attach: (() => AttachNode) | Ref<AttachNode>,\n  triggerNode?: (() => any) | Ref<any>,\n): Ref<string | Element> => {\n  // 如果是函数, 则使用computed包裹 否则直接使用ref\n  const to = isFunction(attach) ? computed(attach) : ref(attach);\n  const innerTriggerNode = isFunction(triggerNode) ? computed(triggerNode) : ref(triggerNode);\n\n  const element = ref<string | Element>();\n\n  const getElement = () => {\n    element.value = getSSRAttach() || getAttach(to.value, innerTriggerNode.value);\n  };\n\n  onMounted(() => getElement());\n\n  watch([to, innerTriggerNode], () => getElement());\n\n  return element;\n};\n\nexport default useTeleport;\n"],"names":["isFunction","element","onMounted","watch"],"mappings":";;;;;;;;;;;;;;;;;;;AAKA,IAAA,WAAA,GAAA,SAAA,WAAA,CAAA,MAAA,EAAA,WAAA,EAAA;AAKQ,EAAA,IAAA,EAAA,GAAAA,YAAA,CAAA,MAAA,CAAA,GAAA,QAAA,CAAA,MAAA,CAAA,GAAA,GAAA,CAAA,MAAA,CAAA,CAAA;AACA,EAAA,IAAA,gBAAA,GAAAA,YAAA,CAAA,WAAA,CAAA,GAAA,QAAA,CAAA,WAAA,CAAA,GAAA,GAAA,CAAA,WAAA,CAAA,CAAA;AAEN,EAAA,IAAA,OAAA,GAAA,GAAA,EAAA,CAAA;AAEA,EAAA,IAAA,UAAA,GAAA,SAAA,UAAA,GAAA;AACEC,IAAAA,OAAAA,CAAAA,KAAAA,GAAAA,YAAAA,EAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,KAAAA,EAAAA,gBAAAA,CAAAA,KAAAA,CAAAA,CAAAA;;AAGQC,EAAAA,SAAAA,CAAAA,YAAAA;;;AAEVC,EAAAA,KAAAA,CAAAA,CAAAA,EAAAA,EAAAA,gBAAAA,CAAAA,EAAAA,YAAAA;;;AAEO,EAAA,OAAA,OAAA,CAAA;AACT;;;;"}