2 lines
3.0 KiB
Java
2 lines
3.0 KiB
Java
var $=Object.defineProperty,O=Object.defineProperties;var N=Object.getOwnPropertyDescriptors;var C=Object.getOwnPropertySymbols;var S=Object.prototype.hasOwnProperty,D=Object.prototype.propertyIsEnumerable;var g=(e,t,o)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,w=(e,t)=>{for(var o in t||(t={}))S.call(t,o)&&g(e,o,t[o]);if(C)for(var o of C(t))D.call(t,o)&&g(e,o,t[o]);return e},I=(e,t)=>O(e,N(t));import{aR as h,x as P,ff as R}from"./index-X7Y8jykP.js";import{e as W,o as A,n as F,r as k,d as L,u as y,f as r,c as H,F as V,a8 as B,ae as T,g as U}from"./vue-vendor-DNhG1Cve.js";import X from"./index-saD4h7VJ.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";function Y(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!B(e)}const v="context-menu",q={width:{type:Number,default:156},customEvent:{type:Object,default:null},styles:{type:Object},showIcon:{type:Boolean,default:!0},axis:{type:Object,default(){return{x:0,y:0}}},items:{type:Array,default(){return[]}}},M=e=>{const{item:t}=e;return r("span",{style:"display: inline-block; width: 100%; ",class:"px-4",onClick:e.handler.bind(null,t)},[e.showIcon&&t.icon&&r(P,{class:"mr-2",icon:t.icon},null),r("span",null,[t.label])])},z=W({name:"ContextMenu",props:q,setup(e){const t=k(null),o=k(!1),i=H(()=>{const{axis:s,items:n,styles:c,width:l}=e,{x:a,y:m}=s||{x:0,y:0},p=(n||[]).length*40,b=l,x=document.body,_=x.clientWidth<a+b?a-b:a,j=x.clientHeight<m+p?m-p:m;return I(w({},c),{width:`${l}px`,left:`${_+1}px`,top:`${j+1}px`})});A(()=>{F(()=>o.value=!0)}),L(()=>{const s=y(t);s&&document.body.removeChild(s)});function f(s,n){const{handler:c,disabled:l}=s;l||(o.value=!1,n==null||n.stopPropagation(),n==null||n.preventDefault(),c==null||c())}function u(s){return s.map(n=>{const{disabled:c,label:l,children:a,divider:m=!1}=n,p={item:n,handler:f,showIcon:e.showIcon};return!a||a.length===0?r(V,null,[r(h.Item,{disabled:c,class:`${v}__item`,key:l},{default:()=>[r(M,p,null)]}),m?r(X,{key:`d-${l}`},null):null]):y(o)?r(h.SubMenu,{key:l,disabled:c,popupClassName:`${v}__popup`},{title:()=>r(M,p,null),default:()=>u(a)}):null})}return()=>{let s;if(!y(o))return null;const{items:n}=e;return r(h,{inlineIndent:12,mode:"vertical",class:v,ref:t,style:y(i)},Y(s=u(n))?s:{default:()=>[s]})}}}),d={domList:[],resolve:()=>{}},G=function(e){const{event:t}=e||{};if(t&&(t==null||t.preventDefault()),!!R)return new Promise(o=>{const i=document.body,f=document.createElement("div"),u={};e.styles&&(u.styles=e.styles),e.items&&(u.items=e.items),e.event&&(u.customEvent=t,u.axis={x:t.clientX,y:t.clientY});const s=r(z,u);T(s,f);const n=function(){d.resolve("")};d.domList.push(f);const c=function(){d.domList.forEach(l=>{try{l&&i.removeChild(l)}catch(a){}}),i.removeEventListener("click",n),i.removeEventListener("scroll",n)};d.resolve=function(l){c(),o(l)},c(),i.appendChild(f),i.addEventListener("click",n),i.addEventListener("scroll",n)})},E=function(){d&&(d.resolve(""),d.domList=[])};function te(e=!0){return U()&&e&&L(()=>{E()}),[G,E]}export{te as useContextMenu};
|