{"version":3,"file":"standardComponents.js","sources":["../src/script/ViewportObserver.ts","../src/script/elementSizeObserver.ts","../src/script/HoverObserver.ts","../src/script/BlazorReconnectObserver.ts","../src/script/saveFile.ts","../src/script/setHash.ts","../src/script/events.ts","../src/script/tabs.ts","../src/script/forms.ts","../src/script/setTitle.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);\t\t\t\t\r\n\t\t\t});\r\n\r\n\t\t}\r\n\t}\r\n}\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","export function saveAsFile(fileName: String, base64data: String) {\r\n\tvar link = document.createElement('a');\r\n\tlink.download = fileName.toString();\r\n\tlink.href = \"data:application/octet-stream;base64,\" + base64data;\r\n\tdocument.body.appendChild(link);\r\n\tlink.click();\r\n\tdocument.body.removeChild(link);\r\n}","export function setHash(hash: string) {\r\n\tdocument.location.hash = hash;\r\n}","export function debounceEvent(htmlElement: HTMLElement, eventName: string, delay: number) {\r\n\tregisterEvent(htmlElement, eventName, delay, debounce);\r\n}\r\n\r\nexport function throttleEvent(htmlElement: HTMLElement, eventName: string, delay: number) {\r\n\tregisterEvent(htmlElement, eventName, delay, throttle);\r\n}\r\n\r\nfunction registerEvent(htmlElement: HTMLElement, eventName: string, delay: number, filterFunction: Function) {\r\n\tlet raisingEvent = false;\r\n\tlet eventHandler = filterFunction(function (e:any) {\r\n\t\traisingEvent = true;\r\n\t\ttry {\r\n\t\t\thtmlElement.dispatchEvent(e);\r\n\t\t} finally {\r\n\t\t\traisingEvent = false;\r\n\t\t}\r\n\t}, delay);\r\n\r\n\thtmlElement.addEventListener(eventName, e => {\r\n\t\tif (!raisingEvent) {\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t\teventHandler(e);\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction debounce(this:any, func:Function, wait:number) {\r\n\tlet timer: any;\r\n\treturn (...args: any) => {\r\n\t\tclearTimeout(timer);\r\n\t\ttimer = setTimeout(() => { func.apply(this, args); }, wait);\r\n\t};\r\n}\r\n\r\nfunction throttle(func:Function, wait:number) {\r\n\tvar context:any, args:any, result:any;\r\n\tvar timeout:any = null;\r\n\tvar previous = 0;\r\n\tvar later = function () {\r\n\t\tprevious = Date.now();\r\n\t\ttimeout = null;\r\n\t\tresult = func.apply(context, args);\r\n\t\tif (!timeout) context = args = null;\r\n\t};\r\n\treturn function (this: any, ) {\r\n\t\tvar now = Date.now();\r\n\t\tif (!previous) previous = now;\r\n\t\tvar remaining = wait - (now - previous);\r\n\t\tcontext = this;\r\n\t\targs = arguments;\r\n\r\n\t\tif (!timeout) {\r\n\t\t\ttimeout = setTimeout(later, remaining);\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n};","export function setTabComponentOverflowByIdentifier(identifier: string) {\r\n\tvar tabComponent = document.getElementById(identifier);\r\n\tif (tabComponent != null) {\r\n\t\tsetTabComponentOverflow(tabComponent);\r\n\t}\r\n}\r\n\r\nexport function setTabComponentOverflow(tabComponent: HTMLElement) {\r\n\tif (tabComponent) {\r\n\t\t\r\n\t\tvar tabLinkContainer = tabComponent.querySelector('.veva-tabs-tabs');\r\n\t\tif (tabLinkContainer != null) {\r\n\t\t\tvar isOverflowing = tabLinkContainer.clientWidth < tabLinkContainer.scrollWidth;// || tabLinkContainer.clientHeight < tabLinkContainer.scrollHeight;\r\n\t\t\t\r\n\t\t\tif (isOverflowing) {\r\n\t\t\t\ttabComponent.classList.add('veva-tabs--overflowing')\r\n\t\t\t} else {\r\n\t\t\t\ttabComponent.classList.remove('veva-tabs--overflowing')\r\n\t\t\t}\r\n\t\t}\r\n\t} \r\n}\r\n\r\nexport function initializeTabComponent(identifier: string) {\r\n\tvar tabComponent = document.getElementById(identifier);\r\n\t\r\n\tif (tabComponent) {\r\n\t\tvar tabs = tabComponent.querySelectorAll('.veva-tabs-tab');\r\n\t\tvar tabPanes = tabComponent.querySelectorAll('.veva-tabs-pane');\t\r\n\r\n\t\tsetTabComponentOverflow(tabComponent);\r\n\r\n\t\tArray.from(tabs).forEach((elementInArray: Element) => {\r\n\t\t\tvar element = (elementInArray as HTMLElement);\r\n\t\t\tif (element != null) {\r\n\t\t\t\t\r\n\t\t\t\telement.addEventListener('click', (e) => {\r\n\r\n\t\t\t\t\tArray.from(tabs).forEach((elementInArray: Element) => {\r\n\t\t\t\t\t\tvar tab = (elementInArray as HTMLElement);\r\n\t\t\t\t\t\tif (element == tab) tab.classList.add('veva-tabs-tab--active');\r\n\t\t\t\t\t\telse tab.classList.remove('veva-tabs-tab--active');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tArray.from(tabPanes).forEach((element) => {\r\n\t\t\t\t\t\telement.classList.remove('veva-tabs-pane--show');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\twindow.setHash('tab-' + element.dataset.hash);\r\n\r\n\t\t\t\t\tvar activeTabPane = document.getElementById('veva-tabs-pane-' + element.dataset.hash);\r\n\t\t\t\t\tif (activeTabPane) {\r\n\t\t\t\t\t\tactiveTabPane.classList.add('veva-tabs-pane--show');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar activeTabPane = null;\r\n\t\tvar activeTab = null;\r\n\r\n\t\tif (document.location.hash && document.location.hash.startsWith('#tab-')) {\r\n\t\t\tactiveTabPane = document.getElementById('veva-tabs-pane-' + document.location.hash.replace('#tab-', ''));\r\n\t\t} else {\r\n\t\t\tactiveTabPane = tabComponent.querySelectorAll('.veva-tabs-pane')[0];\r\n\t\t}\r\n\r\n\t\tif (document.location.hash && document.location.hash.startsWith('#tab-')) {\r\n\t\t\tvar tab = document.getElementById('veva-tabs-tab-' + document.location.hash.replace('#tab-', ''));\r\n\t\t\tif (tab != null) {\r\n\t\t\t\tactiveTab = tab\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tactiveTab = tabComponent.querySelectorAll('.veva-tabs-tab')[0];\r\n\t\t}\r\n\r\n\t\tif (!activeTabPane) {\r\n\t\t\tactiveTabPane = tabComponent.querySelectorAll('.veva-tabs-pane')[0];\r\n\t\t}\r\n\r\n\t\tif (activeTabPane) {\r\n\t\t\tactiveTabPane.classList.add('veva-tabs-pane--show');\r\n\t\t}\r\n\r\n\t\tif (!activeTab) {\r\n\t\t\tactiveTab = tabComponent.querySelectorAll('.veva-tabs-link')[0];\r\n\t\t}\r\n\r\n\t\tif (activeTab) {\r\n\t\t\tactiveTab.classList.add('veva-tabs-tab--active');\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","export function submitForm(formIdentifier: string, delay?: number) {\r\n\tvar form = document.getElementById(formIdentifier) as HTMLFormElement;\r\n\r\n\tconst submitAction = () => {\r\n\t\tif (form != null) {\r\n\t\t\tform.submit();\r\n\t\t}\r\n\t};\r\n\r\n\tif (delay !== undefined) {\r\n\t\tsetTimeout(submitAction, delay);\r\n\t} else {\r\n\t\tsubmitAction();\r\n\t}\r\n}","export function setTitle(title: string) {\r\n\tdocument.title = title;\t\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\nimport { saveAsFile } from './saveFile';\r\nimport { setHash } from './setHash';\r\nimport { debounceEvent } from './events';\r\nimport { initializeTabComponent, setTabComponentOverflow, setTabComponentOverflowByIdentifier } from './tabs';\r\nimport { submitForm } from './forms';\r\nimport { setTitle } from './setTitle';\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tinViewPort: any;\r\n\t\tsaveAsFile: any;\r\n\t\tsetTitle: any;\r\n\t\tsetHash: any;\r\n\t\tafterRouteChange: any;\r\n\t\tdebounceEvent: any;\r\n\t\tinitializeTabComponent: any;\r\n\t\tsetTabComponentOverflow: any;\r\n\t\tsetTabComponentOverflowByIdentifier: any;\r\n\t\tsubmitForm: any;\r\n\t}\r\n}\r\n\r\nwindow.addEventListener('resize', (e) => {\r\n\tvar tabComponents = document.querySelectorAll('.veva-tabs');\r\n\t\r\n\tArray.from(tabComponents).forEach((tabComponent: Element) => {\r\n\t\tif (!tabComponent.classList.contains('veva-tabs--collapse-mobile')) {\r\n\t\t\twindow.setTabComponentOverflow(tabComponent);\r\n\t\t}\r\n\t});\t\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\nwindow.saveAsFile = saveAsFile;\r\nwindow.setHash = setHash;\r\nwindow.debounceEvent = debounceEvent;\r\nwindow.initializeTabComponent = initializeTabComponent;\r\nwindow.setTabComponentOverflow = setTabComponentOverflow;\r\nwindow.setTabComponentOverflowByIdentifier = setTabComponentOverflowByIdentifier;\r\nwindow.setTitle = setTitle;\r\nwindow.submitForm = submitForm;"],"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","saveAsFile","fileName","base64data","link","setHash","hash","debounceEvent","eventName","delay","registerEvent","debounce","filterFunction","raisingEvent","eventHandler","func","wait","timer","args","setTabComponentOverflowByIdentifier","identifier","tabComponent","setTabComponentOverflow","tabLinkContainer","isOverflowing","initializeTabComponent","tabs","tabPanes","elementInArray","tab","activeTabPane","activeTab","submitForm","formIdentifier","form","submitAction","setTitle","title","tabComponents"],"mappings":"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"}