{"version":3,"file":"app-CSclKlvV.js","sources":["../../Client/confirm.ts","../../node_modules/webrtcsupport/index-browser.js","../../Client/log.ts","../../Client/video-utils.ts","../../node_modules/knockout.validation/dist/knockout.validation.js","../../node_modules/micromodal/dist/micromodal.es.js","../../node_modules/date-fns/esm/constants/index.js","../../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../../node_modules/date-fns/esm/_lib/roundingMethods/index.js","../../node_modules/date-fns/esm/differenceInMinutes/index.js","../../Client/decode-html.ts","../../Client/interfaces-pexip.ts","../../Client/heartbeat.ts","../../Client/mic-analyzer.ts","../../node_modules/js-cookie/src/js.cookie.js","../../Client/throttled-logger.ts","../../Client/participant-list-view-model.ts","../../Client/message.ts","../../Client/dropdown-item-model.ts","../../Client/vdx-call.ts","../../node_modules/knockout.mapping/knockout.mapping.js","../../node_modules/date-fns/esm/isDate/index.js","../../node_modules/date-fns/esm/isValid/index.js","../../node_modules/date-fns/esm/addMilliseconds/index.js","../../node_modules/date-fns/esm/subMilliseconds/index.js","../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../../node_modules/date-fns/esm/_lib/format/formatters/index.js","../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../node_modules/date-fns/esm/locale/en-US/index.js","../../node_modules/date-fns/esm/format/index.js","../../node_modules/date-fns/esm/compareAsc/index.js","../../node_modules/date-fns/esm/_lib/assign/index.js","../../node_modules/date-fns/esm/_lib/cloneObject/index.js","../../node_modules/date-fns/esm/formatDistanceStrict/index.js","../../node_modules/date-fns/esm/locale/da/_lib/formatDistance/index.js","../../node_modules/date-fns/esm/locale/da/_lib/formatLong/index.js","../../node_modules/date-fns/esm/locale/da/_lib/formatRelative/index.js","../../node_modules/date-fns/esm/locale/da/_lib/localize/index.js","../../node_modules/date-fns/esm/locale/da/_lib/match/index.js","../../node_modules/date-fns/esm/locale/da/index.js","../../Client/enums.ts","../../node_modules/@hejdoktor/resx-compiler/format.mjs","../../Client/waiting-list.resx.ts","../../Client/waiting-list.ts","../../Client/share-link.ts","../../node_modules/axios/lib/helpers/bind.js","../../node_modules/axios/lib/utils.js","../../node_modules/axios/lib/helpers/buildURL.js","../../node_modules/axios/lib/core/InterceptorManager.js","../../node_modules/axios/lib/helpers/normalizeHeaderName.js","../../node_modules/axios/lib/core/enhanceError.js","../../node_modules/axios/lib/core/createError.js","../../node_modules/axios/lib/core/settle.js","../../node_modules/axios/lib/helpers/cookies.js","../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../node_modules/axios/lib/helpers/combineURLs.js","../../node_modules/axios/lib/core/buildFullPath.js","../../node_modules/axios/lib/helpers/parseHeaders.js","../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../node_modules/axios/lib/adapters/xhr.js","../../node_modules/axios/lib/defaults.js","../../node_modules/axios/lib/core/transformData.js","../../node_modules/axios/lib/cancel/isCancel.js","../../node_modules/axios/lib/core/dispatchRequest.js","../../node_modules/axios/lib/core/mergeConfig.js","../../node_modules/axios/lib/helpers/validator.js","../../node_modules/axios/lib/core/Axios.js","../../node_modules/axios/lib/cancel/Cancel.js","../../node_modules/axios/lib/cancel/CancelToken.js","../../node_modules/axios/lib/helpers/spread.js","../../node_modules/axios/lib/helpers/isAxiosError.js","../../node_modules/axios/lib/axios.js","../../node_modules/axios/index.js","../../Client/date-time-view-model.ts","../../Client/email-view-model.ts","../../node_modules/cleave.js/dist/cleave-esm.js","../../node_modules/cleave.js/dist/addons/cleave-phone.dk.js","../../Client/form-helpers.ts","../../Client/create-meeting.ts","../../Client/app.ts"],"sourcesContent":["// usage: decorate links or buttons whose actions should be confirmed with\n// a confirm attribute: data-confirm=\"your confirmation text\"\nexport class Confirm {\n public static Initialize(): void {\n const confirmTargets = document.querySelectorAll('[data-confirm]');\n\n if (confirmTargets === null) {\n return;\n }\n\n for (let i = 0; i < confirmTargets.length; ++i) {\n const target = confirmTargets[i];\n const text = (target as HTMLElement).dataset.confirm;\n target.addEventListener(\n 'click',\n (event) => {\n const ok = confirm(text);\n if (ok) {\n return;\n }\n event.preventDefault();\n },\n false\n );\n }\n }\n}\n","// created by @HenrikJoreteg\nvar prefix;\nvar version;\n\nif (window.mozRTCPeerConnection || navigator.mozGetUserMedia) {\n prefix = 'moz';\n version = parseInt(navigator.userAgent.match(/Firefox\\/([0-9]+)\\./)[1], 10);\n} else if (window.webkitRTCPeerConnection || navigator.webkitGetUserMedia) {\n prefix = 'webkit';\n version = navigator.userAgent.match(/Chrom(e|ium)/) && parseInt(navigator.userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./)[2], 10);\n}\n\nvar PC = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;\nvar IceCandidate = window.mozRTCIceCandidate || window.RTCIceCandidate;\nvar SessionDescription = window.mozRTCSessionDescription || window.RTCSessionDescription;\nvar MediaStream = window.webkitMediaStream || window.MediaStream;\nvar screenSharing = window.location.protocol === 'https:' &&\n ((prefix === 'webkit' && version >= 26) ||\n (prefix === 'moz' && version >= 33))\nvar AudioContext = window.AudioContext || window.webkitAudioContext;\nvar videoEl = document.createElement('video');\nvar supportVp8 = videoEl && videoEl.canPlayType && videoEl.canPlayType('video/webm; codecs=\"vp8\", vorbis') === \"probably\";\nvar getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia || navigator.mozGetUserMedia;\n\n// export support flags and constructors.prototype && PC\nmodule.exports = {\n prefix: prefix,\n browserVersion: version,\n support: !!PC && !!getUserMedia,\n // new support style\n supportRTCPeerConnection: !!PC,\n supportVp8: supportVp8,\n supportGetUserMedia: !!getUserMedia,\n supportDataChannel: !!(PC && PC.prototype && PC.prototype.createDataChannel),\n supportWebAudio: !!(AudioContext && AudioContext.prototype.createMediaStreamSource),\n supportMediaStream: !!(MediaStream && MediaStream.prototype.removeTrack),\n supportScreenSharing: !!screenSharing,\n // constructors\n AudioContext: AudioContext,\n PeerConnection: PC,\n SessionDescription: SessionDescription,\n IceCandidate: IceCandidate,\n MediaStream: MediaStream,\n getUserMedia: getUserMedia\n};\n","import { BootstrappedData } from './interfaces';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const Sentry: any;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ndeclare const R7Insight: any;\ndeclare const bootstrapped: BootstrappedData;\n\nexport class Log {\n public static info(msg: string, additionalData?: unknown): void {\n Log.emitLogMessage('info', msg, additionalData);\n }\n\n public static warn(msg: string, additionalData?: unknown): void {\n Log.emitLogMessage('warn', msg, additionalData);\n }\n\n public static error(msg: string, additionalData?: unknown): void {\n Log.emitLogMessage('error', msg, additionalData);\n }\n\n private static staticAdditionalData: {\n [key: string]: string | number;\n } = {};\n\n public static addStaticAdditionalData(\n key: string,\n value: string | number\n ): void {\n Log.staticAdditionalData[key] = value;\n }\n\n private static isR7Initialized = false;\n\n private static emitLogMessage(\n msgType: 'info' | 'warn' | 'error',\n msg: string,\n additionalData: unknown\n ): void {\n console && console[msgType](msg, additionalData);\n Log.logToR7Insight(msgType, msg, additionalData);\n Log.logToSentry(msgType, msg, additionalData);\n }\n\n private static logToR7Insight(\n msgType: 'info' | 'warn' | 'error',\n msg: string,\n additionalData: unknown\n ): void {\n if (typeof R7Insight === 'undefined') {\n return;\n }\n if (!Log.isR7Initialized) {\n R7Insight.init({\n token: bootstrapped.r7InsightToken,\n ['page_info']: 'per-page',\n region: 'eu',\n });\n Log.isR7Initialized = true;\n }\n\n if (additionalData) {\n R7Insight[msgType]({\n ...Log.staticAdditionalData,\n user: bootstrapped.userId,\n message: msg,\n data: additionalData,\n });\n } else {\n R7Insight[msgType]({\n ...Log.staticAdditionalData,\n user: bootstrapped.userId,\n message: msg,\n });\n }\n }\n\n private static logToSentry(\n msgType: 'info' | 'warn' | 'error',\n msg: string,\n additionalData: unknown\n ): void {\n if (msgType === 'info') {\n return;\n }\n if (typeof Sentry === 'undefined') {\n return;\n }\n\n if (additionalData instanceof Error) {\n Sentry.captureException(additionalData, { level: msgType });\n } else {\n Sentry.captureMessage(msg, { level: msgType });\n }\n }\n}\n","import webRtcSupport from 'webrtcsupport';\nimport { Log } from './log';\n\nexport class VideoUtils {\n public static isInternetExplorer(): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return /*@cc_on!@*/ false || !!(document as any).documentMode;\n }\n\n private static isIos(): boolean {\n return navigator.userAgent.match(/iPhone|iPad/i) !== null;\n }\n\n private static isAndroid(): boolean {\n return /android/i.test(navigator.userAgent);\n }\n\n private static isFirefox(): boolean {\n return /firefox/i.test(navigator.userAgent);\n }\n\n private static isChrome(): boolean {\n return (\n /google/i.test(navigator.vendor) &&\n !/edg/i.test(navigator.userAgent)\n );\n }\n\n private static isChromiumEdge(): boolean {\n return (\n /google/i.test(navigator.vendor) && /edg/i.test(navigator.userAgent)\n );\n }\n\n public static getBrowser(): Browser {\n if (this.isChrome()) {\n return Browser.Chrome;\n } else if (this.isFirefox()) {\n return Browser.Firefox;\n } else if (this.isChromiumEdge()) {\n return Browser.ChromiumEdge;\n } else {\n return Browser.Unknown;\n }\n }\n\n public static isWebRtcSupported(): boolean {\n return webRtcSupport.support;\n }\n\n public static isVideoSupported(): boolean {\n if (this.isIos() || this.isAndroid()) {\n return false;\n }\n\n if (this.isChrome() || this.isChromiumEdge()) {\n return true;\n }\n\n return false;\n }\n\n public static redirectIfUnsupported(): boolean {\n if (this.isVideoSupported()) {\n return;\n }\n\n // prevent redirect loops\n if (/^\\/unsupported/i.test(document.location.pathname)) {\n return;\n }\n\n const debug = {\n userAgent: navigator.userAgent,\n vendor: navigator.vendor,\n browserVersion: webRtcSupport.browserVersion,\n support: webRtcSupport.support,\n supportRTCPeerConnection: webRtcSupport.supportRTCPeerConnection,\n supportVp8: webRtcSupport.supportVp8,\n supportGetUserMedia: webRtcSupport.supportGetUserMedia,\n supportDataChannel: webRtcSupport.supportDataChannel,\n supportWebAudio: webRtcSupport.supportWebAudio,\n supportMediaStream: webRtcSupport.supportMediaStream,\n supportScreenSharing: webRtcSupport.supportScreenSharing,\n prefix: webRtcSupport.prefix,\n };\n\n Log.warn('Unsupported browser', debug);\n\n let errorPage = '/unsupported/desktop';\n\n if (this.isAndroid()) {\n errorPage = '/unsupported/android';\n }\n\n if (this.isIos()) {\n errorPage = '/unsupported/ios';\n }\n\n // Use XMLHttpRequest to maximize browser compatibility\n const request = new XMLHttpRequest();\n request.onreadystatechange = (): void => {\n if (request.readyState == 4) {\n const html = request.responseText;\n document.getElementsByTagName('html')[0].innerHTML = html;\n }\n };\n request.open('GET', errorPage, true);\n request.send();\n }\n\n public static isMediaElementSinkSupported(): boolean {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return typeof (new Audio() as any).sinkId !== 'undefined';\n }\n}\n\nexport enum Browser {\n Chrome,\n ChromiumEdge,\n Firefox,\n Unknown,\n}\n","/*=============================================================================\r\n\tAuthor:\t\t\tEric M. Barnard - @ericmbarnard\t\t\t\t\t\t\t\t\r\n\tLicense:\t\tMIT (http://opensource.org/licenses/mit-license.php)\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\tDescription:\tValidation Library for KnockoutJS\t\t\t\t\t\t\t\r\n\tVersion:\t\t2.0.4\t\t\t\t\t\t\t\t\t\t\t\r\n===============================================================================\r\n*/\r\n/*globals require: false, exports: false, define: false, ko: false */\r\n\r\n(function (factory) {\r\n\t// Module systems magic dance.\r\n\r\n\tif (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\") {\r\n\t\t// CommonJS or Node: hard-coded dependency on \"knockout\"\r\n\t\tfactory(require(\"knockout\"), exports);\r\n\t} else if (typeof define === \"function\" && define[\"amd\"]) {\r\n\t\t// AMD anonymous module with hard-coded dependency on \"knockout\"\r\n\t\tdefine([\"knockout\", \"exports\"], factory);\r\n\t} else {\r\n\t\t//