{"version":3,"file":"blazor-component.js","sources":["../../../BlazorComponent.Web/src/directive/ripple.ts","../../../BlazorComponent.Web/src/utils/helper.ts","../../../BlazorComponent.Web/src/events/EventType.ts","../../../BlazorComponent.Web/src/events/extra.ts","../../../BlazorComponent.Web/src/events/index.ts","../../../BlazorComponent.Web/src/interop.ts","../../../BlazorComponent.Web/src/directive/index.ts","../../../BlazorComponent.Web/src/mixins/overlayable/index.ts","../../../BlazorComponent.Web/src/main.ts"],"sourcesContent":["const calculate = (e, el) => {\r\n let localX = 0;\r\n let localY = 0;\r\n\r\n const offset = el.getBoundingClientRect();\r\n const target = e;\r\n\r\n localX = target.clientX - offset.left;\r\n localY = target.clientY - offset.top;\r\n\r\n let radius = 0;\r\n let scale = 0.3;\r\n\r\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2;\r\n\r\n const centerX = `${(el.clientWidth - radius * 2) / 2}px`;\r\n const centerY = `${(el.clientHeight - radius * 2) / 2}px`;\r\n\r\n const x = `${localX - radius}px`;\r\n const y = `${localY - radius}px`;\r\n\r\n return { radius, scale, x, y, centerX, centerY };\r\n};\r\n\r\nfunction transform(el, value) {\r\n el.style.transform = value;\r\n el.style.webkitTransform = value;\r\n}\r\n\r\nfunction opacity(el, value) {\r\n el.style.opacity = value.toString();\r\n}\r\n\r\nconst ripples = {\r\n /* eslint-disable max-statements */\r\n show(e, el) {\r\n const container = document.createElement(\"span\");\r\n const animation = document.createElement(\"span\");\r\n\r\n container.appendChild(animation);\r\n container.className = \"m-ripple__container\";\r\n\r\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el);\r\n\r\n const size = `${radius * 2}px`;\r\n animation.className = \"m-ripple__animation\";\r\n animation.style.width = size;\r\n animation.style.height = size;\r\n\r\n el.appendChild(container);\r\n\r\n const computed = window.getComputedStyle(el);\r\n if (computed && computed.position === \"static\") {\r\n el.style.position = \"relative\";\r\n el.dataset.previousPosition = \"static\";\r\n }\r\n\r\n animation.classList.add(\"m-ripple__animation--enter\");\r\n animation.classList.add(\"m-ripple__animation--visible\");\r\n transform(\r\n animation,\r\n `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`\r\n );\r\n opacity(animation, 0);\r\n animation.dataset.activated = String(performance.now());\r\n\r\n setTimeout(() => {\r\n animation.classList.remove(\"m-ripple__animation--enter\");\r\n animation.classList.add(\"m-ripple__animation--in\");\r\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`);\r\n opacity(animation, 0.25);\r\n }, 0);\r\n },\r\n\r\n hide(el) {\r\n const ripples = el.getElementsByClassName(\"m-ripple__animation\");\r\n\r\n if (ripples.length === 0) return;\r\n const animation = ripples[ripples.length - 1];\r\n\r\n if (animation.dataset.isHiding) return;\r\n else animation.dataset.isHiding = \"true\";\r\n\r\n const diff = performance.now() - Number(animation.dataset.activated);\r\n const delay = Math.max(250 - diff, 0);\r\n\r\n setTimeout(() => {\r\n animation.classList.remove(\"m-ripple__animation--in\");\r\n animation.classList.add(\"m-ripple__animation--out\");\r\n opacity(animation, 0);\r\n\r\n setTimeout(() => {\r\n const ripples = el.getElementsByClassName(\"m-ripple__animation\");\r\n if (ripples.length === 1 && el.dataset.previousPosition) {\r\n el.style.position = el.dataset.previousPosition;\r\n delete el.dataset.previousPosition;\r\n }\r\n\r\n animation.parentNode && el.removeChild(animation.parentNode);\r\n }, 300);\r\n }, delay);\r\n },\r\n};\r\n\r\nexport function rippleShow(e) {\r\n ripples.show(e, e.currentTarget);\r\n}\r\n\r\nexport function rippleHide(e) {\r\n ripples.hide(e.currentTarget);\r\n}\r\n","export function addOnceEventListener (\r\n el: EventTarget,\r\n eventName: string,\r\n cb: (event: Event) => void,\r\n options: boolean | AddEventListenerOptions = false\r\n): void {\r\n const once = (event: Event) => {\r\n cb(event)\r\n el.removeEventListener(eventName, once, options)\r\n }\r\n\r\n el.addEventListener(eventName, once, options)\r\n}\r\n\r\nlet passiveSupported = false\r\ntry {\r\n if (typeof window !== 'undefined') {\r\n const testListenerOpts = Object.defineProperty({}, 'passive', {\r\n get: () => {\r\n passiveSupported = true\r\n },\r\n })\r\n\r\n window.addEventListener('testListener' as any, testListenerOpts as any, testListenerOpts)\r\n window.removeEventListener('testListener' as any, testListenerOpts as any, testListenerOpts)\r\n }\r\n} catch (e) { console.warn(e) } /* eslint-disable-line no-console */\r\nexport { passiveSupported }\r\n\r\nexport function addPassiveEventListener (\r\n el: EventTarget,\r\n event: string,\r\n cb: ((e: any) => void),\r\n options: {}\r\n): void {\r\n el.addEventListener(event, cb, passiveSupported ? options : false)\r\n}\r\n\r\nexport function getZIndex (el?: Element | null): number {\r\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\r\n\r\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\r\n\r\n if (!index) return getZIndex(el.parentNode as Element)\r\n return index\r\n}\r\n\r\n// KeyboardEvent.keyCode aliases\r\nexport const keyCodes = Object.freeze({\r\n enter: 13,\r\n tab: 9,\r\n delete: 46,\r\n esc: 27,\r\n space: 32,\r\n up: 38,\r\n down: 40,\r\n left: 37,\r\n right: 39,\r\n end: 35,\r\n home: 36,\r\n del: 46,\r\n backspace: 8,\r\n insert: 45,\r\n pageup: 33,\r\n pagedown: 34,\r\n shift: 16,\r\n})\r\n\r\n/** Polyfill for Event.prototype.composedPath */\r\nexport function composedPath (e: Event): EventTarget[] {\r\n if (e.composedPath) return e.composedPath()\r\n\r\n const path = []\r\n let el = e.target as Element\r\n\r\n while (el) {\r\n path.push(el)\r\n\r\n if (el.tagName === 'HTML') {\r\n path.push(document)\r\n path.push(window)\r\n\r\n return path\r\n }\r\n\r\n el = el.parentElement!\r\n }\r\n return path\r\n}\r\n\r\nexport function getBlazorId(el) {\r\n let _bl_ = el.getAttributeNames().find(a => a.startsWith('_bl_'))\r\n if (_bl_) {\r\n _bl_ = _bl_.substring(4);\r\n }\r\n\r\n return _bl_;\r\n}\r\n\r\nexport function getElementSelector(el) {\r\n if (!(el instanceof Element))\r\n return;\r\n var path = [];\r\n while (el.nodeType === Node.ELEMENT_NODE) {\r\n var selector = el.nodeName.toLowerCase();\r\n if (el.id) {\r\n selector += '#' + el.id;\r\n path.unshift(selector);\r\n break;\r\n } else {\r\n var sib = el, nth = 1;\r\n while (sib = sib.previousElementSibling) {\r\n if (sib.nodeName.toLowerCase() == selector)\r\n nth++;\r\n }\r\n if (nth != 1)\r\n selector += \":nth-of-type(\" + nth + \")\";\r\n }\r\n path.unshift(selector);\r\n el = el.parentNode;\r\n }\r\n return path.join(\" > \");\r\n}\r\n\r\nexport function getDom(element) {\r\n if (!element) {\r\n element = document.body;\r\n } else if (typeof element === 'string') {\r\n if (element === 'document') {\r\n return document.documentElement;\r\n } else {\r\n element = document.querySelector(element);\r\n }\r\n }\r\n return element;\r\n}\r\n\r\nexport const canUseDom = !!(\r\n typeof window !== 'undefined' &&\r\n typeof document !== 'undefined' &&\r\n window.document &&\r\n window.document.createElement\r\n)\r\n","// see https://github.com/dotnet/aspnetcore/blob/main/src/Components/Web.JS/src/Rendering/Events/EventTypes.ts\r\n// updated at 2022/08/31\r\n\r\nexport function parseMouseEvent(event: MouseEvent): Blazor.MouseEventArgs {\r\n return {\r\n detail: event.detail,\r\n screenX: event.screenX,\r\n screenY: event.screenY,\r\n clientX: event.clientX,\r\n clientY: event.clientY,\r\n offsetX: event.offsetX,\r\n offsetY: event.offsetY,\r\n pageX: event.pageX,\r\n pageY: event.pageY,\r\n button: event.button,\r\n buttons: event.buttons,\r\n ctrlKey: event.ctrlKey,\r\n shiftKey: event.shiftKey,\r\n altKey: event.altKey,\r\n metaKey: event.metaKey,\r\n type: event.type,\r\n } as Blazor.MouseEventArgs;\r\n}\r\n\r\nexport function parseTouchEvent(event: TouchEvent): Blazor.TouchEventArgs {\r\n return {\r\n detail: event.detail,\r\n touches: parseTouch(event.touches),\r\n targetTouches: parseTouch(event.targetTouches),\r\n changedTouches: parseTouch(event.changedTouches),\r\n ctrlKey: event.ctrlKey,\r\n shiftKey: event.shiftKey,\r\n altKey: event.altKey,\r\n metaKey: event.metaKey,\r\n type: event.type,\r\n };\r\n}\r\n\r\nfunction parseTouch(touchList: TouchList): Blazor.TouchPoint[] {\r\n const touches: Blazor.TouchPoint[] = [];\r\n\r\n for (let i = 0; i < touchList.length; i++) {\r\n const touch = touchList[i];\r\n touches.push({\r\n identifier: touch.identifier,\r\n clientX: touch.clientX,\r\n clientY: touch.clientY,\r\n screenX: touch.screenX,\r\n screenY: touch.screenY,\r\n pageX: touch.pageX,\r\n pageY: touch.pageY,\r\n });\r\n }\r\n return touches;\r\n}\r\n\r\nexport function parseChangeEvent(event: Event): Blazor.ChangeEventArgs {\r\n const element = event.target as Element;\r\n if (isTimeBasedInput(element)) {\r\n const normalizedValue = normalizeTimeBasedValue(element);\r\n return { value: normalizedValue };\r\n } else if (isMultipleSelectInput(element)) {\r\n const selectElement = element as HTMLSelectElement;\r\n const selectedValues = Array.from(selectElement.options)\r\n .filter((option) => option.selected)\r\n .map((option) => option.value);\r\n return { value: selectedValues };\r\n } else {\r\n const targetIsCheckbox = isCheckbox(element);\r\n const newValue = targetIsCheckbox ? !!element[\"checked\"] : element[\"value\"];\r\n return { value: newValue };\r\n }\r\n}\r\n\r\nfunction isTimeBasedInput(element: Element): element is HTMLInputElement {\r\n return timeBasedInputs.indexOf(element.getAttribute(\"type\")!) !== -1;\r\n}\r\n\r\nconst timeBasedInputs = [\"date\", \"datetime-local\", \"month\", \"time\", \"week\"];\r\n\r\nfunction normalizeTimeBasedValue(element: HTMLInputElement): string {\r\n const value = element.value;\r\n const type = element.type;\r\n switch (type) {\r\n case \"date\":\r\n case \"month\":\r\n return value;\r\n case \"datetime-local\":\r\n return value.length === 16 ? value + \":00\" : value; // Convert yyyy-MM-ddTHH:mm to yyyy-MM-ddTHH:mm:00\r\n case \"time\":\r\n return value.length === 5 ? value + \":00\" : value; // Convert hh:mm to hh:mm:00\r\n case \"week\":\r\n // For now we are not going to normalize input type week as it is not trivial\r\n return value;\r\n }\r\n\r\n throw new Error(`Invalid element type '${type}'.`);\r\n}\r\n\r\nfunction isMultipleSelectInput(element: Element): element is HTMLSelectElement {\r\n return (\r\n element instanceof HTMLSelectElement && element.type === \"select-multiple\"\r\n );\r\n}\r\n\r\nfunction isCheckbox(element: Element | null): boolean {\r\n return (\r\n !!element &&\r\n element.tagName === \"INPUT\" &&\r\n element.getAttribute(\"type\") === \"checkbox\"\r\n );\r\n}\r\n","import { getElementSelector } from \"../utils/helper\";\r\nimport { parseMouseEvent, parseTouchEvent } from \"./EventType\";\r\n\r\nexport function registerExtraMouseEvent(eventType: string, eventName: string) {\r\n if (Blazor) {\r\n Blazor.registerCustomEventType(eventType, {\r\n browserEventName: eventName,\r\n createEventArgs: e => sharedCreateEventArgs(\"mouse\", e)\r\n })\r\n }\r\n}\r\n\r\nexport function registerExtraTouchEvent(eventType: string, eventName: string) {\r\n if (Blazor) {\r\n Blazor.registerCustomEventType(eventType, {\r\n browserEventName: eventName,\r\n createEventArgs: e => sharedCreateEventArgs(\"touch\", e)\r\n })\r\n }\r\n}\r\n\r\nfunction sharedCreateEventArgs(type: \"mouse\" | \"touch\", e: Event,) {\r\n let args = { target: {} }\r\n if (type === 'mouse') {\r\n args = {\r\n ...args,\r\n ...parseMouseEvent(e as MouseEvent)\r\n }\r\n } else if (type === 'touch') {\r\n args = {\r\n ...args,\r\n ...parseTouchEvent(e as TouchEvent)\r\n }\r\n }\r\n\r\n if (e.target) {\r\n const target = e.target as HTMLElement;\r\n const elementReferenceId = target.getAttributeNames().find(a => a.startsWith('_bl_'));\r\n if (elementReferenceId) {\r\n args.target['elementReferenceId'] = elementReferenceId\r\n args.target['selector'] = `[${elementReferenceId}]`\r\n } else {\r\n args.target['selector'] = getElementSelector(target)\r\n }\r\n\r\n args.target['class'] = target.getAttribute('class')\r\n }\r\n\r\n return args;\r\n}","import { registerExtraMouseEvent, registerExtraTouchEvent } from \"./extra\";\r\n\r\nexport function registerExtraEvents() {\r\n registerExtraMouseEvent(\"exmousedown\", \"mousedown\");\r\n registerExtraMouseEvent(\"exmouseup\", \"mouseup\");\r\n registerExtraMouseEvent(\"exclick\", \"click\");\r\n registerExtraMouseEvent(\"exmouseleave\", \"mouseleave\");\r\n registerExtraMouseEvent(\"exmouseenter\", \"mouseenter\");\r\n registerExtraMouseEvent(\"exmousemove\", \"mousemove\");\r\n registerExtraTouchEvent(\"extouchstart\", \"touchstart\");\r\n registerEvent(\"transitionend\", \"transitionend\")\r\n}\r\n\r\nfunction registerEvent(eventType: string, eventName: string) {\r\n if (Blazor) {\r\n Blazor.registerCustomEventType(eventType, {\r\n browserEventName: eventName,\r\n })\r\n }\r\n}","import registerDirective from \"./directive/index\";\r\nimport { registerExtraEvents } from \"./events/index\";\r\nimport { getDom, getElementSelector } from \"./utils/helper\";\r\n\r\nexport function getZIndex(el?: Element | null): number {\r\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\r\n\r\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\r\n\r\n if (!index) return getZIndex(el.parentNode as Element)\r\n return index\r\n}\r\n\r\nexport function addStepperEventListener(element: HTMLElement, isActive: Boolean) {\r\n if (element?.addEventListener) {\r\n element.addEventListener(\r\n 'transitionend',\r\n e => onTransition(e, isActive, element),\r\n false\r\n );\r\n }\r\n}\r\n\r\nexport function removeStepperEventListener(element: HTMLElement, isActive: Boolean) {\r\n if (element?.removeEventListener) {\r\n element.removeEventListener(\r\n 'transitionend',\r\n e => onTransition(e, isActive, element),\r\n false\r\n );\r\n }\r\n}\r\n\r\nexport function initStepperWrapper(element: HTMLElement) {\r\n if (!element.classList.contains('active')) {\r\n element.style.display = 'none';\r\n }\r\n\r\n var observer = new MutationObserver(function (mutationsList) {\r\n for (let mutation of mutationsList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName == 'class') {\r\n var target: HTMLElement = mutation.target as HTMLElement;\r\n if (target.classList.contains('active')) {\r\n target.style.display = '';\r\n enter(target, true);\r\n } else {\r\n leave(target);\r\n setTimeout(() => {\r\n target.style.display = 'none';\r\n }, 300);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n observer.observe(element, { attributes: true, attributeFilter: ['class'] });\r\n}\r\n\r\nfunction onTransition(e: TransitionEvent, isActive: Boolean, element: HTMLElement) {\r\n if (!isActive ||\r\n e.propertyName !== 'height'\r\n ) return\r\n\r\n element.style.height = 'auto';\r\n}\r\n\r\nfunction enter(element: HTMLElement, isActive: Boolean) {\r\n let scrollHeight = 0\r\n\r\n // Render bug with height\r\n requestAnimationFrame(() => {\r\n scrollHeight = element.scrollHeight;\r\n });\r\n\r\n element.style.height = 0 + 'px';\r\n // Give the collapsing element time to collapse\r\n setTimeout(() => isActive && (element.style.height = (scrollHeight + 'px' || 'auto')), 450)\r\n}\r\n\r\nfunction leave(element: HTMLElement) {\r\n element.style.height = element.clientHeight + 'px';\r\n setTimeout(() => {\r\n element.style.height = 0 + 'px';\r\n }, 10)\r\n}\r\n\r\nexport function getDomInfo(element, selector = \"body\") {\r\n var result = {};\r\n\r\n var dom = getDom(element);\r\n\r\n if (dom) {\r\n if (dom.style && dom.style['display'] === 'none') {\r\n // clone and set display not none becuase\r\n // element with display:none can not get the dom info\r\n var cloned = dom.cloneNode(true);\r\n cloned.style['display'] = 'inline-block';\r\n cloned.style['z-index'] = -1000;\r\n dom.parentElement.appendChild(cloned);\r\n\r\n result = getDomInfoObj(cloned);\r\n\r\n dom.parentElement.removeChild(cloned);\r\n } else {\r\n result = getDomInfoObj(dom);\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction getDomInfoObj(dom) {\r\n var result = {};\r\n result[\"offsetTop\"] = dom.offsetTop || 0;\r\n result[\"offsetLeft\"] = dom.offsetLeft || 0;\r\n result[\"scrollHeight\"] = dom.scrollHeight || 0;\r\n result[\"scrollWidth\"] = dom.scrollWidth || 0;\r\n result[\"scrollLeft\"] = dom.scrollLeft || 0;\r\n result[\"scrollTop\"] = dom.scrollTop || 0;\r\n result[\"clientTop\"] = dom.clientTop || 0;\r\n result[\"clientLeft\"] = dom.clientLeft || 0;\r\n result[\"clientHeight\"] = dom.clientHeight || 0;\r\n result[\"clientWidth\"] = dom.clientWidth || 0;\r\n var position = getElementPos(dom);\r\n result[\"offsetWidth\"] = Math.round(position.offsetWidth) || 0;\r\n result[\"offsetHeight\"] = Math.round(position.offsetHeight) || 0;\r\n result[\"relativeTop\"] = Math.round(position.relativeTop) || 0;\r\n result[\"relativeBottom\"] = Math.round(position.relativeBottom) || 0;\r\n result[\"relativeLeft\"] = Math.round(position.relativeLeft) || 0;\r\n result[\"relativeRight\"] = Math.round(position.relativeRight) || 0;\r\n result[\"absoluteLeft\"] = Math.round(position.absoluteLeft) || 0;\r\n result[\"absoluteTop\"] = Math.round(position.absoluteTop) || 0;\r\n return result;\r\n}\r\n\r\nfunction getElementPos(element) {\r\n var res: any = new Object();\r\n res.x = 0;\r\n res.y = 0;\r\n if (element !== null) {\r\n if (element.getBoundingClientRect) {\r\n var viewportElement = document.documentElement;\r\n var box = element.getBoundingClientRect();\r\n var scrollLeft = viewportElement.scrollLeft;\r\n var scrollTop = viewportElement.scrollTop;\r\n\r\n res.offsetWidth = box.width;\r\n res.offsetHeight = box.height;\r\n res.relativeTop = box.top;\r\n res.relativeBottom = box.bottom;\r\n res.relativeLeft = box.left;\r\n res.relativeRight = box.right;\r\n res.absoluteLeft = box.left + scrollLeft;\r\n res.absoluteTop = box.top + scrollTop;\r\n }\r\n }\r\n return res;\r\n}\r\n\r\nexport function triggerEvent(element, eventType, eventName, stopPropagation) {\r\n var dom = getDom(element);\r\n var evt = document.createEvent(eventType);\r\n evt.initEvent(eventName);\r\n\r\n if (stopPropagation) {\r\n evt.stopPropagation();\r\n }\r\n\r\n return dom.dispatchEvent(evt);\r\n}\r\n\r\nexport function setProperty(element, name, value) {\r\n var dom = getDom(element);\r\n dom[name] = value;\r\n}\r\n\r\nexport function getBoundingClientRect(element, attach = \"body\") {\r\n let dom = getDom(element);\r\n\r\n var result = {}\r\n\r\n if (dom && dom.getBoundingClientRect) {\r\n if (dom.style && dom.style['display'] === 'none') {\r\n var cloned = dom.cloneNode(true);\r\n cloned.style['display'] = 'inline-block';\r\n cloned.style['z-index'] = -1000;\r\n document.querySelector(attach)?.appendChild(cloned);\r\n\r\n result = cloned.getBoundingClientRect();\r\n\r\n document.querySelector(attach)?.removeChild(cloned);\r\n } else {\r\n result = dom.getBoundingClientRect()\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nvar htmlElementEventListennerConfigs: { [prop: string]: any[] } = {}\r\n\r\nexport function addHtmlElementEventListener(\r\n selector: \"window\" | \"document\" | K,\r\n type: string,\r\n invoker: DotNet.DotNetObject,\r\n options?: boolean | AddEventListenerOptions,\r\n extras?: Partial> & { relatedTarget?: string, throttle?: number, debounce?: number, key?: string }) {\r\n let htmlElement: HTMLElement | Window\r\n\r\n if (selector == \"window\") {\r\n htmlElement = window;\r\n } else if (selector == \"document\") {\r\n htmlElement = document.documentElement;\r\n } else {\r\n htmlElement = document.querySelector(selector);\r\n }\r\n\r\n var key = extras?.key || `${selector}:${type}`;\r\n\r\n //save for remove\r\n var config = {};\r\n\r\n var listener = (args: any): void => {\r\n if (extras?.stopPropagation) {\r\n args.stopPropagation();\r\n }\r\n\r\n if (extras?.preventDefault) {\r\n args.preventDefault();\r\n }\r\n\r\n // mouseleave relatedTarget\r\n if (extras?.relatedTarget && document.querySelector(extras.relatedTarget)?.contains(args.relatedTarget)) {\r\n return;\r\n }\r\n\r\n const obj = {};\r\n\r\n for (var k in args) {\r\n if (typeof args[k] == 'string' || typeof args[k] == 'number') {\r\n obj[k] = args[k];\r\n } else if (k == 'target' && args.target.attributes) {\r\n var target = {\r\n attributes: {}\r\n };\r\n\r\n for (let index = 0; index < args.target.attributes.length; index++) {\r\n const attr = args.target.attributes[index];\r\n target.attributes[attr.name] = attr.value;\r\n }\r\n obj[k] = target;\r\n } else if (k == 'touches' || k == 'targetTouches' || k == 'changedTouches') {\r\n var list = [];\r\n args[k].forEach(touch => {\r\n var item = {};\r\n\r\n for (var attr in touch) {\r\n if (typeof (touch[attr]) == 'string' || typeof (touch[attr]) == 'number') {\r\n item[attr] = touch[attr];\r\n }\r\n }\r\n list.push(item);\r\n });\r\n\r\n obj[k] = list;\r\n }\r\n }\r\n\r\n invoker.invokeMethodAsync('Invoke', obj);\r\n };\r\n\r\n if (extras?.debounce && extras.debounce > 0) {\r\n let timeout;\r\n config[\"listener\"] = function (args: any) {\r\n clearTimeout(timeout)\r\n timeout = setTimeout(() => listener(args), extras.debounce);\r\n }\r\n }\r\n else if (extras?.throttle && extras.throttle > 0) {\r\n let throttled: boolean;\r\n config[\"listener\"] = function (args: any) {\r\n if (!throttled) {\r\n listener(args)\r\n throttled = true;\r\n setTimeout(() => {\r\n throttled = false;\r\n }, (extras?.throttle ?? 0));\r\n }\r\n }\r\n } else {\r\n config[\"listener\"] = listener;\r\n }\r\n\r\n config['options'] = options;\r\n\r\n if (htmlElementEventListennerConfigs[key]) {\r\n htmlElementEventListennerConfigs[key].push(config);\r\n } else {\r\n htmlElementEventListennerConfigs[key] = [config]\r\n }\r\n\r\n if (htmlElement) {\r\n htmlElement.addEventListener(type, config[\"listener\"], options);\r\n }\r\n}\r\n\r\nexport function removeHtmlElementEventListener(selector, type, k?: string) {\r\n let htmlElement: any\r\n\r\n if (selector == \"window\") {\r\n htmlElement = window;\r\n } else if (selector == \"document\") {\r\n htmlElement = document.documentElement;\r\n } else {\r\n htmlElement = document.querySelector(selector);\r\n }\r\n\r\n var k = k || `${selector}:${type}`;\r\n\r\n var configs = htmlElementEventListennerConfigs[k];\r\n\r\n if (configs) {\r\n configs.forEach(item => {\r\n htmlElement?.removeEventListener(type, item[\"listener\"], item['options']);\r\n });\r\n\r\n htmlElementEventListennerConfigs[k] = []\r\n }\r\n}\r\n\r\nvar outsideClickListenerCaches: { [key: string]: any } = {}\r\n\r\nexport function addOutsideClickEventListener(invoker, noInvokeSelectors: string[], invokeSelectors: string[]) {\r\n if (!noInvokeSelectors) return;\r\n\r\n noInvokeSelectors = noInvokeSelectors.filter(s => !!s)\r\n\r\n var listener = function (args) {\r\n var exists = noInvokeSelectors.some(s => getDom(s)?.contains(args.target));\r\n if (exists) return;\r\n\r\n var pointerSelector = getElementSelector(args.target)\r\n\r\n if (invokeSelectors) {\r\n if (invokeSelectors.some(s => getDom(s)?.contains(args.target))) {\r\n invoker.invokeMethodAsync(\"Invoke\", {pointerSelector});\r\n }\r\n } else {\r\n invoker.invokeMethodAsync(\"Invoke\", {pointerSelector});\r\n }\r\n }\r\n\r\n document.addEventListener(\"click\", listener, true);\r\n\r\n var key = `(${noInvokeSelectors.join(',')})document:click`\r\n\r\n outsideClickListenerCaches[key] = listener;\r\n}\r\n\r\nexport function removeOutsideClickEventListener(noInvokeSelectors: string[]) {\r\n if (!noInvokeSelectors) return;\r\n\r\n noInvokeSelectors = noInvokeSelectors.filter(s => !!s)\r\n\r\n var key = `(${noInvokeSelectors.join(',')})document:click`\r\n\r\n if (outsideClickListenerCaches[key]) {\r\n document.removeEventListener('click', outsideClickListenerCaches[key], true);\r\n outsideClickListenerCaches[key] = undefined\r\n }\r\n}\r\n\r\nexport function addMouseleaveEventListener(selector) {\r\n var htmlElement = document.querySelector(selector);\r\n if (htmlElement) {\r\n htmlElement.addEventListener()\r\n }\r\n}\r\n\r\nexport function contains(e1, e2) {\r\n const dom1 = getDom(e1);\r\n if (dom1 && dom1.contains) {\r\n return dom1.contains(getDom(e2));\r\n }\r\n return false;\r\n}\r\n\r\nexport function equalsOrContains(e1: any, e2: any) {\r\n const dom1 = getDom(e1);\r\n const dom2 = getDom(e2);\r\n return !!dom1 && dom1.contains && !!dom2 && (dom1 == dom2 || dom1.contains(dom2));\r\n}\r\n\r\nfunction fallbackCopyTextToClipboard(text) {\r\n var textArea = document.createElement(\"textarea\");\r\n textArea.value = text;\r\n\r\n // Avoid scrolling to bottom\r\n textArea.style.top = \"0\";\r\n textArea.style.left = \"0\";\r\n textArea.style.position = \"fixed\";\r\n\r\n document.body.appendChild(textArea);\r\n textArea.focus();\r\n textArea.select();\r\n\r\n try {\r\n var successful = document.execCommand('copy');\r\n var msg = successful ? 'successful' : 'unsuccessful';\r\n console.log('Fallback: Copying text command was ' + msg);\r\n } catch (err) {\r\n console.error('Fallback: Oops, unable to copy', err);\r\n }\r\n\r\n document.body.removeChild(textArea);\r\n}\r\n\r\nexport function copy(text) {\r\n if (!navigator.clipboard) {\r\n fallbackCopyTextToClipboard(text);\r\n return;\r\n }\r\n navigator.clipboard.writeText(text).then(function () {\r\n console.log('Async: Copying to clipboard was successful!');\r\n }, function (err) {\r\n console.error('Async: Could not copy text: ', err);\r\n });\r\n}\r\n\r\nexport function focus(selector, noScroll: boolean = false) {\r\n let dom = getDom(selector);\r\n if (!(dom instanceof HTMLElement))\r\n throw new Error(\"Unable to focus an invalid element.\");\r\n dom.focus({\r\n preventScroll: noScroll\r\n })\r\n}\r\n\r\nexport function select(selector) {\r\n let dom = getDom(selector);\r\n if (!(dom instanceof HTMLInputElement || dom instanceof HTMLTextAreaElement))\r\n throw new Error(\"Unable to select an invalid element\")\r\n dom.select()\r\n}\r\n\r\nexport function hasFocus(selector) {\r\n let dom = getDom(selector);\r\n return (document.activeElement === dom);\r\n}\r\n\r\nexport function blur(selector) {\r\n let dom = getDom(selector);\r\n dom.blur();\r\n}\r\n\r\nexport function log(text) {\r\n console.log(text);\r\n}\r\n\r\nexport function backTop(target: string) {\r\n let dom = getDom(target);\r\n if (dom) {\r\n slideTo(dom.scrollTop);\r\n } else {\r\n slideTo(0);\r\n }\r\n}\r\n\r\nfunction slideTo(targetPageY) {\r\n var timer = setInterval(function () {\r\n var currentY = document.documentElement.scrollTop || document.body.scrollTop;\r\n var distance = targetPageY > currentY ? targetPageY - currentY : currentY - targetPageY;\r\n var speed = Math.ceil(distance / 10);\r\n if (currentY == targetPageY) {\r\n clearInterval(timer);\r\n } else {\r\n window.scrollTo(0, targetPageY > currentY ? currentY + speed : currentY - speed);\r\n }\r\n }, 10);\r\n}\r\n\r\nexport function scrollIntoView(target, arg?: boolean | ScrollIntoViewOptions) {\r\n let dom = getDom(target);\r\n if (dom instanceof HTMLElement) {\r\n if (arg === null || arg == undefined) {\r\n dom.scrollIntoView();\r\n } else if (typeof arg === 'boolean') {\r\n dom.scrollIntoView(arg);\r\n } else {\r\n dom.scrollIntoView({\r\n block: arg.block == null ? undefined : arg.block,\r\n inline: arg.inline == null ? undefined : arg.inline,\r\n behavior: arg.behavior\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport function scrollIntoParentView(\r\n target,\r\n inline = false,\r\n start = false,\r\n level = 1,\r\n behavior: ScrollBehavior = \"smooth\",\r\n) {\r\n const dom = getDom(target);\r\n if (dom instanceof HTMLElement) {\r\n let parent: HTMLElement = dom;\r\n while (level > 0) {\r\n parent = parent.parentElement;\r\n level--;\r\n if (!parent) {\r\n return;\r\n }\r\n }\r\n\r\n const options: ScrollToOptions = {\r\n behavior,\r\n };\r\n\r\n if (inline) {\r\n if (start) {\r\n options.left = dom.offsetLeft\r\n } else {\r\n const to = dom.offsetLeft - parent.offsetLeft;\r\n if (to - parent.scrollLeft < 0) {\r\n options.left = to;\r\n } else if (\r\n to + dom.offsetWidth - parent.scrollLeft >\r\n parent.offsetWidth\r\n ) {\r\n options.left = to + dom.offsetWidth - parent.offsetWidth;\r\n }\r\n }\r\n } else {\r\n if (start) {\r\n options.top = dom.offsetTop;\r\n } else {\r\n const to = dom.offsetTop - parent.offsetTop;\r\n if (to - parent.scrollTop < 0) {\r\n options.top = to;\r\n } else if (\r\n to + dom.offsetHeight - parent.scrollTop >\r\n parent.offsetHeight\r\n ) {\r\n options.top = to + dom.offsetHeight - parent.offsetHeight;\r\n }\r\n }\r\n }\r\n\r\n console.log(options)\r\n\r\n if (options.left || options.top) {\r\n parent.scrollTo(options);\r\n }\r\n }\r\n}\r\n\r\nexport function scrollTo(target, options: ScrollToOptions) {\r\n let dom = getDom(target);\r\n if (dom instanceof HTMLElement) {\r\n const o = {\r\n left: options.left === null ? undefined : options.left,\r\n top: options.top === null ? undefined : options.top,\r\n behavior: options.behavior\r\n }\r\n dom.scrollTo(o)\r\n }\r\n}\r\n\r\nexport function scrollToActiveElement(container, target) {\r\n let dom: HTMLElement = getDom(container);\r\n\r\n target = dom.querySelector('.active') as HTMLElement;\r\n if (!target) {\r\n return;\r\n }\r\n\r\n dom.scrollTop = target.offsetTop - dom.offsetHeight / 2 + target.offsetHeight / 2;\r\n}\r\n\r\nexport function addClsToFirstChild(element, className) {\r\n var dom = getDom(element);\r\n if (dom.firstElementChild) {\r\n dom.firstElementChild.classList.add(className);\r\n }\r\n}\r\n\r\nexport function removeClsFromFirstChild(element, className) {\r\n var dom = getDom(element);\r\n if (dom.firstElementChild) {\r\n dom.firstElementChild.classList.remove(className);\r\n }\r\n}\r\n\r\nexport function getAbsoluteTop(e) {\r\n var offset = e.offsetTop;\r\n if (e.offsetParent != null) {\r\n offset += getAbsoluteTop(e.offsetParent);\r\n }\r\n return offset;\r\n}\r\n\r\nexport function getAbsoluteLeft(e) {\r\n var offset = e.offsetLeft;\r\n if (e.offsetParent != null) {\r\n offset += getAbsoluteLeft(e.offsetParent);\r\n }\r\n return offset;\r\n}\r\n\r\nexport function addElementToBody(element) {\r\n document.body.appendChild(element);\r\n}\r\n\r\nexport function delElementFromBody(element) {\r\n document.body.removeChild(element);\r\n}\r\n\r\nexport function addElementTo(addElement, elementSelector) {\r\n let parent = getDom(elementSelector);\r\n if (parent && addElement) {\r\n parent.appendChild(addElement);\r\n }\r\n}\r\n\r\nexport function delElementFrom(delElement, elementSelector) {\r\n let parent = getDom(elementSelector);\r\n if (parent && delElement) {\r\n parent.removeChild(delElement);\r\n }\r\n}\r\n\r\nexport function getActiveElement() {\r\n let element = document.activeElement;\r\n let id = element.getAttribute(\"id\") || \"\";\r\n return id;\r\n}\r\n\r\nexport function focusDialog(selector: string, count: number = 0) {\r\n let ele = document.querySelector(selector);\r\n if (ele && !ele.hasAttribute(\"disabled\")) {\r\n setTimeout(() => {\r\n ele.focus();\r\n let curId = \"#\" + getActiveElement();\r\n if (curId !== selector) {\r\n if (count < 10) {\r\n focusDialog(selector, count + 1);\r\n }\r\n }\r\n }, 10);\r\n }\r\n}\r\n\r\nexport function getWindow() {\r\n return {\r\n innerWidth: window.innerWidth,\r\n innerHeight: window.innerHeight,\r\n pageXOffset: window.pageXOffset,\r\n pageYOffset: window.pageYOffset,\r\n isTop: window.scrollY == 0,\r\n isBottom: (window.scrollY + window.innerHeight) == document.body.clientHeight\r\n };\r\n}\r\n\r\nexport function getWindowAndDocumentProps(windowProps: string[] = [], documentProps: string[] = []) {\r\n const obj = {}\r\n\r\n if (windowProps) {\r\n windowProps.forEach(prop => obj[prop] = window[prop]);\r\n }\r\n\r\n if (documentProps) {\r\n documentProps.forEach(prop => obj[prop] = document.documentElement[prop]);\r\n }\r\n\r\n return obj\r\n}\r\n\r\nfunction debounce(func, wait, immediate) {\r\n var timeout;\r\n return () => {\r\n const context = this, args = arguments;\r\n const later = () => {\r\n timeout = null;\r\n if (!immediate) func.apply(this, args);\r\n };\r\n const callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n};\r\n\r\nexport function css(element: any, name: string | object, value: string | null = null) {\r\n var dom = getDom(element);\r\n if (typeof name === 'string') {\r\n dom.style[name] = value;\r\n } else {\r\n for (let key in name) {\r\n if (name.hasOwnProperty(key)) {\r\n dom.style[key] = name[key];\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function addCls(selector: Element | string, clsName: string | Array) {\r\n let element = getDom(selector);\r\n\r\n if (typeof clsName === \"string\") {\r\n element.classList.add(clsName);\r\n } else {\r\n element.classList.add(...clsName);\r\n }\r\n}\r\n\r\nexport function removeCls(selector: Element | string, clsName: string | Array) {\r\n let element = getDom(selector);\r\n\r\n if (typeof clsName === \"string\") {\r\n element.classList.remove(clsName);\r\n } else {\r\n element.classList.remove(...clsName);\r\n }\r\n}\r\n\r\nexport function elementScrollIntoView(selector: Element | string) {\r\n let element = getDom(selector);\r\n\r\n if (!element)\r\n return;\r\n\r\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });\r\n}\r\n\r\nconst hasScrollbar = () => {\r\n let overflow = document.body.style.overflow;\r\n if (overflow && overflow === \"hidden\") return false;\r\n return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);\r\n}\r\n\r\nexport function getScroll() {\r\n return { x: window.pageXOffset, y: window.pageYOffset };\r\n}\r\n\r\nexport function getInnerText(element) {\r\n let dom = getDom(element);\r\n return dom.innerText;\r\n}\r\n\r\nexport function getMenuOrDialogMaxZIndex(exclude: Element[] = [], element: Element) {\r\n const base = getDom(element);\r\n // Start with lowest allowed z-index or z-index of\r\n // base component's element, whichever is greater\r\n const zis = [getZIndex(base)]\r\n\r\n const activeElements = [\r\n ...document.getElementsByClassName('m-menu__content--active'),\r\n ...document.getElementsByClassName('m-dialog__content--active'),\r\n ]\r\n\r\n // Get z-index for all active dialogs\r\n for (let index = 0; index < activeElements.length; index++) {\r\n if (!exclude.includes(activeElements[index])) {\r\n zis.push(getZIndex(activeElements[index]))\r\n }\r\n }\r\n\r\n return Math.max(...zis)\r\n}\r\n\r\nexport function getMaxZIndex() {\r\n return [...document.all].reduce((r, e) => Math.max(r, +window.getComputedStyle(e).zIndex || 0), 0)\r\n}\r\n\r\nexport function getStyle(element, styleProp) {\r\n element = getDom(element);\r\n\r\n if (element.currentStyle) {\r\n return element.currentStyle[styleProp];\r\n } else if (window.getComputedStyle) {\r\n return document.defaultView.getComputedStyle(element, null).getPropertyValue(styleProp);\r\n }\r\n}\r\n\r\nexport function getTextAreaInfo(element) {\r\n var result = {};\r\n var dom = getDom(element);\r\n result[\"scrollHeight\"] = dom.scrollHeight || 0;\r\n\r\n if (element.currentStyle) {\r\n result[\"lineHeight\"] = parseFloat(element.currentStyle[\"line-height\"]);\r\n result[\"paddingTop\"] = parseFloat(element.currentStyle[\"padding-top\"]);\r\n result[\"paddingBottom\"] = parseFloat(element.currentStyle[\"padding-bottom\"]);\r\n result[\"borderBottom\"] = parseFloat(element.currentStyle[\"border-bottom\"]);\r\n result[\"borderTop\"] = parseFloat(element.currentStyle[\"border-top\"]);\r\n } else if (window.getComputedStyle) {\r\n result[\"lineHeight\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"line-height\"));\r\n result[\"paddingTop\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"padding-top\"));\r\n result[\"paddingBottom\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"padding-bottom\"));\r\n result[\"borderBottom\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"border-bottom\"));\r\n result[\"borderTop\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"border-top\"));\r\n }\r\n //Firefox can return this as NaN, so it has to be handled here like that.\r\n if (Object.is(NaN, result[\"borderTop\"]))\r\n result[\"borderTop\"] = 1;\r\n if (Object.is(NaN, result[\"borderBottom\"]))\r\n result[\"borderBottom\"] = 1;\r\n return result;\r\n}\r\n\r\nconst objReferenceDict = {};\r\n\r\nexport function disposeObj(objReferenceName) {\r\n delete objReferenceDict[objReferenceName];\r\n}\r\n\r\nexport function insertAdjacentHTML(position, text: string) {\r\n document.head.insertAdjacentHTML(position, text);\r\n}\r\n\r\nexport function getImageDimensions(src: string) {\r\n return new Promise(function (resolve, reject) {\r\n var img = new Image()\r\n img.src = src\r\n img.onload = function () {\r\n resolve({\r\n width: img.width,\r\n height: img.height,\r\n hasError: false\r\n })\r\n }\r\n img.onerror = function () {\r\n resolve({\r\n width: 0,\r\n height: 0,\r\n hasError: true\r\n })\r\n }\r\n })\r\n}\r\n\r\nexport function enablePreventDefaultForEvent(element: any, event: string, condition?: any) {\r\n const dom = getDom(element);\r\n if (!dom) return;\r\n if (event === 'keydown') {\r\n dom.addEventListener(event, (e: KeyboardEvent) => {\r\n if (Array.isArray(condition)) {\r\n var codes = condition as string[];\r\n if (codes.includes(e.code)) {\r\n e.preventDefault();\r\n }\r\n } else {\r\n e.preventDefault();\r\n }\r\n })\r\n } else {\r\n dom.addEventListener(event, e => {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport function resizeObserver(selector: string, invoker: DotNet.DotNetObject) {\r\n var el = document.querySelector(selector);\r\n if (!el) return;\r\n\r\n const resizeObserver = new ResizeObserver((entries => {\r\n const dimensions = [];\r\n for (var entry of entries) {\r\n const dimension = entry.contentRect;\r\n dimensions.push(dimension);\r\n }\r\n invoker.invokeMethodAsync('Invoke', dimensions);\r\n }));\r\n\r\n resizeObserver.observe(el);\r\n}\r\n\r\nexport function intersectionObserver(selector: string, invokers: DotNet.DotNetObject[]) {\r\n var el = document.querySelector(selector);\r\n if (!el) return;\r\n\r\n const observer = new IntersectionObserver((\r\n entries: IntersectionObserverEntry[] = [],\r\n observer: IntersectionObserver\r\n ) => {\r\n if (entries.some(e => e.isIntersecting)) {\r\n invokers.forEach(item => {\r\n item.invokeMethodAsync('Invoke')\r\n })\r\n }\r\n })\r\n\r\n observer.observe(el)\r\n}\r\n\r\nexport function getBoundingClientRects(selector) {\r\n var elements = document.querySelectorAll(selector);\r\n\r\n var result = [];\r\n\r\n for (var i = 0; i < elements.length; i++) {\r\n var e: Element = elements[i];\r\n var dom = {\r\n id: e.id,\r\n rect: e.getBoundingClientRect()\r\n };\r\n result.push(dom);\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function getSize(selectors, sizeProp) {\r\n var el = getDom(selectors);\r\n\r\n var display = el.style.display;\r\n var overflow = el.style.overflow;\r\n\r\n el.style.display = \"\";\r\n el.style.overflow = \"hidden\";\r\n\r\n var size = el[\"offset\" + sizeProp.charAt(0).toUpperCase() + sizeProp.slice(1)] || 0;\r\n\r\n el.style.display = display;\r\n el.style.overflow = overflow;\r\n\r\n return size;\r\n}\r\n\r\nexport function getProp(selectors, name) {\r\n var el = getDom(selectors);\r\n if (!el) {\r\n return null;\r\n }\r\n\r\n return el[name];\r\n}\r\n\r\nexport function updateWindowTransition(selectors, isActive, item) {\r\n var el: HTMLElement = getDom(selectors);\r\n var container: HTMLElement = el.querySelector('.m-window__container');\r\n\r\n if (item) {\r\n var itemEl: HTMLElement = getDom(item);\r\n container.style.height = itemEl.clientHeight + 'px';\r\n return;\r\n }\r\n\r\n if (isActive) {\r\n container.classList.add('m-window__container--is-active');\r\n container.style.height = el.clientHeight + 'px';\r\n } else {\r\n container.style.height = '';\r\n container.classList.remove('m-window__container--is-active');\r\n }\r\n}\r\n\r\nexport function getScrollHeightWithoutHeight(selectors) {\r\n var el: HTMLElement = getDom(selectors);\r\n if (!el) {\r\n return 0;\r\n }\r\n\r\n var height = el.style.height;\r\n el.style.height = '0'\r\n var scrollHeight = el.scrollHeight;\r\n el.style.height = height;\r\n\r\n return scrollHeight;\r\n}\r\n\r\n//register custom events\r\nwindow.onload = function () {\r\n registerExtraEvents();\r\n registerPasteWithData(\"pastewithdata\")\r\n registerDirective();\r\n}\r\n\r\nfunction registerPasteWithData(customEventName) {\r\n if (Blazor) {\r\n Blazor.registerCustomEventType(customEventName, {\r\n browserEventName: 'paste',\r\n createEventArgs: (event: ClipboardEvent) => {\r\n return {\r\n type: event.type,\r\n pastedData: event.clipboardData.getData('text')\r\n };\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport function registerTextFieldOnMouseDown(element, inputElement, callback) {\r\n if (!element || !inputElement) return\r\n\r\n element.addEventListener('mousedown', (e: MouseEvent) => {\r\n const target = e.target;\r\n const inputDom = getDom(inputElement);\r\n if (target !== inputDom) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n if (callback) {\r\n const mouseEventArgs = {\r\n Detail: e.detail,\r\n ScreenX: e.screenX,\r\n ScreenY: e.screenY,\r\n ClientX: e.clientX,\r\n ClientY: e.clientY,\r\n OffsetX: e.offsetX,\r\n OffsetY: e.offsetY,\r\n PageX: e.pageX,\r\n PageY: e.pageY,\r\n Button: e.button,\r\n Buttons: e.buttons,\r\n CtrlKey: e.ctrlKey,\r\n ShiftKey: e.shiftKey,\r\n AltKey: e.altKey,\r\n MetaKey: e.metaKey,\r\n Type: e.type\r\n }\r\n\r\n callback.invokeMethodAsync('Invoke', mouseEventArgs);\r\n }\r\n })\r\n}\r\n\r\nexport function isMobile() {\r\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)\r\n || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(navigator.userAgent.substr(0, 4));\r\n}\r\n\r\nexport function containsActiveElement(selector) {\r\n var el = getDom(selector);\r\n if (el && el.contains) {\r\n return el.contains(document.activeElement);\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function copyChild(el) {\r\n if (typeof el === 'string') {\r\n el = document.querySelector(el);\r\n }\r\n\r\n if (!el) return;\r\n\r\n el.setAttribute('contenteditable', 'true');\r\n el.focus();\r\n document.execCommand('selectAll', false, null);\r\n document.execCommand('copy');\r\n document.execCommand('unselect');\r\n el.removeAttribute('contenteditable');\r\n}\r\n\r\nexport function copyText(text) {\r\n if (!navigator.clipboard) {\r\n var textArea = document.createElement(\"textarea\");\r\n textArea.value = text;\r\n\r\n // Avoid scrolling to bottom\r\n textArea.style.top = \"0\";\r\n textArea.style.left = \"0\";\r\n textArea.style.position = \"fixed\";\r\n\r\n document.body.appendChild(textArea);\r\n textArea.focus();\r\n textArea.select();\r\n\r\n try {\r\n var successful = document.execCommand('copy');\r\n var msg = successful ? 'successful' : 'unsuccessful';\r\n console.log('Fallback: Copying text command was ' + msg);\r\n } catch (err) {\r\n console.error('Fallback: Oops, unable to copy', err);\r\n }\r\n\r\n document.body.removeChild(textArea);\r\n return;\r\n }\r\n\r\n navigator.clipboard.writeText(text).then(function () {\r\n console.log('Async: Copying to clipboard was successful!');\r\n }, function (err) {\r\n console.error('Async: Could not copy text: ', err);\r\n });\r\n}\r\n\r\nexport function getMenuableDimensions(hasActivator, activatorSelector, attach, contentElement, attached, attachSelector) {\r\n if (!attached) {\r\n var container = document.querySelector(attachSelector);\r\n if (contentElement.nodeType) {\r\n container.appendChild(contentElement);\r\n }\r\n }\r\n\r\n var dimensions = {\r\n activator: {} as any,\r\n content: null,\r\n relativeYOffset: 0,\r\n offsetParentLeft: 0\r\n };\r\n\r\n if (hasActivator) {\r\n var activator = document.querySelector(activatorSelector);\r\n dimensions.activator = measure(activator, attach)\r\n dimensions.activator.offsetLeft = activator.offsetLeft\r\n if (attach !== null) {\r\n // account for css padding causing things to not line up\r\n // this is mostly for v-autocomplete, hopefully it won't break anything\r\n dimensions.activator.offsetTop = activator.offsetTop\r\n } else {\r\n dimensions.activator.offsetTop = 0\r\n }\r\n }\r\n\r\n sneakPeek(() => {\r\n if (contentElement) {\r\n if (contentElement.offsetParent) {\r\n const offsetRect = getRoundedBoundedClientRect(contentElement.offsetParent)\r\n dimensions.relativeYOffset = window.pageYOffset + offsetRect.top\r\n\r\n if (hasActivator) {\r\n dimensions.activator.top -= dimensions.relativeYOffset\r\n dimensions.activator.left -= window.pageXOffset + offsetRect.left\r\n } else {\r\n dimensions.offsetParentLeft = offsetRect.left\r\n }\r\n }\r\n\r\n dimensions.content = measure(contentElement, attach)\r\n }\r\n }, contentElement);\r\n\r\n return dimensions;\r\n}\r\n\r\nfunction measure(el: HTMLElement, attach) {\r\n if (!el) return null\r\n\r\n const rect = getRoundedBoundedClientRect(el)\r\n\r\n // Account for activator margin\r\n if (attach !== null) {\r\n const style = window.getComputedStyle(el)\r\n\r\n rect.left = parseInt(style.marginLeft!)\r\n rect.top = parseInt(style.marginTop!)\r\n }\r\n\r\n return rect\r\n}\r\n\r\nfunction getRoundedBoundedClientRect(el: Element) {\r\n if (!el || !el.nodeType) {\r\n return null\r\n }\r\n\r\n const rect = el.getBoundingClientRect()\r\n return {\r\n top: Math.round(rect.top),\r\n left: Math.round(rect.left),\r\n bottom: Math.round(rect.bottom),\r\n right: Math.round(rect.right),\r\n width: Math.round(rect.width),\r\n height: Math.round(rect.height),\r\n }\r\n}\r\n\r\nfunction sneakPeek(cb: () => void, el) {\r\n if (!el || !el.style || el.style.display !== 'none') {\r\n cb()\r\n return\r\n }\r\n\r\n el.style.display = 'inline-block'\r\n cb()\r\n el.style.display = 'none'\r\n}\r\n\r\nexport function invokeMultipleMethod(windowProps, documentProps, hasActivator, activatorSelector, attach, contentElement, attached, attachSelector, element) {\r\n var multipleResult = {\r\n windowAndDocument: null,\r\n dimensions: null,\r\n zIndex: 0\r\n };\r\n\r\n multipleResult.windowAndDocument = getWindowAndDocumentProps(windowProps, documentProps);\r\n multipleResult.dimensions = getMenuableDimensions(hasActivator, activatorSelector, attach, contentElement, attached, attachSelector);\r\n multipleResult.zIndex = getMenuOrDialogMaxZIndex([contentElement], element);\r\n\r\n return multipleResult;\r\n}\r\n\r\nexport function registerOTPInputOnInputEvent(elementList, callback) {\r\n for (let i = 0; i < elementList.length; i++) {\r\n elementList[i].addEventListener('input', (e: Event) => otpInputOnInputEvent(e, i, elementList, callback));\r\n elementList[i].addEventListener('focus', (e: Event) => otpInputFocusEvent(e, i, elementList));\r\n elementList[i].addEventListener('keyup', (e: KeyboardEvent) => otpInputKeyupEvent(e, i, elementList, callback));\r\n }\r\n}\r\n\r\nexport function otpInputKeyupEvent(e: KeyboardEvent, otpIdx: number, elementList, callback) {\r\n e.preventDefault();\r\n const eventKey = e.key;\r\n if (eventKey === 'ArrowLeft' || eventKey === 'Backspace') {\r\n if (eventKey === 'Backspace') {\r\n const obj = {\r\n type: eventKey,\r\n index: otpIdx,\r\n value: ''\r\n }\r\n if (callback) {\r\n callback.invokeMethodAsync('Invoke', JSON.stringify(obj));\r\n }\r\n }\r\n otpInputFocus(otpIdx - 1, elementList);\r\n }\r\n else if (eventKey === 'ArrowRight') {\r\n otpInputFocus(otpIdx + 1, elementList);\r\n }\r\n}\r\n\r\nexport function otpInputFocus(focusIndex: number, elementList) {\r\n if (focusIndex < 0) {\r\n otpInputFocus(0, elementList);\r\n }\r\n else if (focusIndex >= elementList.length) {\r\n otpInputFocus(elementList.length - 1, elementList);\r\n }\r\n else {\r\n if (document.activeElement !== elementList[focusIndex]) {\r\n const element = getDom(elementList[focusIndex])\r\n element.focus();\r\n }\r\n }\r\n}\r\n\r\nexport function otpInputFocusEvent(e: Event, otpIdx: number, elementList) {\r\n const element = getDom(elementList[otpIdx]);\r\n if (element && document.activeElement === element) {\r\n element.select();\r\n }\r\n}\r\n\r\nexport function otpInputOnInputEvent(e: Event, otpIdx: number, elementList, callback) {\r\n const target = e.target as HTMLInputElement;\r\n const value = target.value;\r\n\r\n if (value && value !== '') {\r\n otpInputFocus(otpIdx + 1, elementList);\r\n\r\n if (callback) {\r\n const obj = {\r\n type: 'Input',\r\n index: otpIdx,\r\n value: value\r\n }\r\n callback.invokeMethodAsync('Invoke', JSON.stringify(obj));\r\n }\r\n }\r\n}\r\n\r\nexport function getListIndexWhereAttributeExists(selector: string, attribute:string, value: string) {\r\n const tiles = document.querySelectorAll(selector);\r\n if (!tiles) {\r\n return -1;\r\n }\r\n\r\n let index = -1;\r\n for (let i = 0; i < tiles.length; i++) {\r\n if (tiles[i].getAttribute(attribute) === value) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n return index;\r\n}\r\n\r\nexport function scrollToTile(contentSelector: string, tilesSelector: string, index: number, keyCode: string) {\r\n var tiles = document.querySelectorAll(tilesSelector)\r\n if (!tiles) return;\r\n\r\n let tile = tiles[index] as HTMLElement;\r\n\r\n if (!tile) return;\r\n\r\n const content = document.querySelector(contentSelector);\r\n if (!content) return;\r\n\r\n const scrollTop = content.scrollTop;\r\n const contentHeight = content.clientHeight;\r\n\r\n if (scrollTop > tile.offsetTop - 8) {\r\n content.scrollTo({ top: tile.offsetTop - tile.clientHeight, behavior: \"smooth\" })\r\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\r\n content.scrollTo({ top: tile.offsetTop - contentHeight + tile.clientHeight * 2, behavior: \"smooth\" })\r\n }\r\n}\r\n\r\nexport function getElementTranslateY(element) {\r\n const style = window.getComputedStyle(element);\r\n const transform = style.transform || style.webkitTransform;\r\n const translateY = transform.slice(7, transform.length - 1).split(', ')[5];\r\n\r\n return Number(translateY);\r\n}\r\n\r\nfunction isWindow(element: any | Window): element is Window {\r\n return element === window\r\n}\r\n\r\nexport function checkIfThresholdIsExceededWhenScrolling(el: Element, parent: Element, threshold: number) {\r\n if (!el || !parent) return\r\n\r\n const rect = el.getBoundingClientRect();\r\n const elementTop = rect.top;\r\n const current = isWindow(parent)\r\n ? window.innerHeight\r\n : parent.getBoundingClientRect().bottom\r\n\r\n return (current >= elementTop - threshold)\r\n}\r\n","import { rippleHide, rippleShow } from \"./ripple\";\r\n\r\nexport default function registerDirective() {\r\n var observer = new MutationObserver(function (mutationsList) {\r\n for (let mutation of mutationsList) {\r\n if (mutation.type === \"childList\") {\r\n var target: any = mutation.target;\r\n //ripple\r\n if (!target._bind && target.attributes[\"ripple\"]) {\r\n target.addEventListener(\"mousedown\", rippleShow);\r\n target.addEventListener(\"mouseup\", rippleHide);\r\n target.addEventListener(\"mouseleave\", rippleHide);\r\n\r\n target._bind = true;\r\n } else if (target.nodeName == \"BODY\") {\r\n var rippleEls = document.querySelectorAll(\"[ripple]\");\r\n for (let rippleEl of rippleEls) {\r\n var el: any = rippleEl;\r\n if (!el._bind) {\r\n el.addEventListener(\"mousedown\", rippleShow);\r\n el.addEventListener(\"mouseup\", rippleHide);\r\n el.addEventListener(\"mouseleave\", rippleHide);\r\n\r\n el._bind = true;\r\n }\r\n }\r\n }\r\n } else if (mutation.type === \"attributes\") {\r\n //ripple\r\n if (mutation.attributeName == \"ripple\") {\r\n var target: any = mutation.target;\r\n if (target.attributes[\"ripple\"]) {\r\n target.addEventListener(\"mousedown\", rippleShow);\r\n target.addEventListener(\"mouseup\", rippleHide);\r\n target.addEventListener(\"mouseleave\", rippleHide);\r\n } else {\r\n target.removeEventListener(\"mousedown\", rippleShow);\r\n target.removeEventListener(\"mouseup\", rippleHide);\r\n target.removeEventListener(\"mouseleave\", rippleHide);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n observer.observe(document, {\r\n attributes: true,\r\n subtree: true,\r\n childList: true,\r\n attributeFilter: [\"ripple\"],\r\n });\r\n}\r\n","// Utilities\r\nimport { addPassiveEventListener, composedPath, getDom, keyCodes } from \"../../utils/helper\";\r\n\r\nvar wheelListenerCaches: { [key: string]: any } = {}\r\n\r\nexport function hideScroll(fullscreen: boolean, overlaySelector: string, content, dialog) {\r\n if (fullscreen) {\r\n document.documentElement!.classList.add('overflow-y-hidden')\r\n } else {\r\n if (!overlaySelector) return\r\n const overlay = getDom(overlaySelector);\r\n const listener = (e) => {\r\n scrollListener(e, overlay, content, dialog)\r\n }\r\n\r\n wheelListenerCaches[`window_${overlaySelector}`] = listener;\r\n\r\n addPassiveEventListener(window, 'wheel', listener, { passive: false })\r\n window.addEventListener('keydown', listener)\r\n }\r\n}\r\n\r\nexport function showScroll (overlaySelector) {\r\n document.documentElement!.classList.remove('overflow-y-hidden')\r\n\r\n var listener = wheelListenerCaches[`window_${overlaySelector}`]\r\n if (listener) {\r\n window.removeEventListener('wheel', listener)\r\n window.removeEventListener('keydown', listener)\r\n }\r\n}\r\n\r\nfunction scrollListener (e: WheelEvent & KeyboardEvent, overlay, content, dialog) {\r\n if (e.type === 'keydown') {\r\n if (\r\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\r\n // https://github.com/vuetifyjs/vuetify/issues/4715\r\n (e.target as HTMLElement).isContentEditable\r\n ) return\r\n\r\n const up = [keyCodes.up, keyCodes.pageup]\r\n const down = [keyCodes.down, keyCodes.pagedown]\r\n\r\n if (up.includes(e.keyCode)) {\r\n (e as any).deltaY = -1\r\n } else if (down.includes(e.keyCode)) {\r\n (e as any).deltaY = 1\r\n } else {\r\n return\r\n }\r\n }\r\n\r\n if (e.target === overlay ||\r\n (e.type !== 'keydown' && e.target === document.body) ||\r\n checkPath(e, content, dialog)) e.preventDefault()\r\n}\r\n\r\nfunction checkPath(e: WheelEvent, content, dialog) {\r\n const path = composedPath(e)\r\n\r\n if (e.type === 'keydown' && path[0] === document.body) {\r\n // getSelection returns null in firefox in some edge cases, can be ignored\r\n const selected = window.getSelection()!.anchorNode as Element\r\n if (dialog && hasScrollbar(dialog) && isInside(selected, dialog)) {\r\n return !shouldScroll(dialog, e)\r\n }\r\n return true\r\n }\r\n\r\n for (let index = 0; index < path.length; index++) {\r\n const el = path[index]\r\n\r\n if (el === document) return true\r\n if (el === document.documentElement) return true\r\n if (el === content) return true\r\n\r\n if (hasScrollbar(el as Element)) return !shouldScroll(el as Element, e)\r\n }\r\n\r\n return true\r\n}\r\n\r\nfunction shouldScroll(el: Element, e: WheelEvent): boolean {\r\n if (el.hasAttribute('data-app')) return false\r\n\r\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\r\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\r\n\r\n let alreadyAtStart: boolean\r\n let alreadyAtEnd: boolean\r\n if (dir === 'y') {\r\n alreadyAtStart = el.scrollTop === 0\r\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\r\n } else {\r\n alreadyAtStart = el.scrollLeft === 0\r\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\r\n }\r\n\r\n const scrollingUp = delta < 0\r\n const scrollingDown = delta > 0\r\n\r\n if (!alreadyAtStart && scrollingUp) return true\r\n if (!alreadyAtEnd && scrollingDown) return true\r\n if ((alreadyAtStart || alreadyAtEnd)) {\r\n return shouldScroll(el.parentNode as Element, e)\r\n }\r\n\r\n return false\r\n}\r\n\r\nfunction isInside(el: Element, parent: Element): boolean {\r\n if (el === parent) {\r\n return true\r\n } else if (el === null || el === document.body) {\r\n return false\r\n } else {\r\n return isInside(el.parentNode as Element, parent)\r\n }\r\n}\r\n\r\nfunction hasScrollbar(el?: Element) {\r\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\r\n\r\n const style = window.getComputedStyle(el)\r\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\r\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\r\n}\r\n","import * as interop from \"./interop\";\r\nimport * as overlayable from \"./mixins/overlayable\";\r\n\r\ndeclare global {\r\n interface Window {\r\n BlazorComponent: any;\r\n }\r\n}\r\n\r\nwindow.BlazorComponent = {\r\n interop: {\r\n ...interop,\r\n ...overlayable,\r\n },\r\n};\r\n"],"names":["transform","el","value","style","webkitTransform","opacity","toString","ripples","show","e","container","document","createElement","animation","appendChild","className","radius","scale","x","y","centerX","centerY","localX","localY","offset","getBoundingClientRect","target","clientX","left","clientY","top","Math","sqrt","clientWidth","clientHeight","calculate","size","width","height","computed","window","getComputedStyle","position","dataset","previousPosition","classList","add","activated","String","performance","now","setTimeout","remove","hide","getElementsByClassName","length","isHiding","diff","Number","delay","max","parentNode","removeChild","rippleShow","currentTarget","rippleHide","passiveSupported","testListenerOpts","Object","defineProperty","get","addEventListener","removeEventListener","console","warn","keyCodes","freeze","enter","tab","delete","esc","space","up","down","right","end","home","del","backspace","insert","pageup","pagedown","shift","getElementSelector","Element","path","nodeType","Node","ELEMENT_NODE","selector","nodeName","toLowerCase","id","unshift","sib","nth","previousElementSibling","join","getDom","element","documentElement","querySelector","body","parseTouch","touchList","touches","i","touch","push","identifier","screenX","screenY","pageX","pageY","registerExtraMouseEvent","eventType","eventName","Blazor","registerCustomEventType","browserEventName","createEventArgs","sharedCreateEventArgs","type","args","event","assign","detail","offsetX","offsetY","button","buttons","ctrlKey","shiftKey","altKey","metaKey","targetTouches","changedTouches","parseTouchEvent","elementReferenceId","getAttributeNames","find","a","startsWith","getAttribute","registerExtraEvents","registerEvent","getZIndex","index","getPropertyValue","onTransition","isActive","propertyName","scrollHeight","requestAnimationFrame","leave","getDomInfoObj","dom","result","offsetTop","offsetLeft","scrollWidth","scrollLeft","scrollTop","clientTop","clientLeft","res","viewportElement","box","offsetWidth","offsetHeight","relativeTop","relativeBottom","bottom","relativeLeft","relativeRight","absoluteLeft","absoluteTop","getElementPos","round","htmlElementEventListennerConfigs","outsideClickListenerCaches","slideTo","targetPageY","timer","setInterval","currentY","distance","speed","ceil","clearInterval","scrollTo","getActiveElement","activeElement","getWindowAndDocumentProps","windowProps","documentProps","obj","forEach","prop","getMenuOrDialogMaxZIndex","exclude","zis","activeElements","includes","getMenuableDimensions","hasActivator","activatorSelector","attach","contentElement","attached","attachSelector","dimensions","activator","content","relativeYOffset","offsetParentLeft","measure","cb","display","sneakPeek","offsetParent","offsetRect","getRoundedBoundedClientRect","pageYOffset","pageXOffset","rect","parseInt","marginLeft","marginTop","otpInputKeyupEvent","otpIdx","elementList","callback","preventDefault","eventKey","key","invokeMethodAsync","JSON","stringify","otpInputFocus","focusIndex","focus","otpInputFocusEvent","select","otpInputOnInputEvent","onload","customEventName","pastedData","clipboardData","getData","MutationObserver","mutationsList","mutation","_bind","attributes","rippleEls","querySelectorAll","rippleEl","attributeName","observe","subtree","childList","attributeFilter","contains","cloned","cloneNode","parentElement","stopPropagation","evt","createEvent","initEvent","dispatchEvent","name","_a","_b","invoker","options","extras","htmlElement","config","listener","relatedTarget","k","attr","list","item","debounce","timeout","clearTimeout","throttle","throttled","configs","noInvokeSelectors","invokeSelectors","filter","s","some","pointerSelector","undefined","e1","e2","dom1","dom2","text","navigator","clipboard","writeText","then","log","err","error","textArea","msg","execCommand","fallbackCopyTextToClipboard","noScroll","HTMLElement","Error","preventScroll","HTMLInputElement","HTMLTextAreaElement","blur","arg","scrollIntoView","block","inline","behavior","start","level","parent","to","o","firstElementChild","getAbsoluteTop","getAbsoluteLeft","addElement","elementSelector","delElement","focusDialog","count","ele","hasAttribute","innerWidth","innerHeight","isTop","scrollY","isBottom","hasOwnProperty","clsName","innerText","all","reduce","r","zIndex","styleProp","currentStyle","defaultView","parseFloat","is","NaN","objReferenceName","head","insertAdjacentHTML","src","Promise","resolve","reject","img","Image","hasError","onerror","condition","Array","isArray","code","ResizeObserver","entries","entry","dimension","contentRect","invokers","IntersectionObserver","observer","isIntersecting","elements","selectors","sizeProp","overflow","charAt","toUpperCase","slice","itemEl","inputElement","mouseEventArgs","Detail","ScreenX","ScreenY","ClientX","ClientY","OffsetX","OffsetY","PageX","PageY","Button","Buttons","CtrlKey","ShiftKey","AltKey","MetaKey","Type","test","userAgent","substr","setAttribute","removeAttribute","multipleResult","windowAndDocument","attribute","tiles","contentSelector","tilesSelector","keyCode","tile","contentHeight","translateY","split","threshold","elementTop","wheelListenerCaches","shouldScroll","dir","deltaX","delta","deltaY","alreadyAtStart","alreadyAtEnd","isInside","hasScrollbar","overflowY","tagName","overflowX","fullscreen","overlaySelector","dialog","overlay","isContentEditable","composedPath","selected","getSelection","anchorNode","checkPath","scrollListener","passive","BlazorComponent","interop","overlayable"],"mappings":"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"}