5 Star 27 Fork 1

Ganxiaozhe / Cabbage

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
cabbage.gquery.min.js 3.96 KB
一键复制 编辑 原始数据 按行查看 历史
Ganxiaozhe 提交于 2020-10-31 00:31 . Cabbage.js v0.2.1 release! 🥬
/* Cabbage.gQuery.js v0.2.1 | (c) 2020, JU Chengren (Ganxiaozhe) | gquery.net/plugins/cabbage */
"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(){if(!$||!gQuery)throw new Error("Cabbage.js need gQuery: https://gquery.net/");var e={menus:[],i:{},dataToHtml:function(t){var a={sel:window.getSelection().toString()||""};return e.i.selText=a.sel,a.html=t.reduce(function(e,t,n){return t.break?e+"<li class='break'></li>":t.selection&&!a.sel?e+"":(a.text=t.text.replace(/\[\:sel\]/g,a.sel).substr(0,32),t.disable?e+"<li class='disable'>"+a.text+"</li>":(a.cls=["i"],"object"==_typeof(t.data)&&a.cls.push("extra"),e+"<li class='"+a.cls.join(" ")+"' data-i='"+n+"'>"+a.text+"</li>"))},""),a.html},posHandle:function(e,t){var a={winW:window.innerWidth,winH:window.innerHeight,menuW:e.offsetWidth,menuH:e.offsetHeight,eX:t.pageX,eY:t.pageY,margin:10},n={top:0,left:0};return a.winH+=0==document.body.scrollTop?document.documentElement.scrollTop:document.body.scrollTop,a.x=a.menuW+a.eX+a.margin,a.y=a.menuH+a.eY+a.margin,n.top=a.eY+a.margin,n.left=a.eX+a.margin,a.x>=a.winW&&a.y>=a.winH?(n.top=a.eY-a.menuH-a.margin,n.left=a.eX-a.menuW-a.margin):a.x>=a.winW?n.left=a.eX-a.menuW-a.margin:a.y>=a.winH&&(n.top=a.eY-a.menuH-a.margin),n},liHandle:function(e){var t={menu:$(e).parent().parent(),trigger:$(".cabbage-active"),idx:$(e).attr("data-i")};return"cabbageMenu"!=t.menu.attr("id")?t.data=t.menu.data("cabbageMenu"):t.data=t.trigger.data("cabbageMenu"),t},extraMenuClear:function(){clearTimeout(e.i.emDelay),clearTimeout(e.i.emClear),e.i.emClear=setTimeout(function(){var t=e.menus,a=void 0,n=void 0,i=e.i.thisMI?e.i.thisMI:0;for(a=t.length-1;a>=i;a--)n=$("#"+t[a].idText),n.length>0&&n.remove()},200)}};$.fn.extend({cabbage:function(t){"object"===(void 0===t?"undefined":_typeof(t))&&Array.isArray(t)&&this.data({cabbageMenu:t}),this.on("contextmenu",function(t){function a(){$(".cabbage-active").removeClass("cabbage-active"),$(".cabbageMenu").remove(),e.menus=[],$("body").off("mousewheel",{passive:!1,cabbageJs:!0})}t.preventDefault(),this.classList.add("cabbage-active");var n={obj:$(this),html:""};if(n.data=n.obj.data("cabbageMenu"),!n.data)return!1;n.html="<div id='cabbageMenu' class='cabbageMenu'><ul>"+e.dataToHtml(n.data)+"</ul></div>",$(".cabbageMenu").remove(),n.data.length<1||($("body").append(n.html),n.pos=e.posHandle($("#cabbageMenu")[0],t),$("#cabbageMenu").css({top:n.pos.top+"px",left:n.pos.left+"px"}),$("body").on("mousewheel",function(e){e.preventDefault()},{passive:!1,cabbageJs:!0}),$(document).off("click",{flag:"cabbageMenu"}).off("contextmenu",{flag:"cabbageMenu"}).on({click:a,contextmenu:a},{flag:"cabbageMenu"}))})}}),$(document).on("click",".cabbageMenu ul li",function(){var t=e.liHandle(this);if(void 0===t.idx)return!1;t.func=t.data[t.idx].func,t.opts={selText:e.i.selText},"function"==typeof t.func&&t.func.call(t.trigger[0],t.opts)},{flag:"Always"}),$(document).on({mouseover:function(){if($(this).hasClass("i")){var t=$(this).data("menuId"),a=void 0;if(void 0===t?(t=e.menus.length+1,a={id:t,idText:"cabbageMenu"+t,obj:$(this)},e.menus.push(a),$(this).data("menuId",t)):a=$.array.finder(e.menus,{id:t}).array,$("#"+a.idText).length>0)return void clearTimeout(e.i.emClear);e.i.emDelay=setTimeout(function(){var t=e.liHandle(a.obj);if(!t.data)return void console.log("[Cabbage.js] empty menu data.");t.extra=t.data[t.idx].data,t.html="<div id='"+a.idText+"' class='cabbageMenu extra'><ul>"+e.dataToHtml(t.extra)+"</ul></div>",t.pos=a.obj.offset(),t.pos.top-=8,t.pos.left+=a.obj.width()+1,$("body").append(t.html),$("#"+a.idText).css({top:t.pos.top+"px",left:t.pos.left+"px"}).on({mouseover:function(){e.i.thisMI=parseInt($(this).attr("id").replace("cabbageMenu",""))},mouseleave:function(){e.i.thisMI=0,e.extraMenuClear()}}).data("cabbageMenu",t.extra)},500)}},mouseleave:function(){e.extraMenuClear()}},".cabbageMenu ul li.extra")}();
JavaScript
1
https://gitee.com/ganxiaozhe/Cabbage.git
git@gitee.com:ganxiaozhe/Cabbage.git
ganxiaozhe
Cabbage
Cabbage
main

搜索帮助