UNPKG

@rooks/use-fullscreen

Version:

A React Hooks package for fullscreen.

3 lines (2 loc) 3.54 kB
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("tslib"),require("react")):"function"==typeof define&&define.amd?define(["tslib","react"],n):(e="undefined"!=typeof globalThis?globalThis:e||self).useFullscreen=n(e.tslib,e.React)}(this,(function(e,n){"use strict";const t="undefined"==typeof window?n.useEffect:n.useLayoutEffect;function l(e){const l=function(e,l=!1){const r=l?t:n.useEffect,u=n.useRef(e);return r((()=>{u.current=e})),u}(e);return function(...e){l&&"function"==typeof l.current&&l.current(...e)}}function r(e,r,u={},c=!1){"undefined"!=typeof document?function(e,r,u,c={},o=!0,s=!1){const i=l(u),{capture:a,passive:f,once:d}=c;(s?t:n.useEffect)((()=>{if(void 0!==e&&e.addEventListener&&o)return e.addEventListener(r,i,c),()=>{e.removeEventListener(r,i,c)}}),[r,a,f,d])}(document,e,r,u,!0,c):console.warn("useDocumentEventListener can't attach an event listener as document is undefined.")}const u="production"!==process.env.NODE_ENV;let c=function(){};if(u){const e=function(...e){const n=`Warning: ${e}`;"undefined"!=typeof console&&console.error(n);try{throw new Error(n)}catch(e){}};c=function(n,t){n||e(t)}}const o=()=>{},s={isEnabled:!1,toggle:o,onChange:o,onError:o,request:o,exit:o,isFullscreen:!1,element:void 0};function i(){c(!1,"Using onChange and onError from the return value is deprecated and \n will be removed in the next major version. \n Please use it with arguments instead. \n For eg: useFullscreen({onChange: function() {}, onError: function(){}})\n ")}return function(t={}){if("undefined"==typeof window)return s;const{onChange:l,onError:u}=t,c=(()=>{const e=[["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"]],n={};return e.forEach((t=>{t&&t[1]in document&&t.forEach(((l,r)=>{n[e[0][r]]=t[r]}))})),n})(),[a,f]=n.useState(Boolean(document[c.fullscreenElement])),[d,m]=n.useState(document[c.fullscreenElement]),E=n.useCallback((n=>e.__awaiter(this,void 0,void 0,(function*(){try{const e=n||document.documentElement;return yield e[c.requestFullscreen]()}catch(e){console.log(e)}}))),[]),b=n.useCallback((()=>e.__awaiter(this,void 0,void 0,(function*(){if(d)try{return yield document[c.exitFullscreen]()}catch(e){console.warn(e)}}))),[d]),F=n.useCallback((e=>Boolean(d)?b():e?E(e):null),[d]),h=n.useRef(o),w=n.useRef(o),g=n.useCallback((e=>(i(),h.current=e)),[]),v=n.useCallback((e=>(i(),w.current=e)),[]);return r(c.fullscreenchange,(function(e){var n;const t=document[c.fullscreenElement],r=Boolean(t);r?(f(!0),m(t)):(f(!1),m(null)),null==l||l.call(document,e,r),null===(n=h.current)||void 0===n||n.call(document,e,r)})),r(c.fullscreenerror,(function(e){var n;null==u||u.call(document,e),null===(n=w.current)||void 0===n||n.call(document,e)})),{isEnabled:Boolean(document[c.fullscreenEnabled]),toggle:F,onChange:g,onError:v,request:E,exit:b,isFullscreen:a,element:d}}})); //# sourceMappingURL=index.min.js.map