{"version":3,"file":"screen-full.mjs","sources":["../../../../../packages/hooks/use-fullscreen/screen-full.ts"],"sourcesContent":["type RawEventNames = {\r\n\treadonly requestFullscreen: string\r\n\treadonly exitFullscreen: string\r\n\treadonly fullscreenElement: string\r\n\treadonly fullscreenEnabled: string\r\n\treadonly fullscreenchange: string\r\n\treadonly fullscreenerror: string\r\n}\r\n\r\ntype EventName = 'change' | 'error'\r\n\r\ntype Screenfull = {\r\n\treadonly isFullscreen: boolean\r\n\treadonly element: Element | undefined\r\n\treadonly isEnabled: boolean\r\n\traw: RawEventNames\r\n\trequest(element?: Element, options?: FullscreenOptions): Promise<void>\r\n\texit(): Promise<void>;\r\n\ttoggle(element?: Element, options?: FullscreenOptions): Promise<void>\r\n\ton(name: EventName, handler: (event: Event) => void): void\r\n\toff(name: EventName, handler: (event: Event) => void): void\r\n\tonchange(handler: (event: Event) => void): void\r\n\tonerror(handler: (event: Event) => void): void\r\n}\r\n\r\nconst methodMap = [\r\n\t[\r\n\t\t'requestFullscreen',\r\n\t\t'exitFullscreen',\r\n\t\t'fullscreenElement',\r\n\t\t'fullscreenEnabled',\r\n\t\t'fullscreenchange',\r\n\t\t'fullscreenerror'\r\n\t],\r\n\t// New WebKit\r\n\t[\r\n\t\t'webkitRequestFullscreen',\r\n\t\t'webkitExitFullscreen',\r\n\t\t'webkitFullscreenElement',\r\n\t\t'webkitFullscreenEnabled',\r\n\t\t'webkitfullscreenchange',\r\n\t\t'webkitfullscreenerror'\r\n\t],\r\n\t// Old WebKit\r\n\t[\r\n\t\t'webkitRequestFullScreen',\r\n\t\t'webkitCancelFullScreen',\r\n\t\t'webkitCurrentFullScreenElement',\r\n\t\t'webkitCancelFullScreen',\r\n\t\t'webkitfullscreenchange',\r\n\t\t'webkitfullscreenerror'\r\n\t],\r\n\t[\r\n\t\t'mozRequestFullScreen',\r\n\t\t'mozCancelFullScreen',\r\n\t\t'mozFullScreenElement',\r\n\t\t'mozFullScreenEnabled',\r\n\t\t'mozfullscreenchange',\r\n\t\t'mozfullscreenerror'\r\n\t],\r\n\t[\r\n\t\t'msRequestFullscreen',\r\n\t\t'msExitFullscreen',\r\n\t\t'msFullscreenElement',\r\n\t\t'msFullscreenEnabled',\r\n\t\t'MSFullscreenChange',\r\n\t\t'MSFullscreenError'\r\n\t]\r\n]\r\n\r\nconst nativeAPI: Partial<RawEventNames> = (() => {\r\n\tif (typeof document === 'undefined') {\r\n\t\treturn false\r\n\t}\r\n\r\n\tconst unprefixedMethods = methodMap[0]\r\n\tconst returnValue = {}\r\n\r\n\tfor (const methodList of methodMap) {\r\n\t\tconst exitFullscreenMethod = methodList ? methodList[1] : undefined\r\n\t\tif (exitFullscreenMethod && (exitFullscreenMethod in document)) {\r\n\t\t\tfor (const [index, method] of methodList.entries()) {\r\n\t\t\t\treturnValue[unprefixedMethods[index]] = method\r\n\t\t\t}\r\n\r\n\t\t\treturn returnValue\r\n\t\t}\r\n\t}\r\n\r\n\treturn false\r\n})()\r\n\r\nconst eventNameMap = {\r\n\tchange: nativeAPI.fullscreenchange,\r\n\terror: nativeAPI.fullscreenerror\r\n}\r\n\r\nlet screenfull: Partial<Screenfull> = {\r\n\trequest(element = document.documentElement, options) {\r\n\t\treturn new Promise<void>((resolve, reject) => {\r\n\t\t\tconst onFullScreenEntered = () => {\r\n\t\t\t\tscreenfull.off!('change', onFullScreenEntered)\r\n\t\t\t\tresolve()\r\n\t\t\t}\r\n\r\n\t\t\tscreenfull.on!('change', onFullScreenEntered)\r\n\r\n\t\t\tconst returnPromise = nativeAPI.requestFullscreen && element[nativeAPI.requestFullscreen] ? element[nativeAPI.requestFullscreen](options) : undefined\r\n\r\n\t\t\tif (returnPromise instanceof Promise) {\r\n\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject)\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\texit() {\r\n\t\treturn new Promise<void>((resolve, reject) => {\r\n\t\t\tif (!screenfull.isFullscreen) {\r\n\t\t\t\tresolve()\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tconst onFullScreenExit = () => {\r\n\t\t\t\tscreenfull.off!('change', onFullScreenExit)\r\n\t\t\t\tresolve()\r\n\t\t\t}\r\n\r\n\t\t\tscreenfull.on!('change', onFullScreenExit)\r\n\r\n\t\t\tconst returnPromise = document[nativeAPI.exitFullscreen!]()\r\n\r\n\t\t\tif (returnPromise instanceof Promise) {\r\n\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject)\r\n\t\t\t}\r\n\t\t})\r\n\t},\r\n\ttoggle(element, options) {\r\n\t\treturn screenfull.isFullscreen ? screenfull.exit!() : screenfull.request!(element, options)\r\n\t},\r\n\tonchange(callback) {\r\n\t\tscreenfull.on!('change', callback)\r\n\t},\r\n\tonerror(callback) {\r\n\t\tscreenfull.on!('error', callback)\r\n\t},\r\n\ton(event, callback) {\r\n\t\tconst eventName = eventNameMap[event]\r\n\t\tif (eventName) {\r\n\t\t\tdocument.addEventListener(eventName, callback, false)\r\n\t\t}\r\n\t},\r\n\toff(event, callback) {\r\n\t\tconst eventName = eventNameMap[event]\r\n\t\tif (eventName) {\r\n\t\t\tdocument.removeEventListener(eventName, callback, false)\r\n\t\t}\r\n\t},\r\n\traw: nativeAPI as RawEventNames\r\n}\r\n\r\nObject.defineProperties(screenfull, {\r\n\tisFullscreen: {\r\n\t\tget: () => Boolean(document[nativeAPI.fullscreenElement!])\r\n\t},\r\n\telement: {\r\n\t\tenumerable: true,\r\n\t\tget: () => document[nativeAPI.fullscreenElement!] || undefined\r\n\t},\r\n\tisEnabled: {\r\n\t\tenumerable: true,\r\n\t\t// Coerce to boolean in case of old WebKit.\r\n\t\tget: () => Boolean(document[nativeAPI.fullscreenEnabled!])\r\n\t},\r\n});\r\n\r\nif (!nativeAPI) {\r\n\tscreenfull = { isEnabled: false }\r\n}\r\n\r\nexport default screenfull as Screenfull\r\n"],"names":[],"mappings":"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"}