UNPKG

vue-cesium

Version:
1 lines 4.55 kB
{"version":3,"file":"use-portal.mjs","sources":["../../../../../packages/composables/private/use-portal.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-06-01 18:06:23\n * @LastEditTime: 2021-10-02 10:52:32\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\private\\use-portal.ts\n */\nimport { h, ref, onUnmounted, Teleport } from 'vue'\nimport { createGlobalNode, removeGlobalNode } from '@vue-cesium/utils/private/global-nodes'\nimport { portalList } from '@vue-cesium/utils/private/portal'\n\nfunction isOnGlobalDialog(vm) {\n vm = vm.parent\n\n while (vm !== void 0 && vm !== null) {\n if (vm.type.name === 'VcGlobalDialog') {\n return true\n }\n if (vm.type.name === 'VcDialog' || vm.type.name === 'VcMenu') {\n return false\n }\n\n vm = vm.parent\n }\n\n return false\n}\n\n// Warning!\n// You MUST specify \"inheritAttrs: false\" in your component\n\nexport default function (vm, innerRef, renderPortalContent, checkGlobalDialog?) {\n let portalEl: HTMLElement = null!\n\n if (vm.props?.teleport?.to) {\n portalEl = vm.props?.teleport?.to\n }\n\n const onGlobalDialog = checkGlobalDialog === true && isOnGlobalDialog(vm)\n const portalIsActive = ref(false)\n\n function showPortal() {\n if (onGlobalDialog === false && portalEl === null) {\n portalEl = createGlobalNode()\n }\n\n portalIsActive.value = true\n\n // register portal\n portalList.push(vm.proxy)\n }\n\n function hidePortal() {\n portalIsActive.value = false\n\n // unregister portal\n const index = portalList.indexOf(vm.proxy)\n if (index > -1) {\n portalList.splice(index, 1)\n }\n\n if (portalEl !== null && !vm.props?.teleport?.to) {\n removeGlobalNode(portalEl)\n portalEl = null!\n }\n }\n\n onUnmounted(hidePortal)\n\n // expose publicly needed stuff for portal utils\n Object.assign(vm.proxy, { __vcPortalInnerRef: innerRef })\n\n return {\n showPortal,\n hidePortal,\n\n portalIsActive,\n\n renderPortal: () => {\n return onGlobalDialog === true\n ? renderPortalContent()\n : portalIsActive.value === true\n ? [h(Teleport, { to: portalEl }, renderPortalContent())]\n : void 0\n }\n }\n}\n"],"names":["_a","_b"],"mappings":"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"}