UNPKG

@fancyapps/ui

Version:

Robust JavaScript UI Component Library

3 lines (2 loc) 2.06 kB
/*! License details at fancyapps.com/license */ import{isPlainObject as e}from"../utils/isPlainObject.js";const n={autoStart:!1,btnTpl:'<button data-fullscreen-action="toggle" class="f-button" title="{{TOGGLE_FULLSCREEN}}"><svg><g><path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3"/></g><g><path d="M15 19v-2a2 2 0 0 1 2-2h2M15 5v2a2 2 0 0 0 2 2h2M5 15h2a2 2 0 0 1 2 2v2M5 9h2a2 2 0 0 0 2-2V5"/></g></svg></button>'},t="in-fullscreen-mode",l=()=>{let l;function u(t){const u=null==l?void 0:l.getOptions().Fullscreen;let o=(e(u)?Object.assign(Object.assign({},n),u):n)[t];return o&&"function"==typeof o&&l?o(l):o}function o(){var e;null===(e=null==l?void 0:l.getPlugins().Toolbar)||void 0===e||e.add("fullscreen",{tpl:u("btnTpl")})}function c(){if(u("autoStart")){const e=r();e&&d(e)}}function i(e,n){const t=n.target;t&&!n.defaultPrevented&&"toggle"===t.dataset.fullscreenAction&&b()}function s(e){r()&&"Escape"===e.key&&!e.defaultPrevented&&b()}function r(){return u("el")||(null==l?void 0:l.getContainer())||void 0}function a(){const e=document;return e.fullscreenEnabled?!!e.fullscreenElement:!!e.webkitFullscreenEnabled&&!!e.webkitFullscreenElement}function d(e){const n=document;let l;return e||(e=n.documentElement),n.fullscreenEnabled?l=e.requestFullscreen():n.webkitFullscreenEnabled&&(l=e.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)),l&&l.then((()=>{e.classList.add(t)})),l}function f(){const e=document;let n;return e.fullscreenEnabled?n=e.fullscreenElement&&e.exitFullscreen():e.webkitFullscreenEnabled&&(n=e.webkitFullscreenElement&&e.webkitExitFullscreen()),n&&n.then((()=>{var e;null===(e=r())||void 0===e||e.classList.remove(t)})),n}function b(){const e=r();e&&(a()?f():d(e))}return{init:function(e){l=e,l.on("initPlugins",o),l.on("ready",c),l.on("click",i)},destroy:function(){null==l||l.off("initPlugins",o),null==l||l.off("ready",c),null==l||l.off("click",i),document.removeEventListener("keydown",s,!0)},exit:f,inFullscreen:a,request:d,toggle:b}};export{l as Fullscreen};