]> _ Git - fluidbook-html5.git/commitdiff
wait #5014 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 11 Jan 2022 14:35:20 +0000 (15:35 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 11 Jan 2022 14:35:20 +0000 (15:35 +0100)
js/libs/fluidbook/fluidbook.articles.js
js/libs/jquery/jquery.scrollto.min.js [new file with mode: 0644]
js/libs/perfect-scrollbar/perfect-scrollbar.js
style/menu-articles.less

index aa22e3fdb760315518c24f9c612bca75d95ac86c..a40f7db0e19ea9ee980f5791773cf7dadf2afce0 100644 (file)
@@ -14,17 +14,17 @@ FluidbookArticles.prototype = {
             $this.resize();
         });
 
-        $(document).on(this.fluidbook.input.clickEvent, '.pdfarticle-holder', function () {
-            $(this).addClass('active');
-        });
-        $(document).on('mouseleave', '.pdfarticle-holder', function () {
-            $(this).removeClass('active');
-        });
+        // $(document).on(this.fluidbook.input.clickEvent, '.pdfarticle-holder', function () {
+        //     $(this).addClass('active');
+        // });
+        // $(document).on('mouseleave', '.pdfarticle-holder', function () {
+        //     $(this).removeClass('active');
+        // });
 
         $(document).on(this.fluidbook.input.clickEvent, '.mview[data-menu="article"] .articlesPrint', function () {
             var view = $(this).closest('.mview');
             if ($(view).hasClass('pdf')) {
-                $(view).find('.pdfarticle').contents().find('#print').click();
+                $(view).find('.pdfarticle.print').contents().find('#print').click();
             } else {
                 var a = $(this).closest('article').attr('data-id');
                 var print_window = window.open('', 'print_article', 'height=400,width=600');
@@ -74,7 +74,7 @@ FluidbookArticles.prototype = {
             footerContents += '</div>';
             attrs += ' data-max-width="' + width + '" ';
             cls = 'pdf';
-            view = '<div class="content"><div class="pdfarticle-holder" style="max-width: ' + width + 'px;max-height: ' + height + 'px;width: ' + width + 'px;height: ' + height + 'px;"><iframe class="pdfarticle" frameborder="0" scrolling="no" width="' + iwidth + '" height="' + iheight + '" src="pdfjs/web/viewer.html?&file=../../data/links/' + article.content + '#zoom=' + zoom + ',0,0"></iframe></div></div>';
+            view = '<div class="content"><div class="pdfarticle-holder" style="max-width: ' + width + 'px;max-height: ' + height + 'px;width: ' + width + 'px;height: ' + height + 'px;">' + '<iframe class="pdfarticle view" frameborder="0" scrolling="no" width="' + iwidth + '" height="' + iheight + '" src="pdfjs/web/viewer.html?&file=../../data/links/' + article.content + '#zoom=' + zoom + ',0,0"></iframe>' + '<iframe class="pdfarticle print" frameborder="0" scrolling="no" width="' + iwidth + '" height="' + iheight + '" src="pdfjs/web/viewer.html?&file=../../data/links/' + article.printcontent + '#zoom=' + zoom + ',0,0"></iframe>' + '</div></div>';
         } else {
             view = '<div class="content">' + article.contents + '</div>';
         }
@@ -83,6 +83,24 @@ FluidbookArticles.prototype = {
 
         this.fluidbook.menu.viewWrap(this.fluidbook.menu.closeButton() + view, 'article', attrs, cls, true);
 
+        $('iframe.pdfarticle.view').each(function () {
+            var iframe = $(this);
+            var view = iframe.parent().parent();
+            console.log(view,this);
+            $(this).on('load', function () {
+                var body = $(this).contents().find('body');
+                var m=25;
+                $(body).on('mousewheel', function (e) {
+                    var d=(e.deltaY*m);
+                    var v='-='+d;
+                    if(e.deltaY<0) {
+                        v='+='+(d*-1);
+                    }
+                    $(view).scrollTo(v);
+                });
+            });
+        });
+
         if ($("#view article").attr('dir') === undefined) {
             $("#view article").attr('dir', this.fluidbook.l10n.dir);
         }
diff --git a/js/libs/jquery/jquery.scrollto.min.js b/js/libs/jquery/jquery.scrollto.min.js
new file mode 100644 (file)
index 0000000..36002ed
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
+ * Licensed under MIT
+ * @author Ariel Flesler
+ * @version 2.1.3
+ */
+;(function(factory){'use strict';if(typeof define==='function'&&define.amd){define(['jquery'],factory)}else if(typeof module!=='undefined'&&module.exports){module.exports=factory(require('jquery'))}else{factory(jQuery)}})(function($){'use strict';var $scrollTo=$.scrollTo=function(target,duration,settings){return $(window).scrollTo(target,duration,settings)};$scrollTo.defaults={axis:'xy',duration:0,limit:true};function isWin(elem){return!elem.nodeName||$.inArray(elem.nodeName.toLowerCase(),['iframe','#document','html','body'])!==-1}function isFunction(obj){return typeof obj==='function'}$.fn.scrollTo=function(target,duration,settings){if(typeof duration==='object'){settings=duration;duration=0}if(typeof settings==='function'){settings={onAfter:settings}}if(target==='max'){target=9e9}settings=$.extend({},$scrollTo.defaults,settings);duration=duration||settings.duration;var queue=settings.queue&&settings.axis.length>1;if(queue){duration/=2}settings.offset=both(settings.offset);settings.over=both(settings.over);return this.each(function(){if(target===null){return}var win=isWin(this),elem=win?this.contentWindow||window:this,$elem=$(elem),targ=target,attr={},toff;switch(typeof targ){case 'number':case 'string':if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(targ)){targ=both(targ);break}targ=win?$(targ):$(targ,elem);case 'object':if(targ.length===0){return}if(targ.is||targ.style){toff=(targ=$(targ)).offset()}}var offset=isFunction(settings.offset)&&settings.offset(elem,targ)||settings.offset;$.each(settings.axis.split(''),function(i,axis){var Pos=axis==='x'?'Left':'Top',pos=Pos.toLowerCase(),key='scroll'+Pos,prev=$elem[key](),max=$scrollTo.max(elem,axis);if(toff){attr[key]=toff[pos]+(win?0:prev-$elem.offset()[pos]);if(settings.margin){attr[key]-=parseInt(targ.css('margin'+Pos),10)||0;attr[key]-=parseInt(targ.css('border'+Pos+'Width'),10)||0}attr[key]+=offset[pos]||0;if(settings.over[pos]){attr[key]+=targ[axis==='x'?'width':'height']()*settings.over[pos]}}else{var val=targ[pos];attr[key]=val.slice&&val.slice(-1)==='%'?parseFloat(val)/100*max:val}if(settings.limit&&/^\d+$/.test(attr[key])){attr[key]=attr[key]<=0?0:Math.min(attr[key],max)}if(!i&&settings.axis.length>1){if(prev===attr[key]){attr={}}else if(queue){animate(settings.onAfterFirst);attr={}}}});animate(settings.onAfter);function animate(callback){var opts=$.extend({},settings,{queue:true,duration:duration,complete:callback&&function(){callback.call(elem,targ,settings)}});$elem.animate(attr,opts)}})};$scrollTo.max=function(elem,axis){var Dim=axis==='x'?'Width':'Height',scroll='scroll'+Dim;if(!isWin(elem)){return elem[scroll]-$(elem)[Dim.toLowerCase()]()}var size='client'+Dim,doc=elem.ownerDocument||elem.document,html=doc.documentElement,body=doc.body;return Math.max(html[scroll],body[scroll])-Math.min(html[size],body[size])};function both(val){return isFunction(val)||$.isPlainObject(val)?val:{top:val,left:val}}$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(t){return $(t.elem)[t.prop]()},set:function(t){var curr=this.get(t);if(t.options.interrupt&&t._last&&t._last!==curr){return $(t.elem).stop()}var next=Math.round(t.now);if(curr!==next){$(t.elem)[t.prop](next);t._last=this.get(t)}}};return $scrollTo});
\ No newline at end of file
index 194202af130d5a5a26830e8bf0ab2c06e0bc7388..7921c6b8198b0f0ccd93da524c675de7bdaf6c4b 100644 (file)
         }
 
         function mousewheelHandler(e) {
+            console.log(e);
             var ref = getDeltaFromEvent(e);
             var deltaX = ref[0];
             var deltaY = ref[1];
index ba0667e3097d742d28fe715c4455db0b1523f3a7..6877f6eda96b77ccf95a78155ec433774b8a00bd 100644 (file)
     overflow: hidden;
     width: 100%;
     height: 100%;
-    pointer-events: none;
+    pointer-events: auto;
+  }
+
+  iframe.print{
+    width: 0;
+    height: 0;
+    position: absolute;
   }
 
   &.active {