UNPKG

@artmate/chat

Version:

借鉴字节开源react库AntX,通过vue实现的版本

2 lines (1 loc) 1.59 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),p=require("../hooks/useNamespace.js"),f=e.defineComponent({__name:"DropArea",props:{className:{default:""},getDropContainer:{type:[Function,null],default:null},disabled:{type:Boolean,default:!1}},setup(v){const a=v,l=p.useNamespace("attachment-drop-area"),n=e.ref(null),o=e.ref(null);e.watch(()=>a.getDropContainer,()=>{var r;const t=(r=a.getDropContainer)==null?void 0:r.call(a);n.value!==t&&(n.value=t)},{immediate:!0});const i=e.computed(()=>a.getDropContainer&&n.value&&!a.disabled),m=e.computed(()=>{var t;return[a.className,{[l.b("on-body")]:n.value&&((t=n.value)==null?void 0:t.tagName)==="BODY"}]}),u=()=>{o.value=!0},s=t=>{t.preventDefault()},d=t=>{t.relatedTarget||(o.value=!1)},c=t=>{o.value=!1,t.preventDefault()};return e.watch(()=>n.value,()=>{n.value&&(document.addEventListener("dragenter",u),document.addEventListener("dragover",s),document.addEventListener("dragleave",d),document.addEventListener("drop",c,!0))},{immediate:!0}),e.onUnmounted(()=>{n.value&&(document.removeEventListener("dragenter",u),document.removeEventListener("dragover",s),document.removeEventListener("dragleave",d),document.removeEventListener("drop",c))}),(t,r)=>i.value?(e.openBlock(),e.createBlock(e.Teleport,{key:0,to:n.value},[e.createElementVNode("div",{class:e.normalizeClass([e.unref(l).b(),...m.value]),style:e.normalizeStyle({display:o.value?"block":"none"})},[e.renderSlot(t.$slots,"default")],6)],8,["to"])):e.createCommentVNode("",!0)}});exports.default=f;