{"version":3,"file":"index.js","sources":["../src/script/ViewportObserver.ts","../src/script/elementSizeObserver.ts","../src/script/HoverObserver.ts","../src/script/BlazorReconnectObserver.ts","../src/script/iframes.ts","../src/script/index.ts"],"sourcesContent":["export function inViewPort(element: HTMLElement, blazorComponent: any, callbackMethodName: String) {\r\n\r\n\tconst observer = new IntersectionObserver((entries) => {\r\n\t\tif (entries[0].intersectionRatio <= 0) { // If not in view\r\n\t\t\tblazorComponent.invokeMethodAsync(callbackMethodName, false);\r\n\t\t} else {\r\n\t\t\tblazorComponent.invokeMethodAsync(callbackMethodName, true);\r\n\t\t}\r\n\t});\r\n\r\n\tobserver.observe(element);\r\n}\r\n\r\nexport function ViewportObserver() {\r\n\tvar elements = document.querySelectorAll('[data-viewport-class]');\r\n\r\n\tfor (var i = 0; i < elements.length; i++) {\r\n\t\tconst element = elements[i];\r\n\r\n\t\tif (element.getAttribute('data-viewport-observer') != 'true') {\r\n\r\n\t\t\telement.setAttribute('data-viewport-observer', 'true');\r\n\r\n\t\t\tconst observer = new IntersectionObserver((entries) => {\r\n\r\n\t\t\t\tvar className = element.getAttribute(\"data-viewport-class\") as string;\r\n\t\t\t\tvar removeClassName = element.getAttribute(\"data-viewport-class-remove\") as string;\r\n\r\n\t\t\t\tif (!element.hasAttribute('data-viewport-observer-recent')) {\r\n\t\t\t\t\t//* prevent classes from changin to quicky\r\n\t\t\t\t\telement.setAttribute('data-viewport-observer-recent', 'true');\r\n\t\t\t\t\twindow.setTimeout(() => { element.removeAttribute('data-viewport-observer-recent') }, 100);\r\n\r\n\t\t\t\t\tif (entries[0].intersectionRatio <= 0) { // If not in view\r\n\t\t\t\t\t\telement.classList.remove(removeClassName);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\telement.classList.add(className);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tobserver.observe(element);\r\n\t\t}\r\n\t}\r\n}","export function observeElementSize(className = 'observe-size') {\r\n\r\n\tvar elementChanged = (entries: ResizeObserverEntry[], observer: ResizeObserver) => {\r\n\t\tfor (let entry of entries) {\r\n\t\t\tvar htmlElement = entry.target as HTMLElement;\r\n\r\n\t\t\tvar prefix = 'element';\r\n\t\t\tvar customPrefix = htmlElement.attributes.getNamedItem('data-size-prefix');\r\n\t\t\tif (customPrefix != null) prefix = customPrefix.value;\r\n\r\n\t\t\tvar target = entry.target;\r\n\t\t\tvar targetClass = htmlElement.attributes.getNamedItem('data-target-element');\r\n\t\t\tif (targetClass != null) target = target.getElementsByClassName(targetClass.value)[0];\r\n\r\n\t\t\thtmlElement.style.setProperty('--' + prefix + '-width', String(target.clientWidth) + 'px');\r\n\t\t\thtmlElement.style.setProperty('--' + prefix + '-height', String(target.clientHeight) + 'px');\r\n\t\t}\r\n\t}\r\n\r\n\tvar resizeObserver = new ResizeObserver(elementChanged);\r\n\r\n\tvar updateSizeVariables = () => {\r\n\t\tvar elements = document.getElementsByClassName(className);\r\n\r\n\t\tfor (var i = 0; i < elements.length; i++) {\r\n\t\t\t//* Lets assume the resize observer is intelligent and only lists each element once\r\n\t\t\tresizeObserver.observe(elements[i]);\r\n\t\t}\r\n\t}\r\n\r\n\tupdateSizeVariables();\r\n\r\n\tconst config = { attributes: false, childList: true, subtree: true };\r\n\tconst observer = new MutationObserver((mutations, observer) => {\r\n\t\tupdateSizeVariables();\r\n\t});\r\n\r\n\tobserver.observe(document.getElementsByTagName(\"body\")[0], config);\r\n}","export function HoverObserver() {\r\n\r\n\tvar elements = document.querySelectorAll('[data-hover-class]');\r\n\r\n\tfor (var i = 0; i < elements.length; i++) {\r\n\t\tconst element = elements[i];\r\n\r\n\t\tif (element.getAttribute('data-hover-observer') != 'true') {\r\n\t\t\telement.setAttribute('data-hover-observer', 'true');\r\n\r\n\t\t\tvar className = element.getAttribute(\"data-hover-class\") as string;\r\n\r\n\t\t\telement.addEventListener('mouseenter', (e) => {\r\n\t\t\t\telement.classList.add(className);\r\n\t\t\t});\r\n\r\n\t\t\telement.addEventListener('mouseleave', (e) => {\r\n\t\t\t\telement.classList.remove(className);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","export function BlazorReconnectObserver() {\t\r\n\tasync function attemptReload() {\r\n\t\tvar response = await fetch(''); // Check if the server really is back and is returning 200 HOKAY!\r\n\t\tif (response.ok) {\r\n\t\t\tlocation.reload();\r\n\t\t}\r\n\t}\r\n\r\n\t// Wait until the Blazor 'reload' button appears\r\n\tconst observer = new MutationObserver((mutations, observer) => {\r\n\t\tif (document.querySelector('#components-reconnect-modal h5 a')) {\r\n\t\t\t// Now every 10 seconds, see if the server appears to be back, and if so, reload\r\n\t\t\tobserver.disconnect();\r\n\t\t\tattemptReload();\r\n\t\t\tsetInterval(attemptReload, 10000);\r\n\t\t}\r\n\t});\r\n\t\r\n\tobserver.observe(document.body, { childList: true, subtree: true });\r\n}\r\n\r\n\r\n","window.addEventListener('message', (e: MessageEvent) => {\r\n\tlet data: { context?: string; src?: string; height?: string };\r\n\r\n\ttry {\r\n\t\tdata = JSON.parse(e.data);\r\n\t} catch (error) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif (data.context !== 'iframe.resize') {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconsole.log('iframe.resize event received for url: ' + data.src);\r\n\r\n\tconst iframes = document.querySelectorAll(`iframe[src=\"${data.src}\"]`);\r\n\r\n\tif (iframes.length == 0) {\r\n\t\tconsole.log('no matching iframes found (' + data.src + ')!');\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfor (var i = 0; i < iframes.length; i++) {\r\n\t\tiframes[i].height = data.height ?? iframes[i].height;\r\n\t\tiframes[i].style.minHeight = (data.height ?? iframes[i].height) + 'px';\r\n\t\tconsole.log('iframe heights updated (' + data.src + ')!');\r\n\t}\r\n\t\r\n\treturn;\r\n});","import \"../css/styles.scss\";\r\nimport { inViewPort, ViewportObserver } from './ViewportObserver';\r\nimport { observeElementSize } from './elementSizeObserver';\r\nimport { HoverObserver } from './HoverObserver';\r\nimport { BlazorReconnectObserver } from './BlazorReconnectObserver';\r\n//import { setHash, getHash } from './setHash';\r\n//import { initializeTabComponent, setTabComponentOverflow, setTabComponentOverflowByIdentifier } from './tabs';\r\n//import { setTitle } from './setTitle';\r\n//import { getCurrentUrl, getCurrentQueryString } from './urls';\r\n\r\nimport { saveAsFile } from './saveFile';\r\nimport { debounceEvent } from './events';\r\nimport { submitForm, focusElement } from './forms';\r\n\r\nimport './iframes';\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tinViewPort: any;\r\n\t\tsaveAsFile: any;\r\n\t\t//setTitle: any;\r\n\t\t//setHash: any;\r\n\t\t//getHash: any;\r\n\t\tafterRouteChange: any;\r\n\t\tdebounceEvent: any;\r\n\t\t//initializeTabComponent: any;\r\n\t\t//setTabComponentOverflow: any;\r\n\t\t//setTabComponentOverflowByIdentifier: any;\r\n\t\tsubmitForm: any;\r\n\t\t//getCurrentUrl: any;\r\n\t\t//getCurrentQueryString: any;\r\n\t\tfocusElement: any;\r\n\t}\r\n}\r\n\r\n\r\nwindow.addEventListener('load', (e) => {\t\r\n\r\n\tobserveElementSize();\r\n\r\n\t//* Setup up mutaion observer for new elements\r\n\tconst config = { attributes: false, childList: true, subtree: true };\r\n\tconst observer = new MutationObserver((mutations, observer) => {\t\t\r\n\t\tViewportObserver();\r\n\t\tHoverObserver();\r\n\t});\r\n\tobserver.observe(document.getElementsByTagName(\"body\")[0], config);\r\n\r\n\tViewportObserver();\r\n\tHoverObserver();\r\n\tBlazorReconnectObserver();\r\n});\r\n\r\nwindow.inViewPort = inViewPort;\r\n\r\n//window.setHash = setHash;\r\n//window.getHash = getHash;\r\n/*\r\nwindow.initializeTabComponent = initializeTabComponent;\r\nwindow.setTabComponentOverflow = setTabComponentOverflow;\r\nwindow.setTabComponentOverflowByIdentifier = setTabComponentOverflowByIdentifier;\r\n*/\r\n//window.setTitle = setTitle;\r\n/*\r\nwindow.getCurrentUrl = getCurrentUrl;\r\nwindow.getCurrentQueryString = getCurrentQueryString;\r\n*/\r\n\r\nwindow.saveAsFile = saveAsFile;\r\nwindow.debounceEvent = debounceEvent;\r\nwindow.submitForm = submitForm;\r\nwindow.focusElement = focusElement;\r\n"],"names":["inViewPort","element","blazorComponent","callbackMethodName","entries","ViewportObserver","elements","i","className","removeClassName","observeElementSize","elementChanged","observer","entry","htmlElement","prefix","customPrefix","target","targetClass","resizeObserver","updateSizeVariables","config","mutations","HoverObserver","e","BlazorReconnectObserver","attemptReload","response","data","iframes","saveAsFile","debounceEvent","submitForm","focusElement"],"mappings":"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"}