{"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 'casc-cesium-utils/private/global-nodes'\nimport { portalList } from 'casc-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":[],"mappings":";;;;AAGA,SAAS,gBAAgB,CAAC,EAAE,EAAE;AAC9B,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;AACjB,EAAE,OAAO,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;AACvC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;AAC3C,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK;AACL,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClE,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;AACnB,GAAG;AACH,EAAE,OAAO,KAAK,CAAC;AACf,CAAC;AACc,kBAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,iBAAiB,EAAE;AAC9E,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACrB,EAAE,IAAI,QAAQ,GAAG,IAAI,CAAC;AACtB,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;AACtF,IAAI,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;AAC9F,GAAG;AACH,EAAE,MAAM,cAAc,GAAG,iBAAiB,KAAK,IAAI,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC5E,EAAE,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE,SAAS,UAAU,GAAG;AACxB,IAAI,IAAI,cAAc,KAAK,KAAK,IAAI,QAAQ,KAAK,IAAI,EAAE;AACvD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;AACpC,KAAK;AACL,IAAI,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC;AAChC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC9B,GAAG;AACH,EAAE,SAAS,UAAU,GAAG;AACxB,IAAI,IAAI,GAAG,EAAE,GAAG,CAAC;AACjB,IAAI,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC;AACjC,IAAI,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACpB,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAClC,KAAK;AACL,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,QAAQ,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE;AACpH,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACjC,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,KAAK;AACL,GAAG;AACH,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;AAC1B,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5D,EAAE,OAAO;AACT,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,cAAc;AAClB,IAAI,YAAY,EAAE,MAAM;AACxB,MAAM,OAAO,cAAc,KAAK,IAAI,GAAG,mBAAmB,EAAE,GAAG,cAAc,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAC/J,KAAK;AACL,GAAG,CAAC;AACJ;;;;"}