{"version":3,"file":"692.788e8a6078607704406c.js","mappings":"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","sources":["webpack://iflyworld.web/./wwwroot/app/src/js/global.js","webpack://iflyworld.web/./wwwroot/app/src/js/viewport-size.js"],"sourcesContent":["// ***********************************\r\n// ***** global site variables *****\r\n// ***********************************\r\n\r\nconst detectReducedMotionPref = window.matchMedia('(prefers-reduced-motion: reduce)');\r\nlet settingsLinksAdded = false,\r\n settingsModalContent = null;\r\n\r\n// site settings\r\n\r\nconst addSettingsLinks = () => {\r\n // utility bar link?\r\n let utilityBar = document.body.querySelector('.header--utility-bar--links ul');\r\n if(utilityBar != null) {\r\n let li = document.createElement('li');\r\n li.classList.add('list-inline-item','ms-2');\r\n li.innerHTML = '';\r\n utilityBar.appendChild(li);\r\n }\r\n // update state\r\n settingsLinksAdded = true;\r\n};\r\n\r\nconst refreshModalContent = () => {\r\n if(!settingsModalContent) {\r\n let settingsModal = document.createElement('div');\r\n settingsModal.setAttribute('id','site-settings');\r\n settingsModal.setAttribute('class','modal fade');\r\n settingsModal.setAttribute('data-bs-backdrop','static');\r\n settingsModal.setAttribute('data-bs-keyboard','false');\r\n settingsModal.setAttribute('tabindex','-1');\r\n settingsModal.setAttribute('aria-hidden','true');\r\n settingsModal.innerHTML = '

Site Settings

';\r\n document.body.appendChild(settingsModal);\r\n settingsModalContent = document.body.querySelector('#site-settings .modal-body');\r\n }\r\n let content = '';\r\n if(siteSettings.fx.length > 0) {\r\n settingsModalContent.innerHTML = '

Manage the visual effects on this site:

';\r\n siteSettings.fx.forEach(i => {\r\n settingsModalContent.appendChild(i.controller);\r\n });\r\n }\r\n}\r\n\r\nexport const siteSettings = {\r\n reducedMotionPref: detectReducedMotionPref.matches,\r\n fx: [],\r\n fxAdd: (fxType, fxEnable, fxCallback = null) => {\r\n let exists = false;\r\n siteSettings.fx.forEach(i => {\r\n if(i.type == fxType) exists = true;\r\n });\r\n if(!exists) {\r\n siteSettings.fx.push({\r\n type: fxType,\r\n enabled: fxEnable,\r\n callback: fxCallback,\r\n controller: document.createElement('div')\r\n });\r\n let thisIndex = siteSettings.fx.length - 1,\r\n thisFX = siteSettings.fx[thisIndex];\r\n thisFX.controller.setAttribute('class','form-check form-switch');\r\n let checkbox = document.createElement('input');\r\n checkbox.setAttribute('id',`site-settings--fx--${thisIndex}`);\r\n checkbox.setAttribute('class','form-check-input');\r\n checkbox.setAttribute('type','checkbox');\r\n checkbox.setAttribute('role','switch');\r\n if(fxEnable) checkbox.setAttribute('checked',true);\r\n checkbox.addEventListener('click',() => {\r\n siteSettings.fxToggle(thisFX.type,checkbox.checked);\r\n });\r\n thisFX.controller.appendChild(checkbox);\r\n let label = document.createElement('label');\r\n label.setAttribute('for',`site-settings--fx--${thisIndex}`);\r\n label.setAttribute('class','form-check-label');\r\n label.innerHTML = thisFX.type;\r\n thisFX.controller.appendChild(label);\r\n }\r\n if(fxCallback) fxCallback(fxEnable);\r\n // add settings links if not already added\r\n if(!settingsLinksAdded) addSettingsLinks();\r\n // refresh modal content\r\n refreshModalContent();\r\n },\r\n fxToggle: (fxType, mode) => {\r\n siteSettings.fx.forEach(i => {\r\n if(i.type == fxType) {\r\n i.enabled = mode;\r\n if(i.callback) i.callback(mode);\r\n }\r\n });\r\n }\r\n};\r\n\r\n// viewport size\r\n\r\nexport const viewport = {\r\n vw: 0,\r\n vh: 0,\r\n setVw: (val) => {\r\n viewport.vw = val;\r\n },\r\n setVh: (val) => {\r\n viewport.vh = val;\r\n }\r\n};\r\n\r\n// component states\r\n\r\nexport const mainNavigation = {\r\n mobileActive: false,\r\n setMobileActive: (mode) => {\r\n mainNavigation.mobileActive = mode;\r\n },\r\n desktopActive: false,\r\n setDesktopActive: (mode) => {\r\n mainNavigation.desktopActive = mode;\r\n }\r\n};\r\n\r\nexport const headerSearch = {\r\n active: false,\r\n setActive: (mode) => {\r\n headerSearch.active = mode;\r\n }\r\n};","import { viewport } from './global';\r\nimport { ResizeObserver as Polyfill } from '@juggle/resize-observer';\r\nconst ResizeObserver = window.ResizeObserver || Polyfill;\r\n\r\n// add element to body for accurately reporting viewport size\r\n\r\nlet $body = document.querySelector('body');\r\n\r\nconst vpSizeCheck = (w,h) => {\r\n if(w != viewport.vw || h != viewport.vh) {\r\n window.requestAnimationFrame(() => {\r\n if(w != viewport.vw) {\r\n viewport.setVw(w);\r\n document.documentElement.style.setProperty('--vpWidth', `${viewport.vw}px`);\r\n }\r\n if(h != viewport.vh) {\r\n viewport.setVh(h);\r\n document.documentElement.style.setProperty('--vpHeight', `${viewport.vh}px`);\r\n }\r\n });\r\n }\r\n};\r\n\r\n// add element to body\r\n\r\nconst vpSizer = document.createElement('div');\r\nvpSizer.setAttribute('id','vp-sizer');\r\nvpSizer.setAttribute('aria-hidden','true');\r\nvpSizer.setAttribute('style','position:fixed;z-index:-1;top:0;left:0;bottom:0;right:0;pointer-events:none');\r\n$body.appendChild(vpSizer);\r\n\r\n// add resize observer\r\n\r\nconst vpSizerResizeObserver = new ResizeObserver(entries => {\r\n for (let entry of entries) {\r\n const cr = entry.contentRect;\r\n vpSizeCheck(cr.width,cr.height);\r\n }\r\n});\r\n\r\nvpSizerResizeObserver.observe(vpSizer);"],"names":["detectReducedMotionPref","window","matchMedia","settingsLinksAdded","settingsModalContent","siteSettings","reducedMotionPref","matches","fx","fxAdd","fxType","fxEnable","fxCallback","exists","forEach","i","type","push","enabled","callback","controller","document","createElement","thisIndex","length","thisFX","setAttribute","checkbox","addEventListener","fxToggle","checked","appendChild","label","innerHTML","utilityBar","body","querySelector","li","classList","add","addSettingsLinks","settingsModal","refreshModalContent","mode","viewport","vw","vh","setVw","val","setVh","mainNavigation","mobileActive","setMobileActive","desktopActive","setDesktopActive","headerSearch","active","setActive","ResizeObserver","Polyfill","$body","vpSizeCheck","w","h","requestAnimationFrame","documentElement","style","setProperty","vpSizer","entries","entry","cr","contentRect","width","height","observe"],"sourceRoot":""}