UNPKG

@vuux/video

Version:

Vue Nuxt 视频播放器

2 lines (1 loc) 1.25 kB
"use strict";const e=require("vue"),x=require("@vuux/utils"),k=["onClick"],f=e.defineComponent({__name:"context-menu",props:{el:{},contextMenu:{}},emits:["contextMenu"],setup(u,{emit:r}){const o=u,t=e.reactive({element:o.el,isOpen:!1,topPosition:0,leftPosition:0}),m=r,{addManaged:c,removeManaged:s}=x.Utils.useManagedEvents(),i=n=>{o.contextMenu&&o.contextMenu.length>0&&o.el&&(n.target===o.el||o.el.contains(n.target))&&(n.preventDefault(),t.isOpen=!0,t.topPosition=n.clientY,t.leftPosition=n.clientX)},p=n=>{m("contextMenu",n),t.isOpen=!1},l=()=>{t.isOpen=!1};return e.onMounted(()=>{c(document,"contextmenu",i),c(document,"click",l)}),e.onUnmounted(()=>{s(document,"contextmenu",i),s(document,"click",l)}),(n,M)=>(e.openBlock(),e.createBlock(e.Transition,{name:"tooltip"},{default:e.withCtx(()=>[t.isOpen?(e.openBlock(),e.createElementBlock("div",{key:0,class:"video-context-menus",style:e.normalizeStyle({top:`${t.topPosition}px`,left:`${t.leftPosition}px`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.contextMenu,(d,a)=>(e.openBlock(),e.createElementBlock("div",{key:a,class:"context-menus-item",onClick:_=>p(a+1)},e.toDisplayString(d),9,k))),128))],4)):e.createCommentVNode("",!0)]),_:1}))}});module.exports=f;