### Angular Directive Example Source: https://context7.com/sindresorhus/screenfull/llms.txt An example of implementing a fullscreen toggle directive in Angular. ```APIDOC ## Angular Directive Example ### Description An example of implementing a fullscreen toggle directive in Angular. ### Request Example ```typescript import { Directive, HostListener } from '@angular/core'; import screenfull from 'screenfull'; @Directive({ selector: '[toggleFullscreen]' }) export class ToggleFullscreenDirective { @HostListener('click') async onClick() { if (screenfull.isEnabled) { await screenfull.toggle(); } } } // Usage in template: // ``` ``` -------------------------------- ### Install Screenfull via NPM Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Command to install the screenfull package into your project using npm. ```sh npm install screenfull ``` -------------------------------- ### Complete Example with jQuery Source: https://context7.com/sindresorhus/screenfull/llms.txt A full implementation demonstrating all screenfull.js features working together with jQuery. ```APIDOC ## Complete Example with jQuery ### Description A full implementation demonstrating all screenfull.js features working together with jQuery. ### Request Example ```javascript import screenfull from 'screenfull'; $(function() { if (!screenfull.isEnabled) { $('#fullscreen-controls').hide(); $('#status').text('Fullscreen not supported'); return; } // Request fullscreen for container $('#request-btn').click(async () => { await screenfull.request($('#container')[0]); console.log('Browser entered fullscreen mode'); }); // Exit fullscreen $('#exit-btn').click(async () => { await screenfull.exit(); console.log('Browser exited fullscreen mode'); }); // Toggle fullscreen $('#toggle-btn').click(async () => { await screenfull.toggle($('#container')[0]); }); // Click image to toggle its fullscreen $('#hero-image').click(function() { screenfull.toggle(this); }); // Listen for changes screenfull.on('change', () => { const element = screenfull.element; $('#status').text(`Fullscreen: ${screenfull.isFullscreen}`); if (element) { $('#element-info').text(`Element: ${element.localName}#${element.id || '(no id)'}`); } }); }); ``` ``` -------------------------------- ### React Hook Example Source: https://context7.com/sindresorhus/screenfull/llms.txt A custom React hook for managing fullscreen functionality. ```APIDOC ## React Hook Example ### Description A custom React hook for managing fullscreen functionality. ### Request Example ```javascript import { useState, useEffect, useCallback } from 'react'; import screenfull from 'screenfull'; function useFullscreen(elementRef) { const [isFullscreen, setIsFullscreen] = useState(false); useEffect(() => { if (!screenfull.isEnabled) return; const handleChange = () => { setIsFullscreen(screenfull.isFullscreen); }; screenfull.on('change', handleChange); return () => screenfull.off('change', handleChange); }, []); const toggle = useCallback(async () => { if (screenfull.isEnabled) { await screenfull.toggle(elementRef?.current); } }, [elementRef]); return { isFullscreen, toggle, isEnabled: screenfull.isEnabled }; } // Usage: // const ref = useRef(null); // const { isFullscreen, toggle, isEnabled } = useFullscreen(ref); ``` ``` -------------------------------- ### Initialize and Use screenfull.js with jQuery Source: https://github.com/sindresorhus/screenfull/blob/main/index.html This snippet demonstrates how to initialize screenfull.js and use its core functionalities like requesting fullscreen for a specific element, exiting fullscreen, and toggling fullscreen. It also shows how to check if fullscreen is supported and listen for fullscreen change events. This example relies on jQuery for DOM manipulation. ```javascript import screenfull from './index.js'; $(function () { $('#supported').text(`Supported/allowed: ${screenfull.isEnabled}`); if (!screenfull.isEnabled) { return false; } $('#request').click(async () => { await screenfull.request($('#container')[0]); console.log('Browser entered fullscreen mode'); }); $('#exit').click(async () => { await screenfull.exit(); console.log('Browser exited fullscreen mode'); }); $('#toggle').click(async () => { await screenfull.toggle($('#container')[0]); console.log(`Fullscreen mode: ${screenfull.isFullscreen ? 'enabled' : 'disabled'}`); }); $('#request2').click(() => { screenfull.request(); }); $('#demo-img').click(() => { screenfull.toggle($('#demo-img')[0]); }); function fullscreenchange() { const {element} = screenfull; $('#status').text(`Is fullscreen: ${screenfull.isFullscreen}`); if (element) { $('#element').text(`Element: ${element.localName}${element.id ? `#${element.id}` : ''}`); } if (!screenfull.isFullscreen) { $('#external-iframe').remove(); document.body.style.overflow = 'auto'; } } screenfull.on('change', fullscreenchange); // Set the initial values fullscreenchange(); }); ``` -------------------------------- ### Implement Fullscreen with jQuery Source: https://context7.com/sindresorhus/screenfull/llms.txt A complete implementation example showing how to bind fullscreen requests, exits, and toggles to jQuery event handlers, while updating UI status elements. ```javascript import screenfull from 'screenfull'; $(function() { if (!screenfull.isEnabled) return; $('#request-btn').click(async () => { await screenfull.request($('#container')[0]); }); $('#exit-btn').click(async () => { await screenfull.exit(); }); screenfull.on('change', () => { $('#status').text(`Fullscreen: ${screenfull.isFullscreen}`); }); }); ``` -------------------------------- ### Fullscreen Integration with jQuery Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Examples of using Screenfull with jQuery to toggle fullscreen on elements or images. ```javascript import screenfull from 'screenfull'; const element = $('#target')[0]; $('#button').on('click', () => { if (screenfull.isEnabled) { screenfull.request(element); } }); $('img').on('click', event => { if (screenfull.isEnabled) { screenfull.toggle(event.target); } }); ``` -------------------------------- ### Get Current Fullscreen Element Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Returns the DOM element that is currently in fullscreen mode. Returns `undefined` if no element is in fullscreen. ```javascript screenfull.element ``` -------------------------------- ### Handle Fullscreen with Vanilla JavaScript Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Shows the manual implementation required to handle browser-specific Fullscreen API prefixes without a library. ```javascript document.fullscreenEnabled = document.fullscreenEnabled || document.mozFullScreenEnabled || document.documentElement.webkitRequestFullScreen; function requestFullscreen(element) { if (element.requestFullscreen) { element.requestFullscreen(); } else if (element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if (element.webkitRequestFullScreen) { element.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); } } if (document.fullscreenEnabled) { requestFullscreen(document.documentElement); } ``` -------------------------------- ### Fullscreen Element with Options Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Request fullscreen for a specific element while passing configuration options like hiding the navigation UI. ```javascript import screenfull from 'screenfull'; const element = document.getElementById('target'); document.getElementById('button').addEventListener('click', () => { if (screenfull.isEnabled) { screenfull.request(element, {navigationUI: 'hide'}); } }); ``` -------------------------------- ### Event Handling API Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Provides methods to listen for fullscreen change events and errors. ```APIDOC ## POST /on ### Description Adds an event listener for fullscreen events. ### Method POST ### Endpoint `/on` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **event** (string) - Required - The event to listen for. Can be `'change'` or `'error'`. - **callback** (function) - Required - The function to execute when the event occurs. ### Request Example ```json { "event": "change", "callback": "() => console.log('Fullscreen changed')" } ``` ### Response #### Success Response (200) No specific response body, listener is registered. #### Response Example (No JSON response) ## POST /off ### Description Removes a previously registered event listener. ### Method POST ### Endpoint `/off` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **event** (string) - Required - The event to remove the listener for (`'change'` or `'error'`). - **callback** (function) - Required - The specific callback function to remove. ### Request Example ```json { "event": "error", "callback": "myErrorHandlerFunction" } ``` ### Response #### Success Response (200) No specific response body, listener is removed. #### Response Example (No JSON response) ``` -------------------------------- ### Listen for Fullscreen Events Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md How to attach listeners to detect changes in fullscreen state or handle errors during the request. ```javascript import screenfull from 'screenfull'; if (screenfull.isEnabled) { screenfull.on('change', () => { console.log('Am I fullscreen?', screenfull.isFullscreen ? 'Yes' : 'No'); }); screenfull.on('error', event => { console.error('Failed to enable fullscreen', event); }); } screenfull.off('change', callback); ``` -------------------------------- ### Manage Fullscreen Events with on and off Source: https://context7.com/sindresorhus/screenfull/llms.txt Demonstrates how to attach and detach event listeners for fullscreen changes and errors using the on and off methods. This ensures proper state management when entering or exiting fullscreen mode. ```javascript import screenfull from 'screenfull'; function handleFullscreenChange() { if (screenfull.isFullscreen) { console.log('Entered fullscreen'); document.body.classList.add('is-fullscreen'); } else { console.log('Exited fullscreen'); document.body.classList.remove('is-fullscreen'); } } function handleFullscreenError(event) { console.error('Fullscreen error:', event); alert('Failed to enter fullscreen mode'); } if (screenfull.isEnabled) { screenfull.on('change', handleFullscreenChange); screenfull.on('error', handleFullscreenError); } ``` -------------------------------- ### Request Fullscreen Element Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Makes an element fullscreen. Accepts a DOM element and optional FullscreenOptions. Defaults to the `` element. Returns a promise that resolves when the element enters fullscreen. ```javascript screenfull.request(element, options?) ``` -------------------------------- ### Fullscreen API Methods Source: https://github.com/sindresorhus/screenfull/blob/main/index.html This section details the primary methods provided by screenfull.js for interacting with the Fullscreen API. ```APIDOC ## screenfull.request() ### Description Requests fullscreen mode for the entire document or a specific element. ### Method `request([element])` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```javascript screenfull.request(); // Request fullscreen for the document screenfull.request(document.getElementById('container')); // Request fullscreen for a specific element ``` ### Response #### Success Response (200) N/A (This method does not return a value, but initiates an action). #### Response Example None ## screenfull.exit() ### Description Exits fullscreen mode if currently in fullscreen. ### Method `exit()` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```javascript screenfull.exit(); ``` ### Response #### Success Response (200) N/A (This method does not return a value, but initiates an action). #### Response Example None ## screenfull.toggle() ### Description Toggles fullscreen mode for the entire document or a specific element. If currently in fullscreen, it exits; otherwise, it requests fullscreen. ### Method `toggle([element])` ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None ### Request Example ```javascript screenfull.toggle(); // Toggle fullscreen for the document screenfull.toggle(document.getElementById('demo-img')); // Toggle fullscreen for a specific element ``` ### Response #### Success Response (200) N/A (This method does not return a value, but initiates an action). #### Response Example None ``` -------------------------------- ### Fullscreen State Properties Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Provides properties to check the current fullscreen status and capabilities. ```APIDOC ## GET /isFullscreen ### Description Returns a boolean indicating whether fullscreen mode is currently active. ### Method GET ### Endpoint `/isFullscreen` ### Parameters None ### Request Example ```json {} ``` ### Response #### Success Response (200) - **isFullscreen** (boolean) - `true` if fullscreen is active, `false` otherwise. #### Response Example ```json { "isFullscreen": true } ``` ## GET /element ### Description Returns the DOM element currently in fullscreen mode, or `undefined` if not in fullscreen. ### Method GET ### Endpoint `/element` ### Parameters None ### Request Example ```json {} ``` ### Response #### Success Response (200) - **element** (HTMLElement | undefined) - The element in fullscreen, or `undefined`. #### Response Example ```json { "element": "" } ``` ## GET /isEnabled ### Description Returns a boolean indicating whether the browser supports and allows entering fullscreen mode. ### Method GET ### Endpoint `/isEnabled` ### Parameters None ### Request Example ```json {} ``` ### Response #### Success Response (200) - **isEnabled** (boolean) - `true` if fullscreen is enabled, `false` otherwise. #### Response Example ```json { "isEnabled": true } ``` ## GET /raw ### Description Exposes the raw browser fullscreen API properties used internally. ### Method GET ### Endpoint `/raw` ### Parameters None ### Request Example ```json {} ``` ### Response #### Success Response (200) - **raw** (object) - An object containing raw fullscreen API properties like `requestFullscreen`, `exitFullscreen`, etc. #### Response Example ```json { "raw": { "requestFullscreen": "function()", "exitFullscreen": "function()", "fullscreenElement": "null", "fullscreenEnabled": "true", "fullscreenchange": "fullscreenchange", "fullscreenerror": "fullscreenerror" } } ``` ``` -------------------------------- ### Workaround for Navigating to New Page in Fullscreen Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Demonstrates a workaround using a seamless iframe to navigate to a new page while maintaining a fullscreen-like experience, as direct page navigation in fullscreen is restricted by browsers for security reasons. ```javascript import screenfull from 'screenfull'; document.querySelector('#new-page-button').addEventListener(() => { const iframe = document.createElement('iframe') iframe.setAttribute('id', 'external-iframe'); iframe.setAttribute('src', 'https://new-page-website.com'); iframe.setAttribute('frameborder', 'no'); iframe.style.position = 'absolute'; iframe.style.top = '0'; iframe.style.right = '0'; iframe.style.bottom = '0'; iframe.style.left = '0'; iframe.style.width = '100%'; iframe.style.height = '100%'; document.body.prepend(iframe); document.body.style.overflow = 'hidden'; }); ``` -------------------------------- ### Request Fullscreen Mode Source: https://github.com/sindresorhus/screenfull/blob/main/readme.md Demonstrates how to check if fullscreen is enabled and request it for the page or a specific element using Screenfull. ```javascript import screenfull from 'screenfull'; if (screenfull.isEnabled) { screenfull.request(); } ``` -------------------------------- ### Access Raw Browser API Source: https://context7.com/sindresorhus/screenfull/llms.txt Demonstrates accessing the raw property to retrieve the underlying browser-prefixed fullscreen API methods, useful for debugging or advanced custom implementations. ```javascript import screenfull from 'screenfull'; if (screenfull.isEnabled) { console.log('Browser API methods:', screenfull.raw); } ``` -------------------------------- ### Fullscreen API Properties and Events Source: https://github.com/sindresorhus/screenfull/blob/main/index.html This section covers the properties and event listeners available in screenfull.js for monitoring fullscreen status. ```APIDOC ## screenfull.isEnabled ### Description Returns a boolean indicating whether the Fullscreen API is supported and allowed in the current browser context. ### Method `isEnabled` (property) ### Parameters None ### Request Example ```javascript console.log(`Fullscreen supported: ${screenfull.isEnabled}`); ``` ### Response #### Success Response (200) - **isEnabled** (boolean) - `true` if supported, `false` otherwise. #### Response Example ```json { "isEnabled": true } ``` ## screenfull.isFullscreen ### Description Returns a boolean indicating whether the page or an element is currently in fullscreen mode. ### Method `isFullscreen` (property) ### Parameters None ### Request Example ```javascript console.log(`Currently fullscreen: ${screenfull.isFullscreen}`); ``` ### Response #### Success Response (200) - **isFullscreen** (boolean) - `true` if in fullscreen, `false` otherwise. #### Response Example ```json { "isFullscreen": false } ``` ## screenfull.element ### Description Returns the element that is currently in fullscreen mode, or `undefined` if not in fullscreen. ### Method `element` (property) ### Parameters None ### Request Example ```javascript const currentElement = screenfull.element; if (currentElement) { console.log(`Fullscreen element: ${currentElement.tagName}`); } ``` ### Response #### Success Response (200) - **element** (HTMLElement | undefined) - The fullscreen element or undefined. #### Response Example ```json { "element": "