@cradokski/fullscreen
Version:
An Angular service that toggles the browser between Fullscreen and normal view. Includes optional **double-tap support** to prevent accidental toggling — useful on mobile/touch devices.
1 lines • 3.82 kB
Source Map (JSON)
{"version":3,"file":"cradokski-fullscreen.mjs","sources":["../../../projects/fullscreen/src/lib/fullscreen.service.ts","../../../projects/fullscreen/src/public-api.ts","../../../projects/fullscreen/src/cradokski-fullscreen.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FullScreenService {\n private isFullscreen = false;\n private lastTapTime: number | null = null;\n\n constructor() { }\n\n enterFullscreen(): void {\n if (document.documentElement?.requestFullscreen) {\n document.documentElement.requestFullscreen();\n }\n }\n\n exitFullscreen(): void {\n if (document?.fullscreenElement) {\n document.exitFullscreen();\n }\n }\n\n private fullscreen(): void {\n if (this.isFullscreen) {\n this.isFullscreen = false;\n this.exitFullscreen();\n } else {\n this.isFullscreen = true;\n this.enterFullscreen();\n }\n }\n\n /**\n * Toggle fullscreen with optional double-tap logic.\n * \n * @param options Optional. If requireDoubleTap is true, two quick calls are required.\n * @returns True if fullscreen is now active, false otherwise.\n */\n browserFsToggle(options?: { requireDoubleTap?: boolean; delayMs?: number }): boolean {\n const requireDoubleTap = options?.requireDoubleTap ?? false;\n const delayMs = options?.delayMs ?? 300;\n\n if (!requireDoubleTap) {\n this.fullscreen();\n return this.isFullscreen;\n }\n\n const now = Date.now();\n if (this.lastTapTime && now - this.lastTapTime < delayMs) {\n this.lastTapTime = null;\n this.fullscreen();\n return this.isFullscreen;\n } else {\n this.lastTapTime = now;\n return this.isFullscreen; // unchanged\n }\n }\n /**\n * True if the document is currently in fullscreen mode.\n * \n * @returns True if fullscreen is active, false otherwise.\n */\n isFullscreenActive(): boolean {\n return this.isFullscreen;\n }\n}\n","/*\n * Public API Surface of fullscreen\n */\n\nexport * from './lib/fullscreen.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAKa,iBAAiB,CAAA;AAI5B,IAAA,WAAA,GAAA;QAHQ,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAW,CAAA,WAAA,GAAkB,IAAI,CAAC;KAEzB;IAEjB,eAAe,GAAA;AACb,QAAA,IAAI,QAAQ,CAAC,eAAe,EAAE,iBAAiB,EAAE;AAC/C,YAAA,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;SAC9C;KACF;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,QAAQ,EAAE,iBAAiB,EAAE;YAC/B,QAAQ,CAAC,cAAc,EAAE,CAAC;SAC3B;KACF;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;aAAM;AACL,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;KACF;AAED;;;;;AAKG;AACH,IAAA,eAAe,CAAC,OAA0D,EAAA;AACxE,QAAA,MAAM,gBAAgB,GAAG,OAAO,EAAE,gBAAgB,IAAI,KAAK,CAAC;AAC5D,QAAA,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,GAAG,CAAC;QAExC,IAAI,CAAC,gBAAgB,EAAE;YACrB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE;AACxD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;aAAM;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;AACvB,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;KACF;AACD;;;;AAIG;IACH,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;8GA5DU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACJD;;AAEG;;ACFH;;AAEG;;;;"}