UNPKG

@erudilabs/use-fullscreen

Version:

use-fullscreen allows to enter/exit fullscreen

1 lines 2.17 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=(e,l,n)=>new Promise(((r,t)=>{var u=e=>{try{o(n.next(e))}catch(e){t(e)}},c=e=>{try{o(n.throw(e))}catch(e){t(e)}},o=e=>e.done?r(e.value):Promise.resolve(e.value).then(u,c);o((n=n.apply(e,l)).next())})),l=require("react");function n(){const e=window.document;return e.fullscreenElement||e.webkitFullscreenElement||e.mozFullScreenElement||e.msFullscreenElement}var r=["","webkit","moz","ms"];function t(e,{onFullScreen:l,onError:n}){return r.forEach((r=>{e.addEventListener(`${r}fullscreenchange`,l),e.addEventListener(`${r}fullscreenerror`,n)})),()=>{r.forEach((r=>{e.removeEventListener(`${r}fullscreenchange`,l),e.removeEventListener(`${r}fullscreenerror`,n)}))}}exports.useFullscreen=function(){const[r,u]=l.useState.call(void 0,!1),c=l.useRef.call(void 0),o=l.useCallback.call(void 0,(e=>{u(e.target===n())}),[u]),s=l.useCallback.call(void 0,(e=>{u(!1),console.error(`[@erudilabs/use-fullscreen]: Error attempting full-screen mode method: ${e} (${e.target})`)}),[u]),i=l.useCallback.call(void 0,(()=>e(this,null,(function*(){n()?yield function(){return e(this,null,(function*(){const e=window.document;return"function"==typeof e.exitFullscreen?e.exitFullscreen():"function"==typeof e.msExitFullscreen?e.msExitFullscreen():"function"==typeof e.webkitExitFullscreen?e.webkitExitFullscreen():"function"==typeof e.mozCancelFullScreen?e.mozCancelFullScreen():null}))}():yield function(l){return e(this,null,(function*(){var e,n,r,t,u;const c=l;return(null==(e=c.requestFullscreen)?void 0:e.call(c))||(null==(n=c.msRequestFullscreen)?void 0:n.call(c))||(null==(r=c.webkitEnterFullscreen)?void 0:r.call(c))||(null==(t=c.webkitRequestFullscreen)?void 0:t.call(c))||(null==(u=c.mozRequestFullscreen)?void 0:u.call(c))}))}(c.current)}))),[]),a=l.useCallback.call(void 0,(e=>{c.current=null===e?window.document.documentElement:e}),[]);return l.useEffect.call(void 0,(()=>!c.current&&window.document?(c.current=window.document.documentElement,t(c.current,{onFullScreen:o,onError:s})):c.current?t(c.current,{onFullScreen:o,onError:s}):void 0),[]),{ref:a,toggle:i,fullscreen:r}};//# sourceMappingURL=index.js.map