{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/utilities.ts","webpack:///./src/main.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","isDragEventWithFiles","event","types","dataTransfer","Array","from","includes","Element","matches","msMatchesSelector","webkitMatchesSelector","String","normalize","bugsnagReleaseStage","location","hostname","bugsnagNotify","error","notify","console","preventDefaultFileDropAction","defaultPrevented","target","HTMLInputElement","type","preventDefault","dropEffect","start","apiKey","enabledReleaseStages","appType","releaseStage","user","defaults","secure","sameSite","axios","transformRequest","headers","FormData","append","antiForgeryToken","$","jQuery","document","on","stopPropagation","setTimeout","disabled","addEventListener"],"mappings":"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","file":"js/app.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","\nexport function delay(milliseconds: number = 0): Promise {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve();\n }, milliseconds);\n });\n}\n\nexport function getTabbableElements(): Element[] {\n const inputElements = document.querySelectorAll('input, button, a[href], area, object, select, textarea, [tabindex]');\n\n return [...inputElements].filter(element => element.getAttribute(\"tabindex\") !== '-1');\n}\n\nexport function findNextTabbableElement(referenceElement: Element): Element | null {\n\n if (!referenceElement) {\n return null;\n }\n\n const tabbableElements = getTabbableElements();\n\n const index = tabbableElements.indexOf(referenceElement);\n if (index >= 0 && index < tabbableElements.length - 1) {\n return tabbableElements[index + 1];\n }\n\n return null;\n}\n\nexport function focusNextElementOrBlur(referenceElement: HTMLElement): void {\n\n if (!referenceElement) {\n return;\n }\n\n const nextElement = findNextTabbableElement(referenceElement);\n\n if (nextElement instanceof HTMLElement) {\n nextElement.focus();\n\n } else {\n referenceElement.blur();\n }\n}\n\nexport function formatHumanFileSize(size: number) {\n // Keep this implementation in sync with the equivalent C# implementation in: UAB.V2.Common.Utilities.FileUtils\n\n const kiloByte = 1024; // Although it should technically be 1000, Windows and many other programs use kibibytes as kilobytes. To prevent confusion for our users, we'll just use whatever Windows uses... :)\n const megaByte = kiloByte * kiloByte;\n const gigaByte = kiloByte * kiloByte * kiloByte;\n const teraByte = kiloByte * kiloByte * kiloByte * kiloByte;\n const nbsp = \"\\xa0\"; // non-breakable space\n\n if (size < kiloByte)\n {\n // Special case for small file sizes: don't show decimal places.\n return `${size.toFixed(0)}${nbsp}B`;\n }\n\n let unit: string;\n let scaledSize: number;\n\n if (size >= teraByte)\n {\n unit = \"TB\";\n scaledSize = size / teraByte;\n }\n else if (size >= gigaByte)\n {\n unit = \"GB\";\n scaledSize = size / gigaByte;\n }\n else if (size >= megaByte)\n {\n unit = \"MB\";\n scaledSize = size / megaByte;\n }\n else\n {\n unit = \"kB\"; // Yes, a lower case \"k\".\n scaledSize = size / kiloByte;\n }\n\n return `${scaledSize.toFixed(1)}${nbsp}${unit}`;\n}\n\ninterface DragEventWithDataTransfer extends DragEvent {\n readonly dataTransfer: DataTransfer;\n}\n\nexport function isDragEventWithFiles(event: DragEvent): event is DragEventWithDataTransfer {\n const types = event.dataTransfer?.types;\n if (!types) {\n return false;\n }\n\n return Array.from(types).includes('Files');\n}\n\nconst matchesPrototype = Element.prototype.matches || (Element.prototype as any).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\nexport function matches(element: Element, selector: string) {\n return matchesPrototype.call(element, selector);\n}\n\n// Adapted from: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\nexport function closest(element: Element, selector: string) {\n let currentElement: Element | null = element;\n do {\n if (matches(currentElement, selector)) return currentElement;\n currentElement = currentElement.parentElement;\n } while (currentElement !== null && currentElement.nodeType === 1);\n return null;\n}\n\nexport function readBlobIntoArrayBuffer(blob: Blob): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n if (reader.result instanceof ArrayBuffer) {\n resolve(reader.result)\n\n } else {\n reject(new Error(`Expected FileReader.result to be an ArrayBuffer.`));\n }\n };\n\n reader.onerror = () => {\n reject(reader.error);\n };\n\n reader.readAsArrayBuffer(blob);\n });\n}\n\nexport function readBlobIntoDataUrl(blob: Blob): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n if (typeof reader.result === 'string') {\n resolve(reader.result)\n\n } else {\n reject(new Error(`Expected FileReader.result to be an ArrayBuffer.`));\n }\n };\n\n reader.onerror = () => {\n reject(reader.error);\n };\n\n reader.readAsDataURL(blob);\n });\n}\n\nexport async function arrayBufferToBase64(arrayBuffer: ArrayBuffer): Promise {\n const delimiter = ';base64,';\n const dataUrl = await readBlobIntoDataUrl(new Blob([arrayBuffer]));\n\n const position = dataUrl.indexOf(delimiter);\n if (position < 0) {\n throw new Error(`Data URL is expected contain: ${delimiter}`);\n }\n\n return dataUrl.slice(position + delimiter.length);\n}\n\ninterface MsCryptoOperation extends EventTarget {\n process(buffer: ArrayBufferView): void;\n finish(): void;\n abort(): void;\n\n readonly key: any;\n readonly algorithm: any;\n readonly result: any;\n\n onabort: ((this: MsCryptoOperation, ev: Event) => any) | null;\n onerror: ((this: MsCryptoOperation, ev: Event) => any) | null;\n onprogress: ((this: MsCryptoOperation, ev: Event) => any) | null;\n oncomplete: ((this: MsCryptoOperation, ev: Event) => any) | null;\n};\n\nexport function hashArrayBuffer(arrayBuffer: ArrayBuffer, algorithm: 'SHA-1' | 'SHA-256' | 'SHA-384' | 'SHA-512'): Promise {\n\n const msCrypto = (window as any).msCrypto;\n\n if (msCrypto) {\n return new Promise((resolve, reject) => {\n const operation = msCrypto.subtle.digest(algorithm, arrayBuffer) as MsCryptoOperation;\n\n operation.oncomplete = () => {\n if (operation.result instanceof ArrayBuffer) {\n resolve(operation.result)\n\n } else {\n reject(new Error(`Expected MsCryptoOperation.result to be an ArrayBuffer.`));\n }\n };\n\n operation.onerror = () => {\n reject(new Error(`Crypto error.`));\n };\n });\n\n } else if (window.crypto) {\n return Promise.resolve(window.crypto.subtle.digest(algorithm, arrayBuffer));\n\n } else {\n throw new Error(`crypto not supported.`);\n }\n}\n\nlet tryRemoveDiacritics: (input: string) => string;\n\nif (String.prototype.normalize !== undefined) {\n tryRemoveDiacritics = (input: string) => input.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n} else {\n // Internet Explorer...\n tryRemoveDiacritics = (input: string) => input;\n}\n\nexport function normalizeSearchString(input: string): string {\n return tryRemoveDiacritics(input)\n .replace(/\\u{1E9E}/g, 'SS') // Capital Ringel-s\n .replace(/\\u{DF}/g, 'SS') // Lower case Ringel-s\n .replace(/\\W/g, ' ')\n .toUpperCase();\n}\n\nexport function containsAllKeywords(searchText: string, keywords: string[]): boolean {\n\n for (var i = 0; i < keywords.length; i++) {\n if (searchText.indexOf(keywords[i]) < 0) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function parseSearchKeywords(text: string): string[] {\n return normalizeSearchString(text)\n .split(/\\W+/)\n .map(keyword => keyword.trim())\n .filter(keyword => keyword !== '');\n}\n\nexport function hasOnScreenKeyboard() {\n try {\n return window.matchMedia(\"(pointer: coarse)\").matches;\n } catch (error) {\n return false;\n }\n}","import Bugsnag from '@bugsnag/js';\nimport axios from 'axios';\nimport 'bootstrap';\nimport jQuery from 'jquery';\nimport Cookies from 'js-cookie';\nimport * as localForage from 'localforage';\nimport 'url-search-params-polyfill';\nimport './styles/web.scss';\nimport { isDragEventWithFiles } from './utilities';\n\nlet bugsnagReleaseStage = \"production\";\nswitch (window.location.hostname) {\n case 'uab-online.localhost':\n bugsnagReleaseStage = 'local';\n break;\n\n case 'acc.uab-online.com':\n bugsnagReleaseStage = 'acceptance';\n break;\n\n case 'dev.uab-online.com':\n bugsnagReleaseStage = 'development';\n break;\n}\n\nBugsnag.start({\n apiKey: 'dc36eaf67c8e2993bf6d1ec84f35c000',\n enabledReleaseStages: ['production', 'acceptance', 'development'],\n appType: 'Auth-Frontend',\n releaseStage: bugsnagReleaseStage,\n user: {\n name: (window as { [key: string]: any })['userName'],\n },\n})\n\nexport function bugsnagNotify(error: Error) {\n Bugsnag.notify(error);\n console.error(error);\n}\n\ndeclare global {\n interface Window {\n antiForgeryToken: string;\n vueAppName: string;\n globalState: any;\n globalMethods: any;\n jQuery: JQueryStatic;\n $: JQueryStatic;\n }\n}\n\nlocalForage.config({\n name: 'UAB-Online auth', // May appear during storage limit prompts\n});\n\nCookies.defaults = {\n secure: true,\n sameSite: 'strict',\n};\n\nif (typeof axios.defaults.transformRequest === 'undefined') {\n axios.defaults.transformRequest = [];\n\n} else if (typeof axios.defaults.transformRequest === 'function') {\n axios.defaults.transformRequest = [axios.defaults.transformRequest];\n}\n\naxios.defaults.transformRequest.push((data, headers) => {\n if (data instanceof FormData) {\n data.append('__RequestVerificationToken', window.antiForgeryToken);\n }\n\n headers['RequestVerificationToken'] = window.antiForgeryToken;\n\n return data;\n});\n\nwindow.$ = jQuery;\nwindow.jQuery = jQuery;\n\njQuery(document).on('click', '.dropdown-menu.dropdown-menu-keep-open', function (event) {\n event.stopPropagation();\n});\n\njQuery(document).on('click', '.disable-after-click', function (event) {\n setTimeout(function () {\n event.target.disabled = true;\n }, 1);\n});\n\ndocument.addEventListener('dragover', preventDefaultFileDropAction);\ndocument.addEventListener('dragenter', preventDefaultFileDropAction);\n\nfunction preventDefaultFileDropAction(event: DragEvent) {\n // The default action of some browsers is to navigate away from the current page when a file is dropped. We don't want that.\n\n if (event.defaultPrevented) {\n // Some drop area already handled the event.\n return;\n }\n\n if (event.target instanceof HTMLInputElement && event.target.type === 'file') {\n // Native file input's do handle drop event's, but don't call .preventDefault().\n return;\n }\n\n if (!event.dataTransfer || !isDragEventWithFiles(event)) {\n // Drag action contains no files.\n return;\n }\n\n event.preventDefault();\n event.dataTransfer.dropEffect = 'none';\n}\n"],"sourceRoot":""}