[Libreoffice-commits] online.git: loleaflet/js
gokaysatir (via logerrit)
logerrit at kemper.freedesktop.org
Tue Jun 2 12:54:30 UTC 2020
loleaflet/js/jquery.mCustomScrollbar.js | 85 ++++++++++++++++++++++----------
1 file changed, 60 insertions(+), 25 deletions(-)
New commits:
commit 42a36a5da36b661ee0b0b6e998ddc622df3f3c2c
Author: gokaysatir <gokaysatir at collabora.com>
AuthorDate: Tue Jun 2 12:09:02 2020 +0300
Commit: Henry Castro <hcastro at collabora.com>
CommitDate: Tue Jun 2 14:54:06 2020 +0200
leaflet: update mcustomscrollbar.js file.
Change-Id: I8adf3a8370b307c532ab64ad439f75ebfe318ebe
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/95301
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Tested-by: Jenkins
Reviewed-by: Henry Castro <hcastro at collabora.com>
diff --git a/loleaflet/js/jquery.mCustomScrollbar.js b/loleaflet/js/jquery.mCustomScrollbar.js
index 42876a14e..79bf0521f 100644
--- a/loleaflet/js/jquery.mCustomScrollbar.js
+++ b/loleaflet/js/jquery.mCustomScrollbar.js
@@ -1,7 +1,7 @@
/* -*- js-indent-level: 8; indent-tabs-mode: t; fill-column: 120 -*- */
/*
== malihu jquery custom scrollbar plugin ==
-Version: 3.1.3
+Version: 3.1.5
Plugin URI: http://manos.malihu.gr/jquery-custom-content-scroller
Author: malihu
Author URI: http://manos.malihu.gr
@@ -38,7 +38,9 @@ and dependencies (minified).
*/
(function(factory){
- if(typeof module!=="undefined" && module.exports){
+ if(typeof define==="function" && define.amd){
+ define(["jquery"],factory);
+ }else if(typeof module!=="undefined" && module.exports){
module.exports=factory;
}else{
factory(jQuery,window,document);
@@ -1178,8 +1180,8 @@ and dependencies (minified).
/* returns input coordinates of pointer, touch and mouse events (relative to document) */
_coordinates=function(e){
- var t=e.type,o=e.target.ownerDocument!==document ? [$(frameElement).offset().top,$(frameElement).offset().left] : null,
- io=_canAccessIFrame() && e.target.ownerDocument!==top.document ? [$(e.view.frameElement).offset().top,$(e.view.frameElement).offset().left] : [0,0];
+ var t=e.type,o=e.target.ownerDocument!==document && frameElement!==null ? [$(frameElement).offset().top,$(frameElement).offset().left] : null,
+ io=_canAccessIFrame() && e.target.ownerDocument!==top.document && frameElement!==null ? [$(e.view.frameElement).offset().top,$(e.view.frameElement).offset().left] : [0,0];
switch(t){
case "pointerdown": case "MSPointerDown": case "pointermove": case "MSPointerMove": case "pointerup": case "MSPointerUp":
return o ? [e.originalEvent.pageY-o[0]+io[0],e.originalEvent.pageX-o[1]+io[1],false] : [e.originalEvent.pageY,e.originalEvent.pageX,false];
@@ -1209,13 +1211,15 @@ and dependencies (minified).
draggable,dragY,dragX,
rds=o.advanced.releaseDraggableSelectors ? mCSB_dragger.add($(o.advanced.releaseDraggableSelectors)) : mCSB_dragger,
eds=o.advanced.extraDraggableSelectors ? $(!_canAccessIFrame() || top.document).add($(o.advanced.extraDraggableSelectors)) : $(!_canAccessIFrame() || top.document);
- mCSB_dragger.bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){
+ mCSB_dragger.bind("contextmenu."+namespace,function(e){
+ e.preventDefault(); //prevent right click
+ }).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace,function(e){
e.stopImmediatePropagation();
e.preventDefault();
if(!_mouseBtnLeft(e)){return;} /* left mouse button only */
touchActive=true;
if(oldIE){document.onselectstart=function(){return false;}} /* disable text selection for IE < 9 */
- _iframe(false); /* enable scrollbar dragging over iframes by disabling their events */
+ _iframe.call(mCSB_container,false); /* enable scrollbar dragging over iframes by disabling their events */
_stop($this);
draggable=$(this);
var coordinates = _coordinates(e);
@@ -1247,14 +1251,8 @@ and dependencies (minified).
}
touchActive=false;
if(oldIE){document.onselectstart=null;} /* enable text selection for IE < 9 */
- _iframe(true); /* enable iframes events */
+ _iframe.call(mCSB_container,true); /* enable iframes events */
});
- function _iframe(evt){
- var el=mCSB_container.find("iframe");
- if(!el.length){return;} /* check if content contains iframes */
- var val=!evt ? "none" : "auto";
- el.css("pointer-events",val); /* for IE11, iframe's display property should not be "block" */
- }
function _drag(dragY,dragX,y,x){
mCSB_container[0].idleTimer=o.scrollInertia<233 ? 250 : 0;
if(draggable.attr("id")===draggerId[1]){
@@ -1300,7 +1298,7 @@ and dependencies (minified).
durA=0,durB,overwrite=o.axis==="yx" ? "none" : "all",touchIntent=[],touchDrag,docDrag,
iframe=mCSB_container.find("iframe"),
events=_getTouchEvents(namespace),
- touchAction=document.body.style.touchAction!==undefined;
+ touchAction=document.body.style.touchAction!==undefined && document.body.style.touchAction!=="";
mCSB_container.bind(events[0],function(e){
_onTouchstart(e);
}).bind(events[1],function(e){
@@ -1313,7 +1311,7 @@ and dependencies (minified).
});
if(iframe.length){
iframe.each(function(){
- $(this).load(function(){
+ $(this).bind("load",function(){
/* bind events on accessible iframes */
if(_canAccessIFrame(this)){
$(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){
@@ -1501,7 +1499,7 @@ and dependencies (minified).
iframe=$("#mCSB_"+d.idx+"_container").find("iframe");
if(iframe.length){
iframe.each(function(){
- $(this).load(function(){
+ $(this).bind("load",function(){
/* bind events on accessible iframes */
if(_canAccessIFrame(this)){
$(this.contentDocument || this.contentWindow.document).bind("mousewheel."+namespace,function(e,delta){
@@ -1526,7 +1524,7 @@ and dependencies (minified).
contentPos=Math.abs($("#mCSB_"+d.idx+"_container")[0].offsetLeft),
draggerPos=mCSB_dragger[1][0].offsetLeft,
limit=mCSB_dragger[1].parent().width()-mCSB_dragger[1].width(),
- dlt=e.deltaX || e.deltaY || delta;
+ dlt=o.mouseWheel.axis==="y" ? (e.deltaY || delta) : e.deltaX;
}else{
var dir="y",
px=[Math.round(deltaFactor*d.scrollRatio.y),parseInt(o.mouseWheel.scrollAmount)],
@@ -1543,7 +1541,7 @@ and dependencies (minified).
e.stopImmediatePropagation();
e.preventDefault();
}
- if(e.deltaFactor<2 && !o.mouseWheel.normalizeDelta){
+ if(e.deltaFactor<5 && !o.mouseWheel.normalizeDelta){
//very low deltaFactor values mean some kind of delta acceleration (e.g. osx trackpad), so adjusting scrolling accordingly
amount=e.deltaFactor; dur=17;
}
@@ -1554,17 +1552,42 @@ and dependencies (minified).
/* checks if iframe can be accessed */
+ _canAccessIFrameCache=new Object(),
_canAccessIFrame=function(iframe){
- var html=null;
+ var result=false,cacheKey=false,html=null;
+ if(iframe===undefined){
+ cacheKey="#empty";
+ }else if($(iframe).attr("id")!==undefined){
+ cacheKey=$(iframe).attr("id");
+ }
+ if(cacheKey!==false && _canAccessIFrameCache[cacheKey]!==undefined){
+ return _canAccessIFrameCache[cacheKey];
+ }
if(!iframe){
- return(html!==null);
+ try{
+ var doc=top.document;
+ html=doc.body.innerHTML;
+ }catch(err){/* do nothing */}
+ result=(html!==null);
}else{
try{
var doc=iframe.contentDocument || iframe.contentWindow.document;
html=doc.body.innerHTML;
}catch(err){/* do nothing */}
- return(html!==null);
+ result=(html!==null);
}
+ if(cacheKey!==false){_canAccessIFrameCache[cacheKey]=result;}
+ return result;
+ },
+ /* -------------------- */
+
+
+ /* switches iframe's pointer-events property (drag, mousewheel etc. over cross-domain iframes) */
+ _iframe=function(evt){
+ var el=this.find("iframe");
+ if(!el.length){return;} /* check if content contains iframes */
+ var val=!evt ? "none" : "auto";
+ el.css("pointer-events",val); /* for IE11, iframe's display property should not be "block" */
},
/* -------------------- */
@@ -1680,7 +1703,7 @@ and dependencies (minified).
namespace=pluginPfx+"_"+d.idx,
sel=".mCSB_"+d.idx+"_scrollbar",
btn=$(sel+">a");
- btn.bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace+" mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace+" mouseout."+namespace+" pointerout."+namespace+" MSPointerOut."+namespace+" click."+namespace,function(e){
+ btn.bind("contextmenu."+namespace,function(e){e.preventDefault();}).bind("mousedown."+namespace+" touchstart."+namespace+" pointerdown."+namespace+" MSPointerDown."+namespace+" mouseup."+namespace+" touchend."+namespace+" pointerup."+namespace+" MSPointerUp."+namespace+" mouseout."+namespace+" pointerout."+namespace+" MSPointerOut."+namespace+" click."+namespace,function(e){
e.preventDefault();
if(!_mouseBtnLeft(e)){return;} /* left mouse button only */
var btnClass=$(this).attr("class");
@@ -1728,7 +1751,7 @@ and dependencies (minified).
events=["blur."+namespace+" keydown."+namespace+" keyup."+namespace];
if(iframe.length){
iframe.each(function(){
- $(this).load(function(){
+ $(this).bind("load",function(){
/* bind events on accessible iframes */
if(_canAccessIFrame(this)){
$(this.contentDocument || this.contentWindow.document).bind(events[0],function(e){
@@ -1891,7 +1914,7 @@ and dependencies (minified).
wrapper=mCSB_container.parent(),
t=typeof val;
if(!dir){dir=o.axis==="x" ? "x" : "y";}
- var contentLength=dir==="x" ? mCSB_container.outerWidth(false) : mCSB_container.outerHeight(false),
+ var contentLength=dir==="x" ? mCSB_container.outerWidth(false)-wrapper.width() : mCSB_container.outerHeight(false)-wrapper.height(),
contentPos=dir==="x" ? mCSB_container[0].offsetLeft : mCSB_container[0].offsetTop,
cssProp=dir==="x" ? "left" : "top";
switch(t){
@@ -2445,7 +2468,7 @@ and dependencies (minified).
*/
window[pluginNS]=true;
- $(window).load(function(){
+ $(window).bind("load",function(){
$(defaultSelector)[pluginNS](); /* add scrollbars automatically on default selector */
@@ -2460,6 +2483,18 @@ and dependencies (minified).
return cPos[0]+_childPos($el)[0]>=0 && cPos[0]+_childPos($el)[0]<wrapper.height()-$el.outerHeight(false) &&
cPos[1]+_childPos($el)[1]>=0 && cPos[1]+_childPos($el)[1]<wrapper.width()-$el.outerWidth(false);
},
+ /* checks if element or part of element is in view of scrollable viewport */
+ mcsInSight:$.expr[":"].mcsInSight || function(el,i,m){
+ var $el=$(el),elD,content=$el.parents(".mCSB_container"),wrapperView,pos,wrapperViewPct,
+ pctVals=m[3]==="exact" ? [[1,0],[1,0]] : [[0.9,0.1],[0.6,0.4]];
+ if(!content.length){return;}
+ elD=[$el.outerHeight(false),$el.outerWidth(false)];
+ pos=[content[0].offsetTop+_childPos($el)[0],content[0].offsetLeft+_childPos($el)[1]];
+ wrapperView=[content.parent()[0].offsetHeight,content.parent()[0].offsetWidth];
+ wrapperViewPct=[elD[0]<wrapperView[0] ? pctVals[0] : pctVals[1],elD[1]<wrapperView[1] ? pctVals[0] : pctVals[1]];
+ return pos[0]-(wrapperView[0]*wrapperViewPct[0][0])<0 && pos[0]+elD[0]-(wrapperView[0]*wrapperViewPct[0][1])>=0 &&
+ pos[1]-(wrapperView[1]*wrapperViewPct[1][0])<0 && pos[1]+elD[1]-(wrapperView[1]*wrapperViewPct[1][1])>=0;
+ },
/* checks if element is overflowed having visible scrollbar(s) */
mcsOverflow:$.expr[":"].mcsOverflow || function(el){
var d=$(el).data(pluginPfx);
More information about the Libreoffice-commits
mailing list