You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
3.7 KiB

{"ast":null,"code":"import { ref, h, Teleport, onUnmounted } from 'vue';\nimport '../../utils/index.mjs';\nimport { isClient } from '@vueuse/core';\nimport { NOOP } from '@vue/shared';\nimport { createGlobalNode, removeGlobalNode } from '../../utils/vue/global-node.mjs';\nconst useTeleport = (contentRenderer, appendToBody) => {\n const isTeleportVisible = ref(false);\n if (!isClient) {\n return {\n isTeleportVisible,\n showTeleport: NOOP,\n hideTeleport: NOOP,\n renderTeleport: NOOP\n };\n }\n let $el = null;\n const showTeleport = () => {\n isTeleportVisible.value = true;\n if ($el !== null) return;\n $el = createGlobalNode();\n };\n const hideTeleport = () => {\n isTeleportVisible.value = false;\n if ($el !== null) {\n removeGlobalNode($el);\n $el = null;\n }\n };\n const renderTeleport = () => {\n return appendToBody.value !== true ? contentRenderer() : isTeleportVisible.value ? [h(Teleport, {\n to: $el\n }, contentRenderer())] : void 0;\n };\n onUnmounted(hideTeleport);\n return {\n isTeleportVisible,\n showTeleport,\n hideTeleport,\n renderTeleport\n };\n};\nexport { useTeleport };","map":{"version":3,"names":["useTeleport","contentRenderer","appendToBody","isTeleportVisible","ref","isClient","showTeleport","NOOP","hideTeleport","renderTeleport","$el","value","createGlobalNode","removeGlobalNode","h","Teleport","to","onUnmounted"],"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"],"mappings":";;;;;AAOY,MAACA,WAAW,GAAGA,CAACC,eAAe,EAAEC,YAAY,KAAK;EAC5D,MAAMC,iBAAiB,GAAGC,GAAG,CAAC,KAAK,CAAC;EACpC,IAAI,CAACC,QAAQ,EAAE;IACb,OAAO;MACLF,iBAAiB;MACjBG,YAAY,EAAEC,IAAI;MAClBC,YAAY,EAAED,IAAI;MAClBE,cAAc,EAAEF;IACtB,CAAK;EACL;EACE,IAAIG,GAAG,GAAG,IAAI;EACd,MAAMJ,YAAY,GAAGA,CAAA,KAAM;IACzBH,iBAAiB,CAACQ,KAAK,GAAG,IAAI;IAC9B,IAAID,GAAG,KAAK,IAAI,EACd;IACFA,GAAG,GAAGE,gBAAgB,EAAE;EAC5B,CAAG;EACD,MAAMJ,YAAY,GAAGA,CAAA,KAAM;IACzBL,iBAAiB,CAACQ,KAAK,GAAG,KAAK;IAC/B,IAAID,GAAG,KAAK,IAAI,EAAE;MAChBG,gBAAgB,CAACH,GAAG,CAAC;MACrBA,GAAG,GAAG,IAAI;IAChB;EACA,CAAG;EACD,MAAMD,cAAc,GAAGA,CAAA,KAAM;IAC3B,OAAOP,YAAY,CAACS,KAAK,KAAK,IAAI,GAAGV,eAAe,EAAE,GAAGE,iBAAiB,CAACQ,KAAK,GAAG,CAACG,CAAC,CAACC,QAAQ,EAAE;MAAEC,EAAE,EAAEN;IAAG,CAAE,EAAET,eAAe,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;EAC7I,CAAG;EACDgB,WAAW,CAACT,YAAY,CAAC;EACzB,OAAO;IACLL,iBAAiB;IACjBG,YAAY;IACZE,YAAY;IACZC;EACJ,CAAG;AACH","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}