UNPKG

ll-package

Version:

2 lines (1 loc) 2.33 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),S=require("./vue-types/index.js"),U=require("./Portal.js"),m=require("./canUseDom.js"),q=require("./raf.js"),M=require("./type.js"),T=require("./hooks/useScrollLocker.js");let u=0;const d=m.default(),N=e=>{if(!d)return null;if(e){if(typeof e=="string")return document.querySelectorAll(e)[0];if(typeof e=="function")return e();if(typeof e=="object"&&e instanceof window.HTMLElement)return e}return document.body},_=l.defineComponent({compatConfig:{MODE:3},name:"PortalWrapper",inheritAttrs:!1,props:{wrapperClassName:String,forceRender:{type:Boolean,default:void 0},getContainer:S.default.any,visible:{type:Boolean,default:void 0},autoLock:M.booleanType(),didUpdate:Function},setup(e,P){let{slots:p}=P;const n=l.shallowRef(),g=l.shallowRef(),b=l.shallowRef(),y=l.shallowRef(1),f=m.default()&&document.createElement("div"),C=()=>{var t,o;n.value===f&&((o=(t=n.value)===null||t===void 0?void 0:t.parentNode)===null||o===void 0||o.removeChild(n.value)),n.value=null};let r=null;const c=function(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)||n.value&&!n.value.parentNode?(r=N(e.getContainer),r?(r.appendChild(n.value),!0):!1):!0},h=()=>d?(n.value||(n.value=f,c(!0)),w(),n.value):null,w=()=>{const{wrapperClassName:t}=e;n.value&&t&&t!==n.value.className&&(n.value.className=t)};return l.onUpdated(()=>{w(),c()}),T.default(l.computed(()=>e.autoLock&&e.visible&&m.default()&&(n.value===document.body||n.value===f))),l.onMounted(()=>{let t=!1;l.watch([()=>e.visible,()=>e.getContainer],(o,i)=>{let[s,a]=o,[R,v]=i;d&&(r=N(e.getContainer),r===document.body&&(s&&!R?u+=1:t&&(u-=1))),t&&(typeof a=="function"&&typeof v=="function"?a.toString()!==v.toString():a!==v)&&C(),t=!0},{immediate:!0,flush:"post"}),l.nextTick(()=>{c()||(b.value=q.default(()=>{y.value+=1}))})}),l.onBeforeUnmount(()=>{const{visible:t}=e;d&&r===document.body&&(u=t&&u?u-1:u),C(),q.default.cancel(b.value)}),()=>{const{forceRender:t,visible:o}=e;let i=null;const s={getOpenCount:()=>u,getContainer:h};return y.value&&(t||o||g.value)&&(i=l.createVNode(U.default,{getContainer:h,ref:g,didUpdate:e.didUpdate},{default:()=>{var a;return(a=p.default)===null||a===void 0?void 0:a.call(p,s)}})),i}}});exports.default=_;