@fancyapps/ui
Version:
Robust JavaScript UI Component Library
3 lines (2 loc) • 1.8 kB
JavaScript
/*! License details at fancyapps.com/license */
import{isPlainObject as e}from"../utils/isPlainObject.js";const t={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>'},n="in-fullscreen-mode",l=()=>{let l;function u(n){const u=l?.getOptions().Fullscreen;let c=(e(u)?{...t,...u}:t)[n];return c&&"function"==typeof c&&l?c(l):c}function c(){l?.getPlugins().Toolbar?.add("fullscreen",{tpl:u("btnTpl")})}function o(){if(u("autoStart")){const e=i();e&&a(e)}}function s(e,t){const n=t.target;n&&!t.defaultPrevented&&"toggle"===n.dataset.fullscreenAction&&d()}function i(){return u("el")||l?.getContainer()||void 0}function r(){const e=document;return e.fullscreenEnabled?!!e.fullscreenElement:!!e.webkitFullscreenEnabled&&!!e.webkitFullscreenElement}function a(e){const t=document;let l;return e||(e=t.documentElement),t.fullscreenEnabled?l=e.requestFullscreen():t.webkitFullscreenEnabled&&(l=e.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)),l&&l.then(()=>{e.classList.add(n)}),l}function f(){const e=document;let t;return e.fullscreenEnabled?t=e.fullscreenElement&&e.exitFullscreen():e.webkitFullscreenEnabled&&(t=e.webkitFullscreenElement&&e.webkitExitFullscreen()),t&&t.then(()=>{i()?.classList.remove(n)}),t}function d(){if(r())f();else{const e=i();e&&a(e)}}return{init:function(e){l=e,l.on("initPlugins",c),l.on("ready",o),l.on("click",s)},destroy:function(){l?.off("initPlugins",c),l?.off("ready",o),l?.off("click",s)},exit:f,inFullscreen:r,request:a,toggle:d}};export{l as Fullscreen};