forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathselection-pointer.js
More file actions
1 lines (1 loc) · 2.29 KB
/
Copy pathselection-pointer.js
File metadata and controls
1 lines (1 loc) · 2.29 KB
1
!function(mod){"object"==typeof exports&&"object"==typeof module?mod(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],mod):mod(CodeMirror)}(function(CodeMirror){"use strict";function mousemove(cm,event){var data=cm.state.selectionPointer;(null==event.buttons?event.which:event.buttons)?data.mouseX=data.mouseY=null:(data.mouseX=event.clientX,data.mouseY=event.clientY),scheduleUpdate(cm)}function mouseout(cm,event){if(!cm.getWrapperElement().contains(event.relatedTarget)){var data=cm.state.selectionPointer;data.mouseX=data.mouseY=null,scheduleUpdate(cm)}}function reset(cm){cm.state.selectionPointer.rects=null,scheduleUpdate(cm)}function scheduleUpdate(cm){cm.state.selectionPointer.willUpdate||(cm.state.selectionPointer.willUpdate=!0,setTimeout(function(){update(cm),cm.state.selectionPointer.willUpdate=!1},50))}function update(cm){var data=cm.state.selectionPointer;if(data){if(null==data.rects&&null!=data.mouseX&&(data.rects=[],cm.somethingSelected()))for(var sel=cm.display.selectionDiv.firstChild;sel;sel=sel.nextSibling)data.rects.push(sel.getBoundingClientRect());var inside=!1;if(null!=data.mouseX)for(var i=0;i<data.rects.length;i++){var rect=data.rects[i];rect.left<=data.mouseX&&rect.right>=data.mouseX&&rect.top<=data.mouseY&&rect.bottom>=data.mouseY&&(inside=!0)}var cursor=inside?data.value:"";cm.display.lineDiv.style.cursor!=cursor&&(cm.display.lineDiv.style.cursor=cursor)}}CodeMirror.defineOption("selectionPointer",!1,function(cm,val){var data=cm.state.selectionPointer;data&&(CodeMirror.off(cm.getWrapperElement(),"mousemove",data.mousemove),CodeMirror.off(cm.getWrapperElement(),"mouseout",data.mouseout),CodeMirror.off(window,"scroll",data.windowScroll),cm.off("cursorActivity",reset),cm.off("scroll",reset),cm.state.selectionPointer=null,cm.display.lineDiv.style.cursor=""),val&&(data=cm.state.selectionPointer={value:"string"==typeof val?val:"default",mousemove:function(event){mousemove(cm,event)},mouseout:function(event){mouseout(cm,event)},windowScroll:function(){reset(cm)},rects:null,mouseX:null,mouseY:null,willUpdate:!1},CodeMirror.on(cm.getWrapperElement(),"mousemove",data.mousemove),CodeMirror.on(cm.getWrapperElement(),"mouseout",data.mouseout),CodeMirror.on(window,"scroll",data.windowScroll),cm.on("cursorActivity",reset),cm.on("scroll",reset))})});