| 12 |
- var e=Object.defineProperty,n=Object.defineProperties,t=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,l=(n,t,a)=>t in n?e(n,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):n[t]=a;import{k as o,aA as u,r as d,c as r,p as c,P as m,D as p,x as y,aw as b,G as h,a7 as f,R as v,Q as x,u as w,F as g,$ as k,S as L,V as D,X as M,aq as P}from"./vendor-CgKklJ4r.js";import{_ as T}from"./_plugin-vue_export-helper-BCo6x5W8.js";const E={class:"menu-right"},H=["onClick"],O=["innerHTML"],W={class:"menu-label"},$={class:"submenu-title"},j=["innerHTML"],_={class:"menu-label"},R=["onClick"],I=["innerHTML"],A={class:"menu-label"},C=o((X=((e,n)=>{for(var t in n||(n={}))i.call(n,t)&&l(e,t,n[t]);if(a)for(var t of a(n))s.call(n,t)&&l(e,t,n[t]);return e})({},{name:"ArtMenuRight"}),n(X,t({__name:"index",props:{menuItems:{},menuWidth:{default:120},submenuWidth:{default:150},itemHeight:{default:32},boundaryDistance:{default:10},menuPadding:{default:5},itemPaddingX:{default:6},borderRadius:{default:6},animationDuration:{default:100}},emits:["select","show","hide"],setup(e,{expose:n,emit:t}){u((e=>({"03a3f243":a.menuWidth+"px","4122aad2":a.borderRadius+"px","78ce3298":a.animationDuration+"ms"})));const a=e,i=t,s=d(!1),l=d({x:0,y:0});let o=null,T=!1;const C=r((()=>({position:"fixed",left:`${l.value.x}px`,top:`${l.value.y}px`,zIndex:2e3,width:`${a.menuWidth}px`}))),X=r((()=>({padding:`${a.menuPadding}px`}))),S=r((()=>({height:`${a.itemHeight}px`,padding:`0 ${a.itemPaddingX}px`,borderRadius:"4px"}))),q=r((()=>({minWidth:`${a.submenuWidth}px`,padding:`${a.menuPadding}px 0`,borderRadius:`${a.borderRadius}px`}))),z=e=>{const n=window.innerWidth,t=window.innerHeight,i=(()=>{let e=2*a.menuPadding;return a.menuItems.forEach((n=>{e+=a.itemHeight,n.showLine&&(e+=10)})),e})();let s=e.clientX,l=e.clientY;return s+a.menuWidth>n-a.boundaryDistance&&(s=Math.max(a.boundaryDistance,s-a.menuWidth)),l+i>t-a.boundaryDistance&&(l=Math.max(a.boundaryDistance,t-i-a.boundaryDistance)),s=Math.max(a.boundaryDistance,Math.min(s,n-a.menuWidth-a.boundaryDistance)),l=Math.max(a.boundaryDistance,Math.min(l,t-i-a.boundaryDistance)),{x:s,y:l}},B=()=>{T&&(document.removeEventListener("click",F),document.removeEventListener("contextmenu",G),document.removeEventListener("keydown",Q),T=!1)},F=e=>{const n=e.target,t=document.querySelector(".context-menu");t&&t.contains(n)||V()},G=()=>{V()},Q=e=>{"Escape"===e.key&&V()},V=()=>{s.value&&(s.value=!1,i("hide"),o&&(window.clearTimeout(o),o=null),B())},Y=e=>{e.disabled||(i("select",e),V())},J=e=>{e.style.transformOrigin="top left"},K=()=>{B(),o&&(window.clearTimeout(o),o=null)};return c((()=>{B(),o&&(window.clearTimeout(o),o=null)})),n({show:e=>{e.preventDefault(),e.stopPropagation(),o&&(window.clearTimeout(o),o=null),l.value=z(e),s.value=!0,i("show"),o=window.setTimeout((()=>{s.value&&(T||(document.addEventListener("click",F),document.addEventListener("contextmenu",G),document.addEventListener("keydown",Q),T=!0)),o=null}),50)},hide:V,visible:r((()=>s.value))}),(e,n)=>(p(),m("div",E,[y(b,{name:"context-menu",onBeforeEnter:J,onAfterLeave:K},{default:h((()=>[f(v("div",{style:x(w(C)),class:"context-menu"},[v("ul",{class:"menu-list",style:x(w(X))},[(p(!0),m(g,null,k(e.menuItems,(e=>(p(),m(g,{key:e.key},[e.children?(p(),m("li",{key:1,class:"menu-item submenu",style:x(w(S))},[v("div",$,[e.icon?(p(),m("i",{key:0,class:"iconfont-sys",innerHTML:e.icon},null,8,j)):D("",!0),v("span",_,M(e.label),1),n[0]||(n[0]=v("i",{class:"iconfont-sys submenu-arrow"},"",-1))]),v("ul",{class:"submenu-list",style:x(w(q))},[(p(!0),m(g,null,k(e.children,(e=>(p(),m("li",{key:e.key,class:L(["menu-item",{"is-disabled":e.disabled,"has-line":e.showLine}]),style:x(w(S)),onClick:n=>Y(e)},[e.icon?(p(),m("i",{key:0,class:"iconfont-sys",innerHTML:e.icon},null,8,I)):D("",!0),v("span",A,M(e.label),1)],14,R)))),128))],4)],4)):(p(),m("li",{key:0,class:L(["menu-item",{"is-disabled":e.disabled,"has-line":e.showLine}]),style:x(w(S)),onClick:n=>Y(e)},[e.icon?(p(),m("i",{key:0,class:"iconfont-sys",innerHTML:e.icon},null,8,O)):D("",!0),v("span",W,M(e.label),1)],14,H))],64)))),128))],4)],4),[[P,w(s)]])])),_:1})]))}}))));var X;const S=T(C,[["__scopeId","data-v-1f2e2f4a"]]);export{S as A};
|