{"version":3,"file":"portal.mjs","sources":["../../../../../../package/formily/__builtins__/shared/portal.ts"],"sourcesContent":["import { defineComponent, onBeforeUnmount } from \"vue\";\nimport { h, Fragment } from \"@formily/vue\";\nexport interface IPortalProps {\n  id?: string | symbol;\n}\n\nconst PortalMap = new Map<string | symbol, any>();\n\nexport const createPortalProvider = (id: string | symbol) => {\n  const Portal = defineComponent({\n    name: \"PortalProvider\",\n    props: {\n      id: {\n        type: [String, Symbol],\n        default: id\n      }\n    },\n\n    setup(props) {\n      onBeforeUnmount(() => {\n        const { id } = props;\n        if (id && PortalMap.has(id)) {\n          PortalMap.delete(id);\n        }\n      });\n    },\n\n    render() {\n      const { id } = this;\n      if (id && !PortalMap.has(id)) {\n        PortalMap.set(id, this);\n      }\n\n      return h(Fragment, {}, this.$slots);\n    }\n  });\n\n  return Portal;\n};\n\nexport function getPortalContext(id: string | symbol) {\n  return PortalMap.get(id);\n}\n"],"names":["id"],"mappings":";;;AAMA,MAAM,SAAA,uBAAgB,GAA0B,EAAA,CAAA;AAEnC,MAAA,oBAAA,GAAuB,CAAC,EAAwB,KAAA;AAC3D,EAAA,MAAM,SAAS,eAAgB,CAAA;AAAA,IAC7B,IAAM,EAAA,gBAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,EAAI,EAAA;AAAA,QACF,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,QACrB,OAAS,EAAA,EAAA;AAAA,OACX;AAAA,KACF;AAAA,IAEA,MAAM,KAAO,EAAA;AACX,MAAA,eAAA,CAAgB,MAAM;AACpB,QAAM,MAAA,EAAE,EAAAA,EAAAA,GAAAA,EAAO,GAAA,KAAA,CAAA;AACf,QAAA,IAAIA,GAAM,IAAA,SAAA,CAAU,GAAIA,CAAAA,GAAE,CAAG,EAAA;AAC3B,UAAA,SAAA,CAAU,OAAOA,GAAE,CAAA,CAAA;AAAA,SACrB;AAAA,OACD,CAAA,CAAA;AAAA,KACH;AAAA,IAEA,MAAS,GAAA;AACP,MAAM,MAAA,EAAE,EAAAA,EAAAA,GAAAA,EAAO,GAAA,IAAA,CAAA;AACf,MAAA,IAAIA,GAAM,IAAA,CAAC,SAAU,CAAA,GAAA,CAAIA,GAAE,CAAG,EAAA;AAC5B,QAAU,SAAA,CAAA,GAAA,CAAIA,KAAI,IAAI,CAAA,CAAA;AAAA,OACxB;AAEA,MAAA,OAAO,CAAE,CAAA,QAAA,EAAU,EAAC,EAAG,KAAK,MAAM,CAAA,CAAA;AAAA,KACpC;AAAA,GACD,CAAA,CAAA;AAED,EAAO,OAAA,MAAA,CAAA;AACT,EAAA;AAEO,SAAS,iBAAiB,EAAqB,EAAA;AACpD,EAAO,OAAA,SAAA,CAAU,IAAI,EAAE,CAAA,CAAA;AACzB;;;;"}