UNPKG

@cradokski/fullscreen

Version:

An Angular service and **directives** that provide **fullscreen control**, **reactive state**, and **template-friendly utilities**.

51 lines (50 loc) 2.13 kB
import { NgZone } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; export type FullscreenStatus = 'entered' | 'exited'; export type FullscreenCallback = (isFullscreen: boolean, element: Element | null) => void; /** Reactive fullscreen state for templates and directives */ export interface FullscreenState { /** Whether any element is currently fullscreen */ active: boolean; /** Which element is fullscreen (if any) */ element: Element | null; } export declare class FullScreenService { private zone; /** Internal flag for synchronous API compatibility */ private isFullscreenFlag; /** Timestamp for double-tap detection */ private lastTapTime; /** For testing: allows mocking time */ private nowFn; /** RxJS state observable for template bindings */ readonly fullscreen$: BehaviorSubject<FullscreenState>; constructor(zone: NgZone); /** Returns the currently fullscreen element (cross-browser) */ private getFullscreenElement; /** Request fullscreen on a specific element (default: <html>) */ private enterFullscreenElement; /** Exit fullscreen (cross-browser) */ private exitFullscreenElement; /** Sync check used by directives and consumers */ isFullscreenActive(): boolean; enterFullscreen(element?: HTMLElement): void; exitFullscreen(): void; toggleFullscreen(element?: HTMLElement): Promise<FullscreenStatus>; ensureFullscreen(element?: HTMLElement): Promise<FullscreenStatus>; ensureExitedFullscreen(): Promise<FullscreenStatus>; browserFsToggle(options?: { requireDoubleTap?: boolean; delayMs?: number; }): boolean; browserFsToggleAsync(options?: { requireDoubleTap?: boolean; delayMs?: number; }): Promise<boolean>; /** Subscribe to fullscreen changes; returns unwatch() */ watchFullscreen(callback: FullscreenCallback): () => void; private handleFullscreenEvent; static ɵfac: i0.ɵɵFactoryDeclaration<FullScreenService, never>; static ɵprov: i0.ɵɵInjectableDeclaration<FullScreenService>; }