{"version":3,"file":"fullscreen.js","sources":["../../../Framework/Controls/fullscreen.ts"],"sourcesContent":["// \r\n// Copyright by the Spark Development Network\r\n//\r\n// Licensed under the Rock Community License (the \"License\");\r\n// you may not use this file except in compliance with the License.\r\n// You may obtain a copy of the License at\r\n//\r\n// http://www.rockrms.com/license\r\n//\r\n// Unless required by applicable law or agreed to in writing, software\r\n// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n// See the License for the specific language governing permissions and\r\n// limitations under the License.\r\n// \r\n//\r\n\r\nimport { onBeforeUnmount } from \"vue\";\r\nimport { defineComponent, onMounted, PropType, ref, watch } from \"vue\";\r\n\r\n// Define the browser-specific versions of these functions that older browsers\r\n// implemented before using the standard API.\r\ndeclare global {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n interface Document {\r\n mozCancelFullScreen?: () => Promise;\r\n webkitExitFullscreen?: () => Promise;\r\n mozFullScreenElement?: Element;\r\n webkitFullscreenElement?: Element;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n interface HTMLElement {\r\n mozRequestFullscreen?: () => Promise;\r\n webkitRequestFullscreen?: () => Promise;\r\n }\r\n}\r\n\r\n/**\r\n * Request that the window enter true fullscreen mode for the given element.\r\n * \r\n * @param element The element that will be the root of the fullscreen view.\r\n *\r\n * @returns A promise that indicates when the operation has completed.\r\n */\r\nasync function requestWindowFullscreen(element: HTMLElement): Promise {\r\n try {\r\n if (element.requestFullscreen) {\r\n await element.requestFullscreen();\r\n }\r\n else if (element.mozRequestFullscreen) {\r\n await element.mozRequestFullscreen();\r\n }\r\n else if (element.webkitRequestFullscreen) {\r\n await element.webkitRequestFullscreen();\r\n }\r\n else {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n catch (ex) {\r\n return new Promise((_, reject) => reject(ex));\r\n }\r\n}\r\n\r\n/**\r\n * Request that the window exit true fullscreen mode.\r\n *\r\n * @returns A promise that indicates when the operation has completed.\r\n */\r\nasync function exitWindowFullscreen(): Promise {\r\n if (document.exitFullscreen) {\r\n await document.exitFullscreen();\r\n }\r\n else if (document.mozCancelFullScreen) {\r\n await document.mozCancelFullScreen();\r\n }\r\n else if (document.webkitExitFullscreen) {\r\n document.webkitExitFullscreen();\r\n }\r\n}\r\n\r\n/** Indicates the full screen mode options available to our component. */\r\nconst enum FullscreenMode {\r\n /* Not currently in fullscreen mode. */\r\n None = 0,\r\n\r\n /** Using in-page fullscreen mode. */\r\n Page = 1,\r\n\r\n /** Using full-window fullscreen mode. */\r\n Window = 2\r\n}\r\n\r\nexport default defineComponent({\r\n name: \"Fullscreen\",\r\n\r\n props: {\r\n modelValue: {\r\n type: Boolean as PropType,\r\n default: false\r\n },\r\n\r\n isPageOnly: {\r\n type: Boolean as PropType,\r\n default: true\r\n }\r\n },\r\n\r\n emits: [\r\n \"update:modelValue\"\r\n ],\r\n\r\n setup(props, { emit }) {\r\n /** The current fullscreen mode this component is in. */\r\n const fullscreenMode = ref(FullscreenMode.None);\r\n\r\n /** The container element used when transitioning into fullscreen mode. */\r\n const containerElement = ref(null);\r\n\r\n /** True if the teleport should be disabled, i.e. leave the content where it is. */\r\n const teleportDisabled = ref(true);\r\n\r\n /** The style classes to be applied to the container. */\r\n const containerStyle = ref>({});\r\n\r\n /**\r\n * Attempts to enter fullscreen mode using the currently configured\r\n * settings.\r\n */\r\n const enterFullscreen = async (): Promise => {\r\n const body = document.getElementsByTagName(\"body\")[0];\r\n\r\n body.classList.add(\"is-fullscreen\");\r\n\r\n // TODO: This can be removed once the \"is-fullscreen\" class is implemented.\r\n if (body.style.overflowY === \"\") {\r\n body.style.overflowY = \"hidden\";\r\n }\r\n\r\n if (props.isPageOnly) {\r\n\r\n // Set the styles so our container floats above all other content\r\n // and handles its own scrolling.\r\n containerStyle.value = {\r\n position: \"fixed\",\r\n left: \"0\",\r\n top: \"0\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n \"overflow-y\": \"auto\",\r\n \"z-index\": \"1060\",\r\n \"background-color\": \"var(--body-background)\"\r\n };\r\n\r\n teleportDisabled.value = false;\r\n fullscreenMode.value = FullscreenMode.Page;\r\n }\r\n else {\r\n if (containerElement.value) {\r\n try {\r\n containerStyle.value = {\r\n \"background-color\": \"var(--body-background)\"\r\n };\r\n\r\n await requestWindowFullscreen(containerElement.value);\r\n\r\n fullscreenMode.value = FullscreenMode.Window;\r\n }\r\n catch (ex) {\r\n console.warn(ex);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Attempts to exit from the current fullscreen mode.\r\n */\r\n const exitFullscreen = async (): Promise => {\r\n const body = document.getElementsByTagName(\"body\")[0];\r\n\r\n // TODO: This can be removed once the \"is-fullscreen\" class is implemented.\r\n if (body.style.overflowY === \"hidden\") {\r\n body.style.overflowY = \"\";\r\n }\r\n\r\n body.classList.remove(\"is-fullscreen\");\r\n\r\n if (fullscreenMode.value === FullscreenMode.Page) {\r\n containerStyle.value = {};\r\n\r\n teleportDisabled.value = true;\r\n fullscreenMode.value = FullscreenMode.None;\r\n }\r\n else if (fullscreenMode.value === FullscreenMode.Window) {\r\n try {\r\n const fullscreenElement = document.fullscreenElement ?? document.mozFullScreenElement ?? document.webkitFullscreenElement;\r\n\r\n // Only exit full screen if we are currently in it. The user\r\n // might have hit escape to exit fullscreen already.\r\n if (fullscreenElement) {\r\n await exitWindowFullscreen();\r\n }\r\n\r\n containerStyle.value = {};\r\n\r\n fullscreenMode.value = FullscreenMode.None;\r\n }\r\n catch (ex) {\r\n console.warn(ex);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Event handler when the window fullscreen mode changes.\r\n */\r\n const onFullscreenChange = (ev: Event): void => {\r\n const fullscreenElement = document.fullscreenElement ?? document.mozFullScreenElement ?? document.webkitFullscreenElement;\r\n\r\n if (ev.target === containerElement.value && fullscreenMode.value !== FullscreenMode.None && !fullscreenElement) {\r\n exitFullscreen();\r\n }\r\n };\r\n\r\n // Perform final initialization once we are mounted.\r\n onMounted(() => {\r\n document.addEventListener(\"fullscreenchange\", onFullscreenChange);\r\n document.addEventListener(\"mozfullscreenchange\", onFullscreenChange);\r\n document.addEventListener(\"webkitfullscreenchange\", onFullscreenChange);\r\n\r\n // Set initial full-screen state if requested.\r\n if (props.modelValue) {\r\n enterFullscreen();\r\n }\r\n });\r\n\r\n // Before we unmount, we need to attempt to exit fullscreen mode.\r\n onBeforeUnmount(() => {\r\n if (fullscreenMode.value !== FullscreenMode.None) {\r\n try {\r\n exitFullscreen();\r\n }\r\n catch (ex) {\r\n console.warn(ex);\r\n }\r\n }\r\n\r\n document.removeEventListener(\"webkitfullscreenchange\", onFullscreenChange);\r\n document.removeEventListener(\"mozfullscreenchange\", onFullscreenChange);\r\n document.removeEventListener(\"fullscreenchange\", onFullscreenChange);\r\n });\r\n\r\n // Any time the parent component signals us to change fullscreen mode\r\n // we need to attempt to match the state.\r\n watch(() => props.modelValue, () => {\r\n // Check if we are already in the correct state.\r\n if (!props.modelValue && fullscreenMode.value === FullscreenMode.None) {\r\n return;\r\n }\r\n else if (props.modelValue && fullscreenMode.value !== FullscreenMode.None) {\r\n return;\r\n }\r\n\r\n if (props.modelValue) {\r\n enterFullscreen();\r\n }\r\n else {\r\n exitFullscreen();\r\n }\r\n });\r\n\r\n // Any time our fullscreen mode changes, make sure the parent knows.\r\n watch(fullscreenMode, () => {\r\n emit(\"update:modelValue\", fullscreenMode.value !== FullscreenMode.None);\r\n });\r\n\r\n return {\r\n containerElement,\r\n containerStyle,\r\n teleportDisabled\r\n };\r\n },\r\n\r\n template: `\r\n\r\n \r\n
\r\n`\r\n});\r\n"],"names":["requestWindowFullscreen","_x","_requestWindowFullscreen","apply","arguments","_asyncToGenerator","element","requestFullscreen","mozRequestFullscreen","webkitRequestFullscreen","ex","Promise","_","reject","exitWindowFullscreen","_exitWindowFullscreen","document","exitFullscreen","mozCancelFullScreen","webkitExitFullscreen","FullscreenMode","defineComponent","name","props","modelValue","type","Boolean","default","isPageOnly","emits","setup","_ref","emit","fullscreenMode","ref","None","containerElement","teleportDisabled","containerStyle","enterFullscreen","_ref2","body","getElementsByTagName","classList","add","style","overflowY","value","position","left","top","width","height","Page","Window","console","warn","_ref3","remove","_ref4","_document$fullscreenE","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","onFullscreenChange","ev","_ref5","_document$fullscreenE2","target","onMounted","addEventListener","onBeforeUnmount","removeEventListener","watch","template"],"mappings":"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"}