]> _ Git - fluidbook-html5.git/commitdiff
wip #7032 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 1 Aug 2024 15:50:29 +0000 (17:50 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 1 Aug 2024 15:50:29 +0000 (17:50 +0200)
js/libs/fluidbook/fluidbook.keyboard.js
js/libs/fluidbook/fluidbook.nav.js
js/libs/fluidbook/fluidbook.support.js
js/libs/fluidbook/fluidbook.widget.js
js/libs/fluidbook/stats/fluidbook.stats.esm.js
js/libs/screenfull.min.js [deleted file]

index 5ff30d0fdc8979585a460ae7601e3f8b48654874..597390b0a0835c3dd3e0bd9b03032e82c96d31ce 100644 (file)
@@ -24,8 +24,8 @@ FluidbookKeyboard.prototype = {
             if ($this.fluidbook.nav.menuIsOpen) {
                 $this.fluidbook.nav.closeMenu();
             }
-            if (screenfull.isFullscreen) {
-                screenfull.exit();
+            if ($this.fluidbook.support.isFullscreen()) {
+                document.exitFullscreen();
             }
         });
         this.keyShortcut('tab,shift+tab', function (e, handler) {
@@ -38,7 +38,7 @@ FluidbookKeyboard.prototype = {
 
         if (this.fluidbook.settings.fullscreen) {
             this.keyShortcut('f11', function () {
-                screenfull.toggle();
+                $this.fluidbook.support.toggleFullscreen();
             });
         }
 
index a2f5ec89460a290c26615e73d1c50599f5988aea..0f88017ad908c1cf54f247862997eea805a2b9e2 100644 (file)
@@ -770,16 +770,15 @@ FluidbookNav.prototype = {
         // Full screen toggle
         $(document).on(this.fluidbook.input.clickEvent, '.icon-fullscreen', function () {
             $this.closeMenu();
-            screenfull.toggle();
+            $this.fluidbook.support.toggleFullscreen();
             return false;
         });
 
-        // Toggle icon on fullscreen change (also handles exiting via ESC key)
-        screenfull.on('change', function () {
+        document.addEventListener('fullscreenchange', function () {
             resize();
             // Slight delay to stop icon state flickering during fullscreen transition
             setTimeout(function () {
-                if (screenfull.isFullscreen) {
+                if ($this.fluidbook.support.isFullscreen()) {
                     $('.icon-fullscreen').addClass('active');
                 } else {
                     window.focus();
@@ -793,7 +792,6 @@ FluidbookNav.prototype = {
             }, 1000);
             window.focus();
         });
-
     },
 
     openSearch: function (q, cb) {
index 7a09deaa2ed09a7247aaccd6a00fbb1d0585873c..783c9d174812795eee37ff137463f571300c0e31 100644 (file)
@@ -69,8 +69,8 @@ function FluidbookSupport(fluidbook) {
     this.screenWidth = Math.min(window.screen.availWidth, window.screen.availHeight);
     this.screenHeight = Math.max(window.screen.availWidth, window.screen.availHeight);
 
-    // See #2440
-    this.fullscreen = screenfull.enabled && !this.iOS;
+    // See #2440, #7032
+    this.fullscreen = document.fullscreenEnabled !== undefined && document.fullscreenEnabled === true && (!this.iOS || this.fluidbook.settings.fullscreeniOS);
 
     this._orientation = this.getOrientation();
     this.initEvents();
@@ -225,5 +225,25 @@ FluidbookSupport.prototype = {
         }
 
         return false;
-    }
+    },
+
+    isFullscreen: function () {
+        return this.fullscreen && document.fullscreenElement && document.exitFullscreen;
+    },
+
+    toggleFullscreen: function () {
+        if (this.isFullscreen()) {
+            this.exitFullscreen();
+        } else {
+            this.requestFullscreen();
+        }
+    },
+
+    requestFullscreen: function () {
+        document.documentElement.requestFullscreen();
+    },
+
+    exitFullscreen: function () {
+        document.exitFullscreen();
+    },
 }
index 0ff393881b228acd5caf1742ed5d3058b596ff42..81d11defc1b3c7042cc4d059840ea35827e7b2f6 100644 (file)
@@ -38,7 +38,7 @@ FluidbookWidget.prototype = {
         var active = this.isWidgetModeActive();
         if (active) {
             if (this.action === 'fullscreen') {
-                screenfull.toggle();
+                $this.fluidbook.support.requestFullscreen();
             } else if (this.action === 'tab') {
                 window.open(window.location.toString().replace("widget=1", "widget=0"), '_blank');
             }
@@ -82,6 +82,6 @@ FluidbookWidget.prototype = {
     },
 
     isWidgetModeActive: function () {
-        return this.featureEnabled && !screenfull.isFullscreen;
+        return this.featureEnabled && !this.fluidbook.support.isFullscreen();
     }
 }
\ No newline at end of file
index ded04f9d19bd4d5dc52f70879fe0b0cafc7c660e..55ae38747c22b5f2eb9872409d8b9ba33bd4d6f2 100644 (file)
@@ -125,7 +125,7 @@ FluidbookStatsEsm.prototype = {
 
     getClickName: function (id) {
         if (id === 'fullscreen') {
-            if (screenfull.isFullscreen) {
+            if (this.fluidbook.support.isFullscreen()) {
                 return 'reduire_ecran';
             } else {
                 return 'plein_ecran';
diff --git a/js/libs/screenfull.min.js b/js/libs/screenfull.min.js
deleted file mode 100644 (file)
index 70b732e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
-* screenfull
-* v4.2.0 - 2019-04-01
-* (c) Sindre Sorhus; MIT License
-*/
-
-!function(){"use strict";var u="undefined"!=typeof window&&void 0!==window.document?window.document:{},e="undefined"!=typeof module&&module.exports,t="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,c=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],l=0,r=n.length,t={};l<r;l++)if((e=n[l])&&e[1]in u){for(l=0;l<e.length;l++)t[n[0][l]]=e[l];return t}return!1}(),r={change:c.fullscreenchange,error:c.fullscreenerror},n={request:function(r){return new Promise(function(e){var n=c.requestFullscreen,l=function(){this.off("change",l),e()}.bind(this);r=r||u.documentElement,/ Version\/5\.1(?:\.\d+)? Safari\//.test(navigator.userAgent)?r[n]():r[n](t?Element.ALLOW_KEYBOARD_INPUT:{}),this.on("change",l)}.bind(this))},exit:function(){return new Promise(function(e){if(this.isFullscreen){var n=function(){this.off("change",n),e()}.bind(this);u[c.exitFullscreen](),this.on("change",n)}else e()}.bind(this))},toggle:function(e){return this.isFullscreen?this.exit():this.request(e)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){var l=r[e];l&&u.addEventListener(l,n,!1)},off:function(e,n){var l=r[e];l&&u.removeEventListener(l,n,!1)},raw:c};c?(Object.defineProperties(n,{isFullscreen:{get:function(){return Boolean(u[c.fullscreenElement])}},element:{enumerable:!0,get:function(){return u[c.fullscreenElement]}},enabled:{enumerable:!0,get:function(){return Boolean(u[c.fullscreenEnabled])}}}),e?(module.exports=n,module.exports.default=n):window.screenfull=n):e?module.exports=!1:window.screenfull=!1}();
\ No newline at end of file