UNPKG

ll-package

Version:

2 lines (1 loc) 2.1 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),z=require("../../../dom-align/dist-web/index.js"),T=require("../vc-util/Dom/addEventListener.js"),B=require("../_util/vnode.js"),O=require("../vc-util/Dom/isVisible.js"),m=require("./util.js"),j=require("./hooks/useBuffer.js"),x=require("../../../lodash-es/isEqual.js"),h={align:Object,target:[Object,Function],onAlign:Function,monitorBufferTime:Number,monitorWindowResize:Boolean,disabled:Boolean};function p(n){return typeof n!="function"?null:n()}function w(n){return typeof n!="object"||!n?null:n}const F=e.defineComponent({compatConfig:{MODE:3},name:"Align",props:h,emits:["align"],setup(n,E){let{expose:M,slots:g}=E;const o=e.ref({}),u=e.ref(),[a,A]=j.default(()=>{const{disabled:t,target:l,align:s,onAlign:R}=n;if(!t&&l&&u.value){const f=u.value;let v;const d=p(l),b=w(l);o.value.element=d,o.value.point=b,o.value.align=s;const{activeElement:P}=document;return d&&O.default(d)?v=z.default(f,d,s):b&&(v=z.alignPoint(f,b,s)),m.restoreFocus(P,f),R&&v&&R(f,v),!0}return!1},e.computed(()=>n.monitorBufferTime)),r=e.ref({cancel:()=>{}}),c=e.ref({cancel:()=>{}}),q=()=>{const t=n.target,l=p(t),s=w(t);u.value!==c.value.element&&(c.value.cancel(),c.value.element=u.value,c.value.cancel=m.monitorResize(u.value,a)),(o.value.element!==l||!m.isSamePoint(o.value.point,s)||!x.default(o.value.align,n.align))&&(a(),r.value.element!==l&&(r.value.cancel(),r.value.element=l,r.value.cancel=m.monitorResize(l,a)))};e.onMounted(()=>{e.nextTick(()=>{q()})}),e.onUpdated(()=>{e.nextTick(()=>{q()})}),e.watch(()=>n.disabled,t=>{t?A():a()},{immediate:!0,flush:"post"});const i=e.ref(null);return e.watch(()=>n.monitorWindowResize,t=>{t?i.value||(i.value=T.default(window,"resize",a)):i.value&&(i.value.remove(),i.value=null)},{flush:"post"}),e.onUnmounted(()=>{r.value.cancel(),c.value.cancel(),i.value&&i.value.remove(),A()}),M({forceAlign:()=>a(!0)}),()=>{const t=g==null?void 0:g.default();return t?B.cloneElement(t[0],{ref:u},!0,!0):null}}});exports.alignProps=h;exports.default=F;