{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/ts/config/production/Config.ts","webpack:///./node_modules/lodash/_cloneArrayBuffer.js","webpack:///./src/ts/helpers/DownloadSkypeHelper.ts","webpack:///./node_modules/lodash/_baseMerge.js","webpack:///./node_modules/lodash/_initCloneObject.js","webpack:///./node_modules/@skype/ecsclient/dist/EcsClient.js","webpack:///./src/ts/components/common/Captcha.tsx","webpack:///./node_modules/@skype/ecsclient/dist/TelemetryEvents.js","webpack:///./src/ts/components/meetings/Launcher.tsx","webpack:///./src/ts/helpers/SilentLoginHelper.ts","webpack:///./src/ts/helpers/LoggerHelper.ts","webpack:///./src/ts/components/do/RootView.tsx","webpack:///./node_modules/lodash/isArrayLikeObject.js","webpack:///./src/ts/index.tsx","webpack:///./node_modules/@skype/ecsclient/dist/AppActiveData.js","webpack:///./node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/uuid/dist/esm-browser/regex.js","webpack:///./node_modules/uuid/dist/esm-browser/stringify.js","webpack:///./node_modules/uuid/dist/esm-browser/validate.js","webpack:///./node_modules/uuid/dist/esm-browser/v1.js","webpack:///./node_modules/uuid/dist/esm-browser/parse.js","webpack:///./node_modules/uuid/dist/esm-browser/v35.js","webpack:///./node_modules/uuid/dist/esm-browser/md5.js","webpack:///./node_modules/uuid/dist/esm-browser/v3.js","webpack:///./node_modules/uuid/dist/esm-browser/v4.js","webpack:///./node_modules/uuid/dist/esm-browser/sha1.js","webpack:///./node_modules/uuid/dist/esm-browser/v5.js","webpack:///./node_modules/uuid/dist/esm-browser/nil.js","webpack:///./node_modules/uuid/dist/esm-browser/version.js","webpack:///./src/ts/helpers/RedirectHelper.ts","webpack:///./src/ts/components/common/Padder.tsx","webpack:///./node_modules/lodash/_cloneBuffer.js","webpack:///./node_modules/lodash/_nativeKeysIn.js","webpack:///./node_modules/lodash/uniq.js","webpack:///./src/ts/components/common/StackNavigationView.tsx","webpack:///./src/ts/contexts/ErrorContext.ts","webpack:///./src/ts/components/common/ErrorBoundary.tsx","webpack:///./src/ts/components/meetings/login/GuestLogin.tsx","webpack:///./src/ts/contexts/meetings/MeetingContext.ts","webpack:///./src/ts/components/meetings/LoginView.tsx","webpack:///./src/ts/helpers/EcsHelper.ts","webpack:///./src/ts/components/meetings/login/GuestRedirect.tsx","webpack:///./src/ts/config/BaseConfig.ts","webpack:///./node_modules/lodash/_baseRest.js","webpack:///./src/ts/models/SharedTypes.ts","webpack:///./src/ts/helpers/LocalizerHelper.ts","webpack:///./src/ts/components/bots/BotInfo.tsx","webpack:///./src/ts/components/profiles/Launcher.tsx","webpack:///./src/ts/helpers/SafariRedirectHelper.ts","webpack:///./src/ts/components/bots/BotLauncher.tsx","webpack:///./node_modules/lodash/_overRest.js","webpack:///./src/ts/components/common/ARootView.tsx","webpack:///./node_modules/subscribableevent/dist-es2015/SubscribableEvent.js","webpack:///./node_modules/@skype/ecsclient/dist/TelemetryEventBase.js","webpack:///./src/ts/rest/BotsRestClient.ts","webpack:///./node_modules/clipboard-polyfill/dist/clipboard-polyfill.esm.js","webpack:///./node_modules/@skype/ecsclient/dist/Cache.js","webpack:///./node_modules/lodash/_baseUniq.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///./node_modules/lodash/_createAssigner.js","webpack:///./src/ts/components/meetings/JoinLink.tsx","webpack:///./src/ts/rest/MeetingsApiClientUtils.ts","webpack:///./src/ts/components/meetings/login/UnifiedLoginMethod.tsx","webpack:///./node_modules/lodash/_assignValue.js","webpack:///./src/ts/themes/common.ts","webpack:///./src/ts/components/bots/RootView.tsx","webpack:///./src/ts/helpers/UrlHelper.ts","webpack:///./src/ts/components/common/ErrorModal.tsx","webpack:///./src/ts/contexts/ConfigContext.ts","webpack:///./src/ts/themes/index.ts","webpack:///./src/ts/components/meetings/RootView.tsx","webpack:///./node_modules/lodash/_baseKeysIn.js","webpack:///./node_modules/lodash/merge.js","webpack:///./src/ts/meetnow/MeetNowEdgeHandler.ts","webpack:///./src/ts/meetnow/FallbackFlow.ts","webpack:///./node_modules/lodash/_baseMergeDeep.js","webpack:///./src/ts/contexts/AriaContext.ts","webpack:///./src/ts/contexts/bots/BotsContext.ts","webpack:///./src/ts/components/meetings/login/LoginMethod.tsx","webpack:///./src/ts/helpers/SkypeTokenHelper.ts","webpack:///./src/ts/components/profiles/RootView.tsx","webpack:///./src/ts/contexts/StackNavigationContext.ts","webpack:///./node_modules/lodash/_arrayIncludesWith.js","webpack:///./node_modules/@skype/ecsclient/dist/Config.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/@skype/ecsclient/dist/RestClient.js","webpack:///./src/ts/components/invites/InviteView.tsx","webpack:///./src/ts/models/OffSkypeInviteServiceModel.ts","webpack:///./src/ts/contexts/do/DoContext.ts","webpack:///./src/ts/themes/light.ts","webpack:///./src/ts/rest/BaseRestClient.ts","webpack:///./node_modules/lodash/_createSet.js","webpack:///./node_modules/@skype/ecsclient/dist/AllowBackgroundFetchData.js","webpack:///./src/ts/components/common/LoadingView.tsx","webpack:///./src/ts/helpers/CookieHelper.ts","webpack:///./src/ts/rest/MeetingsApiClient.ts","webpack:///./node_modules/@skype/ecsclient/dist/Scheduler.js","webpack:///./node_modules/lodash/_baseAssignValue.js","webpack:///./src/ts/meetnow/MeetNowSettings.ts","webpack:///./src/ts/components/common/NestedStackNavigationView.tsx","webpack:///./node_modules/lodash/_safeGet.js","webpack:///./src/ts/components/meetings/UnifiedView.tsx","webpack:///./src/ts/components/do/Launcher.tsx","webpack:///./src/ts/helpers/ClipboardHelper.ts","webpack:///./node_modules/lodash/toPlainObject.js","webpack:///./node_modules/@skype/ecsclient/dist/TelemetryManager.js","webpack:///./node_modules/lodash/_copyObject.js","webpack:///./src/ts/helpers/DomHelper.ts","webpack:///./src/ts/App.tsx","webpack:///./src/ts/themes/teams.ts","webpack:///./src/ts/components/invites/Launcher.tsx","webpack:///./node_modules/@skype/ecsclient/dist/Models.js","webpack:///./src/ts/components/common/Spinner.tsx","webpack:///./node_modules/lodash/keysIn.js","webpack:///./node_modules/lodash/_isIterateeCall.js","webpack:///./src/ts/rest/HuddleApiClient.ts","webpack:///./src/ts/contexts/invites/InviteContext.ts","webpack:///./src/ts/components/common/AriaLive.tsx","webpack:///./src/ts/components/bots/AddBotView.tsx","webpack:///./src/ts/components/meetings/JoinView.tsx","webpack:///./src/ts/helpers/ErrorHelper.ts","webpack:///./src/ts/meetnowJoin/JoinHandler.ts","webpack:///./src/ts/helpers/DateHelper.ts","webpack:///./src/ts/contexts/UserContext.ts","webpack:///./src/ts/components/do/DoView.tsx","webpack:///./src/ts/components/common/Select.tsx","webpack:///./src/ts/components/common/ALauncher.tsx","webpack:///./src/ts/components/common/ErrorDetails.tsx","webpack:///./src/ts/contexts/profiles/ProfilesContext.ts","webpack:///./src/ts/components/common/Header.tsx","webpack:///./node_modules/lodash/_assignMergeValue.js","webpack:///./node_modules/@skype/ecsclient/dist/SkypeTokenData.js","webpack:///./src/ts/components/common/Footer.tsx","webpack:///./src/ts/components/invites/RootView.tsx","webpack:///./src/ts/helpers/EnvironmentHelper.ts","webpack:///./node_modules/lodash/_cloneTypedArray.js","webpack:///./src/ts/contexts/EcsContext.ts","webpack:///./src/ts/components/profiles/ProfileView.tsx","webpack:///./src/ts/app.less?0651","webpack:///./vendor/silentLogin.js","webpack:///./src/ts/app.less","webpack:///./src/ts/rest/ProfileRestClient.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","2","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","BaseConfig_1","Uint8Array","arrayBuffer","constructor","byteLength","set","threadId","url","LoggerHelper_1","action","sessionFinished","completionType","EnvironmentHelper_1","Android","config_1","urls","app","downloadAndroid","MacOS","downloadDesktop","download","location","href","Stack","assignMergeValue","baseFor","baseMergeDeep","isObject","keysIn","safeGet","baseMerge","source","srcIndex","customizer","stack","srcValue","newValue","undefined","baseCreate","getPrototype","isPrototype","AllowBackgroundFetchData_1","AppActiveData_1","Cache_1","Config_1","Models","Scheduler_1","SkypeTokenData_1","TelemetryManager_1","EcsClient","this","_allowBackgroundFetchData","default","_appActiveData","_config","_cache","_skypeTokenData","_telemetryManager","_scheduler","telemetryEventAdded","configUpdated","initialize","config","_this","putSkypeTokenData","initialSkypeTokenData","putAppActive","initialAppActiveState","then","getConfig","getEcsConfig","getConfigType","cacheConfig","configType","requestUpdate","pause","resume","setAllowBackgroundFetch","allowBackgroundFetch","putBackgroundFetchAllowed","useSkypeToken","skypeToken","skypeTokenExpiration","setAppActive","active","setConfigsToFetch","types","updateConfigsToFetch","setFetchTimeout","fetchTimeout","props","_super","event","target","state","currentSolution","setState","onSolutionUpdated","challenge","__extends","Captcha","React","AriaContext_1","ariaContext","id","className","ref","announce","assertive","text","bew_localization_1","getString","src","onChange","autoFocus","PureComponent","extendStatics","b","setPrototypeOf","__proto__","Array","__","EcsConfigFetchResponse","_responseTime","_responseCode","_fetchAttempts","_hasValidToken","_serverEndpoint","_etag","_fetchDurationValid","_cacheAvailable","_responseSize","_configAge","_configExpired","_fetchStart","_fetchEnd","getEventName","getAttributes","attributes","TelemetryEventBase","Launcher","conv","conversation","sessionId","getCorrelationId","launcher","intentUri","toLowerCase","resource","shortId","universalUri","skypeUri","ALauncher_1","silentLogin","deferral","startTime","Date","getTime","SKYPE","login","Silent","SyncTasks","Defer","init","setCallback","response","skypetoken","resolve","expiration","expires_in","error","reject","errorDescription","error_description","load","promise","done","logger","status","Success","duration","fail","Fail","SilentLoginStatus","CommonProperty","_logger","webjs_sdk_1","getLogger","_commonProperties","_sessionStartDate","_wasLoggedIn","_wasUnifiedView","_prefix","getSessionId","priority","Normal","_log","network","navigation","sessionStarted","wasPreLoggedin","useUnifiedView","sessionIntermediateStep","wasLoggedIn","sessionDurationInMs","DateHelper_1","meetNowFallbackFlow","correlationIdFromQuery","UrlHelper_1","getQueryParameterAsString","setName","eventProperties","setType","setCommonProperties","keys","forEach","piiKind","setPropertyWithPii","setProperty","env","setProperties","properties","propertyPrefix","setPiiProperties","piiProperties","NotSet","type","_onError","message","file","line","col","LoggerHelper","ariaTenantId","prefix","logging","ariaTenant","canSendStatEvent","enableAutoUserSession","onerror","removeEventListener","flushAndTeardown","addEventListener","isGuest","initCommonProperty","UserId","SkypeTokenHelper_1","Identity","String","MsaCidHex","setEventPriority","isArray","logEvent","oldState","launcherKey","doContext","RootView","getParamsFromUrl","getQueryParameters","recipient","correlationId","Source","CorrelationId","skypeId","toString","SharedTypes_1","Call","Chat","params","ErrorHelper_1","Generic","Desktop","webClientUrl","getWebClientUrlWithCorrelationId","assign","CookieHelper_1","getCookie","cookies","csrf","singleValue","DoContext_1","Launcher_1","do","StackNavigationView_1","loading","initialView","DoView_1","onLaunchClick","_onLaunchClick","initialViewProps","eventViewName","ARootView_1","isArrayLike","isObjectLike","require","theme","container","document","getElementById","htmlElement","getElementsByTagName","language","lang","basePath","getAttribute","injectedEntryPoint","injectedSkypetoken","dataRegion","entryPoint","App_1","Meetings","rawTheme","getQueryParameter","values","includes","ReactDOM","render","country","AppActiveData","_isActive","isActive","isAppActive","_appActiveDeferral","waitForAppActive","Resolved","getRandomValues","rnds8","rng","crypto","msCrypto","Error","uuid","test","byteToHex","substr","_nodeId","_clockseq","arr","offset","arguments","TypeError","_lastMSecs","_lastNSecs","options","buf","node","clockseq","seedBytes","random","msecs","now","nsecs","dt","tl","tmh","v","parseInt","generateUUID","namespace","str","unescape","encodeURIComponent","bytes","charCodeAt","stringToBytes","hashfunc","version","err","DNS","URL","getOutputLength","inputLength8","safeAdd","x","y","lsw","md5cmn","q","a","num","cnt","md5ff","md5gg","md5hh","md5ii","v35","msg","input","output","length32","hex","charAt","md5ToHexEncodedArray","len","olda","oldb","oldc","oldd","wordsToMd5","length8","Uint32Array","bytesToWords","rnds","f","z","ROTL","K","H","N","Math","ceil","M","_i","pow","floor","_i2","W","_t","e","_t2","T","form","body","appendChild","submit","createElement","method","style","display","map_1","curry_1","Padder","flex","freeExports","nodeType","freeModule","Buffer","root","allocUnsafe","buffer","isDeep","copy","baseUniq","array","views","current","view","isRoot","parentContext","eventPriority","ariaMessage","prevState","animating","StackNavigationContext_1","animation","None","setTimeout","_track","previous","usedAnimation","pop","__assign","prev","Fade","FadeOut","Slide","SlideOut","visible","fullscreenClassName","_getAnimationStyle","visibility","mainContentId","role","candidate","Overlay","renderPrevView","renderCurrentView","_push","_pop","pushRoot","popRoot","pushParent","popParent","StackNavigationView","LoadingView_1","renderViews","context","createContext","setError","noop_1","clear","Provider","Consumer","faq","skypeCom","downloadUrl","errorInfo","_alternatives","contentLocString","descriptonLocString","linkTextLocString","linkClickHandler","_onFaqClick","_onExploreClick","_onDownloadClick","ErrorBoundary","isDisplayableError","title","pageTitleLocString","ErrorDetails_1","showSkype","_renderAlternatives","children","map","item","index","_renderAlternativeItem","react_1","as","content","description","ConfigContext_1","configContext","onClick","guestName","joinButtonEnabled","stackNavigationContext","meetingContext","errorContext","ecsContext","joinParams","joinButtonSpinEnabled","captchaState","show","_captchaSolution","_joinAsGuest","preventDefault","stopPropagation","ecsSettings","settings","useMeetingsApi","joinAsGuestMeetingsApi","retries","maxRetries","joinThread","useJoinThread","joinAsGuestHuddleApi","HuddleApiClient_1","joinAsGuest","flowId","guestUser","GuestRedirect_1","username","catch","newState","statusCode","enrichErrorFromWebResponse","JoinDisabled","TooManyUsers","Busy","MeetingsApiClient_1","displayName","includesCaptcha","InviteNotFound","ready","captchaPayload","challengeId","azureRegion","solutionValue","solution","GuestLogin","_prevProps","_renderTitle","_renderExpirationWarning","_renderInput","Captcha_1","_onCaptchaSolutionUpdated","width","height","size","styles","color","marginTop","weight","EcsContext_1","ErrorContext_1","MeetingContext_1","_renderTosAndPrivacy","_createGuest","disabled","Spinner_1","_updateGuestName","fontSize","marginBottom","placeholder","textAlign","linkPrivacy","linkTerms","background","siteVariables","brand","NestedStackNavigationView_1","LoginMethod_1","Footer_1","dark","LoginView","renderThemeAware","_ecsClient","ecsclient_1","EcsHelper","callback","fallback","clientName","clientVersion","configsToFetch","Models_1","User","Default","hosts","ecs","getEcsParameters","clientId","subscribe","SWG_WebClient","deviceId","localStorage","getItem","deviceIdLocalStorageKey","uuid_1","setItem","instance","GuestRedirect","_autoSubmit","SafariRedirectHelper_1","skype","path","maxAge","domain","client_id","redirect_uri","api","profile","huddle","meetings","invite","captcha","rand","redirectUri","logout","s4lWeb","webSubDomain","inviteId","botLogin","botId","useBotLauncherQueryParam","loginUri","cookiePolicy","join","origin","fallbackUri","inviteLauncher","offSkypeInviteId","botLauncher","doLauncher","meetNowJoinLauncher","exp","video","mic","identity","overRest","setToString","func","start","Themes","AppIds","Actions","initSync","locale","localizedTable","I18NBUNDLE","fallbackTable","I18NBUNDLE_FALLBACK","BotInfo","BotsContext_1","botContext","_renderAvatar","botInfo","isTrusted","developer","avatarImage","avatarUrl","objectFit","position","margin","image","allowDesktopSafariGuestFlow","webSubdomainForRedirect","BotLauncher","botSkypeId","nativeMax","max","transform","args","otherArgs","Component","SubscriptionToken","_event","_callback","unsubscribe","SubscribableEvent","_allowStopPropagation","fire","subs","_subscribers","ret","dispose","concat","filter","BotsRestClient","genericEventPath","performApiGet","headers","performApiPut","BaseRestClient_1","Promise","u","next","throw","label","sent","trys","ops","return","iterator","console","warn","log","setData","indexOf","getData","C","clipboardData","g","navigator","userAgent","setAttribute","textContent","removeChild","attachShadow","innerText","D","execCommand","E","clipboard","writeText","h","readText","k","w","DT","setDebugLog","suppressWarnings","write","read","success","getSelection","createRange","selectNodeContents","removeAllRanges","addRange","ClipboardEvent","subscribableevent_1","Cache","_cachedConfigs","_a","databaseInterface","dbFetchPromises","_loop_1","this_1","ecsConfig","configsToFetch_1","all","EcsConfigType","getEcsConfigByType","putConfig","oldEcsConfig","currentEcsConfig","putData","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","iteratee","comparator","isCommon","seen","outer","computed","seenIndex","overArg","getPrototypeOf","baseRest","isIterateeCall","assigner","sources","guard","joinLink","ClipboardHelper_1","copyToClipboard","copied","keyCode","_getClickHandler","JoinLink","joinLinkClassName","tabIndex","onKeyDown","_getKeyDownHandler","replace","model","longId","errResp","simplerestclients_1","RetryCountedWithBackoff","DoNotRetry","isMeetingRedirectInProgress","_canJoinOnWebWithSafariException","downloadSkype","primary","eventType","meetNowSettings","JoinHandler_1","getShortIdFromUrl","handleJoinError","GuestLogin_1","isUnauthenticatedFlow","UnifiedLoginMethod","_renderActions","UserContext_1","userContext","canJoinOnWebWithSafariException","_renderAuthenticatedActions","_renderUnauthenticatedActions","renderDownloadButton","renderDesktopBody","ErrorModal_1","assetsBasePath","onClose","userProfile","_renderAccounts","_renderWhatsThis","email","emails","firstname","lastname","currentAccountAvatar","currentAccountText","vertical","end","currentAccount","_joinOnWeb","main","otherAccountIcon","backgroundColor","borderRadius","padding","otherAccountText","otherAccount","_joinOnWebOtherAccount","_joinOnWebAsGuest","_renderTextWithLink","linkUrl","linkClickTelemetryLoggerAction","baseAssignValue","eq","objValue","componentStyles","Button","isAddBotInProgress","isAddedAsContact","isLoginInProgress","_getBotIdFromUrl","BotNotFound","BotId","_getBotInfo","prevProps","_isLoading","AddBotView_1","onProgress","handleAddBotViewProgress","onAdd","handleAddBotViewAdd","onError","handleAddBotViewError","BotsRestClient_1","getBotInfo","Rejected","pathname","split","UrlHelper","getWebClientUrl","allowedParameters","param","pair","search","decodeURIComponent","reduce","ShortIdFromUrl","ErrorModal","react_2","determineIsItUnifiedView","MeetNowSettings_1","UnifiedView_1","Mobile","JoinView_1","_getShortIdFromUrl","legacyMobileFlowView","useNewMobileJoinFlow","loadConversationFromMeetingsApi","loadConversationFromHuddleApi","loadingConversation","_silentLoginStatus","silentLoginNotSupported","Skipped","Started","loadConversation","Ended","_preRequisitesLoadCompleted","isLoading","getLoginView","unifiedViewEcsSettings","getConversation","ThreadId","GenericData","nativeKeysIn","isProto","merge","createAssigner","meeting","ShortId","addSkypeIdAndMsaCidHexCommonProperties","createGuestMeeting","DefaultMeetingTitle","MeetNowEdgeNumberOfFetchRetries","localizedGuestDefaultName","_b","meetnowGuest","loginResult","createAuthenticatedMeeting","SkypeToken","conversion","conversationServiceModel","meetnowGuestServiceModel","isNewJoinFlowFromJoinLink","webClientRedirectParams","skypeid","msacidhex","High","queryParams","MeetNowEdgeAllowedQueryParameters","RedirectHelper_1","fallbackCorrelationId","getAllowedQueryParameters","find","triggerFallbackFlow","reason","showErrorMessage","handleReloadButton","handleNavigateToWebClientButton","pageTitle","querySelector","fallbackSection","reloadPageButton","reload","goToSkypeButton","cloneBuffer","cloneTypedArray","copyArray","initCloneObject","isArguments","isArrayLikeObject","isBuffer","isFunction","isPlainObject","isTypedArray","toPlainObject","mergeFunc","stacked","isArr","isBuff","isTyped","secondaryButtonTransparentStyle","LoginMethod","parseSkypeToken","token","parts","header","JSON","parse","atob","payload","signature","tokenContent","cid","toUpperCase","getSkypeIdFromUrl","Profile","profilesContext","ProfilesContext_1","ProfileView_1","ViewType","AnimationType","Fullscreen","noop","Config","baseGetTag","funcProto","Function","objectProto","funcToString","objectCtorString","proto","Ctor","lastResponseTime","currentRequestTime","TelemetryEvents","EcsFetcher","_getUserConfig","parameters","_apiPath","paramList","_blockRequestUntil","isSkypeTokenValid","isBackgroundFetchAllowed","race","waitForBackgroundFetchAllowed","waitForValidSkypeToken","_getHeaders","getSkypeToken","timeout","performApiGetDetailed","GenericRestClient","_ecsFailureBackoffTimer","ExponentialTime","_cacheMaxAgeRegex","_serverIndex","NaN","oldConfig","userConfig","isNaN","deferred","fetchAttempts","callConfigServer","etag","eTag","fetcher","res","eTagHeader","expirationHeader","Headers","ETag","Expires","stringify","ecsData","updatedExpiration","_calculateExpirationDate","cacheUpdateTime","lastFetchTokenHash","getSkypeTokenHash","requestHeaders","appVersion","fetchDelayMs","fetchDurationValid","cacheAge","sendTelemetryEvent","reset","getTimeAndCalculateNext","forceFetchTime","responseDate","clockSkew","headerExpirationTime","min","match","exec","lastIndex","Number","inviteContext","inviterSkypeId","open","InviteView","InviteContext_1","user_name","inviterName","_downloadSkype","download_skype","textDecoration","Header_1","Padder_1","renderAvatar","renderTitle","renderControls","renderMobileBody","clientSource","ClientSource","InviterName","InviterSkypeId","LongId","colors","brand02","brand04","brand06","brand08","brand12","brand14","brand16","brandIcon","unwrap","resp","contentType","acceptType","customPropertiesProvider","endTime","responseUrl","_endpointUrl","eventUrl","responseTime","statusText","host","custom","BaseRestClient","apiPath","networkCallback","objToPost","performApiPostDetailed","objToPatch","performApiPatchDetailed","objToPut","performApiPutDetailed","objToDelete","performApiDeleteDetailed","Set","AllowBackgroundFetchData","_isAllowed","isAllowed","_isAllowedDeferral","LoadingView","CookieHelper","hasCookie","cookieValuesObject","round","TS","TM","cookieObjectToString","getExpirationDate","toUTCString","optionsString","cookie","setCookie","separatorPos","substring","trim","parseCookieValues","cookieObject","cookieSeparator","cookieObjectKeys","cookieValue","cookieObjectKey","splitCookieValue","splitParams","seconds","MeetingsApiClient","performApiPost","customErrorHandler","MeetingsApiClientUtils_1","createMeeting","RestClient_1","Scheduler","appActiveData","allowBackgroundFetchData","telemetryManager","_isFetchingSettings","_pendingFetch","_paused","_fetchEcsSettingsIfNeeded","cachedConfig","configExpirationMs","_fetchSkypeEcsSettings","bypassPause","skypeTokenChanged","_c","cachedData","allowedQueryParameters","currentSettings","MeetNowSettings","MeetNowEdgeAriaTenantId","MeetNowEdgeJoinApiHost","rootElement","dataset","parsedSettings","childProps","NestedStackNavigationView","_renderNested","_","UnifiedLoginMethod_1","UnifiedView","ClipboardHelper","copyObject","TelemetryManager","eventName","eventData","telemetryEnabled","clientTelemetryConfig","_containsEcsClientTelemetryConfig","ECSCONFIG","ecsClientTelemetry","assignValue","isNew","DomHelper","currentTarget","click","element","focus","EntryPoint","setCookieValue","ProfileRestClient_1","getUserProfileInfo","SkypeId","loadingTranslations","loadingEcs","switchLanguage","_switchLanguage","merge_1","localThemes","common","Teams","teams","light","_canUseSilentLogin","_setErrorContext","_clearErrorContext","_announce","App","Safari","head","innerHTML","LocalizerHelper_1","silentLoginPromise_1","SilentLoginHelper_1","_getProfileAsync","raceTimer","timedOut","cancel","_startLoadingEcs","htmlFontSize","ErrorBoundary_1","AriaLive_1","_getRootView","_renderErrorPortal","trapFocus","isClickableOutsideFocusTrap","_renderErrorPortalContent","EcsHelper_1","loadConfig","Boolean","_determineIsItUnifiedView","quickJoinFlowSupportedBrowsers","updateEnvironmentSettings","_d","_e","_f","Bots","RootView_4","Invites","RootView_3","RootView_1","Do","RootView_2","Profiles","RootView_5","spinner","keyframe","from","to","iterationCount","viewBox","xmlns","fill","fillRule","strokeLinecap","stroke","strokeWidth","Spinner","animations","arrayLikeKeys","baseKeysIn","isIndex","Action","FlowId","Id","Resource","HuddleApiClient","OffSkypeInviteServiceModel_1","AriaLive","AddBotView","BotInfo_1","botsContext","_renderBotAddedContent","_renderBotAddPromptContent","showOnlyLegalInfo","addAsContactAllowed","_renderAddButton","_renderBotDetails","BotLauncher_1","_addBotToContacts","privacyAndTos","privacyStatement","tos","_renderCapabilities","capabilities","botCapabilities","capabilitiestoLocStringMap","uniqueLocalizedCapabilities","uniq_1","cap","localizer","addBotToContacts","BotTooManyContacts","_redirectToLogin","useBotsLauncherQueryParam","isIOSInAppBrowserFlow","JoinView","DownloadSkypeHelper_1","LoginView_1","joinMeeting","_isFallbackFlow","JoinLink_1","renderLogo","headerLocString","descriptionLocString","emoticonPath","InviteIdFromUrl","ErrorHelper","arg","displayableError","webResponse","getErrorFromWebErrorResponse","joinLinkRegex","MeetNowEdgeHandler_1","redirectParams","guestUserServiceModel","normalizedJoinLink","joinLinkDomain","trimmedJoinLink","startsWith","startDate","endDate","valueOf","DoView","renderBody","defaultEmptyOption","option","selectedCountry","searchOption","selected","focused","el","_domReference","setFocus","Select","nextProps","wrapperAdditionalClass","ariaLabel","_onChange","_autoFocus","onFocus","_onFocus","onBlur","_onBlur","renderOptions","launchUrl","_getLauncherUrl","ALauncher","_getLoggerAction","ErrorDetails","convertToGenericDisplayableError","_debounce","clearTimeout","_updateDimension","browserSupportDimension","_browserSupportElement","clientHeight","clientWidth","Header","_updateDimensionDebouncer","list_supported_browser","Win","WinRT","Linux","minHeight","_setBrowserSupport","onLoad","alignSelf","marginLeft","renderJoinOnWebDisclaimer","SkypeTokenData","initialData","_data","_validSkypeTokenDeferral","tokenData","mem","languages","matchingLanguage","_footerElement","footerDimension","getLocale","Footer","separator","_setElement","Select_1","_changeLanguage","_selectedLanguage","YEAR","getFullYear","getOffSkypeInvite","OffSkypeInvites","InviteSkypeId","InviteView_1","OperatingSystems","Browsers","osRegExps","WinPhone","iOS","ChromeOS","DeviceTypes","browserRegExps","Opera","EdgeOld","Edge","MSIE","Chrome","Firefox","Facebook","EnvironmentHelper","minimumVersion","getBrowserName","getSafariBrowserVersion","major","minor","iOSVersionMatches","_uaParser","getUA","RegExp","osInformation","getOS","detectedOs","_getOsFallback","maxTouchPoints","browserName","getBrowser","_getBrowserNameFallback","bugfix","isSafariBrowserVersionAtLeast","Ubuntu","AndroidX86","Unknown","WebOS","Tizen","Other","_currentBrowserSupportsQuickJoinOnWeb","_screen","screen","_navigator","userLanguage","_os","_browser","knownInAppBrowsers","android","Chromium","Yandex","ios","SafariMobile","mac","windows","others","customUaParser","_quickJoinFlowSupportedBrowsers","ua_parser_js_1","getSupportedBrowsersDefault","currentBrowser","currentOs","supportedBrowsers","osKey","browserKey","getDeviceType","isQuickWebJoinSupported","getScreenResolution","getLanguage","platform","isSafariBrowserEligibleForMeetingGuestFlow","cloneArrayBuffer","typedArray","byteOffset","ecsDefaults","ProfileView","fontWeight","locals","ancestorElement","loginDomains","ssoLoginDomains","originCheckMap","iFrameReference","timeoutObj","originCheckHosts","eventRegistered","processing","logEnabled","_messageListener","_destroySilentLogin","_callCallback","_handleTimeout","_getFrameSource","qa","live","isSsoCompatible","debug","tokens","prop","originCheckPassed","ex","receivedState","attr","timestamp","domainMap","query","response_type","partner","_accept","_nc","_createQuery","attachEvent","callbackFunction","protocol","_validateSettings","frameBorder","getSkypetoken","getFullResponse","ProfileRestClient"],"mappings":"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","file":"js/meetings.b07a68b733e3e7a24025.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\t2: 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 = \"https://join.secure.skypeassets.com/static/14.444\";\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([\"3rxE\",0,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import config, { Config, CookieConfig } from '../BaseConfig';\r\n\r\nconst override: Partial = {\r\n};\r\n\r\n// Export here should mirror parent, so webpack can do his magic with alias\r\nexport { Config, CookieConfig };\r\nexport default { ...config, ...override };\r\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","import config from 'config';\r\nimport { OperatingSystems, os } from './EnvironmentHelper';\r\nimport { logger } from './LoggerHelper';\r\n\r\nexport const downloadSkype = (threadId?: string) => {\r\n return () => {\r\n logger.action({ name: 'download' });\r\n logger.sessionFinished({completionType: 'DownloadSkypeButton'});\r\n\r\n let url: string;\r\n if (os === OperatingSystems.Android) {\r\n url = config.urls.app.downloadAndroid(threadId);\r\n } else if (os === OperatingSystems.MacOS) {\r\n url = config.urls.app.downloadDesktop;\r\n } else {\r\n url = config.urls.app.download;\r\n }\r\n\r\n window.location.href = url;\r\n };\r\n};\r\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","\"use strict\";\r\n/**\r\n*\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* ECS Module\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AllowBackgroundFetchData_1 = require(\"./AllowBackgroundFetchData\");\r\nvar AppActiveData_1 = require(\"./AppActiveData\");\r\nvar Cache_1 = require(\"./Cache\");\r\nvar Config_1 = require(\"./Config\");\r\nvar Models = require(\"./Models\");\r\nexports.Models = Models;\r\nvar Scheduler_1 = require(\"./Scheduler\");\r\nvar SkypeTokenData_1 = require(\"./SkypeTokenData\");\r\nvar TelemetryManager_1 = require(\"./TelemetryManager\");\r\nvar EcsClient = /** @class */ (function () {\r\n function EcsClient() {\r\n this._allowBackgroundFetchData = new AllowBackgroundFetchData_1.default();\r\n this._appActiveData = new AppActiveData_1.default();\r\n this._config = new Config_1.default();\r\n this._cache = new Cache_1.default(this._config);\r\n this._skypeTokenData = new SkypeTokenData_1.default();\r\n this._telemetryManager = new TelemetryManager_1.default(this._cache);\r\n this._scheduler = new Scheduler_1.default(this._config, this._skypeTokenData, this._cache, this._appActiveData, this._allowBackgroundFetchData, this._telemetryManager);\r\n // Typescript 3.X has started inlining type requires for inferred type-only imports if the import isn't used elsewhere in the file\r\n // Older versions of typescript do not support this so specify it here for backwards definition file compatibility\r\n this.telemetryEventAdded = this._telemetryManager.telemetryEventAdded;\r\n this.configUpdated = this._cache.configUpdated;\r\n }\r\n EcsClient.prototype.initialize = function (config) {\r\n var _this = this;\r\n this._config.initialize(config);\r\n this._skypeTokenData.putSkypeTokenData(config.initialSkypeTokenData);\r\n this._appActiveData.putAppActive(config.initialAppActiveState);\r\n return this._cache.initialize().then(function () {\r\n _this._scheduler.initialize();\r\n });\r\n };\r\n EcsClient.prototype.getConfig = function () {\r\n return this._cache.getEcsConfig();\r\n };\r\n EcsClient.prototype.getConfigType = function () {\r\n var cacheConfig = this._cache.getEcsConfig();\r\n if (!cacheConfig) {\r\n return undefined;\r\n }\r\n return cacheConfig.configType;\r\n };\r\n EcsClient.prototype.requestUpdate = function () {\r\n this._scheduler.requestUpdate();\r\n };\r\n EcsClient.prototype.pause = function () {\r\n this._scheduler.pause();\r\n };\r\n EcsClient.prototype.resume = function () {\r\n this._scheduler.resume();\r\n };\r\n EcsClient.prototype.setAllowBackgroundFetch = function (allowBackgroundFetch) {\r\n this._allowBackgroundFetchData.putBackgroundFetchAllowed(allowBackgroundFetch);\r\n };\r\n EcsClient.prototype.useSkypeToken = function (skypeToken, skypeTokenExpiration) {\r\n this._skypeTokenData.putSkypeTokenData({ skypeToken: skypeToken, skypeTokenExpiration: skypeTokenExpiration });\r\n };\r\n EcsClient.prototype.setAppActive = function (active) {\r\n this._appActiveData.putAppActive(active);\r\n };\r\n EcsClient.prototype.setConfigsToFetch = function (types) {\r\n var _this = this;\r\n this._config.setConfigsToFetch(types);\r\n return this._cache.updateConfigsToFetch().then(function () {\r\n _this._scheduler.updateConfigsToFetch();\r\n });\r\n };\r\n EcsClient.prototype.setFetchTimeout = function (fetchTimeout) {\r\n this._config.setFetchTimeout(fetchTimeout);\r\n };\r\n return EcsClient;\r\n}());\r\nexports.default = EcsClient;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\n\r\nexport interface CaptchaSolution {\r\n solution: string; // \"dhjdprwgyn\",\r\n challengeId: string;\r\n azureRegion: string;\r\n}\r\n\r\nexport interface CaptchaProps {\r\n challengeId: string;\r\n challenge: string;\r\n azureRegion: string;\r\n onSolutionUpdated: (solutionValue: string) => void;\r\n}\r\n\r\nexport interface CaptchaState {\r\n currentSolution: string;\r\n}\r\n\r\nexport class Captcha extends React.PureComponent {\r\n private challenge: string;\r\n constructor(props: CaptchaProps) {\r\n super(props);\r\n this.state = {\r\n currentSolution: '',\r\n };\r\n this.challenge = props.challenge;\r\n }\r\n\r\n render() {\r\n return <>\r\n { (ariaContext) =>\r\n
{\r\n ariaContext.announce({ assertive: true, text: localizer.getString('Common.a11y_announce_captcha') });\r\n } }>\r\n \r\n \r\n
\r\n
\r\n }
\r\n ;\r\n }\r\n\r\n private onSolutionUpdated = (event: React.ChangeEvent) => {\r\n const newValue = event.target.value;\r\n if (newValue !== this.state.currentSolution) {\r\n this.setState({\r\n currentSolution: newValue,\r\n });\r\n this.props.onSolutionUpdated(newValue);\r\n }\r\n }\r\n}\r\n","\"use strict\";\r\n/**\r\n* TelemetryEvents.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* All the ECS client telemetry events\r\n*/\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TelemetryEventBase_1 = require(\"./TelemetryEventBase\");\r\nvar EcsConfigFetchResponse = /** @class */ (function (_super) {\r\n __extends(EcsConfigFetchResponse, _super);\r\n function EcsConfigFetchResponse(_responseTime, _responseCode, _fetchAttempts, _hasValidToken, _serverEndpoint, _etag, _fetchDurationValid, _cacheAvailable, _responseSize, _configAge, _configExpired, _fetchStart, _fetchEnd) {\r\n var _this = _super.call(this) || this;\r\n _this._responseTime = _responseTime;\r\n _this._responseCode = _responseCode;\r\n _this._fetchAttempts = _fetchAttempts;\r\n _this._hasValidToken = _hasValidToken;\r\n _this._serverEndpoint = _serverEndpoint;\r\n _this._etag = _etag;\r\n _this._fetchDurationValid = _fetchDurationValid;\r\n _this._cacheAvailable = _cacheAvailable;\r\n _this._responseSize = _responseSize;\r\n _this._configAge = _configAge;\r\n _this._configExpired = _configExpired;\r\n _this._fetchStart = _fetchStart;\r\n _this._fetchEnd = _fetchEnd;\r\n return _this;\r\n }\r\n EcsConfigFetchResponse.prototype.getEventName = function () {\r\n return 'ecs_tsclient_fetch_config';\r\n };\r\n EcsConfigFetchResponse.prototype.getAttributes = function () {\r\n var attributes = _super.prototype.getAttributes.call(this);\r\n attributes['fetch_delay_ms'] = this._responseTime;\r\n attributes['fetch_response_code'] = this._responseCode;\r\n attributes['fetch_attempts'] = this._fetchAttempts;\r\n attributes['authenticated_user'] = this._hasValidToken;\r\n attributes['url'] = this._serverEndpoint;\r\n attributes['fetched_etag'] = this._etag;\r\n attributes['fetch_duration_valid'] = this._fetchDurationValid;\r\n attributes['cache_available'] = this._cacheAvailable;\r\n attributes['response_size'] = this._responseSize;\r\n attributes['config_age'] = this._configAge;\r\n attributes['config_expired'] = this._configExpired;\r\n attributes['fetch_start'] = this._fetchStart;\r\n attributes['fetch_end'] = this._fetchEnd;\r\n return attributes;\r\n };\r\n return EcsConfigFetchResponse;\r\n}(TelemetryEventBase_1.TelemetryEventBase));\r\nexports.EcsConfigFetchResponse = EcsConfigFetchResponse;\r\n","import config from 'config';\r\nimport { Actions } from 'src/ts/models/SharedTypes';\r\nimport { isIOSInAppBrowserFlow, OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { ConversationServiceModel } from '../../models/ConversationServiceModel';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface LauncherProps {\r\n conversation: ConversationServiceModel;\r\n}\r\n\r\nexport class Launcher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n const conv = this.props.conversation;\r\n const sessionId = logger.getCorrelationId();\r\n\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.launcher.intentUri(\r\n conv.action.toLowerCase() as Actions,\r\n conv.resource,\r\n sessionId,\r\n 'launcher',\r\n config.urls.app.downloadAndroid(conv.resource));\r\n } else if (isIOSInAppBrowserFlow && conv.shortId) {\r\n return config.urls.launcher.universalUri(conv.shortId, sessionId);\r\n }\r\n\r\n return config.urls.launcher.skypeUri(conv.action.toLowerCase() as Actions, conv.resource, sessionId, 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'join';\r\n }\r\n}\r\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { logger, SilentLoginStatus } from './LoggerHelper';\r\n\r\nexport interface SilentLoginResult {\r\n skypetoken: string;\r\n expiration: number;\r\n}\r\n\r\nexport const silentLoginAsync = () => {\r\n const initLogin = (): SyncTasks.Promise => {\r\n\r\n const silentLogin = (window as any).SKYPE.login.Silent;\r\n const deferral = SyncTasks.Defer();\r\n\r\n silentLogin.init(config.silentLogin)\r\n .setCallback((response: any) => {\r\n if (response && response.skypetoken) {\r\n deferral.resolve({ skypetoken: response.skypetoken, expiration: response.expires_in });\r\n return;\r\n }\r\n if (response && response.error) {\r\n deferral.reject({ error: response.error, errorDescription: response.error_description || '' });\r\n return;\r\n }\r\n deferral.reject();\r\n })\r\n .load();\r\n\r\n return deferral.promise();\r\n };\r\n\r\n const startTime = new Date().getTime();\r\n\r\n return initLogin()\r\n .done(() => logger.silentLogin({ status: SilentLoginStatus.Success, duration: new Date().getTime() - startTime }))\r\n .fail((response) => logger.silentLogin({\r\n status: SilentLoginStatus.Fail,\r\n duration: new Date().getTime() - startTime,\r\n error: response.error,\r\n errorDescription: response.errorDescription,\r\n }));\r\n};\r\n","import { AWTEventPriority, AWTEventProperties, AWTLogger, AWTLogManager, AWTPiiKind, AWTPropertyType } from '@aria/webjs-sdk';\r\nimport Config from 'config';\r\nimport { Dictionary } from '../models/SharedTypes';\r\nimport { getDiffInMS } from './DateHelper';\r\nimport { browser, deviceType, os } from './EnvironmentHelper';\r\nimport { getMsaCidHexFromSkypeToken, getSkypeIdFromSkypeToken } from './SkypeTokenHelper';\r\nimport { UrlHelper } from './UrlHelper';\r\n\r\nexport interface NetworkEvent {\r\n host: string;\r\n path: string;\r\n url: string;\r\n method: string;\r\n statusCode: number;\r\n statusText?: string;\r\n responseTime: number;\r\n custom?: any;\r\n}\r\n\r\nexport type NavigationEventType = 'push' | 'pop';\r\nexport interface NavigationEvent {\r\n view: string;\r\n type: NavigationEventType;\r\n isRoot: boolean;\r\n}\r\n\r\nexport interface SessionStartedEvent {\r\n useUnifiedView: boolean;\r\n wasPreLoggedin: boolean;\r\n}\r\n\r\nexport interface SessionFinishedEvent {\r\n useUnifiedView?: boolean;\r\n sessionDurationInMs?: number;\r\n completionType: string;\r\n wasLoggedIn?: boolean;\r\n}\r\n\r\nexport interface SessionIntermediateEvent {\r\n useUnifiedView?: boolean;\r\n wasLoggedIn?: boolean;\r\n eventType: string;\r\n}\r\n\r\nexport interface ActionEvent {\r\n name: string;\r\n}\r\n\r\nexport enum SilentLoginStatus {\r\n Success = 'success',\r\n Fail = 'fail',\r\n}\r\nexport interface SilentLoginEvent {\r\n status: SilentLoginStatus;\r\n duration: number;\r\n error?: string;\r\n errorDescription?: string;\r\n}\r\n\r\nexport interface FallbackFlowEvent {\r\n message: string;\r\n reason: string;\r\n}\r\n\r\nconst defaultPrefix = 'ui_';\r\n\r\nexport enum CommonProperty {\r\n SkypeId = 'UserInfo.SkypeId',\r\n ThreadId = 'Meeting.ThreadId',\r\n ShortId = 'Meeting.ShortId',\r\n InviteSkypeId = 'Invite.SkypeId',\r\n BotId = 'Bot.BotId',\r\n EntryPoint = 'Page.EntryPoint',\r\n CorrelationId = 'Page.CorrelationId',\r\n Source = 'Page.Source',\r\n Profile = 'Profile.SkypeId',\r\n IsLoggedIn = 'UserInfo.IsLoggedIn',\r\n UserId = 'UserInfo.Id',\r\n MsaCidHex = 'MSACIDHEX',\r\n IsUnsupportedPlatformOrBrowser = 'IsUnsupportedPlatformOrBrowser',\r\n}\r\n\r\nexport interface Property {\r\n key: CommonProperty;\r\n value: string | number | boolean | Date;\r\n piiKind?: AWTPiiKind;\r\n type?: AWTPropertyType;\r\n}\r\n\r\nclass LoggerHelper {\r\n private _logger: AWTLogger = AWTLogManager.getLogger();\r\n private _commonProperties: Dictionary = {};\r\n private _sessionStartDate: Date = new Date();\r\n private _wasLoggedIn: boolean = false;\r\n private _wasUnifiedView: boolean = false;\r\n private _prefix: string = defaultPrefix;\r\n\r\n init(ariaTenantId = Config.logging.ariaTenant, prefix?: string) {\r\n if (prefix) {\r\n this._prefix = prefix;\r\n }\r\n\r\n AWTLogManager.initialize(ariaTenantId, {\r\n canSendStatEvent: () => false,\r\n enableAutoUserSession: true,\r\n });\r\n\r\n window.onerror = this._onError;\r\n\r\n // Current implementation of the flushAndTeardown method has wrong context when used as callback\r\n // therefore asynchronous pending events would be lost, let's fix it\r\n window.removeEventListener('beforeunload', AWTLogManager.flushAndTeardown);\r\n window.addEventListener('beforeunload', AWTLogManager.flushAndTeardown.bind(AWTLogManager));\r\n }\r\n\r\n getSessionId = () => this._logger.getSessionId();\r\n\r\n public initCommonProperty(property: Property) {\r\n this._commonProperties[property.key] = property;\r\n }\r\n\r\n public addSkypeIdAndMsaCidHexCommonProperties(skypeToken: string | undefined, isGuest: boolean) {\r\n this.initCommonProperty({\r\n key: CommonProperty.UserId,\r\n value: getSkypeIdFromSkypeToken(skypeToken) || '',\r\n piiKind: isGuest ? AWTPiiKind.NotSet : AWTPiiKind.Identity, // guest skypeId is not considered PII as it's anonymous and valid for 24 hours\r\n type: AWTPropertyType.String,\r\n });\r\n\r\n this.initCommonProperty({\r\n key: CommonProperty.MsaCidHex,\r\n value: getMsaCidHexFromSkypeToken(skypeToken) || '',\r\n piiKind: AWTPiiKind.NotSet,\r\n type: AWTPropertyType.String,\r\n });\r\n }\r\n\r\n error = (event: Error, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'error', 'Error');\r\n }\r\n\r\n network = (event: NetworkEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'network_event', 'Network');\r\n }\r\n\r\n navigation = (event: NavigationEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'navigation', 'Navigation');\r\n }\r\n\r\n action = (event: ActionEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'action', 'Action');\r\n }\r\n\r\n silentLogin = (event: SilentLoginEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._log(event, priority, 'silent_login', 'SilentLogin');\r\n }\r\n\r\n sessionStarted = (event: SessionStartedEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n this._sessionStartDate = new Date();\r\n this._wasLoggedIn = event.wasPreLoggedin;\r\n this._wasUnifiedView = event.useUnifiedView;\r\n this._log(event, priority, 'session_started', 'SessionStarted');\r\n }\r\n\r\n sessionIntermediateStep = (event: SessionIntermediateEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n event.wasLoggedIn = event.wasLoggedIn === undefined ? this._wasLoggedIn : event.wasLoggedIn;\r\n event.useUnifiedView = this._wasUnifiedView;\r\n this._log(event, priority, 'session_intermediate', 'SessionIntermediateEvent');\r\n }\r\n\r\n sessionFinished = (event: SessionFinishedEvent, priority: AWTEventPriority = AWTEventPriority.Normal) => {\r\n event.sessionDurationInMs = getDiffInMS(this._sessionStartDate);\r\n event.wasLoggedIn = this._wasLoggedIn;\r\n event.useUnifiedView = this._wasUnifiedView;\r\n\r\n this._log(event, priority, 'session_finished', 'SessionFinished');\r\n }\r\n\r\n meetNowFallbackFlow = (event: FallbackFlowEvent) => {\r\n this._log(event, AWTEventPriority.Normal, 'fallback_flow_started', 'FallbackFlowStarted');\r\n }\r\n\r\n getCorrelationId = () => {\r\n const correlationIdFromQuery = UrlHelper.getQueryParameterAsString('correlationId');\r\n if (correlationIdFromQuery) {\r\n return correlationIdFromQuery;\r\n }\r\n\r\n return this.getSessionId();\r\n }\r\n\r\n private setName = (eventProperties: AWTEventProperties, name: string) => {\r\n eventProperties.setName(this._prefix + name);\r\n eventProperties.setType(name);\r\n }\r\n\r\n private setCommonProperties = (eventProperties: AWTEventProperties) => {\r\n Object.keys(this._commonProperties).forEach((key) => {\r\n const property = (this._commonProperties as any)[key] as Property;\r\n if (property.piiKind) {\r\n eventProperties.setPropertyWithPii(property.key, property.value, property.piiKind);\r\n } else {\r\n eventProperties.setProperty(property.key, property.value);\r\n }\r\n });\r\n eventProperties.setProperty('DeviceInfo.Custom.Os', os);\r\n eventProperties.setProperty('DeviceInfo.Custom.Browser', browser);\r\n eventProperties.setProperty('DeviceInfo.Custom.DeviceType', deviceType);\r\n eventProperties.setProperty('Config.Env', Config.env);\r\n eventProperties.setProperty('Source', UrlHelper.getQueryParameterAsString('source'));\r\n eventProperties.setProperty('Exp', UrlHelper.getQueryParameterAsString('exp'));\r\n eventProperties.setProperty('Call', UrlHelper.getQueryParameterAsString('call'));\r\n eventProperties.setProperty('Video', UrlHelper.getQueryParameterAsString('video'));\r\n eventProperties.setProperty('Mic', UrlHelper.getQueryParameterAsString('mic'));\r\n eventProperties.setProperty('CorrelationId', this.getCorrelationId());\r\n eventProperties.setProperty('session_id', this.getCorrelationId()); // this is used as an actor in Interana\r\n }\r\n\r\n private setProperties = (eventProperties: AWTEventProperties, properties: any, propertyPrefix: string) => {\r\n Object.keys(properties).forEach((property) => {\r\n if (typeof properties[property] === 'object' && properties[property]) {\r\n this.setProperties(eventProperties, properties[property], propertyPrefix + '.' + property);\r\n } else {\r\n eventProperties.setProperty(propertyPrefix + '.' + property, properties[property]);\r\n }\r\n });\r\n }\r\n\r\n private setPiiProperties = (eventProperties: AWTEventProperties, piiProperties: Property[], propertyPrefix: string) => {\r\n piiProperties.forEach((property: Property) => {\r\n eventProperties.setPropertyWithPii(propertyPrefix + '.' + property.key, property.value, property.piiKind || AWTPiiKind.NotSet, property.type);\r\n });\r\n }\r\n\r\n private _onError = (message: any, file: any, line: any, col: any, error: any) => {\r\n this._log({\r\n message,\r\n file,\r\n line,\r\n col,\r\n error,\r\n }, AWTEventPriority.Normal, 'js_onerror', 'Error');\r\n }\r\n\r\n private _log(event: any, priority: AWTEventPriority, name: string, propertyPrefix: string, piiProperties?: Property[]) {\r\n const eventProperties = new AWTEventProperties();\r\n eventProperties.setEventPriority(priority);\r\n this.setName(eventProperties, name);\r\n this.setCommonProperties(eventProperties);\r\n this.setProperties(eventProperties, event, propertyPrefix);\r\n\r\n if (piiProperties && Array.isArray(piiProperties)) {\r\n this.setPiiProperties(eventProperties, piiProperties, propertyPrefix);\r\n }\r\n\r\n this._logger.logEvent(eventProperties);\r\n }\r\n}\r\n\r\nexport const logger = new LoggerHelper();\r\n","import config from 'config';\r\nimport * as React from 'react';\r\nimport { DoContext, DoContextProvider } from 'src/ts/contexts/do/DoContext';\r\nimport { CookieHelper } from 'src/ts/helpers/CookieHelper';\r\nimport { displayableErrors } from 'src/ts/helpers/ErrorHelper';\r\nimport { Actions } from 'src/ts/models/SharedTypes';\r\nimport { AriaContextConsumer } from '../../contexts/AriaContext';\r\nimport { deviceType, DeviceTypes } from '../../helpers/EnvironmentHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport { UrlHelper } from '../../helpers/UrlHelper';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { DoView } from './DoView';\r\nimport { Launcher } from './Launcher';\r\n\r\nexport interface RootViewState {\r\n launcherKey: number;\r\n doContext: DoContext;\r\n error?: Error | undefined;\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n\r\n static getParamsFromUrl() {\r\n const { recipient, action, correlationId, source } = UrlHelper.getQueryParameters();\r\n\r\n logger.initCommonProperty({\r\n key: CommonProperty.Source,\r\n value: source as string,\r\n });\r\n logger.initCommonProperty({\r\n key: CommonProperty.CorrelationId,\r\n value: correlationId as string,\r\n });\r\n\r\n // S4L handle all of 'skype:8:myskypeid', 'skype:myskypeid', 'skype:19:mythreadid'\r\n // Thread will only work if '19:' prefix is provided.\r\n // Original spec does not say anything about ThreadId #564363, and also the page we are rewriting does not prepend '19:' suffix\r\n // Also, original implementation does not populate utm properties as specified in PBI. We also drop it because there is no handling on S4L level.\r\n return {\r\n skypeId: recipient,\r\n action: !action || action.toString().toLowerCase() === 'chat' ? Actions.Chat : Actions.Call,\r\n } as DoContext;\r\n }\r\n\r\n constructor(props: ARootViewProps) {\r\n super(props);\r\n this.state = {\r\n launcherKey: 0,\r\n doContext: RootView.getParamsFromUrl(),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const params = RootView.getParamsFromUrl();\r\n if (!params.action || !params.skypeId) {\r\n throw displayableErrors.Generic;\r\n }\r\n\r\n if (deviceType === DeviceTypes.Desktop) {\r\n logger.action({ name: 'join-do' });\r\n\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({ threadId: params.skypeId });\r\n window.location.assign(config.urls.app.login(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue));\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n return \r\n { !!this.state.launcherKey && }\r\n { (ariaContext) =>\r\n }\r\n initialViewProps={ { eventViewName: 'do-view' } } />\r\n }\r\n ;\r\n }\r\n\r\n private _onLaunchClick = () => {\r\n this.setState((oldState) => {\r\n return { launcherKey: oldState.launcherKey + 1 };\r\n });\r\n }\r\n}\r\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\n\r\nimport { App, EntryPoint } from './App';\r\nimport './app.less';\r\nimport { logger } from './helpers/LoggerHelper';\r\nimport { UrlHelper } from './helpers/UrlHelper';\r\nimport { Themes } from './models/SharedTypes';\r\n\r\nconst container = document.getElementById('launcherApp')!!!;\r\nconst htmlElement = document.getElementsByTagName('html')[0];\r\nconst language = htmlElement.lang;\r\nconst basePath = container.getAttribute('basePath')!!!;\r\nconst injectedEntryPoint = container.getAttribute('entryPoint');\r\nconst injectedSkypetoken = container.getAttribute('skypetoken');\r\nconst dataRegion = htmlElement.getAttribute('data-region') || undefined;\r\n\r\nconst entryPoint = (injectedEntryPoint && injectedEntryPoint !== '{ENTRYPOINT}') ? injectedEntryPoint as EntryPoint : EntryPoint.Meetings;\r\nconst skypetoken = (injectedSkypetoken && injectedSkypetoken !== '{SKYPETOKEN}') ? injectedSkypetoken : undefined;\r\n\r\nconst rawTheme = UrlHelper.getQueryParameter('theme') as any;\r\nlet theme: Themes | undefined;\r\nif (Object.values(Themes).includes(rawTheme)) {\r\n theme = rawTheme as Themes;\r\n}\r\n\r\nlogger.init();\r\nReactDOM.render(, container);\r\n","\"use strict\";\r\n/**\r\n* AppActiveData.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Holder for App Active (foreground/background) information\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SyncTasks = require(\"synctasks\");\r\nvar AppActiveData = /** @class */ (function () {\r\n function AppActiveData() {\r\n this._isActive = false;\r\n }\r\n AppActiveData.prototype.putAppActive = function (isActive) {\r\n this._isActive = isActive;\r\n if (this.isAppActive() && this._appActiveDeferral) {\r\n var deferral = this._appActiveDeferral;\r\n this._appActiveDeferral = undefined;\r\n deferral.resolve(void 0);\r\n }\r\n };\r\n AppActiveData.prototype.isAppActive = function () {\r\n return this._isActive;\r\n };\r\n AppActiveData.prototype.waitForAppActive = function () {\r\n if (this.isAppActive()) {\r\n return SyncTasks.Resolved();\r\n }\r\n // Set up deferral to wait for app to become active\r\n if (!this._appActiveDeferral) {\r\n this._appActiveDeferral = SyncTasks.Defer();\r\n }\r\n return this._appActiveDeferral.promise();\r\n };\r\n return AppActiveData;\r\n}());\r\nexports.default = AppActiveData;\r\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;","import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","export default '00000000-0000-0000-0000-000000000000';","import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;","import curry from 'lodash/curry';\r\nimport map from 'lodash/map';\r\n\r\nexport const doPostRedirect = (url: string, params: object) => {\r\n const form = buildForm(url, params);\r\n\r\n document.body.appendChild(form);\r\n form.submit();\r\n};\r\n\r\n/**\r\n * This helper is not using React to render the \"utility form\" because on Meet Now Edge page, React is not included in the package.\r\n *\r\n * @param url\r\n * @param params\r\n */\r\nexport const buildForm = (url: string, params: object): HTMLFormElement => {\r\n const form = document.createElement('form');\r\n form.method = 'POST';\r\n form.style.display = 'none';\r\n form.action = url;\r\n\r\n addParameters(form, params);\r\n\r\n return form;\r\n};\r\n\r\nexport const addParameters = (form: HTMLFormElement, params: object) => {\r\n map(params, addParameter(form));\r\n};\r\n\r\nexport const addParameter = curry((form: HTMLFormElement, value: string, key: string) => {\r\n const input = document.createElement('input');\r\n input.type = 'hidden';\r\n input.name = key;\r\n input.value = value;\r\n\r\n form.appendChild(input);\r\n});\r\n","import * as React from 'react';\r\n\r\nexport class Padder extends React.PureComponent {\r\n\r\n render() {\r\n return
;\r\n }\r\n}\r\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","import * as React from 'react';\r\nimport { AriaContext } from 'src/ts/contexts/AriaContext';\r\nimport { logger, NavigationEventType } from 'src/ts/helpers/LoggerHelper';\r\nimport { Dimension, mainContentId } from 'src/ts/models/SharedTypes';\r\nimport {\r\n AnimationType, defaultStackViewProperties, StackAnimation, StackNavigationContext,\r\n StackNavigationContextProvider, StackView, StackViewProperties, ViewType,\r\n} from '../../contexts/StackNavigationContext';\r\nimport { ARootViewProps } from './ARootView';\r\nimport { LoadingView } from './LoadingView';\r\n\r\nexport interface StackNavigationProps extends ARootViewProps {\r\n ariaContext: AriaContext;\r\n loading?: boolean;\r\n parentContext?: StackNavigationContext;\r\n readonly initialView: React.ReactNode;\r\n readonly initialViewProps?: Partial;\r\n onDimensionUpdate?: (dimension: Dimension) => void;\r\n}\r\n\r\nexport interface StackNavigationState extends StackNavigationContext {\r\n mainContentId?: string;\r\n}\r\n\r\nexport class StackNavigationView extends React.PureComponent {\r\n constructor(props: StackNavigationProps) {\r\n super(props);\r\n\r\n this.state = {\r\n animating: false,\r\n views: [{ view: props.initialView, properties: { ...defaultStackViewProperties, ...props.initialViewProps } }],\r\n push: this._push,\r\n pop: this._pop,\r\n pushRoot: props.parentContext ? props.parentContext.pushRoot : this._push,\r\n popRoot: props.parentContext ? props.parentContext.popRoot : this._pop,\r\n pushParent: props.parentContext ? props.parentContext.push : this._push,\r\n popParent: props.parentContext ? props.parentContext.pop : this._pop,\r\n mainContentId: props.parentContext ? undefined : mainContentId,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._track('push');\r\n }\r\n\r\n componentWillUnmount() {\r\n this._track('pop');\r\n }\r\n\r\n render() {\r\n return \r\n { this.props.loading ? : this.renderViews() }\r\n ;\r\n }\r\n\r\n private _track = (type: NavigationEventType) => {\r\n const views = this.state.views;\r\n if (!views.length) {\r\n return;\r\n }\r\n\r\n const current = views[views.length - 1];\r\n if (current.properties.eventViewName) {\r\n logger.navigation({ view: current.properties.eventViewName, type, isRoot: !this.props.parentContext }, current.properties.eventPriority);\r\n }\r\n }\r\n\r\n private _push = (view: React.ReactNode, properties?: Partial) => {\r\n if (properties && properties.ariaMessage) {\r\n this.props.ariaContext.announce(properties.ariaMessage);\r\n }\r\n\r\n this.setState((prevState) => {\r\n if (prevState.animating) {\r\n return null;\r\n }\r\n\r\n const views = [...prevState.views];\r\n views.push({\r\n view,\r\n properties: { ...defaultStackViewProperties, ...properties },\r\n });\r\n\r\n let animating = false;\r\n if (properties && properties.animation && properties.animation.type !== AnimationType.None) {\r\n animating = true;\r\n setTimeout(() => {\r\n this.setState({ animating: false });\r\n }, properties.animation.duration * 1000);\r\n }\r\n\r\n return {\r\n views,\r\n animating,\r\n };\r\n }, () => this._track('push'));\r\n }\r\n\r\n private _pop = () => {\r\n this._track('pop');\r\n\r\n if (this.state.views.length > 1) {\r\n const previous = this.state.views[this.state.views.length - 2];\r\n if (previous.properties.ariaMessage) {\r\n this.props.ariaContext.announce(previous.properties.ariaMessage);\r\n }\r\n }\r\n\r\n this.setState((prevState, props) => {\r\n if (prevState.animating) {\r\n return null;\r\n }\r\n\r\n const views = [...prevState.views];\r\n if (!views.length) {\r\n return null;\r\n }\r\n\r\n let animating = false;\r\n const current = views[views.length - 1];\r\n const usedAnimation = current.properties.animation;\r\n\r\n if (current.properties.eventViewName) {\r\n logger.navigation({ view: current.properties.eventViewName, type: 'pop', isRoot: !props.parentContext });\r\n }\r\n if (usedAnimation.type === AnimationType.None) {\r\n views.pop();\r\n } else {\r\n animating = true;\r\n current.properties.animation = { ...usedAnimation, type: `${ usedAnimation.type }Out` as AnimationType };\r\n setTimeout(() => {\r\n animating = false;\r\n views.pop();\r\n this.setState({\r\n views,\r\n animating,\r\n });\r\n }, current.properties.animation.duration * 1000);\r\n }\r\n\r\n return {\r\n views,\r\n animating,\r\n };\r\n });\r\n }\r\n\r\n private _getAnimationStyle = (animation: StackAnimation, prev: boolean): React.CSSProperties => {\r\n switch (animation.type) {\r\n case AnimationType.Fade:\r\n return prev ?\r\n { animation: `stackFadeOut ${ animation.duration }s forwards` }\r\n : { animation: `stackFade ${ animation.duration }s forwards` };\r\n case AnimationType.FadeOut:\r\n return prev ?\r\n { animation: `stackFade ${ animation.duration }s forwards` }\r\n : { animation: `stackFadeOut ${ animation.duration }s forwards` };\r\n case AnimationType.Slide:\r\n return prev ?\r\n { animation: `stackFadeOut ${ animation.duration }s forwards, stackRightOut ${ animation.duration }s forwards` }\r\n : { animation: `stackFade ${ animation.duration }s forwards, stackLeft ${ animation.duration }s forwards` };\r\n case AnimationType.SlideOut:\r\n return prev ?\r\n { animation: `stackFade ${ animation.duration }s forwards, stackRight ${ animation.duration }s forwards` }\r\n : { animation: `stackFadeOut ${ animation.duration }s forwards, stackLeftOut ${ animation.duration }s forwards` };\r\n case AnimationType.None:\r\n return {};\r\n default:\r\n throw new Error('Not implemented yet');\r\n }\r\n }\r\n\r\n private renderPrevView = (current: StackView, prev: StackView, visible = true) => {\r\n const fullscreenClassName = !this.props.parentContext ? 'fullscreen' : 'nested';\r\n\r\n return
{ prev.view }
;\r\n }\r\n\r\n private renderCurrentView = (current: StackView) => {\r\n const fullscreenClassName = !this.props.parentContext ? 'fullscreen' : 'nested';\r\n\r\n return
{ current.view }
;\r\n }\r\n\r\n private renderViews = () => {\r\n if (!this.state.views.length) {\r\n return undefined;\r\n }\r\n\r\n const current = this.state.views[this.state.views.length - 1];\r\n let prev: StackView | undefined;\r\n for (let i = this.state.views.length - 1; i > 0; i--) {\r\n const candidate = this.state.views[i - 1];\r\n if (candidate.properties.type !== ViewType.Overlay) {\r\n prev = candidate;\r\n break;\r\n }\r\n }\r\n if (prev && this.state.animating) {\r\n return <>\r\n { this.renderPrevView(current, prev) }\r\n { this.renderCurrentView(current) }\r\n ;\r\n } else if (prev && current.properties.type === ViewType.Overlay) {\r\n // Modal should always be displayed on top of a screen, in order to keep the state and have a proper close animation\r\n // Visibility hidden prevent user from tabbing inside the 'prev' view\r\n return <>\r\n { this.renderPrevView(current, prev, false) }\r\n { this.renderCurrentView(current) }\r\n ;\r\n }\r\n\r\n return <>\r\n { this.renderCurrentView(current) }\r\n ;\r\n }\r\n}\r\n","import noop from 'lodash/noop';\r\nimport * as React from 'react';\r\nimport { DisplayableError } from '../helpers/ErrorHelper';\r\n\r\nexport interface ErrorContext {\r\n error: DisplayableError | undefined;\r\n setError: (error: DisplayableError) => void;\r\n clear: () => void;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({\r\n error: undefined,\r\n setError: noop,\r\n clear: noop,\r\n});\r\n\r\nexport const ErrorContextProvider = context.Provider;\r\n\r\nexport const ErrorContextConsumer = context.Consumer;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, Header } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { ConfigContext, ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { ErrorHelper } from '../../helpers/ErrorHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { mainContentId } from '../../models/SharedTypes';\r\nimport { ErrorDetails } from './ErrorDetails';\r\n\r\ninterface ErrorBoundaryState {\r\n error: Error | undefined;\r\n errorInfo: React.ErrorInfo | undefined;\r\n}\r\n\r\ninterface AlternativeItem {\r\n contentLocString: string;\r\n descriptonLocString: string;\r\n linkTextLocString: string;\r\n linkClickHandler: (config: ConfigContext) => void;\r\n}\r\n\r\nexport class ErrorBoundary extends React.PureComponent<{}, ErrorBoundaryState> {\r\n private readonly _alternatives: AlternativeItem[];\r\n\r\n constructor(props: {}) {\r\n super(props);\r\n\r\n this.state = {\r\n error: undefined,\r\n errorInfo: undefined,\r\n };\r\n\r\n this._alternatives = [\r\n {\r\n contentLocString: 'txt_helpBox_got_question',\r\n descriptonLocString: 'txt_helpBox_have_your_queries',\r\n linkTextLocString: 'txt_helpBox_see_faq',\r\n linkClickHandler: this._onFaqClick,\r\n },\r\n {\r\n contentLocString: 'txt_helpBox_explore_skype',\r\n descriptonLocString: 'txt_helpBox_have_your_queries',\r\n linkTextLocString: 'txt_helpBox_see_faq',\r\n linkClickHandler: this._onExploreClick,\r\n },\r\n {\r\n contentLocString: 'txt_helpBox_need_to_use_skype',\r\n descriptonLocString: 'txt_helpBox_download_on_device',\r\n linkTextLocString: 'txt_helpBox_get_the_app',\r\n linkClickHandler: this._onDownloadClick,\r\n },\r\n ];\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\r\n logger.error(error);\r\n\r\n this.setState({\r\n error,\r\n errorInfo,\r\n });\r\n\r\n if (ErrorHelper.isDisplayableError(error)) {\r\n document.title = localizer.getString(error.pageTitleLocString);\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n return
\r\n \r\n { this._renderAlternatives() }\r\n
;\r\n }\r\n\r\n return this.props.children;\r\n }\r\n\r\n private _renderAlternatives() {\r\n return
\r\n { this._alternatives.map((item, index) => this._renderAlternativeItem(item, index)) }\r\n
;\r\n }\r\n\r\n private _renderAlternativeItem(item: AlternativeItem, index: number) {\r\n return
\r\n \r\n \r\n { (configContext) => \r\n }\r\n \r\n
;\r\n }\r\n\r\n private _onFaqClick = (config: ConfigContext) => {\r\n window.location.href = config.urls.app.faq;\r\n }\r\n\r\n private _onExploreClick = (config: ConfigContext) => {\r\n window.location.href = config.urls.app.skypeCom;\r\n }\r\n\r\n private _onDownloadClick = (config: ConfigContext) => {\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.location.href = downloadUrl;\r\n }\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, ICSSInJSStyle, Input, Text } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport { EcsContext, EcsContextConsumer } from 'src/ts/contexts/EcsContext';\r\nimport HuddleApiClient from 'src/ts/rest/HuddleApiClient';\r\nimport MeetingsApiClient from 'src/ts/rest/MeetingsApiClient';\r\nimport { ErrorContext, ErrorContextConsumer } from '../../../contexts/ErrorContext';\r\nimport { MeetingContext, MeetingContextConsumer } from '../../../contexts/meetings/MeetingContext';\r\nimport { StackNavigationContext, StackNavigationContextConsumer } from '../../../contexts/StackNavigationContext';\r\nimport { DisplayableError, displayableErrors, ErrorHelper } from '../../../helpers/ErrorHelper';\r\nimport { logger } from '../../../helpers/LoggerHelper';\r\nimport { GuestJoinPayloadMeetingsApiWithCaptcha } from '../../../models/GuestJoinPayloadMeetingsApiWithCaptcha';\r\nimport { Captcha, CaptchaSolution } from '../../common/Captcha';\r\nimport { Spinner } from '../../common/Spinner';\r\nimport { GuestRedirect } from './GuestRedirect';\r\n\r\ninterface GuestLoginState {\r\n guestName: string;\r\n joinButtonEnabled: boolean;\r\n joinButtonSpinEnabled: boolean;\r\n captchaState: CaptchaState;\r\n captchaPayload: CaptchaPayload | undefined;\r\n error?: Error;\r\n ecsContext: EcsContext;\r\n}\r\n\r\ninterface CaptchaState {\r\n show: boolean;\r\n ready: boolean;\r\n error?: string;\r\n}\r\n\r\ninterface CaptchaPayload {\r\n challenge: string;\r\n challengeId: string;\r\n azureRegion: string;\r\n}\r\n\r\ninterface JoinAsGuestBaseParams {\r\n meetingContext: MeetingContext;\r\n stackNavigationContext: StackNavigationContext;\r\n errorContext: ErrorContext;\r\n}\r\n\r\ninterface JoinAsGuestParams extends JoinAsGuestBaseParams {\r\n ecsContext: EcsContext;\r\n}\r\n\r\ninterface JoinAsGuestMeetingsApiParams extends JoinAsGuestBaseParams {\r\n joinThread?: boolean;\r\n retries?: number;\r\n}\r\n\r\nconst maxGuestNameLength = 50;\r\nexport class GuestLogin extends React.PureComponent<{}, GuestLoginState> {\r\n private _captchaSolution?: CaptchaSolution;\r\n\r\n constructor(props: {}) {\r\n super(props);\r\n this.state = {\r\n guestName: '',\r\n joinButtonEnabled: false,\r\n joinButtonSpinEnabled: false,\r\n captchaPayload: undefined,\r\n captchaState: {\r\n show: false,\r\n ready: false,\r\n },\r\n ecsContext: {\r\n settings: {\r\n useMeetingsApi: false,\r\n useUnifiedView: false,\r\n useJoinThread: false,\r\n maxRetries: 0,\r\n },\r\n },\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n delete this._captchaSolution;\r\n }\r\n\r\n componentDidUpdate(_prevProps: {}, prevState: GuestLoginState) {\r\n if (prevState.captchaState.show && !this.state.captchaState.show) {\r\n delete this._captchaSolution;\r\n }\r\n }\r\n\r\n render() {\r\n return
\r\n { this._renderTitle() }\r\n { this._renderExpirationWarning() }\r\n { this._renderInput() }\r\n { this.state.captchaState.show && this.state.captchaPayload &&\r\n }\r\n { this.state.captchaState.show && !this.state.captchaState.ready &&
\r\n
\r\n
\r\n
\r\n
}\r\n { this.state.captchaState.error && * { this.state.captchaState.error } }\r\n\r\n
\r\n { (stackNavigationContext) =>\r\n <>\r\n { (ecsContext) =>\r\n { (errorContext) =>\r\n { (meetingContext) => meetingContext && meetingContext.conversation &&\r\n <>\r\n { this._renderTosAndPrivacy() }\r\n \r\n \r\n }\r\n }\r\n }\r\n \r\n \r\n }\r\n
\r\n ;\r\n }\r\n\r\n private _renderTitle() {\r\n return \r\n { localizer.getString('Login.btn_join_as_guest') }\r\n ;\r\n }\r\n\r\n private _renderExpirationWarning() {\r\n return (\r\n
\r\n { (ecsContext) =>\r\n ecsContext.settings.useUnifiedView ? \r\n { localizer.getString('Login.txt_guest_account_expiration') }\r\n : <>\r\n }\r\n
);\r\n }\r\n\r\n private _renderInput() {\r\n const styles: ICSSInJSStyle = {\r\n fontSize: '1rem',\r\n marginTop: '2rem',\r\n marginBottom: '1rem',\r\n };\r\n return ;\r\n }\r\n\r\n private _renderTosAndPrivacy() {\r\n const styles: ICSSInJSStyle = {\r\n fontSize: '0.75rem',\r\n marginBottom: '1rem',\r\n textAlign: 'center',\r\n };\r\n return \r\n { localizer.get('txt_launch_guest_accept_tos', {\r\n linkPrivacy: { type: 'a', href: 'https://go.microsoft.com/fwlink/?LinkId=521839' },\r\n linkTerms: { type: 'a', href: 'https://go.microsoft.com/fwlink/?LinkID=246338' },\r\n }) }\r\n ;\r\n }\r\n\r\n private _updateGuestName = (event: React.ChangeEvent) => {\r\n if (event.target.value && event.target.value.length > maxGuestNameLength) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n guestName: event.target.value,\r\n joinButtonEnabled: !!event.target.value && event.target.value.length > 0,\r\n });\r\n }\r\n\r\n private _createGuest = (stackNavigationContext: StackNavigationContext, meetingContext: MeetingContext, errorContext: ErrorContext, ecsContext: EcsContext) => {\r\n return (e: React.MouseEvent) => {\r\n const joinParams: JoinAsGuestParams = {\r\n stackNavigationContext,\r\n meetingContext,\r\n errorContext,\r\n ecsContext,\r\n };\r\n\r\n logger.action({ name: 'create-guest' });\r\n this.setState({ joinButtonEnabled: false, joinButtonSpinEnabled: true });\r\n\r\n if (this.state.captchaState.show && this._captchaSolution) {\r\n this._joinAsGuest(joinParams);\r\n } else {\r\n this._joinAsGuest(joinParams);\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n }\r\n\r\n private _joinAsGuest = (params: JoinAsGuestParams) => {\r\n const { ecsContext, ...joinParams } = params;\r\n const ecsSettings = ecsContext.settings;\r\n\r\n logger.sessionFinished({completionType: 'JoinOnWebAsGuest'});\r\n\r\n return ecsSettings.useMeetingsApi ?\r\n this.joinAsGuestMeetingsApi({\r\n ...joinParams,\r\n retries: ecsSettings.maxRetries,\r\n joinThread: ecsSettings.useJoinThread,\r\n }) :\r\n this.joinAsGuestHuddleApi(joinParams);\r\n }\r\n\r\n private joinAsGuestHuddleApi = (params: JoinAsGuestBaseParams) => {\r\n return HuddleApiClient.joinAsGuest({\r\n flowId: logger.getCorrelationId(),\r\n name: this.state.guestName,\r\n threadId: params.meetingContext.conversation.resource,\r\n }).then((guestUser) => {\r\n params.stackNavigationContext.push(\r\n ,\r\n { eventViewName: 'guest-redirect' },\r\n );\r\n }).catch((response: WebErrorResponse) => {\r\n this.setState((oldState) => {\r\n const newState: GuestLoginState = { ...oldState, joinButtonSpinEnabled: false, joinButtonEnabled: true };\r\n\r\n const createGuestRequest = 'Create guest user';\r\n let error: DisplayableError | undefined;\r\n switch (response.statusCode) {\r\n case 405:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.JoinDisabled, response, createGuestRequest);\r\n break;\r\n case 429:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 412:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 500:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Generic, response, createGuestRequest);\r\n break;\r\n default:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Busy, response, createGuestRequest);\r\n break;\r\n }\r\n if (error) {\r\n params.errorContext.setError(error);\r\n logger.error(error);\r\n }\r\n\r\n return newState;\r\n });\r\n\r\n });\r\n }\r\n\r\n private joinAsGuestMeetingsApi = (params: JoinAsGuestMeetingsApiParams) => {\r\n return MeetingsApiClient.joinAsGuest({\r\n flowId: logger.getCorrelationId(),\r\n displayName: this.state.guestName,\r\n threadId: params.meetingContext.conversation.resource,\r\n shortId: params.meetingContext.shortId,\r\n },\r\n params.retries,\r\n params.joinThread,\r\n this._captchaSolution,\r\n () => ({ includesCaptcha: !!this._captchaSolution }))\r\n .then((guestUser) => {\r\n params.stackNavigationContext.push(\r\n ,\r\n { eventViewName: 'guest-redirect' },\r\n );\r\n }).catch((response: WebErrorResponse) => {\r\n this.setState((oldState) => {\r\n const newState: GuestLoginState = { ...oldState, joinButtonSpinEnabled: false, joinButtonEnabled: true };\r\n\r\n const createGuestRequest = 'Create guest user';\r\n let error: DisplayableError | undefined;\r\n this._captchaSolution = undefined;\r\n switch (response.statusCode) {\r\n case 403:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.JoinDisabled, response, createGuestRequest);\r\n break;\r\n case 404:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.InviteNotFound, response, createGuestRequest);\r\n break;\r\n case 412: // @todo review all response codes\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 429:\r\n newState.joinButtonEnabled = false;\r\n newState.captchaState = {\r\n ready: true,\r\n show: true,\r\n };\r\n newState.captchaPayload = {\r\n challenge: response.body.challenge,\r\n challengeId: response.body.challengeId,\r\n azureRegion: response.body.azureRegion,\r\n };\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 500:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Generic, response, createGuestRequest);\r\n break;\r\n default:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Busy, response, createGuestRequest);\r\n break;\r\n }\r\n if (error) {\r\n params.errorContext.setError(error);\r\n logger.error(error);\r\n }\r\n\r\n return newState;\r\n });\r\n });\r\n }\r\n\r\n private _onCaptchaSolutionUpdated = (solutionValue: string) => {\r\n if (solutionValue && this.state.captchaPayload) {\r\n if (this._captchaSolution) {\r\n this._captchaSolution.solution = solutionValue;\r\n } else {\r\n this._captchaSolution = {\r\n solution: solutionValue,\r\n challengeId: this.state.captchaPayload.challengeId,\r\n azureRegion: this.state.captchaPayload.azureRegion,\r\n };\r\n }\r\n this.setState({\r\n joinButtonEnabled: true,\r\n });\r\n } else if (!solutionValue && this.state.joinButtonEnabled) {\r\n this.setState({\r\n joinButtonEnabled: false,\r\n });\r\n }\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { ConversationServiceModel } from '../../models/ConversationServiceModel';\r\n\r\nexport interface MeetingContext {\r\n conversation: ConversationServiceModel;\r\n shortId: string;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext(undefined);\r\n\r\nexport const MeetingContextProvider = context.Provider;\r\n\r\nexport const MeetingContextConsumer = context.Consumer;\r\n","import { Image, ProviderConsumer, ThemePrepared } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { Footer } from '../common/Footer';\r\nimport { NestedStackNavigationView } from '../common/NestedStackNavigationView';\r\nimport { LoginMethod } from './login/LoginMethod';\r\n\r\nexport class LoginView extends React.PureComponent {\r\n\r\n renderThemeAware = (theme: ThemePrepared) => {\r\n return
\r\n\r\n
\r\n { (configContext) =>\r\n \r\n }\r\n { (ariaContext) =>\r\n } initialViewProps={ { eventViewName: 'login-method' } } />\r\n }\r\n
\r\n\r\n
\r\n
;\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import EcsClient from '@skype/ecsclient';\r\nimport { EcsConfigType, EcsResponseBase } from '@skype/ecsclient/dist/Models';\r\nimport config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { STPromise } from 'synctasks';\r\nimport { v4 } from 'uuid';\r\nimport { EcsSettings, EcsSettings as EcsResponse } from '../contexts/EcsContext';\r\n\r\nexport interface EcsSettingsResponse extends EcsResponseBase {\r\n SWG_WebClient: EcsSettings;\r\n}\r\n\r\nclass EcsHelper {\r\n private static readonly deviceIdLocalStorageKey = 'mvt.device_id';\r\n private _ecsClient = new EcsClient();\r\n\r\n public loadConfig(\r\n skypetoken: string | undefined,\r\n expiration: number | undefined,\r\n callback: ((settings: EcsResponse) => void),\r\n fallback: EcsResponse): STPromise {\r\n return this._ecsClient.initialize({\r\n clientName: 'Launcher',\r\n clientVersion: '1.0.0.0', // @todo use version from build?\r\n configsToFetch: (!!skypetoken) ? [EcsConfigType.User] : [EcsConfigType.Default],\r\n hosts: [config.urls.ecs],\r\n initialAppActiveState: true,\r\n getEcsParameters: () => SyncTasks.Resolved({ clientId: EcsHelper.clientId}),\r\n initialSkypeTokenData: {\r\n skypeToken: skypetoken,\r\n skypeTokenExpiration: Date.now() + (expiration || 0),\r\n },\r\n }).then(() => {\r\n this._ecsClient.configUpdated.subscribe(() => {\r\n const response = this._ecsClient.getConfig();\r\n if (!!response && !!response.config) {\r\n callback(response.config.SWG_WebClient);\r\n } else {\r\n callback(fallback);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private static get clientId() {\r\n let deviceId;\r\n try {\r\n deviceId = localStorage.getItem(EcsHelper.deviceIdLocalStorageKey);\r\n } catch (e) {\r\n return '';\r\n }\r\n\r\n if (!deviceId) {\r\n deviceId = v4();\r\n try {\r\n localStorage.setItem(EcsHelper.deviceIdLocalStorageKey, deviceId);\r\n } catch (e) {\r\n return '';\r\n }\r\n }\r\n\r\n return deviceId;\r\n }\r\n}\r\n\r\nexport const ecsHelper = new EcsHelper();\r\n","import config from 'config';\r\nimport * as React from 'react';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport { EcsContextConsumer } from '../../../contexts/EcsContext';\r\nimport { MeetingContextConsumer } from '../../../contexts/meetings/MeetingContext';\r\nimport { CookieHelper } from '../../../helpers/CookieHelper';\r\nimport { getRedirectSubdomain } from '../../../helpers/SafariRedirectHelper';\r\n\r\nexport interface GuestRedirectProps {\r\n username: string;\r\n skypetoken: string;\r\n}\r\n\r\nexport class GuestRedirect extends React.PureComponent {\r\n\r\n render() {\r\n return { (meetingContext) => meetingContext && meetingContext.conversation &&\r\n { (ecsContext) =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n };\r\n }\r\n\r\n private _autoSubmit = (instance: HTMLFormElement | null) => {\r\n if (instance) {\r\n instance.submit();\r\n }\r\n }\r\n}\r\n","import { Actions } from '../models/SharedTypes';\r\n\r\nexport interface CookieConfig {\r\n name: string;\r\n key?: string;\r\n path?: string;\r\n maxAge?: number;\r\n domain?: string;\r\n}\r\n\r\nexport interface S4LParameters {\r\n threadId?: string;\r\n inviteId?: string;\r\n skypeId?: string;\r\n}\r\n\r\nexport interface Config {\r\n env: 'dev' | 'latest' | 'qa' | 'dogfood' | 'production';\r\n cookies: {\r\n skype: CookieConfig;\r\n csrf: CookieConfig;\r\n };\r\n silentLogin: {\r\n env: string;\r\n client_id: string;\r\n redirect_uri: string;\r\n };\r\n logging: {\r\n ariaTenant: string;\r\n };\r\n urls: {\r\n ecs: string,\r\n api: {\r\n profile: string;\r\n huddle: string;\r\n meetings: string;\r\n invite: string;\r\n captcha: (lang: string, flowId: string, rand: string) => string;\r\n }\r\n app: {\r\n faq: string;\r\n login: (redirectUri: string, state: string) => string;\r\n logout: (redirectUri: string, state: string) => string;\r\n s4lWeb: (params: S4LParameters, webSubDomain?: string) => string;\r\n botLogin: (botId: string, useBotLauncherQueryParam?: boolean) => string;\r\n download: string;\r\n downloadAndroid: (threadId?: string) => string;\r\n downloadDesktop: string; // Remove once we have access to goLink CMS, the first one should be enough\r\n cookiePolicy: string;\r\n skypeCom: string,\r\n join: string,\r\n },\r\n launcher: {\r\n skypeUri: (action: Actions, threadId: string, sessionId: string, origin: string) => string;\r\n intentUri: (action: Actions, threadId: string, sessionId: string, origin: string, fallbackUri: string) => string;\r\n universalUri: (shortId: string, sessionId: string) => string;\r\n },\r\n inviteLauncher: {\r\n skypeUri: (skypeId: string, sessionId: string, offSkypeInviteId: string, origin: string) => string;\r\n intentUri: (skypeId: string, sessionId: string, offSkypeInviteId: string, origin: string, fallbackUri: string) => string;\r\n },\r\n botLauncher: {\r\n skypeUri: (botId: string, sessionId: string, origin: string) => string;\r\n intentUri: (botId: string, sessionId: string, origin: string, fallbackUri: string) => string;\r\n },\r\n doLauncher: {\r\n skypeUri: (action: Actions, skypeId: string, sessionId: string, origin: string) => string;\r\n intentUri: (action: Actions, skypeId: string, sessionId: string, origin: string, fallbackUri: string) => string;\r\n },\r\n meetNowJoinLauncher: {\r\n skypeUri: (action: Actions, source: string, exp: string, call: string, video: string, mic: string, sessionId: string, origin: string) => string;\r\n intentUri: (action: Actions, source: string, exp: string, call: string, video: string, mic: string, sessionId: string, origin: string, fallbackUri: string) => string;\r\n },\r\n };\r\n}\r\n\r\nconst config: Config = {\r\n env: 'production',\r\n cookies: {\r\n skype: {\r\n name: 'SC',\r\n path: '/',\r\n maxAge: 3600 * 24 * 90, // 90 days\r\n domain: '.skype.com',\r\n },\r\n csrf: {\r\n name: 'x-csrf-token',\r\n },\r\n },\r\n logging: {\r\n ariaTenant: '36f18b389f2543c0b54bf5c5555e3587-e50b4ede-9173-4805-ab3a-7c8564e50b52-6674',\r\n },\r\n silentLogin: {\r\n env: 'live',\r\n client_id: '371752',\r\n redirect_uri: 'https://join.skype.com',\r\n },\r\n urls: {\r\n ecs: 'https://a.config.skype.com',\r\n api: {\r\n profile: 'https://profile.skype.com/profile',\r\n huddle: 'https://join.skype.com/api',\r\n meetings: 'https://api.join.skype.com',\r\n invite: 'https://inviteconnector.skype.com',\r\n captcha: (lang: string, flowId: string, rand: string) =>\r\n `https://client.hip.live.com/GetHIP/GetWLSPHIP0/WLSPHIP0?mkt=${ lang }&fid=${ flowId }&id=skypeguest&type=visual&rnd=${ rand }`,\r\n },\r\n app: {\r\n faq: 'https://go.skype.com/faq.invites',\r\n login: (redirectUri: string, state: string) =>\r\n `https://login.skype.com/login?client_id=578134&redirect_uri=${ encodeURIComponent(redirectUri) }&state=${ state }`,\r\n logout: (redirectUri: string, state: string) =>\r\n `https://login.skype.com/logout?client_id=578134&redirect_uri=${ encodeURIComponent(redirectUri) }&state=${ state }`,\r\n s4lWeb: (params, webSubDomain) => {\r\n const url = `https://${ !!webSubDomain ? `${ webSubDomain }.` : '' }web.skype.com`;\r\n if (params.threadId) {\r\n return `${ url }/${ params.threadId }`;\r\n }\r\n\r\n if (params.inviteId && params.skypeId) {\r\n return `${ url }/8:${ params.skypeId }?inviteId=${ params.inviteId }`;\r\n }\r\n\r\n return url;\r\n },\r\n botLogin: (botId: string, useBotLauncherQueryParam?: boolean) => {\r\n const loginUri = `https://login.skype.com/login?client_id=708557&redirect_uri=https%3A%2F%2Fjoin.skype.com%2Fbot%2F${ botId }`;\r\n if (useBotLauncherQueryParam) {\r\n return loginUri + '?botsLauncher=true';\r\n }\r\n\r\n return loginUri;\r\n },\r\n download: 'https://go.skype.com/spaces.getskype',\r\n downloadAndroid: (threadId?: string) =>\r\n `https://play.google.com/store/apps/details?id=com.skype.raider&referrer=${threadId && encodeURIComponent(\r\n `utm_source=invite&utm_thread=${threadId}`)}`,\r\n downloadDesktop: 'https://go.skype.com/download-skype/',\r\n cookiePolicy: 'https://go.skype.com/privacy',\r\n skypeCom: 'https://www.skype.com',\r\n join: 'https://join.skype.com',\r\n },\r\n launcher: {\r\n skypeUri: (action, threadId, sessionId, origin) => `skype:?${ action }&threadId=${ threadId }&correlationId=${ sessionId }&origin=${ origin }`,\r\n intentUri: (action, threadId, sessionId, origin, fallbackUri) =>\r\n `intent://?${ action }&threadId=${ threadId }&correlationId=${ sessionId }&origin=${ origin }`\r\n + `#Intent;scheme=skype;package=com.skype.raider;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n universalUri: (shortId, sessionId) => `https://www.skype.com/meetnow/${ shortId }?fallback=true&correlationId=${sessionId}`,\r\n },\r\n inviteLauncher: {\r\n skypeUri: (skypeId, sessionId, offSkypeInviteId, origin) =>\r\n `skype:${ skypeId }?chat&correlationId=${ sessionId }&utm_source=buddy&utm_content=${ offSkypeInviteId }&origin=${ origin }`,\r\n intentUri: (skypeId, sessionId, offSkypeInviteId, origin, fallbackUri) =>\r\n `intent://${ skypeId }?chat&correlationId=${ sessionId }&utm_source=buddy&utm_content=${ offSkypeInviteId }&origin=${ origin }`\r\n + `#Intent;scheme=skype;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n },\r\n botLauncher: {\r\n skypeUri: (botId, sessionId, origin) => `skype:${ botId }?chat&correlationId=${ sessionId }&origin=${ origin }`,\r\n intentUri: (botId, sessionId, origin, fallbackUri) =>\r\n `intent://${ botId }?chat&correlationId=${ sessionId }&origin=${ origin }#Intent;scheme=skype;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n },\r\n doLauncher: {\r\n skypeUri: (action, skypeId, sessionId, origin) =>\r\n `skype:${ skypeId }?${ action }&correlationId=${ sessionId }&origin=${ origin }`,\r\n intentUri: (action, skypeId, sessionId, origin, fallbackUri) =>\r\n `intent://${ skypeId }?${ action }&correlationId=${ sessionId }&origin=${ origin }`\r\n + `#Intent;scheme=skype;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n },\r\n meetNowJoinLauncher: {\r\n skypeUri: (action, source, exp, call, video, mic, sessionId, origin) =>\r\n `skype:?action=${ action }&source=${ source }&exp=${ exp }&correlationId=${ sessionId }&origin=${ origin }&call=${ call }&video=${ video}&mic=${ mic }`,\r\n intentUri: (action, source, exp, call, video, mic, sessionId, origin, fallbackUri) =>\r\n `intent://?action=${ action }&source=${ source }&exp=${ exp }&correlationId=${ sessionId }&origin=${ origin }&call=${ call }&video=${ video}&mic=${ mic }`\r\n + `#Intent;scheme=skype;package=com.skype.raider;S.browser_fallback_url=${ encodeURIComponent(fallbackUri) };end;`,\r\n },\r\n },\r\n};\r\n\r\nexport default config;\r\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","export interface Dictionary {\r\n [index: string]: T;\r\n}\r\n\r\nexport enum Themes {\r\n Teams = 'teams',\r\n Light = 'light',\r\n}\r\n\r\nexport enum AppIds {\r\n Meetings = 'wl',\r\n OffSkypeInvites = 'oi',\r\n}\r\n\r\nexport enum Actions {\r\n Chat = 'chat',\r\n Call = 'call',\r\n MeetNowJoin = 'meetnowjoin',\r\n}\r\n\r\nexport interface Dimension { width: number; height: number; }\r\nexport const defaultDimension: Dimension = { width: 0, height: 0 };\r\nexport const mainContentId = 'mainContent';\r\nexport const COUNTRY_CHINA = 'cn';\r\n","import { localizer } from '@skype/bew-localization';\r\n\r\nexport const loadTranslation = (language: string) => {\r\n localizer.initSync({\r\n locale: language,\r\n localizedTable: (window as any).I18NBUNDLE,\r\n fallback: 'en',\r\n fallbackTable: (window as any).I18NBUNDLE_FALLBACK || (window as any).I18NBUNDLE,\r\n });\r\n};\r\n","import * as React from 'react';\r\n\r\nimport { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Header, Image, Text } from '@stardust-ui/react';\r\nimport { BotsContextConsumer } from '../../contexts/bots/BotsContext';\r\nimport { ConfigContext, ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { BotInfoServiceModel } from '../../models/BotServiceModel';\r\n\r\nexport class BotInfo extends React.PureComponent {\r\n\r\n render() {\r\n return
\r\n \r\n { (botContext) => botContext &&\r\n <>\r\n \r\n { (configContext) => this._renderAvatar(configContext, botContext.botInfo) }\r\n \r\n { botContext.botInfo.isTrusted &&
\r\n \r\n { (configContext) =>\r\n }\r\n \r\n
\r\n }\r\n
\r\n
\r\n \r\n }\r\n \r\n
;\r\n }\r\n\r\n private _renderAvatar(configContext: ConfigContext, botInfo: BotInfoServiceModel) {\r\n const avatarImage = {\r\n src: botInfo.avatarUrl || `${ configContext.basePath }/images/avatar.jpg`,\r\n styles: { width: '100%', height: '100%', objectFit: 'cover' },\r\n };\r\n\r\n return
\r\n \r\n \r\n
;\r\n }\r\n}\r\n","import config from 'config';\r\nimport { ProfilesContext } from '../../contexts/profiles/ProfilesContext';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { Actions } from '../../models/SharedTypes';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface LauncherProps {\r\n profile: ProfilesContext;\r\n}\r\n\r\nexport class Launcher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.doLauncher.intentUri(Actions.Chat, this.props.profile.skypeId, logger.getCorrelationId(), 'launcher', config.urls.app.download);\r\n }\r\n return config.urls.doLauncher.skypeUri(Actions.Chat, this.props.profile.skypeId, logger.getCorrelationId(), 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'join-profile';\r\n }\r\n}\r\n","import { EcsSettings } from '../contexts/EcsContext';\r\nimport { isSafariBrowserEligibleForMeetingGuestFlow } from './EnvironmentHelper';\r\n\r\nexport const getRedirectSubdomain = (settings: EcsSettings): string | undefined => {\r\n if (settings.allowDesktopSafariGuestFlow && isSafariBrowserEligibleForMeetingGuestFlow) {\r\n return settings.webSubdomainForRedirect;\r\n }\r\n\r\n return undefined;\r\n};\r\n","import config from 'config';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface BotLauncherProps {\r\n botSkypeId: string;\r\n}\r\n\r\nexport class BotLauncher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n const sessionId = logger.getCorrelationId();\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.botLauncher.intentUri(this.props.botSkypeId, sessionId, 'launcher', config.urls.app.download);\r\n }\r\n return config.urls.botLauncher.skypeUri(this.props.botSkypeId, sessionId, 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'bot-launch';\r\n }\r\n}\r\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","import * as React from 'react';\r\n\r\nexport interface ARootViewProps {\r\n loading?: boolean;\r\n}\r\n\r\nexport abstract class ARootView

extends React.Component {\r\n protected mainContentId = 'mainContent';\r\n}\r\n","/**\n * SubscribableEvent.ts\n *\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT license.\n *\n * A simple strongly-typed pub/sub/fire eventing system.\n */\nvar SubscriptionToken = /** @class */ (function () {\n function SubscriptionToken(_event, _callback) {\n this._event = _event;\n this._callback = _callback;\n }\n SubscriptionToken.prototype.unsubscribe = function () {\n this._event.unsubscribe(this._callback);\n };\n return SubscriptionToken;\n}());\nexport { SubscriptionToken };\nvar SubscribableEvent = /** @class */ (function () {\n // By default, SubscribableEvent will fire to all subscribers regardless of any conditions.\n // If you enable allowStopPropagation, then a subscription callback can return a truthy response and it will halt further callbacks.\n function SubscribableEvent(_allowStopPropagation) {\n if (_allowStopPropagation === void 0) { _allowStopPropagation = false; }\n var _this = this;\n this._allowStopPropagation = _allowStopPropagation;\n this.fire = (function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // Keep reference to the original readonly array. We don't want to have it change while we're firing\n var subs = _this._subscribers;\n // Execute handlers in the reverse order in which they were registered.\n for (var i = subs.length - 1; i >= 0; i--) {\n var ret = subs[i].apply(null, args);\n if (_this._allowStopPropagation && !!ret) {\n // If the value was handled, early out.\n return true;\n }\n }\n return false;\n });\n this._subscribers = [];\n }\n SubscribableEvent.prototype.dispose = function () {\n this._subscribers = [];\n };\n SubscribableEvent.prototype.subscribe = function (callback) {\n this._subscribers = this._subscribers.concat(callback);\n return new SubscriptionToken(this, callback);\n };\n SubscribableEvent.prototype.unsubscribe = function (callback) {\n this._subscribers = this._subscribers.filter(function (value) { return value !== callback; });\n };\n return SubscribableEvent;\n}());\nexport default SubscribableEvent;\n","\"use strict\";\r\n/**\r\n* TelemetryEventBase.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Holds ECS client telemetry event base\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar TelemetryEventBase = /** @class */ (function () {\r\n function TelemetryEventBase() {\r\n }\r\n TelemetryEventBase.prototype.getAttributes = function () {\r\n var attributes = {\r\n 'Source': 'ecs_client'\r\n };\r\n return attributes;\r\n };\r\n return TelemetryEventBase;\r\n}());\r\nexports.TelemetryEventBase = TelemetryEventBase;\r\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { BotInfoServiceModel } from '../models/BotServiceModel';\r\nimport { ApiCallOptions, BaseRestClient } from './BaseRestClient';\r\n\r\nclass BotsRestClient extends BaseRestClient {\r\n getBotInfo(botId: string): SyncTasks.Promise {\r\n const basePath = '/v1/bots/info/';\r\n const options: ApiCallOptions = {\r\n eventProperties: {\r\n genericEventPath: basePath,\r\n },\r\n };\r\n\r\n return this.performApiGet(basePath + botId, options);\r\n }\r\n\r\n addBotToContacts(botId: string, skypetoken: string) {\r\n const basePath = '/v1/bots/add/';\r\n const options: ApiCallOptions = {\r\n headers: {\r\n 'X-Skypetoken': skypetoken,\r\n },\r\n eventProperties: {\r\n genericEventPath: basePath,\r\n },\r\n };\r\n\r\n return this.performApiPut(basePath + botId, {}, options);\r\n }\r\n}\r\n\r\nexport default new BotsRestClient(config.urls.api.huddle);\r\n","function t(t,e,n,r){return new(n||(n=Promise))(function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){t.done?o(t.value):new n(function(e){e(t.value)}).then(a,c)}u((r=r.apply(t,e||[])).next())})}function e(t,e){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(i){return function(c){return function(i){if(n)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]-1)return a('UA \"Edge\" => assuming success'),[2];if(x(document.body,n))return a(\"copyUsingTempSelection worked\"),[2];if(function(t){var e=document.createElement(\"div\");e.setAttribute(\"style\",\"-webkit-user-select: text !important\"),e.textContent=\"temporary element\",document.body.appendChild(e);var n=x(e,t);return document.body.removeChild(e),n}(n))return a(\"copyUsingTempElem worked\"),[2];if(void 0!==(t=n.getData(s))&&function(t){a(\"copyTextUsingDOM\");var e=document.createElement(\"div\");e.setAttribute(\"style\",\"-webkit-user-select: text !important\");var n=e;e.attachShadow&&(a(\"Using shadow DOM.\"),n=e.attachShadow({mode:\"open\"}));var r=document.createElement(\"span\");r.innerText=t,n.appendChild(r),document.body.appendChild(e),D(r);var o=document.execCommand(\"copy\");return E(),document.body.removeChild(e),o}(t))return a(\"copyTextUsingDOM worked\"),[2];throw new Error(\"Copy command failed.\")})})}function p(n){return t(this,void 0,void 0,function(){return e(this,function(t){return navigator.clipboard&&navigator.clipboard.writeText?(a(\"Using `navigator.clipboard.writeText()`.\"),[2,navigator.clipboard.writeText(n)]):[2,f(T(n))]})})}function v(){return t(this,void 0,void 0,function(){var t;return e(this,function(e){switch(e.label){case 0:return t=T,[4,h()];case 1:return[2,t.apply(void 0,[e.sent()])]}})})}function h(){return t(this,void 0,void 0,function(){return e(this,function(t){if(navigator.clipboard&&navigator.clipboard.readText)return a(\"Using `navigator.clipboard.readText()`.\"),[2,navigator.clipboard.readText()];if(C())return a(\"Reading text using IE strategy.\"),[2,k()];throw new Error(\"Read is not supported in your browser.\")})})}var b=!1;function m(){b||(c&&u('The deprecated default object of `clipboard-polyfill` was called. Please switch to `import * as clipboard from \"clipboard-polyfill\"` and see https://github.com/lgarron/clipboard-polyfill/issues/101 for more info.'),b=!0)}var w={DT:i,setDebugLog:function(t){return m(),l(t)},suppressWarnings:function(){return m(),d()},write:function(n){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,f(n)]})})},writeText:function(n){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,p(n)]})})},read:function(){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,v()]})})},readText:function(){return t(this,void 0,void 0,function(){return e(this,function(t){return m(),[2,h()]})})}},y=function(){this.success=!1};function g(t){var e=new y,n=function(t,e,n){a(\"listener called\"),t.success=!0,e.forEach(function(e,r){var o=n.clipboardData;o.setData(r,e),r===s&&o.getData(r)!==e&&(a(\"setting text/plain failed\"),t.success=!1)}),n.preventDefault()}.bind(this,e,t);document.addEventListener(\"copy\",n);try{document.execCommand(\"copy\")}finally{document.removeEventListener(\"copy\",n)}return e.success}function x(t,e){D(t);var n=g(e);return E(),n}function D(t){var e=document.getSelection();if(e){var n=document.createRange();n.selectNodeContents(t),e.removeAllRanges(),e.addRange(n)}}function E(){var t=document.getSelection();t&&t.removeAllRanges()}function T(t){var e=new i;return e.setData(s,t),e}function C(){return\"undefined\"==typeof ClipboardEvent&&void 0!==window.clipboardData&&void 0!==window.clipboardData.setData}function k(){return t(this,void 0,void 0,function(){var t;return e(this,function(e){if(\"\"===(t=window.clipboardData.getData(\"Text\")))throw new Error(\"Empty clipboard or could not read plain text from clipboard\");return[2,t]})})}export default w;export{i as DT,v as read,h as readText,l as setDebugLog,d as suppressWarnings,f as write,p as writeText};\n//# sourceMappingURL=clipboard-polyfill.esm.js.map\n","\"use strict\";\r\n/**\r\n* Cache.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* ECS data cache\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar subscribableevent_1 = require(\"subscribableevent\");\r\nvar SyncTasks = require(\"synctasks\");\r\nvar Models_1 = require(\"./Models\");\r\nvar Cache = /** @class */ (function () {\r\n function Cache(_config) {\r\n this._config = _config;\r\n this.configUpdated = new subscribableevent_1.default();\r\n this._cachedConfigs = {};\r\n // noop\r\n }\r\n Cache.prototype.initialize = function () {\r\n return this.updateConfigsToFetch();\r\n };\r\n Cache.prototype.updateConfigsToFetch = function () {\r\n var _this = this;\r\n var _a = this._config.getConfig(), databaseInterface = _a.databaseInterface, configsToFetch = _a.configsToFetch;\r\n // If we don't have DB support, we can't pre-populate any cache\r\n if (!databaseInterface) {\r\n return SyncTasks.Resolved();\r\n }\r\n var dbFetchPromises = [];\r\n var _loop_1 = function (configType) {\r\n // If we've already retrieved from the cache, don't fetch again\r\n if (this_1._cachedConfigs[configType]) {\r\n return \"continue\";\r\n }\r\n dbFetchPromises.push(databaseInterface.getData(configType).then(function (ecsConfig) {\r\n if (ecsConfig) {\r\n _this._cachedConfigs[configType] = ecsConfig;\r\n }\r\n }).catch(function () {\r\n // Return resolved no matter what happens\r\n return SyncTasks.Resolved();\r\n }));\r\n };\r\n var this_1 = this;\r\n for (var _i = 0, configsToFetch_1 = configsToFetch; _i < configsToFetch_1.length; _i++) {\r\n var configType = configsToFetch_1[_i];\r\n _loop_1(configType);\r\n }\r\n return SyncTasks.all(dbFetchPromises).then(function () {\r\n // If we fetched 1 or more configs, trigger a change\r\n if (dbFetchPromises.length > 0) {\r\n _this.configUpdated.fire();\r\n }\r\n });\r\n };\r\n Cache.prototype.getEcsConfig = function () {\r\n // Try user, then fallback to default\r\n return (this._cachedConfigs[Models_1.EcsConfigType.User] || this._cachedConfigs[Models_1.EcsConfigType.Default]);\r\n };\r\n Cache.prototype.getEcsConfigByType = function (configType) {\r\n return this._cachedConfigs[configType];\r\n };\r\n Cache.prototype.putConfig = function (ecsConfig) {\r\n // Store the config that we used before putting\r\n var oldEcsConfig = this.getEcsConfig();\r\n // Store new config\r\n this._cachedConfigs[ecsConfig.configType] = ecsConfig;\r\n var currentEcsConfig = this.getEcsConfig();\r\n // Only notify if the config of the same type changed or we've changed config types\r\n if (currentEcsConfig && currentEcsConfig.configType === ecsConfig.configType ||\r\n (oldEcsConfig && currentEcsConfig && oldEcsConfig.configType !== currentEcsConfig.configType)) {\r\n this.configUpdated.fire();\r\n }\r\n var databaseInterface = this._config.getConfig().databaseInterface;\r\n // If we don't have DB support, we can't pre-populate any cache\r\n if (!databaseInterface) {\r\n return SyncTasks.Resolved();\r\n }\r\n return databaseInterface.putData(ecsConfig.configType, ecsConfig);\r\n };\r\n return Cache;\r\n}());\r\nexports.default = Cache;\r\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","import { localizer } from '@skype/bew-localization';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { clipboardHelper } from '../../helpers/ClipboardHelper';\r\n\r\nexport interface JoinLinkProps {\r\n shortId: string;\r\n}\r\n\r\ninterface JoinLinkState {\r\n copied: boolean;\r\n}\r\n\r\nconst removeProtocol = (url: string): string => url.replace('https://', '');\r\n\r\nexport class JoinLink extends React.Component {\r\n constructor(props: JoinLinkProps) {\r\n super(props);\r\n\r\n this.state = {\r\n copied: false,\r\n };\r\n }\r\n\r\n componentDidUpdate() {\r\n if (!this.state.copied) {\r\n return;\r\n }\r\n\r\n setTimeout(() => this.setState({\r\n copied: false,\r\n }), 5000);\r\n }\r\n\r\n render() {\r\n const copied = this.state.copied;\r\n const joinLink = `${ config.urls.app.join }/${ this.props.shortId }`;\r\n const joinLinkClassName = `joinLink ${ copied ? 'copied' : '' }`;\r\n\r\n return (\r\n

\r\n { localizer.getString('txt_launch_universal_link_fallback') }\r\n\r\n
\r\n { removeProtocol(joinLink) }\r\n
\r\n\r\n { copied &&
\r\n { localizer.getString('txt_launch_link_copied') }\r\n
}\r\n
\r\n );\r\n }\r\n\r\n private _getClickHandler = (joinLink: string) => () => {\r\n clipboardHelper.copyToClipboard(joinLink);\r\n\r\n this.setState({\r\n copied: true,\r\n });\r\n }\r\n\r\n private _getKeyDownHandler = (joinLink: string) => (e: React.KeyboardEvent) => {\r\n if (13 !== e.keyCode) {\r\n return;\r\n }\r\n\r\n this._getClickHandler(joinLink)();\r\n }\r\n}\r\n","import { ErrorHandlingType, WebErrorResponse } from 'simplerestclients';\r\nimport { ConversationServiceModel, RawConversationServiceModel } from '../models/ConversationServiceModel';\r\n\r\ntype Transform = (model: RawConversationServiceModel) => ConversationServiceModel;\r\n\r\nfunction transform(model: RawConversationServiceModel): ConversationServiceModel {\r\n return {\r\n action: 'Chat',\r\n flowId: model.flowId,\r\n id: model.longId,\r\n resource: model.threadId,\r\n };\r\n}\r\n\r\nexport const transformWrapper = (shortId: string): Transform =>\r\n (model: RawConversationServiceModel): ConversationServiceModel => ({\r\n ...transform(model),\r\n shortId,\r\n });\r\n\r\nconst shouldRetry = (statusCode: number): boolean =>\r\n statusCode === 0 || (statusCode >= 500 && statusCode < 600);\r\n\r\n// @todo: add logging if needed\r\nexport const customErrorHandler = ({ }, errResp: WebErrorResponse): ErrorHandlingType =>\r\n shouldRetry(errResp.statusCode) ? ErrorHandlingType.RetryCountedWithBackoff : ErrorHandlingType.DoNotRetry;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Button, Header, Icon, Layout, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { ConfigContext, ConfigContextConsumer } from 'src/ts/contexts/ConfigContext';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes, isSafariBrowserEligibleForMeetingGuestFlow, OperatingSystems, os } from 'src/ts/helpers/EnvironmentHelper';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport { IMeetNowSettings } from 'src/ts/meetnow/MeetNowSettings';\r\nimport { handleJoin } from 'src/ts/meetnowJoin/JoinHandler';\r\nimport { EcsContextConsumer } from '../../../contexts/EcsContext';\r\nimport { MeetingContext, MeetingContextConsumer } from '../../../contexts/meetings/MeetingContext';\r\nimport { StackNavigationContext, StackNavigationContextConsumer } from '../../../contexts/StackNavigationContext';\r\nimport { UserContextConsumer } from '../../../contexts/UserContext';\r\nimport { CookieHelper } from '../../../helpers/CookieHelper';\r\nimport { getRedirectSubdomain } from '../../../helpers/SafariRedirectHelper';\r\nimport { UserProfile } from '../../../models/ProfileServiceModel';\r\nimport { COUNTRY_CHINA } from '../../../models/SharedTypes';\r\nimport { ErrorModal } from '../../common/ErrorModal';\r\nimport { GuestLogin } from './GuestLogin';\r\n\r\ninterface UnifiedLoginMethodProps {\r\n onLaunchClick: () => void;\r\n allowDesktopSafariGuestFlow: boolean;\r\n meetNowSettings: IMeetNowSettings;\r\n country?: string;\r\n}\r\n\r\ninterface UnifiedLoginMethodState {\r\n isMeetingRedirectInProgress: boolean;\r\n handleJoinError?: Error;\r\n}\r\n\r\nexport class UnifiedLoginMethod extends React.PureComponent {\r\n public readonly state: UnifiedLoginMethodState = { isMeetingRedirectInProgress: false };\r\n\r\n render() {\r\n return
\r\n { this._renderTitle() }\r\n { this._renderActions() }\r\n
;\r\n }\r\n\r\n private _renderTitle() {\r\n return { (userContext) =>\r\n
\r\n { userContext.profile ?\r\n localizer.getString('Login.txt_sign_in_with_title')\r\n :\r\n localizer.getString('Meetings.txt_join_meeting_title')\r\n }\r\n
\r\n }
;\r\n }\r\n\r\n private _renderActions() {\r\n return { (userContext) => {\r\n const canJoinOnWebWithSafariException = this._canJoinOnWebWithSafariException(!userContext.profile);\r\n\r\n return
\r\n
\r\n { canJoinOnWebWithSafariException ? (\r\n userContext.profile ?\r\n this._renderAuthenticatedActions(userContext.profile) :\r\n this._renderUnauthenticatedActions()\r\n ) : (\r\n <>\r\n { this.renderDownloadButton(!userContext.profile) }\r\n { this.renderDesktopBody(!userContext.profile) }\r\n \r\n ) }\r\n
\r\n { canJoinOnWebWithSafariException && this.renderDownloadButton(!userContext.profile) }\r\n { canJoinOnWebWithSafariException && this.renderDesktopBody(!userContext.profile) }\r\n {\r\n this.state.handleJoinError &&\r\n \r\n {\r\n (configContext) => this.state.handleJoinError && (\r\n {\r\n this.setState({\r\n handleJoinError: undefined,\r\n });\r\n }\r\n } />\r\n )\r\n }\r\n \r\n }\r\n
;\r\n }}
;\r\n }\r\n\r\n private renderDesktopBody = (isGuest: boolean) => {\r\n if (deviceType !== DeviceTypes.Desktop) {\r\n return null;\r\n }\r\n\r\n if (this._canJoinOnWebWithSafariException(isGuest)) {\r\n return (\r\n \r\n { localizer.getString('Meetings.txt_join_meeting_description') } \r\n { { localizer.getString('Meetings.lnk_join_meeting_retry') }\r\n }\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n { localizer.getString('Meetings.txt_join_meeting_description') }\r\n \r\n \r\n { localizer.getString('Meetings.lnk_join_meeting_retry') }\r\n \r\n \r\n );\r\n }\r\n\r\n private renderDownloadButton = (isGuest: boolean) => {\r\n if (this._canJoinOnWebWithSafariException(isGuest)) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n private downloadSkype = () => {\r\n logger.sessionFinished({completionType: 'DownloadSkypeButton'});\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.location.href = downloadUrl;\r\n }\r\n\r\n private _renderAuthenticatedActions(userProfile: UserProfile) {\r\n return { (meetingContext) => meetingContext &&\r\n <>\r\n { (configContext) =>\r\n this._renderAccounts(userProfile, meetingContext, configContext) }\r\n \r\n { this._renderWhatsThis() }\r\n \r\n };\r\n }\r\n\r\n private _renderAccounts(userProfile: UserProfile, meetingContext: MeetingContext, configContext: ConfigContext) {\r\n const email: string | undefined = userProfile.emails && userProfile.emails.length ?\r\n userProfile.emails[0] : undefined;\r\n const name: string = userProfile.firstname && userProfile.lastname ?\r\n `${ userProfile.firstname } ${ userProfile.lastname }` : userProfile.username;\r\n const avatarImage = {\r\n src: userProfile.avatarUrl || `${ configContext.basePath }/images/avatar.jpg`,\r\n styles: { width: '100%', height: '100%', objectFit: 'cover' },\r\n };\r\n\r\n const currentAccountAvatar = ;\r\n const currentAccountText = { name } }\r\n end={ { email } } />;\r\n const currentAccount = { (ecsContext) =>\r\n \r\n };\r\n\r\n const otherAccountIcon = ;\r\n const otherAccountText = { localizer.getString('Login.btn_use_other_account') } } />;\r\n const otherAccount = { (ecsContext) =>\r\n \r\n };\r\n\r\n return
\r\n \r\n
;\r\n }\r\n\r\n private _joinOnWebAsGuest = (stackNavigationContext: StackNavigationContext, meetingContext: MeetingContext) => {\r\n return () => {\r\n logger.action({ name: 'join-as-guest' });\r\n logger.sessionIntermediateStep({eventType: 'JoinOnWebAsGuestInitialClickUnifiedView'});\r\n\r\n if (canJoinOnWeb) {\r\n if (this.props.meetNowSettings) {\r\n this.setState({\r\n isMeetingRedirectInProgress: true,\r\n });\r\n\r\n handleJoin(this.props.meetNowSettings, {\r\n action: 'joinmeetnow',\r\n flowId: logger.getCorrelationId(),\r\n id: '',\r\n resource: meetingContext.conversation.resource,\r\n shortId: UrlHelper.getShortIdFromUrl(),\r\n }, undefined, true).then(() => {\r\n this.setState({\r\n isMeetingRedirectInProgress: false,\r\n });\r\n }).catch((err) => {\r\n logger.error(err);\r\n this.setState({\r\n isMeetingRedirectInProgress: false,\r\n handleJoinError: err,\r\n });\r\n });\r\n } else {\r\n logger.action({ name: 'join-as-guest-fallback' });\r\n stackNavigationContext.push(, { eventViewName: 'guest-login' });\r\n }\r\n } else {\r\n logger.action({ name: 'join-as-guest-fallback' });\r\n stackNavigationContext.push(, { eventViewName: 'guest-login' });\r\n }\r\n };\r\n }\r\n\r\n private _joinOnWebOtherAccount = (meetingContext: MeetingContext, webSubdomainForRedirect: string | undefined) => {\r\n return () => {\r\n logger.action({ name: 'join-logout' });\r\n logger.sessionFinished({completionType: 'JoinOnWebOtherAccount'});\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource }, webSubdomainForRedirect);\r\n window.location.href = config.urls.app.logout(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue);\r\n };\r\n }\r\n\r\n private _joinOnWeb = (meetingContext: MeetingContext, isUnauthenticatedFlow: boolean, webSubdomainForRedirect: string | undefined) => {\r\n return () => {\r\n logger.action({ name: 'join-login' });\r\n logger.sessionFinished({completionType: 'JoinOnWeb'});\r\n if (isUnauthenticatedFlow) {\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource }, webSubdomainForRedirect);\r\n window.location.href = config.urls.app.logout(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue);\r\n } else {\r\n window.location.assign(UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource }, webSubdomainForRedirect));\r\n }\r\n };\r\n }\r\n\r\n private _renderUnauthenticatedActions() {\r\n return <>\r\n {\r\n // Current text of the data processing statement is not compliant with China regulations\r\n // Until the final, compliant version is available, we have to remove the notice entirely\r\n // TODO: https://skype.visualstudio.com/SCC/_workitems/edit/3277977\r\n // this.props.country === COUNTRY_CHINA && this._renderDataProcessingStatement()\r\n }\r\n { (stackNavigationContext) =>\r\n { (meetingContext) => meetingContext &&\r\n \r\n }\r\n \r\n }\r\n {canJoinOnWeb && { (meetingContext) => meetingContext &&\r\n { (ecsContext) =>\r\n <>\r\n \r\n { this._renderWhatsThis() }\r\n \r\n }\r\n }}\r\n ;\r\n }\r\n\r\n private _renderWhatsThis() {\r\n return this._renderTextWithLink(\r\n 'help',\r\n localizer.getString('Login.txt_use_ms_account'),\r\n 'https://go.skype.com/help.password.faq.unifiedview',\r\n 'what-is-msa',\r\n localizer.getString('Login.lnk_a11y_what_is_ms_account'));\r\n }\r\n\r\n private _renderTextWithLink(className: string, text: string, linkUrl: string, linkClickTelemetryLoggerAction: string, label: string) {\r\n return \r\n { text }\r\n  \r\n logger.action({ name: linkClickTelemetryLoggerAction }) }\r\n target='_blank'\r\n style={ { color: '#0078d4' } }\r\n aria-label={ label } >\r\n { label }\r\n \r\n ;\r\n }\r\n\r\n private _canJoinOnWebWithSafariException = (isGuest: boolean): boolean => {\r\n if (this.props.allowDesktopSafariGuestFlow && isGuest && os === OperatingSystems.MacOS) {\r\n return canJoinOnWeb || isSafariBrowserEligibleForMeetingGuestFlow;\r\n }\r\n\r\n return canJoinOnWeb;\r\n }\r\n}\r\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","import { ThemeInput } from '@stardust-ui/react';\r\n\r\nconst theme: ThemeInput = {\r\n componentStyles: {\r\n Button: {\r\n root: {\r\n fontSize: '80%',\r\n height: '3.5rem',\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport default theme;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { AriaContextConsumer } from '../../contexts/AriaContext';\r\nimport { BotsContext, BotsContextProvider } from '../../contexts/bots/BotsContext';\r\nimport { UserContext, UserContextConsumer } from '../../contexts/UserContext';\r\nimport { displayableErrors, ErrorHelper } from '../../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport BotsRestClient from '../../rest/BotsRestClient';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { AddBotView } from './AddBotView';\r\n\r\nexport interface RootViewState {\r\n context?: BotsContext;\r\n error?: Error | undefined;\r\n isAddBotInProgress: boolean;\r\n}\r\n\r\ninterface RootViewProps extends ARootViewProps {\r\n skypetoken: string | undefined;\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n public readonly state: RootViewState = { isAddBotInProgress: false };\r\n\r\n componentDidMount() {\r\n const botId = this._getBotIdFromUrl();\r\n if (!botId) {\r\n throw displayableErrors.BotNotFound;\r\n }\r\n\r\n logger.initCommonProperty({ key: CommonProperty.BotId, value: botId });\r\n\r\n this._getBotInfo(botId)\r\n .then((botInfo) => {\r\n const context: BotsContext = { botId, botInfo, isAddedAsContact: false };\r\n this.setState({ context });\r\n }).catch((error: Error) => {\r\n this.setState({\r\n error,\r\n });\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: ARootViewProps) {\r\n if (prevProps.loading && !this.props.loading) {\r\n document.title = localizer.getString('add_bot_to_contacts');\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n return \r\n \r\n { (userContext) =>\r\n { (ariaContext) =>\r\n \r\n )}\r\n initialViewProps={ { eventViewName: 'add-bot-view' } } />\r\n }\r\n }\r\n \r\n ;\r\n }\r\n\r\n private readonly handleAddBotViewProgress = () => this.setState({ isAddBotInProgress: true });\r\n\r\n private readonly handleAddBotViewAdd =\r\n () => this.setState((state) => ({ context: { ...state.context!, isAddedAsContact: true }, isAddBotInProgress: false }))\r\n\r\n private readonly handleAddBotViewError = (error: Error) => this.setState({ error, isAddBotInProgress: false });\r\n\r\n private _getBotInfo(botId: string) {\r\n return BotsRestClient.getBotInfo(botId)\r\n .catch((response: WebErrorResponse) => {\r\n const error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.BotNotFound, response, 'Get bot info');\r\n return SyncTasks.Rejected(error);\r\n });\r\n }\r\n\r\n private _isLoading = (userContext: UserContext) => {\r\n return this.props.loading || !(this.state.context && this.state.context.botInfo) || userContext.isLoginInProgress || this.state.isAddBotInProgress;\r\n }\r\n\r\n private _getBotIdFromUrl() {\r\n const pathName = window.location.pathname.replace(/\\/+$/, '');\r\n const pathParts = pathName.split('/');\r\n\r\n return pathParts.pop();\r\n }\r\n}\r\n","import config from 'config';\r\nimport { S4LParameters } from '../config/BaseConfig';\r\nimport { Dictionary } from '../models/SharedTypes';\r\nimport { displayableErrors } from './ErrorHelper';\r\nimport { logger } from './LoggerHelper';\r\n\r\ninterface KeyValuePair {\r\n key: string;\r\n value: string;\r\n}\r\n\r\nexport class UrlHelper {\r\n\r\n static getWebClientUrl(params: S4LParameters, webSubdomainForRedirect?: string | undefined) {\r\n // Websubdomain allow us to try out the integration with different version of webshell\r\n // Current up to date list is available: candidate, preview, dev, alpha, beta\r\n const { webSubDomain } = UrlHelper.getQueryParameters() as Dictionary;\r\n\r\n // webSubDomain passed by query param takes precedence to ECS config\r\n return config.urls.app.s4lWeb(params, webSubDomain || webSubdomainForRedirect);\r\n }\r\n\r\n static getWebClientUrlWithCorrelationId(params: S4LParameters, webSubdomainForRedirect?: string | undefined) {\r\n const url = UrlHelper.getWebClientUrl(params, webSubdomainForRedirect);\r\n\r\n return `${url}${url.includes('?') ? '&' : '?'}correlationId=${logger.getCorrelationId()}`;\r\n }\r\n\r\n static getAllowedQueryParameters(allowedParameters: string[]): KeyValuePair[] {\r\n return allowedParameters\r\n .map((param: string) => ({\r\n key: param,\r\n value: UrlHelper.getQueryParameter(param),\r\n } as KeyValuePair))\r\n .filter((pair: KeyValuePair) => pair.value);\r\n }\r\n\r\n static getQueryParameters() {\r\n if (!location.search || location.search.length < 1) {\r\n return {} as Dictionary;\r\n }\r\n\r\n return location.search\r\n .substr(1)\r\n .split('&')\r\n .map((value) => {\r\n const split = value.split('=');\r\n return {\r\n key: decodeURIComponent(split[0]),\r\n value: decodeURIComponent(split[1] || ''),\r\n } as KeyValuePair;\r\n })\r\n .reduce((prev, current) => {\r\n if (!!prev[current.key]) {\r\n const prevValue = prev[current.key];\r\n if (typeof prevValue === 'string') {\r\n prev[current.key] = [prev[current.key] as string];\r\n }\r\n (prev[current.key] as string[]).push(current.value);\r\n } else {\r\n prev[current.key] = current.value;\r\n }\r\n return prev;\r\n }, {} as Dictionary);\r\n }\r\n\r\n static getQueryParameter(key: string): string | string[] {\r\n return UrlHelper.getQueryParameters()[key];\r\n }\r\n\r\n static getQueryParameterAsString(key: string): string {\r\n return `${UrlHelper.getQueryParameter(key) || ''}`;\r\n }\r\n\r\n static getShortIdFromUrl(): string {\r\n const pathName = window.location.pathname.replace(/\\/+$/, '');\r\n const pathParts = pathName.split('/');\r\n const shortId = pathParts.pop();\r\n\r\n if (!shortId) {\r\n throw displayableErrors.ShortIdFromUrl;\r\n }\r\n\r\n return shortId;\r\n }\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button } from '@stardust-ui/react';\r\nimport React from 'react';\r\nimport { ErrorDetails } from './ErrorDetails';\r\n\r\nexport interface ErrorModalProps {\r\n error: Error;\r\n assetsBasePath?: string;\r\n onClose: () => void;\r\n}\r\n\r\nexport class ErrorModal extends React.PureComponent {\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import { Config } from 'config';\r\nimport * as React from 'react';\r\n\r\nexport interface ConfigContext extends Config {\r\n basePath: string;\r\n language: string;\r\n switchLanguage: (language: string) => void;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({} as ConfigContext);\r\n\r\nexport const ConfigContextProvider = context.Provider;\r\n\r\nexport const ConfigContextConsumer = context.Consumer;\r\n","export { default as common } from './common';\r\nexport { default as light } from './light';\r\nexport { default as teams } from './teams';\r\n","import { AWTPiiKind } from '@aria/webjs-sdk';\r\nimport { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\nimport { EcsSettings } from 'src/ts/contexts/EcsContext';\r\nimport { UserContext } from 'src/ts/contexts/UserContext';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport getMeetNowSettings from 'src/ts/meetnow/MeetNowSettings';\r\nimport { handleJoin } from 'src/ts/meetnowJoin/JoinHandler';\r\nimport { AppIds } from 'src/ts/models/SharedTypes';\r\nimport HuddleApiClient from 'src/ts/rest/HuddleApiClient';\r\nimport MeetingsApiClient from 'src/ts/rest/MeetingsApiClient';\r\nimport { MeetingContext, MeetingContextProvider } from '../../contexts/meetings/MeetingContext';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes } from '../../helpers/EnvironmentHelper';\r\nimport { displayableErrors, ErrorHelper } from '../../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { LoadingView } from '../common/LoadingView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { JoinView } from './JoinView';\r\nimport { Launcher } from './Launcher';\r\nimport { UnifiedView } from './UnifiedView';\r\n\r\nexport interface RootViewState {\r\n launcherKey: number;\r\n meetingContext?: MeetingContext;\r\n error?: Error;\r\n loadingConversation: boolean;\r\n}\r\n\r\ninterface RootViewProps extends ARootViewProps {\r\n userContext: UserContext;\r\n ecsSettings: EcsSettings;\r\n country?: string;\r\n}\r\n\r\nenum SilentLoginStatus {\r\n Started,\r\n Ended,\r\n Skipped,\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n\r\n private _silentLoginStatus: SilentLoginStatus;\r\n private _preRequisitesLoadCompleted = false;\r\n\r\n constructor(props: RootViewProps) {\r\n super(props);\r\n\r\n this.state = {\r\n launcherKey: deviceType === DeviceTypes.Desktop ? 1 : 0,\r\n loadingConversation: true,\r\n };\r\n\r\n this._silentLoginStatus = !!props.userContext.silentLoginNotSupported ? SilentLoginStatus.Skipped : SilentLoginStatus.Started;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.userContext && !this.props.userContext.isLoginInProgress && !this.props.loading) {\r\n this.loadConversation();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: RootViewProps) {\r\n if (prevProps.loading && !this.props.loading) {\r\n document.title = localizer.getString('hdr_launch_title');\r\n }\r\n\r\n if (prevProps && !!prevProps.userContext &&\r\n prevProps.userContext.isLoginInProgress && !this.props.userContext.isLoginInProgress) {\r\n this._silentLoginStatus = SilentLoginStatus.Ended;\r\n }\r\n\r\n if (prevProps.loading && !this.props.loading) {\r\n this._preRequisitesLoadCompleted = true;\r\n }\r\n\r\n if ((this._silentLoginStatus === SilentLoginStatus.Skipped || this._silentLoginStatus === SilentLoginStatus.Ended) &&\r\n this._preRequisitesLoadCompleted &&\r\n !this.state.meetingContext &&\r\n !this.state.error) {\r\n this.loadConversation();\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n const conversation = this.state.meetingContext ? this.state.meetingContext.conversation : undefined;\r\n const isLoading = this.props.loading || this.state.loadingConversation;\r\n return \r\n { !!this.state.launcherKey && conversation && }\r\n { (ariaContext) => {\r\n if (isLoading) {\r\n return ;\r\n } else {\r\n return ;\r\n }\r\n }\r\n }\r\n ;\r\n }\r\n\r\n private getLoginView = () => {\r\n const useUnifiedView = this.determineIsItUnifiedView(this.props.ecsSettings.useUnifiedView);\r\n const meetNowSettings = getMeetNowSettings();\r\n if (useUnifiedView) {\r\n return ;\r\n }\r\n\r\n const threadId = this.state.meetingContext && this.state.meetingContext.conversation ? this.state.meetingContext.conversation.resource : undefined;\r\n if (deviceType !== DeviceTypes.Mobile || threadId === undefined) {\r\n return ;\r\n } else {\r\n const legacyMobileFlowView =\r\n ;\r\n if (canJoinOnWeb && !!this.props.ecsSettings.useNewMobileJoinFlow) {\r\n try {\r\n if (meetNowSettings) {\r\n // For supported mobile browsers, attempt to go straight to a call if we didn't deep-link into the app already\r\n // (since most likely, the app is not installed on the device, or the user pasted the link in the browser)\r\n handleJoin(meetNowSettings, {\r\n action: 'joinmeetnow',\r\n flowId: logger.getCorrelationId(),\r\n id: '',\r\n resource: threadId,\r\n shortId: this._getShortIdFromUrl(),\r\n }, this.props.userContext?.skypetoken, true).catch((err) => {\r\n logger.error(err);\r\n this.setState({\r\n error: err,\r\n });\r\n });\r\n return null;\r\n } else {\r\n return legacyMobileFlowView;\r\n }\r\n } catch (err) {\r\n logger.error(err);\r\n return legacyMobileFlowView;\r\n }\r\n } else {\r\n // For unsupported mobile browsers, fallback to old mobile join page allowing users to \"Download Skype\"\r\n return legacyMobileFlowView;\r\n }\r\n }\r\n }\r\n\r\n private determineIsItUnifiedView(unifiedViewEcsSettings: boolean) {\r\n return (unifiedViewEcsSettings && deviceType === DeviceTypes.Desktop);\r\n }\r\n\r\n private loadConversation = () => {\r\n const shortId = this._getShortIdFromUrl();\r\n\r\n if (this.props.userContext) {\r\n if (this.props.ecsSettings.useMeetingsApi) {\r\n this.loadConversationFromMeetingsApi(shortId);\r\n } else {\r\n this.loadConversationFromHuddleApi(shortId);\r\n }\r\n }\r\n }\r\n\r\n private loadConversationFromHuddleApi(shortId: string) {\r\n HuddleApiClient.getConversation({\r\n shortId,\r\n type: AppIds.Meetings,\r\n }).then((conversation) => {\r\n this.setState({\r\n loadingConversation: false,\r\n meetingContext: {\r\n conversation,\r\n shortId,\r\n },\r\n });\r\n logger.initCommonProperty({ key: CommonProperty.ThreadId, value: conversation.resource, piiKind: AWTPiiKind.GenericData });\r\n }).catch((response: WebErrorResponse) => {\r\n const error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.ShortIdFromUrl, response, 'Get conversation details');\r\n this.setState({\r\n error,\r\n });\r\n });\r\n }\r\n\r\n private loadConversationFromMeetingsApi(shortId: string) {\r\n MeetingsApiClient.getConversation({\r\n shortId,\r\n type: AppIds.Meetings,\r\n }, this.props.ecsSettings.maxRetries).then((conversation) => {\r\n this.setState({\r\n loadingConversation: false,\r\n meetingContext: {\r\n conversation,\r\n shortId,\r\n },\r\n });\r\n logger.initCommonProperty({ key: CommonProperty.ThreadId, value: conversation.resource, piiKind: AWTPiiKind.GenericData });\r\n }).catch((response: WebErrorResponse) => {\r\n const error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.ShortIdFromUrl, response, 'Get conversation details');\r\n this.setState({\r\n error,\r\n });\r\n });\r\n }\r\n\r\n private _getShortIdFromUrl(): string {\r\n return UrlHelper.getShortIdFromUrl();\r\n }\r\n\r\n private _onLaunchClick = () => {\r\n logger.sessionFinished({completionType: 'LaunchSkypeNowButton'});\r\n this.setState((oldState) => {\r\n return { launcherKey: oldState.launcherKey + 1 };\r\n });\r\n }\r\n}\r\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","import { AWTEventPriority, AWTPiiKind, AWTPropertyType } from '@aria/webjs-sdk';\r\nimport config from 'config';\r\nimport curry from 'lodash/curry';\r\nimport { CookieHelper } from '../helpers/CookieHelper';\r\nimport { CommonProperty, logger } from '../helpers/LoggerHelper';\r\nimport { doPostRedirect } from '../helpers/RedirectHelper';\r\nimport { SilentLoginResult } from '../helpers/SilentLoginHelper';\r\nimport { getMsaCidHexFromSkypeToken, getSkypeIdFromSkypeToken } from '../helpers/SkypeTokenHelper';\r\nimport { UrlHelper } from '../helpers/UrlHelper';\r\nimport { ConversationServiceModel } from '../models/ConversationServiceModel';\r\nimport {\r\n CreateMeetingServiceModel,\r\n MeetnowGuestServiceModel,\r\n WebClientRedirectParams,\r\n} from '../models/GuestUserServiceModel';\r\nimport { AppIds } from '../models/SharedTypes';\r\nimport MeetingsApiClient from '../rest/MeetingsApiClient';\r\nimport { triggerFallbackFlow } from './FallbackFlow';\r\nimport { IMeetNowSettings } from './MeetNowSettings';\r\n\r\nexport const getShortIdFromJoinLink = (joinLink: string): string => joinLink.split('/').pop() || '';\r\n\r\nexport const getSource = () => {\r\n const source = UrlHelper.getQueryParameter('source');\r\n return source ? `${source}` : undefined;\r\n};\r\n\r\nexport const logShortIdAndThreadId = (meeting: CreateMeetingServiceModel): CreateMeetingServiceModel => {\r\n logger.initCommonProperty({\r\n key: CommonProperty.ShortId,\r\n value: getShortIdFromJoinLink(meeting.joinLink),\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n logger.initCommonProperty({\r\n key: CommonProperty.ThreadId,\r\n value: meeting.threadId,\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n\r\n return meeting;\r\n};\r\n\r\nexport const logUserId = (meeting: MeetnowGuestServiceModel): MeetnowGuestServiceModel => {\r\n logger.addSkypeIdAndMsaCidHexCommonProperties(meeting.skypetoken, true);\r\n\r\n return meeting;\r\n};\r\n\r\nexport const createConversationServiceModel = (meeting: CreateMeetingServiceModel): ConversationServiceModel => {\r\n return {\r\n shortId: getShortIdFromJoinLink(meeting.joinLink),\r\n resource: meeting.threadId,\r\n id: '',\r\n flowId: '',\r\n action: '',\r\n };\r\n};\r\n\r\nexport const createGuestMeeting = (settings: IMeetNowSettings, source = 'HuddleUi') => {\r\n return MeetingsApiClient.createGuestMeeting({ title: settings.DefaultMeetingTitle, source }, settings.MeetNowEdgeNumberOfFetchRetries);\r\n};\r\n\r\nexport const createMeetnowGuest = (settings: IMeetNowSettings, source = 'HuddleUi') => {\r\n const localizedGuestDefaultName = document.getElementById('meetnowContainer')?.getAttribute('data-guest-user-localized-text') ?? 'Guest user';\r\n return MeetingsApiClient.meetnowGuest({\r\n displayName: localizedGuestDefaultName,\r\n source,\r\n }, settings.MeetNowEdgeNumberOfFetchRetries);\r\n};\r\n\r\nexport const createAuthenticatedMeeting = (settings: IMeetNowSettings, loginResult: SilentLoginResult, source = 'HuddleUi') => {\r\n return MeetingsApiClient\r\n .createAuthenticatedMeeting({ title: settings.DefaultMeetingTitle, SkypeToken: loginResult.skypetoken, source }, settings.MeetNowEdgeNumberOfFetchRetries);\r\n};\r\n\r\nexport const getThreadId = curry((settings: IMeetNowSettings, shortId: string) => {\r\n const params = {\r\n shortId,\r\n type: AppIds.Meetings,\r\n };\r\n\r\n return MeetingsApiClient\r\n .getConversation(params, settings.MeetNowEdgeNumberOfFetchRetries)\r\n .then((conversion) => {\r\n logger.initCommonProperty({\r\n key: CommonProperty.ThreadId,\r\n value: conversion.resource,\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n return conversion;\r\n })\r\n .then((conversion) => ({ shortId, ...conversion }));\r\n});\r\n\r\nexport const buildWebClientRedirectParamsForAuthenticatedFlow =\r\n curry((loginResult: SilentLoginResult, conversationServiceModel: ConversationServiceModel): WebClientRedirectParams => {\r\n return {\r\n threadId: conversationServiceModel.resource,\r\n shortId: conversationServiceModel.shortId,\r\n skypetoken: loginResult.skypetoken,\r\n skypeId: getSkypeIdFromSkypeToken(loginResult.skypetoken) || '',\r\n };\r\n });\r\n\r\nexport const buildWebClientRedirectParamsFromMeetnowGuestServiceModel = (meetnowGuestServiceModel: MeetnowGuestServiceModel): WebClientRedirectParams => {\r\n return {\r\n skypetoken: meetnowGuestServiceModel.skypetoken,\r\n skypeId: meetnowGuestServiceModel.skypeId,\r\n threadId: meetnowGuestServiceModel.threadId,\r\n shortId: getShortIdFromJoinLink(meetnowGuestServiceModel.joinLink),\r\n };\r\n};\r\nexport const redirectToSkypeClient = curry((\r\n settings: IMeetNowSettings,\r\n completionType: string,\r\n action: string,\r\n isNewJoinFlowFromJoinLink: boolean,\r\n webClientRedirectParams: WebClientRedirectParams): void => {\r\n const params = {\r\n skypetoken: webClientRedirectParams.skypetoken,\r\n expires_in: 24 * 3600,\r\n skypeid: webClientRedirectParams.skypeId,\r\n state: CookieHelper.getCookie(config.cookies.csrf).singleValue,\r\n msacidhex: getMsaCidHexFromSkypeToken(webClientRedirectParams.skypetoken) || '',\r\n };\r\n\r\n logger.sessionFinished({ completionType }, AWTEventPriority.High);\r\n\r\n const queryParams = `action=${action}&${buildRedirectQueryParameters(settings.MeetNowEdgeAllowedQueryParameters, logger.getCorrelationId(), isNewJoinFlowFromJoinLink)}`;\r\n doPostRedirect(`${UrlHelper.getWebClientUrl({ threadId: webClientRedirectParams.threadId })}?${queryParams}`, params);\r\n});\r\n\r\nexport const buildRedirectQueryParameters = (allowedParameters: string[], fallbackCorrelationId: string, isNewJoinFlowFromJoinLink = false): string => {\r\n const params = UrlHelper.getAllowedQueryParameters(allowedParameters);\r\n\r\n if (!params.find((param) => param.key === 'correlationId')) {\r\n params.push({ key: 'correlationId', value: fallbackCorrelationId });\r\n }\r\n\r\n if (isNewJoinFlowFromJoinLink) {\r\n params.push({ key: 'source', value: 'NewJoinLinkFlow' });\r\n }\r\n\r\n return params\r\n .map((param) => `${encodeURIComponent(param.key)}=${encodeURIComponent(param.value)}`)\r\n .join('&');\r\n};\r\n\r\nexport const processMeetNowEdgeGuestRequest = (settings: IMeetNowSettings): void => {\r\n createMeetnowGuest(settings, getSource())\r\n .then(logShortIdAndThreadId)\r\n .then(logUserId)\r\n .then(buildWebClientRedirectParamsFromMeetnowGuestServiceModel)\r\n .then(redirectToSkypeClient(settings, 'MeetNowEdgeIntegration', 'createmeetnow', false))\r\n .catch((error) => triggerFallbackFlow(error, 'processMeetNowEdgeGuestRequest failure'));\r\n};\r\n\r\nexport const processMeetNowEdgeAuthenticatedRequest = (settings: IMeetNowSettings, loginResult: SilentLoginResult): void => {\r\n createAuthenticatedMeeting(settings, loginResult, getSource())\r\n .then(logShortIdAndThreadId)\r\n .then(createConversationServiceModel)\r\n .then(buildWebClientRedirectParamsForAuthenticatedFlow(loginResult))\r\n .then(redirectToSkypeClient(settings, 'MeetNowEdgeIntegration', 'createmeetnow', false))\r\n .catch((error) => triggerFallbackFlow(error, 'processMeetNowEdgeAuthenticatedRequest failure'));\r\n};\r\n","import Config from 'config';\r\nimport { logger } from '../helpers/LoggerHelper';\r\n\r\nexport const triggerFallbackFlow = (error: Error, reason: string) => {\r\n logger.init(Config.logging.ariaTenant, 'meetnow_edge_');\r\n logger.meetNowFallbackFlow({ message: error.message, reason });\r\n\r\n showErrorMessage();\r\n handleReloadButton();\r\n handleNavigateToWebClientButton();\r\n};\r\n\r\nconst showErrorMessage = () => {\r\n const pageTitle = document.querySelector('.splashScreen');\r\n if (pageTitle) {\r\n pageTitle.style.display = 'none';\r\n }\r\n\r\n const fallbackSection = document.getElementById('fallbackSection');\r\n if (fallbackSection) {\r\n fallbackSection.style.display = 'block';\r\n }\r\n};\r\n\r\nconst handleReloadButton = () => {\r\n const reloadPageButton = document.getElementById('reloadPageButton');\r\n if (reloadPageButton) {\r\n reloadPageButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n logger.action({ name: 'reloadFallback' });\r\n window.location.reload();\r\n });\r\n }\r\n};\r\n\r\nconst handleNavigateToWebClientButton = () => {\r\n const goToSkypeButton = document.getElementById('goToSkypeButton');\r\n if (goToSkypeButton) {\r\n goToSkypeButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n logger.action({ name: 'goToSkypeFallback' });\r\n window.location.href = Config.urls.app.s4lWeb({});\r\n });\r\n }\r\n};\r\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","import * as React from 'react';\r\n\r\nexport interface AriaMessage {\r\n assertive: boolean;\r\n text: string;\r\n}\r\n\r\nexport interface AriaContext {\r\n message: AriaMessage;\r\n announce: (message: AriaMessage) => void;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({} as AriaContext);\r\n\r\nexport const AriaContextProvider = context.Provider;\r\n\r\nexport const AriaContextConsumer = context.Consumer;\r\n","import * as React from 'react';\r\nimport { BotInfoServiceModel } from '../../models/BotServiceModel';\r\n\r\nexport interface BotsContext {\r\n botInfo: BotInfoServiceModel;\r\n botId: string;\r\n isAddedAsContact: boolean;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext(undefined);\r\n\r\nexport const BotsContextProvider = context.Provider;\r\n\r\nexport const BotsContextConsumer = context.Consumer;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Button, Icon, Layout, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { ConfigContext, ConfigContextConsumer } from 'src/ts/contexts/ConfigContext';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport { MeetingContext, MeetingContextConsumer } from '../../../contexts/meetings/MeetingContext';\r\nimport { StackNavigationContext, StackNavigationContextConsumer } from '../../../contexts/StackNavigationContext';\r\nimport { UserContextConsumer } from '../../../contexts/UserContext';\r\nimport { CookieHelper } from '../../../helpers/CookieHelper';\r\nimport { UserProfile } from '../../../models/ProfileServiceModel';\r\nimport { GuestLogin } from './GuestLogin';\r\n\r\nconst secondaryButtonTransparentStyle = { backgroundColor: 'transparent', color: 'white' };\r\nexport class LoginMethod extends React.PureComponent {\r\n\r\n render() {\r\n return
\r\n { this._renderTitle() }\r\n { this._renderActions() }\r\n
;\r\n }\r\n\r\n private _renderTitle() {\r\n return { (userContext) =>\r\n \r\n { userContext.profile ?\r\n localizer.getString('Login.txt_sign_in_with_title')\r\n :\r\n localizer.getString('hdr_welcome') }\r\n \r\n };\r\n }\r\n\r\n private _renderActions() {\r\n return { (userContext) =>\r\n
\r\n { userContext.profile ?\r\n this._renderAuthenticatedActions(userContext.profile) :\r\n this._renderUnauthenticatedActions() }\r\n
\r\n }
;\r\n }\r\n\r\n private _renderAuthenticatedActions(userProfile: UserProfile) {\r\n return { (meetingContext) => meetingContext &&\r\n <>\r\n { (configContext) =>\r\n this._renderAccounts(userProfile, meetingContext, configContext) }\r\n \r\n { this._renderWhatsThis() }\r\n \r\n };\r\n }\r\n\r\n private _renderAccounts(userProfile: UserProfile, meetingContext: MeetingContext, configContext: ConfigContext) {\r\n const email: string | undefined = userProfile.emails && userProfile.emails.length ?\r\n userProfile.emails[0] : undefined;\r\n const name: string = userProfile.firstname && userProfile.lastname ?\r\n `${ userProfile.firstname } ${ userProfile.lastname }` : userProfile.username;\r\n const avatarImage = {\r\n src: userProfile.avatarUrl || `${ configContext.basePath }/images/avatar.jpg`,\r\n styles: { width: '100%', height: '100%', objectFit: 'cover' },\r\n };\r\n\r\n const currentAccountAvatar = ;\r\n const currentAccountText = { name } }\r\n end={ { email } } />;\r\n const currentAccount = ;\r\n\r\n const otherAccountIcon = ;\r\n const otherAccountText = { localizer.getString('Login.btn_use_other_account') } } />;\r\n const otherAccount = ;\r\n\r\n return
\r\n \r\n
;\r\n }\r\n\r\n private _joinOnWebAsGuest = (stackNavigationContext: StackNavigationContext) => {\r\n return () => {\r\n logger.action({ name: 'join-as-guest' });\r\n logger.sessionIntermediateStep({eventType: 'JoinOnWebAsGuestSecondClickOldView'});\r\n stackNavigationContext.push(, { eventViewName: 'guest-login' });\r\n };\r\n }\r\n\r\n private _joinOnWebOtherAccount = (meetingContext: MeetingContext) => {\r\n return () => {\r\n logger.action({ name: 'join-logout' });\r\n logger.sessionFinished({completionType: 'JoinOnWebOtherAccount'});\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource });\r\n window.location.href = config.urls.app.logout(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue);\r\n };\r\n }\r\n\r\n private _joinOnWeb = (meetingContext: MeetingContext) => {\r\n return () => {\r\n logger.action({ name: 'join-login' });\r\n logger.sessionFinished({completionType: 'JoinOnWeb'});\r\n window.location.assign(UrlHelper.getWebClientUrlWithCorrelationId({ threadId: meetingContext.conversation.resource }));\r\n };\r\n }\r\n\r\n private _renderUnauthenticatedActions() {\r\n return <>\r\n { (stackNavigationContext) =>\r\n \r\n }\r\n { (meetingContext) => meetingContext &&\r\n <>\r\n \r\n { this._renderWhatsThis() }\r\n \r\n }\r\n ;\r\n }\r\n\r\n private _renderWhatsThis() {\r\n return \r\n { localizer.getString('Login.txt_use_ms_account') }\r\n  \r\n logger.action({ name: 'what-is-msa' }) }\r\n target='_blank'\r\n aria-label={ localizer.getString('Login.lnk_a11y_what_is_ms_account') } >\r\n { localizer.getString('Login.lnk_what_is_ms_account') }\r\n \r\n ;\r\n }\r\n}\r\n","export interface SkypeTokenContentHeader {\r\n alg: string;\r\n kid: string;\r\n typ: string;\r\n}\r\n\r\nexport interface SkypeTokenContentPayload {\r\n aat: number;\r\n cid: string;\r\n csi: string;\r\n exp: number;\r\n iat: number;\r\n scp: number;\r\n skypeid: string;\r\n}\r\n\r\nexport interface SkypeTokenContent {\r\n header: SkypeTokenContentHeader;\r\n payload: SkypeTokenContentPayload;\r\n signature: string;\r\n}\r\n\r\nexport function parseSkypeToken(token: string | undefined): SkypeTokenContent | undefined {\r\n if (!token) {\r\n return;\r\n }\r\n\r\n const parts = token.split('.');\r\n if (parts.length !== 3) {\r\n return;\r\n }\r\n\r\n try {\r\n const header: SkypeTokenContentHeader = JSON.parse(atob(parts[0]));\r\n const payload: SkypeTokenContentPayload = JSON.parse(atob(parts[1]));\r\n const signature = parts[2];\r\n\r\n if (!payload.skypeid) {\r\n return;\r\n }\r\n\r\n return { header, payload, signature };\r\n } catch (e) {\r\n return;\r\n }\r\n}\r\n\r\nexport function getSkypeIdFromSkypeToken(token: string | undefined): string | undefined {\r\n const tokenContent = parseSkypeToken(token);\r\n if (tokenContent) {\r\n return tokenContent.payload.skypeid;\r\n }\r\n\r\n return;\r\n}\r\n\r\nexport function getMsaCidHexFromSkypeToken(token: string | undefined): string | undefined {\r\n const tokenContent = parseSkypeToken(token);\r\n if (tokenContent && tokenContent.payload && tokenContent.payload.cid) {\r\n return tokenContent.payload.cid.toUpperCase();\r\n }\r\n\r\n return;\r\n}\r\n","import * as React from 'react';\r\nimport { AriaContextConsumer } from '../../contexts/AriaContext';\r\nimport { ProfilesContext, ProfilesContextProvider } from '../../contexts/profiles/ProfilesContext';\r\nimport { displayableErrors } from '../../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { Launcher } from './Launcher';\r\nimport { ProfileView } from './ProfileView';\r\n\r\nexport interface RootViewState {\r\n launcherKey: number;\r\n profilesContext: ProfilesContext;\r\n error?: Error | undefined;\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n\r\n static getSkypeIdFromUrl() {\r\n const pathName = window.location.pathname.replace(/\\/+$/, '');\r\n const pathParts = pathName.split('/');\r\n\r\n return pathParts.pop();\r\n }\r\n\r\n constructor(props: ARootViewProps) {\r\n super(props);\r\n\r\n const skypeId = RootView.getSkypeIdFromUrl();\r\n if (!skypeId) {\r\n throw displayableErrors.Generic;\r\n }\r\n\r\n logger.initCommonProperty({\r\n key: CommonProperty.Profile,\r\n value: skypeId,\r\n });\r\n\r\n this.state = {\r\n launcherKey: 0,\r\n profilesContext: { skypeId },\r\n };\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n return \r\n { !!this.state.launcherKey && }\r\n { (ariaContext) =>\r\n }\r\n initialViewProps={ { eventViewName: 'profile-view' } } />\r\n }\r\n ;\r\n }\r\n\r\n private _onLaunchClick = () => {\r\n this.setState((oldState) => {\r\n return { launcherKey: oldState.launcherKey + 1 };\r\n });\r\n }\r\n}\r\n","import { AWTEventPriority } from '@aria/webjs-sdk';\r\nimport * as React from 'react';\r\nimport { AriaMessage } from './AriaContext';\r\n\r\nexport interface StackNavigationContext {\r\n views: StackView[];\r\n animating: boolean;\r\n push: (view: React.ReactNode, properties?: Partial) => void;\r\n pop: () => void;\r\n pushRoot: (view: React.ReactNode, properties?: Partial) => void;\r\n popRoot: () => void;\r\n pushParent: (view: React.ReactNode, properties?: Partial) => void;\r\n popParent: () => void;\r\n}\r\n\r\nexport interface StackView {\r\n view: React.ReactNode;\r\n properties: StackViewProperties;\r\n}\r\n\r\nexport interface StackAnimation {\r\n type: AnimationType;\r\n duration: number;\r\n}\r\n\r\nexport interface StackViewProperties {\r\n type: ViewType;\r\n animation: StackAnimation;\r\n ariaMessage?: AriaMessage;\r\n eventViewName?: string;\r\n eventPriority?: AWTEventPriority;\r\n}\r\n\r\nexport enum ViewType {\r\n Fullscreen, Overlay,\r\n}\r\n\r\nexport enum AnimationType {\r\n None = 'none',\r\n Fade = 'fade',\r\n FadeOut = 'fadeOut',\r\n Left = 'left',\r\n LeftOut = 'leftOut',\r\n Slide = 'slide',\r\n SlideOut = 'slideOut',\r\n}\r\n\r\nexport const defaultSlideAnimation: StackAnimation = { type: AnimationType.Slide, duration: 0.2 };\r\nexport const defaultFadeAnimation: StackAnimation = { type: AnimationType.Fade, duration: 0.5 };\r\n\r\nexport const defaultStackViewProperties: StackViewProperties = {\r\n type: ViewType.Fullscreen,\r\n animation: { type: AnimationType.None, duration: 0 },\r\n};\r\n\r\n// tslint:disable-next-line:no-empty\r\nconst noop = () => { };\r\nconst context = React.createContext({\r\n animating: false,\r\n views: [],\r\n push: noop,\r\n pop: noop,\r\n pushRoot: noop,\r\n popRoot: noop,\r\n pushParent: noop,\r\n popParent: noop,\r\n});\r\nexport const StackNavigationContextProvider = context.Provider;\r\n\r\nexport const StackNavigationContextConsumer = context.Consumer;\r\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","\"use strict\";\r\n/**\r\n* Config.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* ECS global configuration\r\n*/\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Config = /** @class */ (function () {\r\n function Config() {\r\n }\r\n Config.prototype.initialize = function (config) {\r\n if (this._config) {\r\n throw 'ECS Configuration already initialized';\r\n }\r\n this._config = config;\r\n };\r\n Config.prototype.getConfig = function () {\r\n if (!this._config) {\r\n throw 'ECS Configuration not yet initialized';\r\n }\r\n return this._config;\r\n };\r\n Config.prototype.setConfigsToFetch = function (configsToFetch) {\r\n // Create a new config object since it's fully read-only\r\n if (!this._config) {\r\n throw 'ECS Configuration not yet initialized';\r\n }\r\n this._config = __assign({}, this._config, { configsToFetch: configsToFetch });\r\n };\r\n Config.prototype.setFetchTimeout = function (fetchTimeout) {\r\n // Create a new config object since it's fully read-only\r\n if (!this._config) {\r\n throw 'ECS Configuration not yet initialized';\r\n }\r\n this._config = __assign({}, this._config, { fetchTimeout: fetchTimeout });\r\n };\r\n return Config;\r\n}());\r\nexports.default = Config;\r\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","\"use strict\";\r\n/**\r\n* RestClient.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Client helper for accessing ECS.\r\n*/\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar simplerestclients_1 = require(\"simplerestclients\");\r\nvar SyncTasks = require(\"synctasks\");\r\nvar Models_1 = require(\"./Models\");\r\nvar TelemetryEvents = require(\"./TelemetryEvents\");\r\nvar ForceFetchTimeout = (48 * 60 * 60 * 1000); // Fetch every 48 hours at a minimum\r\nvar EcsExpirationFallbackDuration = 30 * 60 * 1000; // 30 minutes\r\nvar EcsFetchDurationLimit = (365 * 24 * 60 * 60 * 1000); // fetch duration beyond 1 year is considered invalid\r\nvar EcsMinFetchTimeout = (30 * 1000); // Fail-safe lower bound for the fetchTimeout config parameter\r\nvar lastResponseTime;\r\nvar currentRequestTime;\r\n// Fetches the ECS configuration from a specific ECS endpoint and project\r\nvar EcsFetcher = /** @class */ (function (_super) {\r\n __extends(EcsFetcher, _super);\r\n function EcsFetcher(url, _config, _skypeTokenData, _appActiveData, _allowBackgroundFetchData, _etag, _getUserConfig, parameters) {\r\n var _this = _super.call(this, url) || this;\r\n _this._config = _config;\r\n _this._skypeTokenData = _skypeTokenData;\r\n _this._appActiveData = _appActiveData;\r\n _this._allowBackgroundFetchData = _allowBackgroundFetchData;\r\n _this._etag = _etag;\r\n _this._getUserConfig = _getUserConfig;\r\n _this._apiPath = '/config/v1/' + _this._config.getConfig().clientName + '/' + _this._config.getConfig().clientVersion;\r\n if (parameters) {\r\n var paramList = Object.keys(parameters).map(function (key) {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(parameters[key].toString());\r\n });\r\n if (paramList) {\r\n _this._apiPath += '?' + paramList.join('&');\r\n }\r\n }\r\n return _this;\r\n }\r\n EcsFetcher.prototype._blockRequestUntil = function (options) {\r\n var _this = this;\r\n if (this._getUserConfig && !this._skypeTokenData.isSkypeTokenValid()) {\r\n console.log('ECS - Delaying User config fetch until we have a valid SkypeToken');\r\n }\r\n if (!this._appActiveData.isAppActive() && !this._allowBackgroundFetchData.isBackgroundFetchAllowed()) {\r\n var configType = this._getUserConfig ? 'User config' : 'config';\r\n console.log(\"ECS - Delaying \" + configType + \" fetch until the app is active (or background fetch is allowed)\");\r\n }\r\n return SyncTasks.race([\r\n this._appActiveData.waitForAppActive(),\r\n this._allowBackgroundFetchData.waitForBackgroundFetchAllowed()\r\n ]).then(function () {\r\n if (_this._getUserConfig) {\r\n return _this._skypeTokenData.waitForValidSkypeToken();\r\n }\r\n }).then(function () {\r\n currentRequestTime = Date.now();\r\n });\r\n };\r\n EcsFetcher.prototype._getHeaders = function () {\r\n var headers = {};\r\n if (this._etag) {\r\n headers['If-None-Match'] = this._etag;\r\n }\r\n if (this._getUserConfig) {\r\n headers['Authorization'] = this._skypeTokenData.getSkypeToken();\r\n }\r\n return headers;\r\n };\r\n EcsFetcher.prototype.getConfig = function () {\r\n // Make sure the timeout is undefined, 0, or at least EcsMinFetchTimeout\r\n var timeout = this._config.getConfig().fetchTimeout;\r\n if (timeout !== undefined) {\r\n if (timeout < 0) {\r\n timeout = 0;\r\n }\r\n else if (timeout > 0 && timeout < EcsMinFetchTimeout) {\r\n timeout = EcsMinFetchTimeout;\r\n }\r\n }\r\n return _super.prototype.performApiGetDetailed.call(this, this._apiPath, { timeout: timeout });\r\n };\r\n return EcsFetcher;\r\n}(simplerestclients_1.GenericRestClient));\r\n// Main ECS client. Supports alternate ECS backend URLs and configuration fetch retries.\r\nvar EcsClient = /** @class */ (function () {\r\n function EcsClient(_config, _skypeTokenData, _appActiveData, _allowBackgroundFetchData, _telemetryManager) {\r\n this._config = _config;\r\n this._skypeTokenData = _skypeTokenData;\r\n this._appActiveData = _appActiveData;\r\n this._allowBackgroundFetchData = _allowBackgroundFetchData;\r\n this._telemetryManager = _telemetryManager;\r\n this._ecsFailureBackoffTimer = new simplerestclients_1.ExponentialTime(1000, 300000);\r\n this._cacheMaxAgeRegex = /.*max-age=(\\d+).*/ig;\r\n this._serverIndex = NaN;\r\n }\r\n EcsClient.prototype.getConfig = function (oldConfig, userConfig, parameters) {\r\n var _this = this;\r\n var urls = this._config.getConfig().hosts;\r\n // Randomly select the ECS server url to issue the first request against and store the index\r\n if (isNaN(this._serverIndex) || this._serverIndex > urls.length - 1) {\r\n this._serverIndex = Math.floor(Math.random() * urls.length);\r\n }\r\n if (!urls || !urls.length) {\r\n return SyncTasks.Rejected(new Error('no configuration service endpoint'));\r\n }\r\n var deferred = SyncTasks.Defer();\r\n var fetchAttempts = 0;\r\n // Keep trying to fetch config (w/ Exponential Backoff) until it's fetched succesfully\r\n var callConfigServer = function () {\r\n var etag = oldConfig && oldConfig.eTag ? oldConfig.eTag : undefined;\r\n var fetcher = new EcsFetcher(urls[_this._serverIndex], _this._config, _this._skypeTokenData, _this._appActiveData, _this._allowBackgroundFetchData, etag, userConfig, parameters);\r\n fetchAttempts++;\r\n fetcher.getConfig().then(function (res) {\r\n var eTagHeader = res.headers['etag'];\r\n var expirationHeader = res.headers['expires'];\r\n if (res.body && res.body.Headers) {\r\n // If the service headers are missing, try to get them from the response body\r\n if (!eTagHeader) {\r\n eTagHeader = res.body.Headers.ETag;\r\n }\r\n if (!expirationHeader) {\r\n expirationHeader = res.body.Headers.Expires;\r\n }\r\n }\r\n lastResponseTime = Date.now();\r\n // As per ECS guidance, if ETag or expiration are missing, treat as a failure.\r\n if (!eTagHeader || !expirationHeader) {\r\n console.warn('ECS - Service returned an empty ETag or Expiration header: ' +\r\n JSON.stringify(res));\r\n return SyncTasks.Rejected();\r\n }\r\n // Override to deal with client clock skew.\r\n var updatedExpiration = new Date(_this._calculateExpirationDate(res.headers)).getTime();\r\n var ecsData;\r\n if (res.statusCode === 304 && oldConfig) {\r\n // Etag matched, so no change. Use old config values and continue as normal.\r\n // Use a shallow clone since we don't need to make a full clone of the config data.\r\n ecsData = __assign({}, oldConfig);\r\n ecsData.eTag = eTagHeader;\r\n ecsData.expiration = updatedExpiration;\r\n ecsData.cacheUpdateTime = lastResponseTime;\r\n ecsData.lastFetchTokenHash = _this._skypeTokenData.getSkypeTokenHash(res.requestHeaders['Authorization']);\r\n }\r\n else {\r\n if (typeof res.body !== 'object') {\r\n console.warn('ECS - Service returned invalid response ' + JSON.stringify(res));\r\n return SyncTasks.Rejected();\r\n }\r\n // Take from response\r\n ecsData = {\r\n config: res.body,\r\n configType: userConfig ? Models_1.EcsConfigType.User : Models_1.EcsConfigType.Default,\r\n eTag: eTagHeader,\r\n expiration: updatedExpiration,\r\n cacheUpdateTime: currentRequestTime,\r\n lastFetchTokenHash: _this._skypeTokenData.getSkypeTokenHash(res.requestHeaders['Authorization']),\r\n appVersion: _this._config.getConfig().clientVersion\r\n };\r\n }\r\n var fetchDelayMs = lastResponseTime - currentRequestTime;\r\n var fetchDurationValid = (fetchDelayMs < 0 || fetchDelayMs > EcsFetchDurationLimit) ? false : true;\r\n var cacheAge = oldConfig ? (Date.now() - oldConfig.cacheUpdateTime) : 0;\r\n _this._telemetryManager.sendTelemetryEvent(new TelemetryEvents.EcsConfigFetchResponse(fetchDelayMs, res.statusCode, fetchAttempts, _this._skypeTokenData.isSkypeTokenValid(), urls[_this._serverIndex], eTagHeader, fetchDurationValid, etag ? true : false, JSON.stringify(res).length, cacheAge, (oldConfig && oldConfig.expiration - Date.now() > 0) ? false : true, currentRequestTime, lastResponseTime));\r\n _this._ecsFailureBackoffTimer.reset();\r\n deferred.resolve(ecsData);\r\n }).catch(function () {\r\n // Backoff and Switch ECS servers if possible.\r\n _this._serverIndex = (_this._serverIndex + 1) % (urls.length);\r\n setTimeout(function () {\r\n callConfigServer();\r\n }, _this._ecsFailureBackoffTimer.getTimeAndCalculateNext());\r\n });\r\n };\r\n callConfigServer();\r\n return deferred.promise();\r\n };\r\n EcsClient.prototype._calculateExpirationDate = function (headers) {\r\n var forceFetchTime = Date.now() + ForceFetchTimeout;\r\n if (headers['date'] && headers['expires']) {\r\n // Calculate client clock skew\r\n var responseDate = new Date(headers['date']).getTime();\r\n var clockSkew = Date.now() - responseDate;\r\n // Ensure we don't do Math.min(forceFetchTime, NaN) => NaN\r\n var headerExpirationTime = new Date(headers['expires']).getTime();\r\n if (isNaN(headerExpirationTime)) {\r\n return forceFetchTime;\r\n }\r\n return Math.min(forceFetchTime, headerExpirationTime + clockSkew);\r\n }\r\n // This is a fix for browsers that don't implement Access-Control-Expose-Headers header properly\r\n // and Date header is not propagated (IE, Edge). We take the value from the cache-control\r\n // header (seconds) and add it to the client's current time.\r\n var match = this._cacheMaxAgeRegex.exec(headers['cache-control']);\r\n this._cacheMaxAgeRegex.lastIndex = 0;\r\n if (match && match.length === 2) {\r\n return Math.min(forceFetchTime, Date.now() + (Number(match[1]) * 1000));\r\n }\r\n // Backup - send next request in 30 minutes.\r\n return Date.now() + EcsExpirationFallbackDuration;\r\n };\r\n return EcsClient;\r\n}());\r\nexports.default = EcsClient;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Button, Header, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { InviteContext, InviteContextConsumer } from 'src/ts/contexts/invites/InviteContext';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport { CookieHelper } from '../../helpers/CookieHelper';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes, OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Header as PageHeader } from '../common/Header';\r\nimport { Padder } from '../common/Padder';\r\n\r\ninterface InviteViewProps {\r\n onLaunchClick: () => void;\r\n}\r\n\r\nexport class InviteView extends React.PureComponent {\r\n\r\n renderAvatar() {\r\n return { (inviteContext) => inviteContext &&\r\n \r\n };\r\n }\r\n\r\n renderTitle() {\r\n return { (inviteContext) => inviteContext &&\r\n
{ localizer.getString('txt_off_skype_invites_join_skype', { user_name: inviteContext.invite.inviterName }) }
\r\n }
;\r\n }\r\n\r\n renderDesktopBody() {\r\n if (deviceType !== DeviceTypes.Desktop) {\r\n return null;\r\n }\r\n\r\n return \r\n { localizer.getString('Meetings.txt_join_meeting_description') } \r\n { { localizer.getString('Meetings.lnk_join_meeting_retry') }\r\n }\r\n ;\r\n }\r\n\r\n renderControls() {\r\n if (deviceType === DeviceTypes.Mobile) {\r\n return ;\r\n }\r\n\r\n return { (inviteContext) => inviteContext &&\r\n <>\r\n { canJoinOnWeb && }\r\n\r\n \r\n \r\n };\r\n }\r\n\r\n renderMobileBody() {\r\n if (deviceType !== DeviceTypes.Mobile) {\r\n return null;\r\n }\r\n\r\n return <>\r\n \r\n { localizer.getString('txt_launch_first_time_device') }\r\n \r\n \r\n { localizer.get('txt_launch_please_download', {\r\n download_skype: \r\n { localizer.getString('btn_launch_download_skype') }\r\n ,\r\n }) }\r\n \r\n ;\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n \r\n
\r\n { this.renderAvatar() }\r\n { this.renderTitle() }\r\n { this.renderControls() }\r\n { this.renderMobileBody() }\r\n { this.renderDesktopBody() }\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _joinOnWeb = (inviteContext: InviteContext) => {\r\n return () => {\r\n logger.action({ name: 'join-login' });\r\n\r\n const webClientUrl = UrlHelper.getWebClientUrlWithCorrelationId({\r\n inviteId: inviteContext.invite.longId,\r\n skypeId: inviteContext.invite.inviterSkypeId,\r\n });\r\n window.location.href = config.urls.app.login(webClientUrl, CookieHelper.getCookie(config.cookies.csrf).singleValue);\r\n };\r\n }\r\n\r\n private _downloadSkype = () => {\r\n return () => {\r\n logger.action({ name: 'download' });\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.open(downloadUrl, '_blank');\r\n };\r\n }\r\n}\r\n","export interface OffSkypeInviteServiceModel {\r\n readonly clientSource: string;\r\n readonly inviterName: string;\r\n readonly inviterSkypeId: string;\r\n readonly longId: string;\r\n}\r\n\r\nexport interface RawOffSkypeInviteServiceModel {\r\n readonly ClientSource: string;\r\n readonly InviterName: string;\r\n readonly InviterSkypeId: string;\r\n readonly LongId: string;\r\n}\r\n\r\nexport function transform(model: RawOffSkypeInviteServiceModel): OffSkypeInviteServiceModel {\r\n return {\r\n clientSource: model.ClientSource,\r\n inviterName: model.InviterName,\r\n inviterSkypeId: model.InviterSkypeId,\r\n longId: model.LongId,\r\n };\r\n}\r\n","import * as React from 'react';\r\nimport { Actions } from 'src/ts/models/SharedTypes';\r\n\r\nexport interface DoContext {\r\n action: Actions;\r\n skypeId: string;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext(undefined);\r\n\r\nexport const DoContextProvider = context.Provider;\r\n\r\nexport const DoContextConsumer = context.Consumer;\r\n","import { ThemeInput } from '@stardust-ui/react';\r\n\r\n// https://github.com/stardust-ui/react/blob/master/src/themes/teams/colors.ts\r\nconst colors = {\r\n 50: '#E7F2FB',\r\n 100: '#B9DAF3',\r\n 200: '#8BC1EB',\r\n 300: '#5CA9E3',\r\n 400: '#2E90DB',\r\n 500: '#0078d4',\r\n 600: '#0063AE',\r\n 700: '#004D87',\r\n 800: '#003761',\r\n 900: '#00213A',\r\n};\r\n\r\n// tslint:disable:object-literal-key-quotes\r\nconst theme: ThemeInput = {\r\n siteVariables: { // https://github.com/stardust-ui/react/tree/master/src/themes/teams/siteVariables.ts\r\n brand: colors[500],\r\n brand02: colors[900],\r\n brand04: colors[700],\r\n brand06: colors[500],\r\n brand08: colors[300],\r\n brand12: colors[200],\r\n brand14: colors[100],\r\n brand16: colors[50],\r\n brandIcon: '/images/icons/skype-logo-blue-new.png',\r\n },\r\n componentStyles: {\r\n Button: {\r\n root: {\r\n borderRadius: '6rem',\r\n ':focus': {\r\n '::after': {\r\n // tslint:disable-next-line:max-line-length\r\n borderRadius: '6rem !important', // borderRadius 3px is hardCoded in stardust https://github.com/stardust-ui/react/blob/86e896e8b21ecd22c0fdfc151e6e2562af0d6cfe/src/themes/teams/components/Button/buttonStyles.ts#L115\r\n },\r\n },\r\n },\r\n },\r\n },\r\n};\r\n\r\nexport default theme;\r\n","import { AWTEventPriority } from '@aria/webjs-sdk';\r\nimport { ApiCallOptions as BaseApiCallOptions, GenericRestClient, WebResponse } from 'simplerestclients';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { logger } from '../helpers/LoggerHelper';\r\n\r\nexport interface EventProperties {\r\n priority?: AWTEventPriority;\r\n genericEventPath?: string; // Override default path for telemtry if it contains sensitive information\r\n customPropertiesProvider?: ((response: WebResponse) => any); // Append any custom field from response to the event\r\n}\r\n\r\nexport interface ApiCallOptions extends BaseApiCallOptions {\r\n eventProperties?: EventProperties;\r\n}\r\n\r\nconst unwrap: (resp: WebResponse) => T = (resp) => resp.body;\r\nexport class BaseRestClient extends GenericRestClient {\r\n protected _defaultOptions: ApiCallOptions = {\r\n contentType: 'application/json',\r\n acceptType: 'application/json',\r\n };\r\n\r\n performApiGet(apiPath: string, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiGetDetailed(apiPath, options).then(unwrap);\r\n }\r\n\r\n performApiGetDetailed(apiPath: string, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiGetDetailed(apiPath, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n performApiPost(apiPath: string, objToPost: any, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiPostDetailed(apiPath, objToPost, options).then(unwrap);\r\n }\r\n\r\n performApiPostDetailed(apiPath: string, objToPost: any, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiPostDetailed(apiPath, objToPost, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n performApiPatch(apiPath: string, objToPatch: any, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiPatchDetailed(apiPath, objToPatch, options).then(unwrap);\r\n }\r\n\r\n performApiPatchDetailed(apiPath: string, objToPatch: any, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiPatchDetailed(apiPath, objToPatch, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n performApiPut(apiPath: string, objToPut: any, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiPutDetailed(apiPath, objToPut, options).then(unwrap);\r\n }\r\n\r\n performApiPutDetailed(apiPath: string, objToPut: any, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiPutDetailed(apiPath, objToPut, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n performApiDelete(apiPath: string, objToDelete?: any, options?: ApiCallOptions): SyncTasks.Promise {\r\n return this.performApiDeleteDetailed(apiPath, objToDelete, options).then(unwrap);\r\n }\r\n\r\n performApiDeleteDetailed(apiPath: string, objToDelete: any, options?: ApiCallOptions): SyncTasks.Promise> {\r\n const startTime = new Date().getTime();\r\n const promise = super.performApiDeleteDetailed(apiPath, objToDelete, options);\r\n promise.then(this.networkCallback(startTime, options), this.networkCallback(startTime, options));\r\n return promise;\r\n }\r\n\r\n protected networkCallback = (startTime: number, options?: ApiCallOptions): ((response: WebResponse) => void) => {\r\n const eventProperties = options && options.eventProperties;\r\n const genericEventPath = eventProperties && eventProperties.genericEventPath;\r\n const customPropertiesProvider = eventProperties && eventProperties.customPropertiesProvider;\r\n const eventPriority = eventProperties && eventProperties.priority;\r\n return (response: WebResponse) => {\r\n const endTime = new Date().getTime();\r\n const responseUrl = genericEventPath ? this._endpointUrl + genericEventPath : response.url;\r\n const eventUrl = responseUrl ? responseUrl.split('?', 1).join('') : responseUrl;\r\n const path = eventUrl ? eventUrl.replace(this._endpointUrl, '') : eventUrl;\r\n logger.network({\r\n method: response.method,\r\n responseTime: endTime - startTime,\r\n statusCode: response.statusCode,\r\n statusText: response.statusText,\r\n url: eventUrl,\r\n host: this._endpointUrl,\r\n path,\r\n custom: customPropertiesProvider ? customPropertiesProvider(response) : undefined,\r\n }, eventPriority);\r\n };\r\n }\r\n}\r\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","\"use strict\";\r\n/**\r\n* AllowBackgroundFetchData.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Holder for information if background fetch is allowed\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar SyncTasks = require(\"synctasks\");\r\nvar AllowBackgroundFetchData = /** @class */ (function () {\r\n function AllowBackgroundFetchData() {\r\n this._isAllowed = false;\r\n }\r\n AllowBackgroundFetchData.prototype.putBackgroundFetchAllowed = function (isAllowed) {\r\n this._isAllowed = isAllowed;\r\n if (this.isBackgroundFetchAllowed() && this._isAllowedDeferral) {\r\n var deferral = this._isAllowedDeferral;\r\n this._isAllowedDeferral = undefined;\r\n deferral.resolve(void 0);\r\n }\r\n };\r\n AllowBackgroundFetchData.prototype.isBackgroundFetchAllowed = function () {\r\n return this._isAllowed;\r\n };\r\n AllowBackgroundFetchData.prototype.waitForBackgroundFetchAllowed = function () {\r\n if (this.isBackgroundFetchAllowed()) {\r\n return SyncTasks.Resolved();\r\n }\r\n // Set up deferral to wait until background fetch is allowed\r\n if (!this._isAllowedDeferral) {\r\n this._isAllowedDeferral = SyncTasks.Defer();\r\n }\r\n return this._isAllowedDeferral.promise();\r\n };\r\n return AllowBackgroundFetchData;\r\n}());\r\nexports.default = AllowBackgroundFetchData;\r\n","import * as React from 'react';\r\n\r\nexport class LoadingView extends React.PureComponent {\r\n\r\n render() {\r\n return
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
;\r\n }\r\n}\r\n","import { CookieConfig } from 'config';\r\nimport { Dictionary } from '../models/SharedTypes';\r\n\r\nconst defaultValueSeparator = ':';\r\n\r\nexport class CookieHelper {\r\n\r\n /**\r\n * Get the cookie\r\n *\r\n * param {string} name\r\n *\r\n * @return {object}\r\n */\r\n static getCookie(config: CookieConfig) {\r\n return (CookieHelper.hasCookie(config) === true) ? CookieHelper.parse()[config.name] : {};\r\n }\r\n\r\n /**\r\n * Set the cookie\r\n *\r\n * @param {string}\r\n *\r\n * @return void\r\n */\r\n static setCookie(config: CookieConfig, cookieValuesObject: object ) {\r\n const now = Math.round(Date.now() / 1000); // seconds\r\n let value = cookieValuesObject as any;\r\n\r\n // We have to add TS if cookie does not exist\r\n if (CookieHelper.hasCookie(config) === false) {\r\n value.TS = now;\r\n }\r\n\r\n // we need to add modification timestamp\r\n value.TM = now;\r\n\r\n value = CookieHelper.cookieObjectToString(value);\r\n\r\n const options = [];\r\n if (config.domain) {\r\n options.push('domain=' + config.domain);\r\n }\r\n if (config.path) {\r\n options.push('path=' + config.path);\r\n }\r\n if (config.maxAge) {\r\n options.push('expires=' + CookieHelper.getExpirationDate(config.maxAge).toUTCString());\r\n }\r\n\r\n const optionsString = options.length ? ';' + options.join(';') : '';\r\n\r\n document.cookie = config.name + '=' + value + optionsString;\r\n }\r\n\r\n /**\r\n * If cookie is present\r\n *\r\n * @return boolean\r\n */\r\n static hasCookie(config: CookieConfig) {\r\n return CookieHelper.parse().hasOwnProperty(config.name);\r\n }\r\n\r\n /**\r\n * Get cookie value\r\n *\r\n * @param {string} key\r\n *\r\n * @return {string} key value\r\n */\r\n static getCookieValue(config: CookieConfig, key: string = 'singleValue') {\r\n const params = CookieHelper.getCookie(config);\r\n\r\n return params && params[key] ? params[key] : undefined;\r\n }\r\n\r\n /**\r\n * Set cookie value\r\n *\r\n * @param {string} key\r\n * @param {string} value\r\n *\r\n */\r\n static setCookieValue(config: CookieConfig, value: string, key = 'singleValue') {\r\n const params = CookieHelper.getCookie(config);\r\n params[config.key || key] = value;\r\n\r\n CookieHelper.setCookie(config, params);\r\n }\r\n\r\n /**\r\n *\r\n */\r\n static removeCookie(config: CookieConfig) {\r\n if (!CookieHelper.hasCookie(config)) {\r\n return;\r\n }\r\n\r\n CookieHelper.setCookie({ name: config.name }, {});\r\n }\r\n\r\n /**\r\n * Parse document.cookie to JSON\r\n *\r\n * @example {'SC': 'LC=en:CCY=EUR', 'SWA':'webapp'}\r\n *\r\n *\r\n * @return {object}\r\n */\r\n static parse() {\r\n if (!document.cookie) {\r\n return {};\r\n }\r\n\r\n const cookies: any = {};\r\n document.cookie.split(';').forEach((cookie) => {\r\n const separatorPos = cookie.indexOf('=');\r\n\r\n const key = cookie.substring(0, separatorPos).trim();\r\n const value = cookie.substring(separatorPos + 1).trim();\r\n cookies[key] = CookieHelper.parseCookieValues(value);\r\n });\r\n\r\n return cookies;\r\n }\r\n /**\r\n * Turns object to string\r\n *\r\n * @param {object} cookieObject\r\n * @param {string} cookieSeparator\r\n *\r\n * @return {string}\r\n */\r\n private static cookieObjectToString(cookieObject: object, cookieSeparator = defaultValueSeparator) {\r\n const cookieObjectKeys = Object.keys(cookieObject);\r\n const cookieValue: string[] = [];\r\n\r\n if (cookieObject.hasOwnProperty('singleValue')) {\r\n return (cookieObject as any).singleValue;\r\n }\r\n\r\n cookieObjectKeys.forEach((cookieObjectKey) => {\r\n cookieValue.push(cookieObjectKey + '=' + (cookieObject as any)[cookieObjectKey]);\r\n });\r\n\r\n return cookieValue.join(cookieSeparator);\r\n }\r\n\r\n /**\r\n * Parse cookie values into JSON\r\n *\r\n * @example {'LC':'en','CCY':'EUR'}\r\n *\r\n * @param {string} cookieSeparator\r\n *\r\n * @return {object}\r\n */\r\n private static parseCookieValues(cookieValue: string, cookieSeparator = defaultValueSeparator) {\r\n const params: Dictionary = {};\r\n\r\n cookieValue.split(cookieSeparator).forEach((splitCookieValue) => {\r\n let splitParams: string[];\r\n if (splitCookieValue.indexOf('=') !== -1) {\r\n splitParams = splitCookieValue.split('=');\r\n } else {\r\n splitParams = ['singleValue', splitCookieValue];\r\n }\r\n\r\n params[splitParams[0].trim()] = splitParams[1].trim();\r\n });\r\n return params;\r\n }\r\n\r\n /**\r\n * Get the date object for expiration\r\n *\r\n * @param {int} seconds Number of seconds to add\r\n *\r\n * @return {Date}\r\n */\r\n private static getExpirationDate(seconds: number) {\r\n return new Date((seconds * 1000) + Date.now());\r\n }\r\n}\r\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { CaptchaSolution } from '../components/common/Captcha';\r\nimport { logger } from '../helpers/LoggerHelper';\r\nimport { ConversationPayload, ConversationServiceModel, RawConversationServiceModel } from '../models/ConversationServiceModel';\r\nimport {\r\n CreateAuthenticatedMeetingPayloadMeetingsApi,\r\n CreateMeetingPayloadMeetingsApi,\r\n CreateMeetingServiceModel,\r\n GuestJoinPayloadMeetingsApi,\r\n GuestUserServiceModel,\r\n MeetnowGuestServiceModel,\r\n} from '../models/GuestUserServiceModel';\r\nimport { BaseRestClient } from './BaseRestClient';\r\nimport { customErrorHandler, transformWrapper } from './MeetingsApiClientUtils';\r\n\r\nconst SessionIdHeaderKey = 'x-sessionId';\r\nconst SupportsCaptchaHeader = 'X-Skype-SupportsCaptcha';\r\nconst CaptchaSolutionHeader = 'X-Skype-CaptchaSolution';\r\nconst CaptchaChallengeIdHeader = 'X-Skype-CaptchaChallengeId';\r\nconst CaptchaAzureRegionHeader = 'X-Skype-CaptchaAzureRegion';\r\n\r\nclass MeetingsApiClient extends BaseRestClient {\r\n joinAsGuest(\r\n payload: T,\r\n retries: number = 0,\r\n joinThread: boolean = false,\r\n captcha?: CaptchaSolution | undefined,\r\n customPropertiesProvider?: () => object): SyncTasks.Promise {\r\n const genericEventPath = joinThread ?\r\n `/v1/threads/{threadId}/members` : `/v1/meetings/{shortId}/members`;\r\n const apiPath = joinThread ?\r\n `/v1/threads/${payload.threadId}/members` : `/v1/meetings/${payload.shortId}/members`;\r\n const headers: { [key: string]: string } = {};\r\n headers[SessionIdHeaderKey] = logger.getCorrelationId();\r\n if (captcha?.solution) {\r\n headers[SupportsCaptchaHeader] = 'yes';\r\n headers[CaptchaSolutionHeader] = captcha.solution;\r\n headers[CaptchaChallengeIdHeader] = captcha.challengeId;\r\n headers[CaptchaAzureRegionHeader] = captcha.azureRegion;\r\n }\r\n\r\n return this.performApiPost(\r\n apiPath,\r\n {\r\n displayName: payload.displayName,\r\n },\r\n {\r\n customErrorHandler,\r\n eventProperties: {\r\n genericEventPath,\r\n customPropertiesProvider,\r\n },\r\n retries,\r\n headers,\r\n });\r\n }\r\n\r\n getConversation(payload: ConversationPayload, retries: number = 0): SyncTasks.Promise {\r\n const shortId = payload.shortId;\r\n const headers: { [key: string]: string } = {};\r\n headers[SessionIdHeaderKey] = logger.getCorrelationId();\r\n\r\n return this.performApiGet(\r\n `/v1/meetings/${ shortId }`,\r\n {\r\n customErrorHandler,\r\n eventProperties: {\r\n genericEventPath: '/v1/meetings/{shortId}',\r\n },\r\n retries,\r\n headers,\r\n },\r\n ).then(transformWrapper(shortId));\r\n }\r\n\r\n createGuestMeeting(payload: CreateMeetingPayloadMeetingsApi, retries: number = 0): SyncTasks.Promise {\r\n return this.createMeeting('/v1/meetnow/createjoinlinkguest', payload, retries);\r\n }\r\n\r\n createAuthenticatedMeeting(payload: CreateAuthenticatedMeetingPayloadMeetingsApi, retries: number = 0): SyncTasks.Promise {\r\n return this.createMeeting('/v1/meetnow/createjoinlink', payload, retries);\r\n }\r\n\r\n meetnowGuest(payload: CreateMeetingPayloadMeetingsApi, retries: number = 0): SyncTasks.Promise {\r\n return this.createMeeting('/v1/meetnow/guest', payload, retries);\r\n }\r\n\r\n private createMeeting(path: string, payload: CreateMeetingPayloadMeetingsApi, retries: number): SyncTasks.Promise {\r\n const headers: { [key: string]: string } = {};\r\n headers[SessionIdHeaderKey] = logger.getCorrelationId();\r\n\r\n return this.performApiPost(\r\n path,\r\n payload,\r\n {\r\n customErrorHandler,\r\n eventProperties: {\r\n genericEventPath: path,\r\n },\r\n retries,\r\n headers,\r\n },\r\n );\r\n }\r\n}\r\n\r\nexport default new MeetingsApiClient(config.urls.api.meetings);\r\n","\"use strict\";\r\n/**\r\n* Scheduler.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Scheduling module for fetching ECS config\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Models_1 = require(\"./Models\");\r\nvar RestClient_1 = require(\"./RestClient\");\r\nvar Scheduler = /** @class */ (function () {\r\n function Scheduler(_config, _skypeTokenData, _cache, appActiveData, allowBackgroundFetchData, telemetryManager) {\r\n var _this = this;\r\n this._config = _config;\r\n this._skypeTokenData = _skypeTokenData;\r\n this._cache = _cache;\r\n this._isFetchingSettings = {};\r\n this._pendingFetch = {};\r\n this._paused = false;\r\n this._fetchEcsSettingsIfNeeded = function (configType) {\r\n var config = _this._config.getConfig();\r\n var cachedConfig = _this._cache.getEcsConfigByType(configType);\r\n // If we don't care about this config, abort\r\n if (config.configsToFetch.indexOf(configType) === -1) {\r\n return;\r\n }\r\n // Don't refresh if we're already fetching.\r\n if (_this._isFetchingSettings[configType]) {\r\n return;\r\n }\r\n if (!cachedConfig && _this._pendingFetch[configType]) {\r\n _this._fetchSkypeEcsSettings(configType);\r\n return;\r\n }\r\n // Get time until expiration, negative if we have no config.\r\n var configExpirationMs = cachedConfig ? cachedConfig.expiration - Date.now() : -1;\r\n // If config expired, fetch now.\r\n if (configExpirationMs <= 0) {\r\n _this._fetchSkypeEcsSettings(configType);\r\n return;\r\n }\r\n // If SkypeToken used to fetch has changed, fetchNow\r\n if (cachedConfig && configType === Models_1.EcsConfigType.User && _this._skypeTokenData.isSkypeTokenValid() &&\r\n cachedConfig.lastFetchTokenHash !== _this._skypeTokenData.getSkypeTokenHash(_this._skypeTokenData.getSkypeToken())) {\r\n _this._fetchSkypeEcsSettings(configType);\r\n return;\r\n }\r\n // Schedule another check.\r\n setTimeout(function () { return _this._fetchEcsSettingsIfNeeded(configType); }, configExpirationMs);\r\n };\r\n this._fetchSkypeEcsSettings = function (configType, bypassPause) {\r\n if (bypassPause === void 0) { bypassPause = false; }\r\n if (_this._isFetchingSettings[configType] || (_this._paused && !bypassPause)) {\r\n _this._pendingFetch[configType] = true;\r\n return;\r\n }\r\n _this._pendingFetch[configType] = false;\r\n _this._isFetchingSettings[configType] = true;\r\n var config = _this._config.getConfig();\r\n // will never fail. We'll keep trying to fetch with exponential backoff until the end of time.\r\n config.getEcsParameters()\r\n .catch(function () {\r\n // If we fail to get parameters, continue with none\r\n console.warn('ECS - Failed to fetch ECS fetching parameters');\r\n return {};\r\n })\r\n .then(function (parameters) {\r\n return _this._ecsClient\r\n .getConfig(_this._cache.getEcsConfig(), configType === Models_1.EcsConfigType.User, parameters);\r\n })\r\n .then(function (ecsConfig) {\r\n console.log('ECS - Config fetch complete');\r\n _this._isFetchingSettings[configType] = false;\r\n _this._cache.putConfig(ecsConfig);\r\n // Queue a refresh\r\n _this._fetchEcsSettingsIfNeeded(configType);\r\n });\r\n };\r\n this._ecsClient = new RestClient_1.default(this._config, this._skypeTokenData, appActiveData, allowBackgroundFetchData, telemetryManager);\r\n }\r\n Scheduler.prototype.initialize = function () {\r\n var _this = this;\r\n this.updateConfigsToFetch();\r\n // Re-fetch user settings when skype token changes\r\n this._skypeTokenData.skypeTokenChanged.subscribe(function () { return _this._fetchEcsSettingsIfNeeded(Models_1.EcsConfigType.User); });\r\n };\r\n Scheduler.prototype.updateConfigsToFetch = function () {\r\n var config = this._config.getConfig();\r\n for (var _i = 0, _a = config.configsToFetch; _i < _a.length; _i++) {\r\n var configType = _a[_i];\r\n if (!(configType in this._isFetchingSettings)) {\r\n this._isFetchingSettings[configType] = false;\r\n }\r\n if (!(configType in this._isFetchingSettings)) {\r\n this._pendingFetch[configType] = false;\r\n }\r\n }\r\n // If we haven't downloaded a config yet (which should happen only on\r\n // first run), download it immediately so we have the settings by the time\r\n // the UI loads, and we can enable or disable specific UI features.\r\n for (var _b = 0, _c = config.configsToFetch; _b < _c.length; _b++) {\r\n var configType = _c[_b];\r\n var cachedData = this._cache.getEcsConfigByType(configType);\r\n if (!cachedData || (cachedData.appVersion && cachedData.appVersion !== config.clientVersion)) {\r\n this._fetchSkypeEcsSettings(configType, true);\r\n }\r\n else {\r\n this._fetchEcsSettingsIfNeeded(configType);\r\n }\r\n }\r\n };\r\n Scheduler.prototype.requestUpdate = function () {\r\n var config = this._config.getConfig();\r\n for (var _i = 0, _a = config.configsToFetch; _i < _a.length; _i++) {\r\n var configType = _a[_i];\r\n this._fetchSkypeEcsSettings(configType);\r\n }\r\n };\r\n Scheduler.prototype.pause = function () {\r\n this._paused = true;\r\n };\r\n Scheduler.prototype.resume = function () {\r\n this._paused = false;\r\n var config = this._config.getConfig();\r\n for (var _i = 0, _a = config.configsToFetch; _i < _a.length; _i++) {\r\n var configType = _a[_i];\r\n this._fetchEcsSettingsIfNeeded(configType);\r\n }\r\n };\r\n return Scheduler;\r\n}());\r\nexports.default = Scheduler;\r\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","export interface IMeetNowSettings {\r\n MeetNowEdgeJoinApiHost: string;\r\n MeetNowEdgeNumberOfFetchRetries: number;\r\n MeetNowEdgeAriaTenantId: string;\r\n MeetNowEdgeAllowedQueryParameters: string[];\r\n DefaultMeetingTitle: string;\r\n}\r\n\r\nconst rootElementId = 'meetnowContainer';\r\nconst settingsDataAttributeName = 'meetnowEdgeSettings';\r\nconst allowedQueryParameters = ['source', 'exp', 'correlationId', 'call', 'video', 'mic'];\r\nconst defaultMeetingTitle = 'Meet Now';\r\n\r\nlet settings: MeetNowSettings;\r\n\r\nconst init = () => {\r\n const rootElement = document.getElementById(rootElementId);\r\n if (rootElement) {\r\n const data = rootElement.dataset[settingsDataAttributeName] || '';\r\n const parsedSettings = JSON.parse(data) as IMeetNowSettings;\r\n settings = new MeetNowSettings(parsedSettings);\r\n } else {\r\n throw new Error('Config not found.');\r\n }\r\n};\r\n\r\nclass MeetNowSettings implements IMeetNowSettings {\r\n private readonly settings: IMeetNowSettings;\r\n\r\n constructor(currentSettings: IMeetNowSettings) {\r\n this.settings = currentSettings;\r\n }\r\n\r\n get MeetNowEdgeAriaTenantId() {\r\n return this.settings.MeetNowEdgeAriaTenantId;\r\n }\r\n get MeetNowEdgeJoinApiHost() {\r\n return this.settings.MeetNowEdgeJoinApiHost;\r\n }\r\n get MeetNowEdgeNumberOfFetchRetries() {\r\n return this.settings.MeetNowEdgeNumberOfFetchRetries;\r\n }\r\n get MeetNowEdgeAllowedQueryParameters() {\r\n return allowedQueryParameters;\r\n }\r\n get DefaultMeetingTitle() {\r\n return defaultMeetingTitle;\r\n }\r\n}\r\n\r\nconst getMeetNowSettings = (): MeetNowSettings => {\r\n if (settings) {\r\n return settings;\r\n }\r\n\r\n init();\r\n return settings;\r\n};\r\n\r\nexport default getMeetNowSettings;\r\n","import * as React from 'react';\r\nimport { StackNavigationContext, StackNavigationContextConsumer } from '../../contexts/StackNavigationContext';\r\nimport { StackNavigationProps, StackNavigationView } from './StackNavigationView';\r\n\r\nexport class NestedStackNavigationView extends React.PureComponent {\r\n\r\n render() {\r\n return { (parentContext) => this._renderNested(parentContext) };\r\n }\r\n private _renderNested = (parentContext: StackNavigationContext) => {\r\n const childProps = { ...this.props, parentContext };\r\n return React.createElement(StackNavigationView, childProps);\r\n }\r\n}\r\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","import { Image, ProviderConsumer, ThemePrepared } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { IMeetNowSettings } from 'src/ts/meetnow/MeetNowSettings';\r\nimport { AriaContextConsumer } from '../../contexts/AriaContext';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { Footer } from '../common/Footer';\r\nimport { NestedStackNavigationView } from '../common/NestedStackNavigationView';\r\nimport { UnifiedLoginMethod } from './login/UnifiedLoginMethod';\r\n\r\ninterface UnifiedViewProps {\r\n onLaunchClick: () => void;\r\n allowDesktopSafariGuestFlow: boolean;\r\n meetNowSettings: IMeetNowSettings;\r\n country?: string;\r\n}\r\n\r\nexport class UnifiedView extends React.PureComponent {\r\n\r\n renderThemeAware = (_: ThemePrepared) => {\r\n return
\r\n\r\n
\r\n { (configContext) =>\r\n \r\n }\r\n { (ariaContext) =>\r\n \r\n }\r\n initialViewProps={\r\n { eventViewName: 'login-method' }\r\n }\r\n />\r\n }\r\n
\r\n\r\n
\r\n
;\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n","import config from 'config';\r\nimport { DoContext } from 'src/ts/contexts/do/DoContext';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface LauncherProps {\r\n do: DoContext;\r\n}\r\n\r\nexport class Launcher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.doLauncher.intentUri(this.props.do.action, this.props.do.skypeId, logger.getCorrelationId(), 'launcher', config.urls.app.download);\r\n }\r\n return config.urls.doLauncher.skypeUri(this.props.do.action, this.props.do.skypeId, logger.getCorrelationId(), 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'join-do';\r\n }\r\n}\r\n","import * as clipboard from 'clipboard-polyfill';\r\n\r\nclass ClipboardHelper {\r\n public copyToClipboard(text: string) {\r\n clipboard.writeText(text);\r\n }\r\n}\r\n\r\nexport const clipboardHelper = new ClipboardHelper();\r\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","\"use strict\";\r\n/**\r\n* TelemetryManager.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Record new telemtry events and fires update\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar subscribableevent_1 = require(\"subscribableevent\");\r\nvar TelemetryManager = /** @class */ (function () {\r\n function TelemetryManager(_cache) {\r\n this._cache = _cache;\r\n this.telemetryEventAdded = new subscribableevent_1.default();\r\n //noop\r\n }\r\n TelemetryManager.prototype.sendTelemetryEvent = function (event) {\r\n var eventName = event.getEventName();\r\n var eventData = event.getAttributes();\r\n var telemetryEnabled = false;\r\n var clientTelemetryConfig = this._cache.getEcsConfig();\r\n if (clientTelemetryConfig && TelemetryManager._containsEcsClientTelemetryConfig(clientTelemetryConfig.config)) {\r\n var ecsConfig = clientTelemetryConfig.config.ECSCONFIG;\r\n if (ecsConfig && ecsConfig.ecsClientTelemetry) {\r\n telemetryEnabled = !!ecsConfig.ecsClientTelemetry[eventName];\r\n }\r\n }\r\n if (telemetryEnabled) {\r\n this.telemetryEventAdded.fire(eventName, eventData);\r\n }\r\n };\r\n TelemetryManager._containsEcsClientTelemetryConfig = function (config) {\r\n return !!config && !!config.ECSCONFIG && !!config.ECSCONFIG.ecsClientTelemetry;\r\n };\r\n return TelemetryManager;\r\n}());\r\nexports.default = TelemetryManager;\r\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","import * as React from 'react';\r\n\r\nexport class DomHelper {\r\n\r\n public static fakeButtonAccessibilityKey = (e: React.KeyboardEvent, callback?: (e: React.SyntheticEvent) => void) => {\r\n if (e.key === ' ' || e.key === 'Enter') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!!callback) {\r\n callback(e);\r\n } else {\r\n e.currentTarget.click();\r\n }\r\n }\r\n }\r\n\r\n public static setFocus = (element: HTMLElement | null) => {\r\n if (element) {\r\n element.focus();\r\n }\r\n }\r\n}\r\n","import { AWTPiiKind } from '@aria/webjs-sdk';\r\nimport { localizer } from '@skype/bew-localization';\r\nimport { Button, Portal, Provider, ThemeInput, themes } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport merge from 'lodash/merge';\r\nimport noop from 'lodash/noop';\r\nimport * as React from 'react';\r\nimport * as SyncTasks from 'synctasks';\r\nimport '../../vendor/silentLogin';\r\nimport { RootView as BotsRootView } from './components/bots/RootView';\r\nimport { AriaLive } from './components/common/AriaLive';\r\nimport { ErrorBoundary } from './components/common/ErrorBoundary';\r\nimport { ErrorDetails } from './components/common/ErrorDetails';\r\nimport { RootView as DoRootView } from './components/do/RootView';\r\nimport { RootView as InvitesRootView } from './components/invites/RootView';\r\nimport { RootView as MeetingsRootView } from './components/meetings/RootView';\r\nimport { RootView as ProfilesRootView } from './components/profiles/RootView';\r\nimport { AriaContext, AriaContextProvider, AriaMessage } from './contexts/AriaContext';\r\nimport { ConfigContext, ConfigContextProvider } from './contexts/ConfigContext';\r\nimport { EcsConfigFallback, EcsContext, EcsContextProvider } from './contexts/EcsContext';\r\nimport { ErrorContext, ErrorContextProvider } from './contexts/ErrorContext';\r\nimport { UserContext, UserContextProvider } from './contexts/UserContext';\r\nimport { CookieHelper } from './helpers/CookieHelper';\r\nimport { ecsHelper } from './helpers/EcsHelper';\r\nimport { browser, Browsers, canJoinOnWeb, deviceType, DeviceTypes, EnvironmentHelper } from './helpers/EnvironmentHelper';\r\nimport { DisplayableError } from './helpers/ErrorHelper';\r\nimport { loadTranslation } from './helpers/LocalizerHelper';\r\nimport { CommonProperty, logger } from './helpers/LoggerHelper';\r\nimport { silentLoginAsync, SilentLoginResult } from './helpers/SilentLoginHelper';\r\nimport { mainContentId, Themes } from './models/SharedTypes';\r\nimport ProfileRestClient from './rest/ProfileRestClient';\r\nimport * as localThemes from './themes';\r\n\r\nexport enum EntryPoint {\r\n Meetings = 'meetings',\r\n Invites = 'invites',\r\n Bots = 'bots',\r\n Do = 'do',\r\n Profiles = 'profiles',\r\n}\r\n\r\nexport interface AppProps {\r\n readonly language: string;\r\n readonly basePath: string;\r\n readonly entryPoint: EntryPoint;\r\n readonly skypetoken?: string;\r\n readonly theme?: Themes;\r\n readonly country?: string;\r\n}\r\n\r\nexport interface AppState {\r\n loadingTranslations: boolean;\r\n loadingEcs: boolean;\r\n theme: ThemeInput;\r\n userContext: UserContext;\r\n configContext: ConfigContext;\r\n errorContext: ErrorContext;\r\n ariaContext: AriaContext;\r\n ecsContext: EcsContext;\r\n}\r\n\r\nconst SilentLoginTimeout = 8000;\r\n\r\nexport class App extends React.Component {\r\n\r\n constructor(props: AppProps) {\r\n super(props);\r\n this.state = {\r\n loadingTranslations: true,\r\n loadingEcs: true,\r\n configContext: {\r\n ...config,\r\n basePath: this.props.basePath,\r\n language: props.language,\r\n switchLanguage: this._switchLanguage,\r\n },\r\n theme: merge({}, localThemes.common, props.theme === Themes.Teams ? localThemes.teams : localThemes.light),\r\n userContext: {\r\n skypetoken: undefined,\r\n expiration: undefined,\r\n profile: undefined,\r\n isLoginInProgress: this._canUseSilentLogin(),\r\n silentLoginNotSupported: !this._canUseSilentLogin(),\r\n },\r\n errorContext: {\r\n error: undefined,\r\n setError: this._setErrorContext,\r\n clear: this._clearErrorContext,\r\n },\r\n ariaContext: {\r\n message: { assertive: false, text: '' },\r\n announce: this._announce,\r\n },\r\n ecsContext: {\r\n settings: EcsConfigFallback,\r\n },\r\n };\r\n\r\n logger.initCommonProperty({ key: CommonProperty.EntryPoint, value: props.entryPoint });\r\n }\r\n\r\n componentDidMount() {\r\n // Injecting browser specific styles in \r\n const style = document.createElement('style');\r\n if (browser === Browsers.Safari && deviceType === DeviceTypes.Mobile && document.head) {\r\n style.innerHTML = `.meetings .ui-button, .bots .ui-button, .invites .ui-button { display: block; }`;\r\n document.head.appendChild(style);\r\n }\r\n\r\n loadTranslation(this.props.language);\r\n this.setState({ loadingTranslations: false });\r\n\r\n if (this._canUseSilentLogin()) {\r\n const silentLoginPromise = silentLoginAsync()\r\n .then(this._getProfileAsync)\r\n .then((userContext) => {\r\n this.setState({ userContext });\r\n })\r\n .catch((error) => {\r\n logger.error(error);\r\n this.setState({\r\n userContext: {\r\n profile: undefined,\r\n skypetoken: undefined,\r\n expiration: undefined,\r\n isLoginInProgress: false,\r\n },\r\n });\r\n }); // it's ok if the user is not logged in\r\n\r\n SyncTasks.raceTimer(silentLoginPromise, SilentLoginTimeout).then((result) => {\r\n if (result.timedOut) {\r\n logger.error(new Error('Silent Login TimeOut'));\r\n silentLoginPromise.cancel();\r\n this._startLoadingEcs();\r\n this.setState({\r\n userContext: {\r\n profile: undefined,\r\n skypetoken: undefined,\r\n expiration: undefined,\r\n isLoginInProgress: false,\r\n },\r\n });\r\n }\r\n });\r\n } else {\r\n this._startLoadingEcs();\r\n }\r\n }\r\n\r\n componentDidUpdate(_: AppProps, prevState: AppState) {\r\n if (prevState.userContext.isLoginInProgress && !this.state.userContext.isLoginInProgress) {\r\n this._startLoadingEcs();\r\n }\r\n }\r\n\r\n render() {\r\n return <>\r\n { !this.state.loadingTranslations && { localizer.getString('Common.a11y_lnk_skip_content') } }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { this._getRootView() }\r\n { this._renderErrorPortal() }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n }\r\n\r\n private _renderErrorPortal() {\r\n const error = this.state.errorContext && this.state.errorContext.error;\r\n if (!error) {\r\n return;\r\n }\r\n return ;\r\n }\r\n\r\n private _renderErrorPortalContent(error: DisplayableError) {\r\n return
\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _startLoadingEcs() {\r\n ecsHelper.loadConfig(this.state.userContext.skypetoken, this.state.userContext.expiration, (settings) => {\r\n const wasPreLoggedin = Boolean(this.props && this.state.userContext && this.state.userContext.skypetoken);\r\n const useUnifiedView = this._determineIsItUnifiedView(settings.useUnifiedView);\r\n const quickJoinFlowSupportedBrowsers = settings.quickJoinFlowSupportedBrowsers ?? EcsConfigFallback.quickJoinFlowSupportedBrowsers;\r\n EnvironmentHelper.updateEnvironmentSettings(quickJoinFlowSupportedBrowsers);\r\n logger.sessionStarted({useUnifiedView, wasPreLoggedin});\r\n this.setState({\r\n loadingEcs: false,\r\n ecsContext: {\r\n settings: {\r\n useUnifiedView,\r\n quickJoinFlowSupportedBrowsers,\r\n useMeetingsApi: settings.useMeetingsApi ?? EcsConfigFallback.useMeetingsApi,\r\n maxRetries: settings.maxRetries ?? EcsConfigFallback.maxRetries,\r\n useNewMobileJoinFlow: settings.useMeetingsApi ?? EcsConfigFallback.useNewMobileJoinFlow,\r\n allowDesktopSafariGuestFlow: settings.allowDesktopSafariGuestFlow ?? EcsConfigFallback.allowDesktopSafariGuestFlow,\r\n useJoinThread: settings.useJoinThread ?? EcsConfigFallback.useJoinThread,\r\n },\r\n },\r\n });\r\n }, EcsConfigFallback);\r\n }\r\n\r\n private _determineIsItUnifiedView(unifiedViewEcsSettings: boolean) {\r\n return (unifiedViewEcsSettings && deviceType === DeviceTypes.Desktop);\r\n }\r\n\r\n private _canUseSilentLogin() {\r\n if (this.props.entryPoint === EntryPoint.Meetings && !canJoinOnWeb) {\r\n return false;\r\n }\r\n\r\n return this.props.entryPoint !== EntryPoint.Bots;\r\n }\r\n\r\n private _getRootView() {\r\n switch (this.props.entryPoint) {\r\n case EntryPoint.Meetings:\r\n return ;\r\n case EntryPoint.Invites:\r\n return ;\r\n case EntryPoint.Bots:\r\n return ;\r\n case EntryPoint.Do:\r\n return ;\r\n case EntryPoint.Profiles:\r\n return ;\r\n }\r\n }\r\n\r\n private _switchLanguage = (language: string) => {\r\n CookieHelper.setCookieValue(this.state.configContext.cookies.skype, language, 'LC');\r\n window.location.reload();\r\n }\r\n\r\n private _announce = (message: AriaMessage) => {\r\n this.setState((prevState) => {\r\n const { ariaContext } = prevState;\r\n ariaContext.message = message;\r\n return { ariaContext };\r\n });\r\n }\r\n\r\n private _setErrorContext = (error: DisplayableError) => {\r\n this.setState((prevState) => {\r\n const { errorContext } = prevState;\r\n errorContext.error = error;\r\n return {\r\n errorContext,\r\n };\r\n });\r\n }\r\n\r\n private _clearErrorContext = () => {\r\n this.setState((prevState) => {\r\n const { errorContext } = prevState;\r\n errorContext.error = undefined;\r\n return {\r\n errorContext,\r\n };\r\n });\r\n }\r\n\r\n private _getProfileAsync = (loginResult: SilentLoginResult | undefined): SyncTasks.Promise => {\r\n if (!loginResult || !loginResult.skypetoken) {\r\n return SyncTasks.Resolved({\r\n profile: undefined,\r\n skypetoken: undefined,\r\n expiration: undefined,\r\n isLoginInProgress: false,\r\n });\r\n }\r\n\r\n return ProfileRestClient.getUserProfileInfo(loginResult.skypetoken)\r\n .then((profile) => {\r\n const userContext: UserContext = {\r\n profile,\r\n skypetoken: loginResult.skypetoken,\r\n expiration: loginResult.expiration,\r\n isLoginInProgress: false,\r\n };\r\n\r\n logger.initCommonProperty({ key: CommonProperty.SkypeId, value: profile.username, piiKind: AWTPiiKind.Identity });\r\n return userContext;\r\n });\r\n }\r\n}\r\n","import { ThemeInput } from '@stardust-ui/react';\r\n\r\nconst theme: ThemeInput = {\r\n siteVariables: {\r\n brandIcon: '/images/icons/teams-96x96.png',\r\n },\r\n};\r\n\r\nexport default theme;\r\n","import config from 'config';\r\nimport { OffSkypeInviteServiceModel } from 'src/ts/models/OffSkypeInviteServiceModel';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { ALauncher } from '../common/ALauncher';\r\n\r\ninterface LauncherProps {\r\n invite: OffSkypeInviteServiceModel;\r\n}\r\n\r\nexport class Launcher extends ALauncher {\r\n\r\n protected _getLauncherUrl() {\r\n const invite = this.props.invite;\r\n const sessionId = logger.getCorrelationId();\r\n if (os === OperatingSystems.Android) {\r\n return config.urls.inviteLauncher.intentUri(invite.inviterSkypeId, sessionId, invite.longId, 'launcher', config.urls.app.download);\r\n }\r\n return config.urls.inviteLauncher.skypeUri(invite.inviterSkypeId, sessionId, invite.longId, 'launcher');\r\n }\r\n\r\n protected _getLoggerAction() {\r\n return 'join-invite';\r\n }\r\n}\r\n","\"use strict\";\r\n/**\r\n* Models.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* ECS models\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EcsConfigType;\r\n(function (EcsConfigType) {\r\n EcsConfigType[EcsConfigType[\"Default\"] = 0] = \"Default\";\r\n EcsConfigType[EcsConfigType[\"User\"] = 1] = \"User\";\r\n})(EcsConfigType = exports.EcsConfigType || (exports.EcsConfigType = {}));\r\n","import { Animation, Provider, ProviderConsumer, ThemePrepared } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\n\r\nconst spinner = {\r\n keyframe: {\r\n from: {\r\n transform: 'rotate(0deg)',\r\n },\r\n to: {\r\n transform: 'rotate(360deg)',\r\n },\r\n },\r\n duration: '5s',\r\n iterationCount: 'infinite',\r\n};\r\n\r\nexport interface SpinnerProps {\r\n style?: React.CSSProperties;\r\n}\r\n\r\n// tslint:disable:max-line-length\r\nexport class Spinner extends React.PureComponent {\r\n\r\n renderThemeAware = (theme: ThemePrepared) => {\r\n return
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
;\r\n }\r\n\r\n render() {\r\n const theme = {\r\n animations: {\r\n spinner,\r\n },\r\n };\r\n\r\n return \r\n \r\n ;\r\n }\r\n}\r\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { CaptchaSolution } from '../components/common/Captcha';\r\nimport { ConversationServiceModel } from '../models/ConversationServiceModel';\r\nimport { GuestUserServiceModel } from '../models/GuestUserServiceModel';\r\nimport { OffSkypeInviteServiceModel, RawOffSkypeInviteServiceModel, transform as transformOffNetwork } from '../models/OffSkypeInviteServiceModel';\r\nimport { BaseRestClient } from './BaseRestClient';\r\n\r\nexport interface GuestJoinPayloadHuddleApi {\r\n captcha?: CaptchaSolution;\r\n flowId: string;\r\n name: string;\r\n threadId: string;\r\n}\r\n\r\nexport interface ConversationPayload {\r\n shortId: string;\r\n type: string;\r\n}\r\n\r\nexport interface OffSkypeInvitePayload {\r\n shortId: string;\r\n type: string;\r\n}\r\n\r\nexport interface RawConversationServiceModel {\r\n readonly FlowId: string;\r\n readonly Id: string;\r\n readonly Resource: string;\r\n readonly Action: string;\r\n}\r\n\r\nfunction transform(model: RawConversationServiceModel): ConversationServiceModel {\r\n return {\r\n action: model.Action,\r\n flowId: model.FlowId,\r\n id: model.Id,\r\n resource: model.Resource,\r\n };\r\n}\r\n\r\nclass HuddleApiClient extends BaseRestClient {\r\n joinAsGuest(payload: GuestJoinPayloadHuddleApi): SyncTasks.Promise {\r\n return this.performApiPost(\r\n '/v1/users/guests',\r\n payload,\r\n {\r\n eventProperties: {\r\n customPropertiesProvider: () => {\r\n return {\r\n includesCaptcha: !!payload.captcha,\r\n };\r\n },\r\n },\r\n });\r\n }\r\n\r\n getConversation(payload: ConversationPayload): SyncTasks.Promise {\r\n return this.performApiPost('/v2/conversation/', payload).then(transform);\r\n }\r\n\r\n getOffSkypeInvite(payload: OffSkypeInvitePayload): SyncTasks.Promise {\r\n return this.performApiPost('/v2/offskypeinvites', payload).then(transformOffNetwork);\r\n }\r\n}\r\n\r\nexport default new HuddleApiClient(config.urls.api.huddle);\r\n","import * as React from 'react';\r\nimport { OffSkypeInviteServiceModel } from '../../models/OffSkypeInviteServiceModel';\r\n\r\nexport interface InviteContext {\r\n invite: OffSkypeInviteServiceModel;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext(undefined);\r\n\r\nexport const InviteContextProvider = context.Provider;\r\n\r\nexport const InviteContextConsumer = context.Consumer;\r\n","import * as React from 'react';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\n\r\n// AriaLive need to re-render when its context is being updated. This does not make it candidate for PureComponent\r\nexport class AriaLive extends React.Component {\r\n render() {\r\n // ariaLive refs should stay unchanged for the lifecycle of the application\r\n // It means that conditional rendering of div[role=region] won't work, but its content will\r\n return { (ariaContext) =>\r\n <>\r\n
\r\n { ariaContext.message.assertive && ariaContext.message.text }\r\n
\r\n
\r\n { !ariaContext.message.assertive && ariaContext.message.text }\r\n
\r\n \r\n }
;\r\n\r\n }\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, Header, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport uniq from 'lodash/uniq';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport { OperatingSystems, os } from 'src/ts/helpers/EnvironmentHelper';\r\nimport { displayableErrors, ErrorHelper } from 'src/ts/helpers/ErrorHelper';\r\nimport { UrlHelper } from 'src/ts/helpers/UrlHelper';\r\nimport BotsRestClient from 'src/ts/rest/BotsRestClient';\r\nimport { BotsContext, BotsContextConsumer } from '../../contexts/bots/BotsContext';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Padder } from '../common/Padder';\r\nimport { BotInfo } from './BotInfo';\r\nimport { BotLauncher } from './BotLauncher';\r\n\r\ninterface AddBotViewProps {\r\n skypetoken?: string;\r\n onProgress: () => void;\r\n onAdd: () => void;\r\n onError: (error: Error) => void;\r\n}\r\n\r\nexport class AddBotView extends React.PureComponent {\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n
\r\n
\r\n \r\n { (botsContext) => botsContext &&\r\n (botsContext.isAddedAsContact ? this._renderBotAddedContent(botsContext) : this._renderBotAddPromptContent(botsContext))\r\n }\r\n
\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _renderBotAddPromptContent(botContext: BotsContext) {\r\n return <>\r\n { botContext.botInfo.addAsContactAllowed && this._renderAddButton(botContext) }\r\n { this._renderBotDetails(botContext) }\r\n ;\r\n }\r\n\r\n private _renderBotAddedContent(botContext: BotsContext) {\r\n return
\r\n \r\n \r\n \r\n
;\r\n }\r\n\r\n private _renderAddButton(botContext: BotsContext) {\r\n return ;\r\n }\r\n\r\n private _renderBotDetails(botContext: BotsContext) {\r\n const privacyAndTos = botContext.botInfo.privacyStatement && botContext.botInfo.tos ?\r\n localizer.get('privacy_and_terms', {\r\n linkPrivacy: { type: 'a', href: botContext.botInfo.privacyStatement},\r\n linkTerms: { type: 'a', href: botContext.botInfo.tos},\r\n }) : undefined;\r\n return
\r\n \r\n { this._renderCapabilities(botContext.botInfo.capabilities) }\r\n \r\n
\r\n { privacyAndTos }\r\n
\r\n
;\r\n }\r\n\r\n private _renderCapabilities(botCapabilities: string[]) {\r\n\r\n const capabilitiestoLocStringMap: { [key: string]: string; } = {\r\n 'im.sendReceive': 'capability_im_send_receive',\r\n 'im.send': 'capability_im_send_receive',\r\n 'im.receive': 'capability_im_send_receive',\r\n 'audio.send': 'capability_audio_send',\r\n };\r\n\r\n const uniqueLocalizedCapabilities = uniq(botCapabilities\r\n .filter((cap) => !!capabilitiestoLocStringMap[cap])\r\n .map((cap) => localizer.getString(capabilitiestoLocStringMap[cap])));\r\n\r\n return
\r\n
\r\n
    \r\n { uniqueLocalizedCapabilities.map((cap, index) =>
  • ) }\r\n
\r\n
;\r\n }\r\n\r\n private _addBotToContacts(botContext: BotsContext) {\r\n return () => {\r\n logger.action({name: 'bot-add-contact'});\r\n const { skypetoken } = this.props;\r\n if (!skypetoken) {\r\n this._redirectToLogin(botContext.botId);\r\n return;\r\n }\r\n\r\n this.props.onProgress();\r\n BotsRestClient.addBotToContacts(botContext.botId, skypetoken)\r\n .then(() => this.props.onAdd())\r\n .catch((response: WebErrorResponse) => {\r\n const error = response && response.statusCode === 412 ?\r\n ErrorHelper.enrichErrorFromWebResponse(displayableErrors.BotTooManyContacts, response, 'Add bot request') :\r\n ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Generic, response, 'Add bot request');\r\n this.props.onError(error);\r\n });\r\n };\r\n }\r\n\r\n private _redirectToLogin(botId: string) {\r\n const useBotsLauncherQueryParam = !!UrlHelper.getQueryParameter('botsLauncher');\r\n window.location.href = config.urls.app.botLogin(botId, useBotsLauncherQueryParam);\r\n }\r\n\r\n private _downloadSkype = () => {\r\n logger.action({ name: 'download' });\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.open(downloadUrl, '_blank');\r\n }\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, Header, Image, ProviderConsumer, Text, ThemePrepared } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { defaultFadeAnimation, StackNavigationContextConsumer } from '../../contexts/StackNavigationContext';\r\nimport { downloadSkype } from '../../helpers/DownloadSkypeHelper';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes, isIOSInAppBrowserFlow } from '../../helpers/EnvironmentHelper';\r\nimport { UrlHelper } from '../../helpers/UrlHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Header as PageHeader } from '../common/Header';\r\nimport { Padder } from '../common/Padder';\r\nimport { JoinLink, JoinLinkProps } from './JoinLink';\r\nimport { LoginView } from './LoginView';\r\n\r\ninterface JoinViewProps extends JoinLinkProps {\r\n onLaunchClick: () => void;\r\n threadId?: string;\r\n}\r\n\r\nexport class JoinView extends React.PureComponent {\r\n\r\n renderLogo(theme: ThemePrepared) {\r\n return (\r\n \r\n { (configContext) => }\r\n \r\n );\r\n }\r\n\r\n renderTitle() {\r\n return <>\r\n
{ localizer.getString('Meetings.txt_join_meeting_title') }
\r\n ;\r\n }\r\n\r\n renderDesktopBody() {\r\n if (deviceType !== DeviceTypes.Desktop) {\r\n return null;\r\n }\r\n\r\n return \r\n { localizer.getString('Meetings.txt_join_meeting_description') } \r\n { { localizer.getString('Meetings.lnk_join_meeting_retry') }\r\n }\r\n ;\r\n }\r\n\r\n renderControls() {\r\n if (deviceType === DeviceTypes.Mobile) {\r\n return ;\r\n }\r\n\r\n return <>\r\n { canJoinOnWeb && { (stackNavigationContext) =>\r\n \r\n } }\r\n \r\n ;\r\n }\r\n\r\n renderMobileBody() {\r\n if (deviceType !== DeviceTypes.Mobile) {\r\n return null;\r\n }\r\n\r\n const joinMeeting = this._isFallbackFlow() ?\r\n :\r\n \r\n \r\n { localizer.getString('btn_launch_join') }\r\n \r\n ;\r\n\r\n return <>\r\n \r\n { localizer.getString('Meetings.txt_join_meeting_description') }\r\n \r\n\r\n { joinMeeting }\r\n ;\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n \r\n
\r\n \r\n { this.renderTitle() }\r\n { this.renderControls() }\r\n { this.renderMobileBody() }\r\n { this.renderDesktopBody() }\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _isFallbackFlow = (): boolean => isIOSInAppBrowserFlow && undefined !== UrlHelper.getQueryParameter('fallback');\r\n}\r\n","import { WebErrorResponse } from 'simplerestclients';\r\n\r\nexport interface DisplayableError extends Error {\r\n headerLocString: string;\r\n descriptionLocString: string;\r\n pageTitleLocString: string;\r\n emoticonPath?: string;\r\n}\r\n\r\nexport const displayableErrors = {\r\n ShortIdFromUrl: {\r\n name: 'ShortIdFromUrl',\r\n message: 'Cannot retrieve the shortId from url.',\r\n headerLocString: 'hdr_not_found_page_oops',\r\n descriptionLocString: 'txt_not_found_page_redirect',\r\n pageTitleLocString: 'hdr_not_found_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n InviteIdFromUrl: {\r\n name: 'InviteIdFromUrl',\r\n message: 'Cannot retrieve the inviteId from url.',\r\n headerLocString: 'hdr_not_found_page_oops',\r\n descriptionLocString: 'txt_not_found_page_redirect',\r\n pageTitleLocString: 'hdr_not_found_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n TooManyUsers: {\r\n name: 'TooManyUsers',\r\n message: 'TooManyUsers',\r\n headerLocString: 'hdr_toomanyusers_page_oops',\r\n descriptionLocString: 'txt_toomanyusers_page_explanation',\r\n emoticonPath: '/images/emoticons/busy.png',\r\n pageTitleLocString: 'hdr_toomanyusers_page_title',\r\n } as DisplayableError,\r\n Busy: {\r\n name: 'Busy',\r\n message: 'Busy',\r\n headerLocString: 'hdr_busy_page_oops',\r\n descriptionLocString: 'txt_busy_page_explanation',\r\n pageTitleLocString: 'hdr_busy_page_title',\r\n emoticonPath: '/images/emoticons/busy.png',\r\n } as DisplayableError,\r\n InviteNotFound: {\r\n name: 'InviteNotFound',\r\n message: 'InviteNotFound',\r\n headerLocString: 'hdr_not_found_page_oops',\r\n descriptionLocString: 'txt_not_found_offskypeinvite_page_redirect',\r\n pageTitleLocString: 'hdr_not_found_page_title',\r\n emoticonPath: '/images/emoticons/busy.png',\r\n } as DisplayableError,\r\n JoinDisabled: {\r\n name: 'JoinDisabled',\r\n message: 'JoinDisabled',\r\n headerLocString: 'hdr_joindisabled_page_oops',\r\n descriptionLocString: 'txt_joindisabled_page_explanation',\r\n pageTitleLocString: 'hdr_joindisabled_page_title',\r\n emoticonPath: '/images/emoticons/busy.png',\r\n } as DisplayableError,\r\n Generic: {\r\n name: 'Generic',\r\n message: 'Generic error',\r\n headerLocString: 'hdr_error_page_oops',\r\n descriptionLocString: 'txt_error_page_explanation',\r\n pageTitleLocString: 'hdr_error_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n BotNotFound: {\r\n name: 'BotIdFromUrl',\r\n message: 'Cannot retrieve the bot id from url.',\r\n headerLocString: 'hdr_not_found_page_oops',\r\n descriptionLocString: 'bot_not_found',\r\n pageTitleLocString: 'hdr_not_found_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n BotTooManyContacts: {\r\n name: 'BotTooManyContacts',\r\n message: 'BotTooManyContacts',\r\n headerLocString: 'bot_problem_page_oops',\r\n descriptionLocString: 'bot_too_many_contacts_page_redirect',\r\n pageTitleLocString: 'bot_too_many_contacts_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n } as DisplayableError,\r\n};\r\n\r\nexport class ErrorHelper {\r\n\r\n static convertToGenericDisplayableError(error: Error): DisplayableError {\r\n return {\r\n ...error,\r\n headerLocString: 'hdr_error_page_oops',\r\n descriptionLocString: 'txt_error_page_explanation',\r\n pageTitleLocString: 'hdr_error_page_title',\r\n emoticonPath: '/images/emoticons/error.png',\r\n };\r\n }\r\n\r\n static isDisplayableError(arg: any): arg is DisplayableError {\r\n return (arg as DisplayableError).headerLocString !== undefined && (arg as DisplayableError).descriptionLocString !== undefined;\r\n }\r\n\r\n static enrichErrorFromWebResponse(displayableError: DisplayableError, webResponse: WebErrorResponse, description?: string): DisplayableError {\r\n return {\r\n ...displayableError,\r\n ...ErrorHelper.getErrorFromWebErrorResponse(webResponse, description),\r\n };\r\n }\r\n\r\n private static getErrorFromWebErrorResponse(response: WebErrorResponse, description?: string): Error {\r\n return {\r\n name: description || `Request failed`,\r\n message: `${response.method} request failed: ${response.statusCode} ${response.statusText}`,\r\n };\r\n }\r\n}\r\n","import { AWTPiiKind, AWTPropertyType } from '@aria/webjs-sdk';\r\nimport { localizer } from '@skype/bew-localization';\r\nimport curry from 'lodash/curry';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport * as SyncTasks from 'synctasks';\r\nimport config from '../config/BaseConfig';\r\nimport { canJoinOnWeb } from '../helpers/EnvironmentHelper';\r\nimport { DisplayableError, displayableErrors, ErrorHelper } from '../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../helpers/LoggerHelper';\r\nimport { getSkypeIdFromSkypeToken } from '../helpers/SkypeTokenHelper';\r\nimport { buildRedirectQueryParameters, getShortIdFromJoinLink, getThreadId, redirectToSkypeClient } from '../meetnow/MeetNowEdgeHandler';\r\nimport { IMeetNowSettings } from '../meetnow/MeetNowSettings';\r\nimport { ConversationServiceModel } from '../models/ConversationServiceModel';\r\nimport { GuestJoinPayloadMeetingsApi, GuestUserServiceModel, WebClientRedirectParams } from '../models/GuestUserServiceModel';\r\nimport MeetingsApiClient from '../rest/MeetingsApiClient';\r\n\r\nconst joinLinkRegex = /^https:\\/\\/join\\.skype\\.com\\/[a-zA-Z0-9]{7,20}$/;\r\n\r\nexport const handleJoin = (\r\n settings: IMeetNowSettings,\r\n conversationServiceModel: ConversationServiceModel,\r\n skypeToken?: string,\r\n isNewJoinFlowFromJoinLink = false) => {\r\n logger.initCommonProperty({\r\n key: CommonProperty.ThreadId,\r\n value: conversationServiceModel.resource,\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n\r\n if (conversationServiceModel.shortId) {\r\n logger.initCommonProperty({\r\n key: CommonProperty.ShortId,\r\n value: conversationServiceModel.shortId,\r\n piiKind: AWTPiiKind.GenericData,\r\n type: AWTPropertyType.String,\r\n });\r\n }\r\n\r\n // For unsupported devices we navigate users to regular join flow where they an an opportunity to launch a desktop client or download it\r\n if (!canJoinOnWeb) {\r\n logger.action({ name: 'redirectToJoinPageUnsupportedDevice' });\r\n window.location.href =\r\n `/${ conversationServiceModel.shortId }?${\r\n buildRedirectQueryParameters(\r\n settings.MeetNowEdgeAllowedQueryParameters,\r\n logger.getCorrelationId(),\r\n isNewJoinFlowFromJoinLink)\r\n }`;\r\n return SyncTasks.Resolved();\r\n }\r\n\r\n if (skypeToken) {\r\n const redirectParams: WebClientRedirectParams = {\r\n threadId: conversationServiceModel.resource,\r\n skypetoken: skypeToken,\r\n shortId: conversationServiceModel.shortId,\r\n skypeId: getSkypeIdFromSkypeToken(skypeToken) || '',\r\n };\r\n\r\n redirectToSkypeClient(settings, 'MeetNowJoin', 'joinmeetnow', isNewJoinFlowFromJoinLink, redirectParams);\r\n return SyncTasks.Resolved();\r\n } else {\r\n return addUserToMeeting(settings, conversationServiceModel)\r\n .then(redirectToSkypeClient(settings, 'MeetNowJoin', 'joinmeetnow', isNewJoinFlowFromJoinLink));\r\n }\r\n};\r\n\r\nexport const addUserToMeeting = curry((settings: IMeetNowSettings, conversationServiceModel: ConversationServiceModel) => {\r\n if (!conversationServiceModel.shortId) {\r\n throw new Error('ShortId not provided to addUserToMeeting function');\r\n }\r\n\r\n const localizedGuestDefaultName = localizer.getString('Meetings.txt_guest_user_name') ?? 'Guest user';\r\n const params: GuestJoinPayloadMeetingsApi = {\r\n displayName: localizedGuestDefaultName,\r\n threadId: conversationServiceModel.resource,\r\n flowId: conversationServiceModel.flowId,\r\n shortId: conversationServiceModel.shortId,\r\n };\r\n\r\n return MeetingsApiClient\r\n .joinAsGuest(params, settings.MeetNowEdgeNumberOfFetchRetries, true)\r\n .then((guestUserServiceModel: GuestUserServiceModel) => ({\r\n threadId: conversationServiceModel.resource,\r\n shortId: conversationServiceModel.shortId,\r\n ...guestUserServiceModel,\r\n }))\r\n .catch((response: WebErrorResponse) => {\r\n let error: DisplayableError | undefined;\r\n const createGuestRequest = 'Create guest user';\r\n switch (response.statusCode) {\r\n case 403:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.JoinDisabled, response, createGuestRequest);\r\n break;\r\n case 404:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.InviteNotFound, response, createGuestRequest);\r\n break;\r\n case 412:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 429:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.TooManyUsers, response, createGuestRequest);\r\n break;\r\n case 500:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Generic, response, createGuestRequest);\r\n break;\r\n default:\r\n error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.Busy, response, createGuestRequest);\r\n break;\r\n }\r\n\r\n throw error;\r\n });\r\n});\r\n\r\nexport const validateJoinLinkOrCode = async (settings: IMeetNowSettings, joinLink: string) => {\r\n const normalizedJoinLink = normalizeJoinLink(config.urls.app.join, joinLink);\r\n\r\n if (!normalizedJoinLink.match(joinLinkRegex)) {\r\n return false;\r\n }\r\n\r\n const conversationServiceModel: ConversationServiceModel = await getThreadId(settings, getShortIdFromJoinLink(normalizedJoinLink));\r\n if (conversationServiceModel && conversationServiceModel.resource) {\r\n return conversationServiceModel;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const normalizeJoinLink = (joinLinkDomain: string, joinLink: string) => {\r\n const trimmedJoinLink = joinLink.replace(/(^\\s*)|(\\s*\\.*\\s*$)/g, '');\r\n\r\n if (!trimmedJoinLink.startsWith(joinLinkDomain)) {\r\n return `${ joinLinkDomain }/${ trimmedJoinLink }`;\r\n }\r\n return trimmedJoinLink;\r\n};\r\n","export const getDiffInMS = (startDate: Date, endDate = new Date()): number => endDate.valueOf() - startDate.valueOf();\r\n","import * as React from 'react';\r\nimport { UserProfile } from '../models/ProfileServiceModel';\r\n\r\nexport interface UserContext {\r\n skypetoken: string | undefined;\r\n expiration: number | undefined;\r\n profile: UserProfile | undefined;\r\n isLoginInProgress: boolean;\r\n silentLoginNotSupported?: boolean;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({} as UserContext);\r\n\r\nexport const UserContextProvider = context.Provider;\r\n\r\nexport const UserContextConsumer = context.Consumer;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Button, Header, Image, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { ConfigContextConsumer } from 'src/ts/contexts/ConfigContext';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Padder } from '../common/Padder';\r\n\r\ninterface DoViewProps {\r\n onLaunchClick: () => void;\r\n}\r\n\r\nexport class DoView extends React.PureComponent {\r\n\r\n renderLogo() {\r\n return \r\n { (configContext) => ;\r\n }\r\n\r\n renderTitle() {\r\n return
{ localizer.getString('hdr_launch_joining_conversation') }
;\r\n }\r\n\r\n renderControls() {\r\n return <>\r\n \r\n ;\r\n }\r\n\r\n renderBody() {\r\n return <>\r\n \r\n { localizer.getString('txt_launch_first_time_device') }\r\n \r\n \r\n { localizer.get('txt_launch_please_download', {\r\n download_skype: \r\n { localizer.getString('btn_launch_download_skype') }\r\n ,\r\n }) }\r\n \r\n ;\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n { this.renderLogo() }\r\n { this.renderTitle() }\r\n { this.renderControls() }\r\n { this.renderBody() }\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _downloadSkype = () => {\r\n logger.action({ name: 'download' });\r\n\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.open(downloadUrl, '_blank');\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { DomHelper } from 'src/ts/helpers/DomHelper';\r\n\r\nexport interface SelectProps {\r\n options: OptionProps[];\r\n value?: OptionProps;\r\n disabled?: boolean;\r\n onChange: (value: string) => void;\r\n ariaLabel: string;\r\n autoFocus?: boolean;\r\n}\r\n\r\nexport interface SelectState {\r\n selected: OptionProps;\r\n focused: boolean;\r\n}\r\n\r\nexport interface OptionProps {\r\n value: string;\r\n text: string;\r\n}\r\n\r\nconst defaultEmptyOption = { value: 'NOT', text: '' };\r\n\r\nexport class Select extends React.Component {\r\n private _domReference: HTMLSelectElement | null;\r\n\r\n constructor(props: SelectProps) {\r\n super(props);\r\n this.state = {\r\n selected: props.value || defaultEmptyOption,\r\n focused: props.autoFocus || false,\r\n };\r\n }\r\n\r\n UNSAFE_componentWillReceiveProps(nextProps: SelectProps) {\r\n if (this.props.value !== nextProps.value) {\r\n this.setState({\r\n selected: nextProps.value || this.state.selected,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n let wrapperAdditionalClass = '';\r\n if (this.props.options.length <= 1) {\r\n wrapperAdditionalClass += ' noOptions';\r\n }\r\n if (this.state.focused) {\r\n wrapperAdditionalClass += ' focused';\r\n }\r\n return (\r\n
\r\n \r\n { this.props.options.length > 1 && \r\n { this.renderOptions() }\r\n }\r\n
\r\n );\r\n }\r\n\r\n private renderOptions = () => {\r\n return this.props.options.map((option: OptionProps) => {\r\n return ;\r\n }).concat();\r\n }\r\n\r\n private _onChange = (event: React.ChangeEvent) => {\r\n const selectedCountry = event.target.value;\r\n const searchOption = this.props.options.filter((option) => option.value === event.target.value);\r\n this.setState({\r\n selected: searchOption.length ? searchOption[0] : defaultEmptyOption,\r\n }, () => this.props.onChange(selectedCountry));\r\n }\r\n\r\n private _onFocus = () => {\r\n if (this.state.focused) {\r\n return;\r\n }\r\n this.setState({\r\n focused: true,\r\n });\r\n }\r\n\r\n private _onBlur = () => {\r\n if (!this.state.focused) {\r\n return;\r\n }\r\n this.setState({\r\n focused: false,\r\n });\r\n }\r\n\r\n private _autoFocus = (el: HTMLSelectElement | null) => {\r\n if (this.props.autoFocus && el && !this._domReference) {\r\n this._domReference = el;\r\n window.setTimeout(() => DomHelper.setFocus(this._domReference), 200);\r\n }\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { deviceType, DeviceTypes } from '../../helpers/EnvironmentHelper';\r\nimport { logger } from '../../helpers/LoggerHelper';\r\n\r\ninterface LauncherState {\r\n launchUrl: string;\r\n}\r\n\r\nexport abstract class ALauncher

extends React.PureComponent {\r\n\r\n constructor(props: P) {\r\n super(props);\r\n this.state = {\r\n launchUrl: this._getLauncherUrl(),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n logger.action({ name: this._getLoggerAction() });\r\n if (deviceType !== DeviceTypes.Desktop) {\r\n window.location.href = this.state.launchUrl;\r\n }\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n\r\n protected abstract _getLauncherUrl(): string;\r\n protected abstract _getLoggerAction(): string;\r\n}\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Header, Image, Text } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { DisplayableError, ErrorHelper } from '../../helpers/ErrorHelper';\r\n\r\nexport interface ErrorDetailsProps {\r\n error: Error;\r\n showSkype?: boolean;\r\n assetsBasePath?: string;\r\n}\r\n\r\nexport class ErrorDetails extends React.PureComponent {\r\n constructor(props: ErrorDetailsProps) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const displayableError: DisplayableError = ErrorHelper.isDisplayableError(this.props.error)\r\n ? this.props.error\r\n : ErrorHelper.convertToGenericDisplayableError(this.props.error);\r\n\r\n return

\r\n { this.props.showSkype &&
}\r\n \r\n { (configContext) => displayableError.emoticonPath &&\r\n \r\n }\r\n \r\n
\r\n \r\n { localizer.getString(displayableError.descriptionLocString) }\r\n \r\n
;\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\nexport interface ProfilesContext {\r\n skypeId: string;\r\n}\r\n\r\n// Default context does not mean much sense here\r\nconst context = React.createContext({} as ProfilesContext);\r\n\r\nexport const ProfilesContextProvider = context.Provider;\r\n\r\nexport const ProfilesContextConsumer = context.Consumer;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Image, Text } from '@stardust-ui/react';\r\nimport * as React from 'react';\r\nimport { ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { canJoinOnWeb, deviceType, DeviceTypes, OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { defaultDimension, Dimension } from '../../models/SharedTypes';\r\n\r\ninterface HeaderState {\r\n browserSupportDimension: Dimension;\r\n}\r\n\r\nexport class Header extends React.PureComponent<{}, HeaderState> {\r\n\r\n private _browserSupportElement?: HTMLDivElement;\r\n private _debounce: number;\r\n\r\n constructor(props: {}) {\r\n super(props);\r\n this.state = {\r\n browserSupportDimension: defaultDimension,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('resize', this._updateDimensionDebouncer);\r\n this._updateDimension();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this._updateDimensionDebouncer);\r\n delete this._browserSupportElement;\r\n }\r\n\r\n renderJoinOnWebDisclaimer(): React.ReactNode {\r\n // Join on web only available in desktop\r\n if (deviceType !== DeviceTypes.Desktop || canJoinOnWeb) {\r\n return null;\r\n }\r\n\r\n let param;\r\n switch (os) {\r\n case OperatingSystems.MacOS:\r\n param = { list_supported_browser: localizer.getString('Meetings.txt_list_supported_browser_macos') };\r\n break;\r\n\r\n case OperatingSystems.Win:\r\n case OperatingSystems.WinRT:\r\n param = { list_supported_browser: localizer.getString('Meetings.txt_list_supported_browser_win') };\r\n break;\r\n\r\n case OperatingSystems.Linux:\r\n default:\r\n param = { list_supported_browser: localizer.getString('Meetings.txt_list_supported_browser_linux') };\r\n break;\r\n }\r\n\r\n return
\r\n
\r\n { (configContext) =>\r\n \r\n }\r\n \r\n { localizer.getString('Meetings.txt_banner_unsupported_browser', param) }\r\n \r\n
\r\n
;\r\n }\r\n\r\n render() {\r\n return <>\r\n { this.renderJoinOnWebDisclaimer() }\r\n ;\r\n }\r\n\r\n private _updateDimensionDebouncer = () => {\r\n if (this._debounce) {\r\n window.clearTimeout(this._debounce);\r\n }\r\n\r\n this._debounce = window.setTimeout(() => {\r\n this._updateDimension();\r\n }, 100);\r\n }\r\n\r\n private _updateDimension = () => {\r\n this.setState(() => {\r\n let browserSupportDimension: Dimension = defaultDimension;\r\n if (this._browserSupportElement) {\r\n browserSupportDimension = {\r\n height: this._browserSupportElement.clientHeight,\r\n width: this._browserSupportElement.clientWidth,\r\n };\r\n }\r\n return {\r\n browserSupportDimension,\r\n };\r\n });\r\n }\r\n\r\n private _setBrowserSupport = (element?: HTMLDivElement | null) => {\r\n if (element) {\r\n this._browserSupportElement = element;\r\n }\r\n }\r\n}\r\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","\"use strict\";\r\n/**\r\n* SkypeTokenData.ts\r\n* Author: CALIB http://aka.ms/CALIB\r\n* Copyright: Microsoft 2017\r\n*\r\n* Holder for SkypeToken information\r\n*/\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar subscribableevent_1 = require(\"subscribableevent\");\r\nvar SyncTasks = require(\"synctasks\");\r\nvar SkypeTokenData = /** @class */ (function () {\r\n function SkypeTokenData() {\r\n this.skypeTokenChanged = new subscribableevent_1.default();\r\n }\r\n SkypeTokenData.prototype.putSkypeTokenData = function (initialData) {\r\n this._data = initialData;\r\n if (this.isSkypeTokenValid()) {\r\n this.skypeTokenChanged.fire();\r\n }\r\n if (this.isSkypeTokenValid() && this._validSkypeTokenDeferral) {\r\n var deferral = this._validSkypeTokenDeferral;\r\n this._validSkypeTokenDeferral = undefined;\r\n deferral.resolve(void 0);\r\n }\r\n };\r\n SkypeTokenData.prototype.isSkypeTokenValid = function () {\r\n var tokenData = this._data;\r\n return !!tokenData && !!tokenData.skypeToken && tokenData.skypeTokenExpiration > Date.now();\r\n };\r\n SkypeTokenData.prototype.getSkypeToken = function () {\r\n var tokenData = this._data;\r\n if (!tokenData || !tokenData.skypeToken) {\r\n throw 'No Skype Token provided';\r\n }\r\n return tokenData.skypeToken;\r\n };\r\n SkypeTokenData.prototype.getSkypeTokenHash = function (token) {\r\n if (token === undefined) {\r\n return 0;\r\n }\r\n return token.split('').reduce(function (mem, next) { return (mem * 101 + next.charCodeAt(0)) % 999727999; }, token.length);\r\n };\r\n SkypeTokenData.prototype.waitForValidSkypeToken = function () {\r\n if (this.isSkypeTokenValid()) {\r\n return SyncTasks.Resolved();\r\n }\r\n // Need to wait for a new one to be poked in\r\n if (!this._validSkypeTokenDeferral) {\r\n this._validSkypeTokenDeferral = SyncTasks.Defer();\r\n }\r\n return this._validSkypeTokenDeferral.promise();\r\n };\r\n return SkypeTokenData;\r\n}());\r\nexports.default = SkypeTokenData;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { ConfigContext, ConfigContextConsumer } from '../../contexts/ConfigContext';\r\nimport { defaultDimension, Dimension } from '../../models/SharedTypes';\r\nimport { OptionProps, Select } from './Select';\r\n\r\nconst languages: OptionProps[] = [\r\n { value: 'en', text: 'English' },\r\n { value: 'ar', text: 'عربي' },\r\n { value: 'bg', text: 'Български' },\r\n { value: 'cs', text: 'Česky' },\r\n { value: 'da', text: 'Dansk' },\r\n { value: 'de', text: 'Deutsch' },\r\n { value: 'el', text: 'Ελληνικά' },\r\n { value: 'es', text: 'Español' },\r\n { value: 'et', text: 'Eesti' },\r\n { value: 'fi', text: 'Suomi' },\r\n { value: 'fr', text: 'Français' },\r\n { value: 'he', text: 'עברית' },\r\n { value: 'hi', text: 'हिन्दी' },\r\n { value: 'hu', text: 'Magyar' },\r\n { value: 'id', text: 'Bahasa Indonesia' },\r\n { value: 'it', text: 'Italiano' },\r\n { value: 'ja', text: '日本語' },\r\n { value: 'ko', text: '한국어' },\r\n { value: 'nl', text: 'Nederlands' },\r\n { value: 'no', text: 'Norsk' },\r\n { value: 'pl', text: 'Polski' },\r\n { value: 'pt', text: 'Português' },\r\n { value: 'pt-br', text: 'Português (Brasileiro)' },\r\n { value: 'ro', text: 'Română' },\r\n { value: 'ru', text: 'Русский' },\r\n { value: 'sv', text: 'Svenska' },\r\n { value: 'tr', text: 'Türkçe' },\r\n { value: 'uk', text: 'Українська' },\r\n { value: 'zh-Hans', text: '中文(简体)' },\r\n { value: 'zh-Hant', text: '中文 (繁體)' },\r\n];\r\n\r\ninterface FooterState {\r\n language: string;\r\n footerDimension: Dimension;\r\n}\r\n\r\ninterface FooterProps {\r\n dark?: boolean;\r\n showOnlyLegalInfo?: boolean;\r\n}\r\n\r\nexport class Footer extends React.PureComponent {\r\n private _footerElement?: HTMLDivElement;\r\n private _debounce: number;\r\n\r\n constructor(props: FooterProps) {\r\n super(props);\r\n\r\n const matchingLanguage = languages.filter((language) => language.value === localizer.getLocale());\r\n this.state = {\r\n language: matchingLanguage[0].value || 'en',\r\n footerDimension: defaultDimension,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('resize', this._updateDimensionDebouncer);\r\n this._updateDimension();\r\n }\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this._updateDimensionDebouncer);\r\n delete this._footerElement;\r\n }\r\n\r\n render() {\r\n const separator =
·
;\r\n return { (configContext) =>\r\n
\r\n
\r\n
\r\n { !this.props.showOnlyLegalInfo && <>\r\n logger.action({ name: 'faq' }) }>\r\n { localizer.getString('footer_btn_FAQ') }\r\n \r\n { separator }\r\n
\r\n \r\n \r\n }\r\n
\r\n
\r\n logger.action({ name: 'terms' }) }>\r\n { localizer.getString('footer_btn_terms') }\r\n \r\n { separator }\r\n logger.action({ name: 'privacy' }) }>\r\n { localizer.getString('footer_btn_privacy') }\r\n \r\n { separator }\r\n { localizer.getString('footer_btn_copyright', { YEAR: new Date().getFullYear().toString() }) }\r\n
\r\n
\r\n
\r\n }
;\r\n }\r\n\r\n private _selectedLanguage = () => {\r\n const matchingLanguage = languages.filter((language) => language.value === this.state.language);\r\n return matchingLanguage ? matchingLanguage[0] : undefined;\r\n }\r\n\r\n private _setElement = (element?: HTMLDivElement | null) => {\r\n if (element) {\r\n this._footerElement = element;\r\n }\r\n }\r\n\r\n private _updateDimensionDebouncer = () => {\r\n if (this._debounce) {\r\n window.clearTimeout(this._debounce);\r\n }\r\n\r\n this._debounce = window.setTimeout(() => {\r\n this._updateDimension();\r\n }, 100);\r\n }\r\n\r\n private _updateDimension = () => {\r\n this.setState(() => {\r\n let footerDimension: Dimension = defaultDimension;\r\n if (this._footerElement) {\r\n footerDimension = {\r\n height: this._footerElement.clientHeight,\r\n width: this._footerElement.clientWidth,\r\n };\r\n }\r\n return { footerDimension };\r\n });\r\n }\r\n\r\n private _changeLanguage = (configContext: ConfigContext) => {\r\n return (value: string) => {\r\n configContext.switchLanguage(value);\r\n };\r\n }\r\n}\r\n","import { AWTPiiKind } from '@aria/webjs-sdk';\r\nimport { localizer } from '@skype/bew-localization';\r\nimport * as React from 'react';\r\nimport { WebErrorResponse } from 'simplerestclients';\r\nimport { AriaContextConsumer } from 'src/ts/contexts/AriaContext';\r\nimport { InviteContext, InviteContextProvider } from 'src/ts/contexts/invites/InviteContext';\r\nimport { AppIds } from 'src/ts/models/SharedTypes';\r\nimport HuddleApiClient from 'src/ts/rest/HuddleApiClient';\r\nimport { deviceType, DeviceTypes } from '../../helpers/EnvironmentHelper';\r\nimport { displayableErrors, ErrorHelper } from '../../helpers/ErrorHelper';\r\nimport { CommonProperty, logger } from '../../helpers/LoggerHelper';\r\nimport { ARootView, ARootViewProps } from '../common/ARootView';\r\nimport { StackNavigationView } from '../common/StackNavigationView';\r\nimport { InviteView } from './InviteView';\r\nimport { Launcher } from './Launcher';\r\n\r\nexport interface RootViewState {\r\n launcherKey: number;\r\n inviteContext?: InviteContext;\r\n error?: Error | undefined;\r\n}\r\n\r\nexport class RootView extends ARootView {\r\n\r\n constructor(props: ARootViewProps) {\r\n super(props);\r\n this.state = {\r\n launcherKey: deviceType === DeviceTypes.Desktop ? 1 : 0,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const shortId = this._getShortIdFromUrl();\r\n if (!shortId) {\r\n throw displayableErrors.InviteIdFromUrl;\r\n }\r\n\r\n HuddleApiClient.getOffSkypeInvite({\r\n shortId,\r\n type: AppIds.OffSkypeInvites,\r\n }).then((invite) => {\r\n this.setState({\r\n inviteContext: { invite },\r\n });\r\n logger.initCommonProperty({ key: CommonProperty.InviteSkypeId, value: invite.inviterSkypeId, piiKind: AWTPiiKind.Identity });\r\n }).catch((response: WebErrorResponse) => {\r\n const error = ErrorHelper.enrichErrorFromWebResponse(displayableErrors.InviteNotFound, response, 'Get invite details');\r\n this.setState({\r\n error,\r\n });\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: ARootViewProps) {\r\n if (prevProps.loading && !this.props.loading) {\r\n document.title = localizer.getString('hdr_launch_title');\r\n }\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n throw this.state.error;\r\n }\r\n\r\n const invite = this.state.inviteContext ? this.state.inviteContext.invite : undefined;\r\n return \r\n { !!this.state.launcherKey && invite && }\r\n { (ariaContext) =>\r\n }\r\n initialViewProps={ { eventViewName: 'invite-view' } } />\r\n }\r\n ;\r\n }\r\n\r\n private _getShortIdFromUrl() {\r\n const pathName = window.location.pathname.replace(/\\/+$/, '');\r\n const pathParts = pathName.split('/');\r\n\r\n return pathParts.pop();\r\n }\r\n\r\n private _onLaunchClick = () => {\r\n this.setState((oldState) => {\r\n return { launcherKey: oldState.launcherKey + 1 };\r\n });\r\n }\r\n}\r\n","import UAParser from 'ua-parser-js';\r\nimport { QuickJoinFlowSupportedBrowsers } from '../contexts/EcsContext';\r\nimport { Dictionary } from '../models/SharedTypes';\r\n\r\nexport enum OperatingSystems {\r\n WinPhone = 'Windows Phone',\r\n WinRT = 'Windows RT',\r\n Win = 'Windows',\r\n iOS = 'iOS',\r\n MacOS = 'Mac OS',\r\n Android = 'Android',\r\n AndroidX86 = 'Android -x86',\r\n ChromeOS = 'ChromeOS',\r\n Linux = 'Linux',\r\n Tizen = 'Tizen',\r\n Ubuntu = 'Ubuntu',\r\n WebOS = 'WebOS',\r\n Unknown = 'Unknown',\r\n}\r\n\r\nexport enum Browsers {\r\n AndroidBrowser = 'Android Browser',\r\n Avast = 'Avast',\r\n AVG = 'AVG',\r\n Bolt = 'Bolt',\r\n ChromeWebView = 'Chrome WebView',\r\n Chrome = 'Chrome',\r\n Chromium = 'Chromium',\r\n Dolphin = 'Dolphin',\r\n EdgeOld = 'EdgeOld',\r\n Edge = 'Edge',\r\n Electron = 'Electron',\r\n Facebook = 'Facebook',\r\n Firefox = 'Firefox',\r\n Instagram = 'Instagram',\r\n Kindle = 'Kindle',\r\n Opera = 'Opera',\r\n OperaMini = 'Opera Mini',\r\n OperaMobile = 'Opera Mobile',\r\n MSIE = 'IE',\r\n Mozilla = 'Mozilla',\r\n Safari = 'Safari',\r\n SafariMobile = 'Mobile Safari',\r\n PhantomJS = 'PhantomJS',\r\n SamsungBrowser = 'Samsung Browser',\r\n SkypeShell = 'SkypeShell',\r\n Tesla = 'Tesla',\r\n Tizen = 'Tizen Browser',\r\n Yandex = 'Yandex',\r\n WeChat = 'WeChat',\r\n Baidu = 'baidu',\r\n Unknown = 'Unknown',\r\n}\r\n\r\nconst osRegExps: Dictionary = {};\r\nosRegExps[OperatingSystems.WinPhone] = /windows\\sphone/i;\r\nosRegExps[OperatingSystems.WinRT] = /arm;/i;\r\nosRegExps[OperatingSystems.Win] = /(windows|win32)/i;\r\nosRegExps[OperatingSystems.iOS] = /(iPad|iPhone|iPod)/i;\r\nosRegExps[OperatingSystems.MacOS] = /(macintosh|mac os x)/i;\r\nosRegExps[OperatingSystems.Android] = /android/i;\r\nosRegExps[OperatingSystems.ChromeOS] = /CrOS/i;\r\nosRegExps[OperatingSystems.Linux] = /(linux|x11)/i;\r\n\r\nconst browserRegExps: Dictionary = {};\r\nbrowserRegExps[Browsers.Opera] = /(OPR\\/|Opera)/i;\r\nbrowserRegExps[Browsers.EdgeOld] = /Edge/i;\r\nbrowserRegExps[Browsers.Edge] = /Edg/i;\r\nbrowserRegExps[Browsers.MSIE] = /Trident/i;\r\nbrowserRegExps[Browsers.Chrome] = /Chrome/i;\r\nbrowserRegExps[Browsers.Firefox] = /Firefox/i;\r\nbrowserRegExps[Browsers.Safari] = /Safari/i;\r\nbrowserRegExps[Browsers.Facebook] = /(FBAN|FBAV)/i;\r\n\r\nexport interface IBrowserVersion {\r\n major: number;\r\n minor: number;\r\n bugfix?: number;\r\n}\r\n\r\nexport enum DeviceTypes {\r\n Desktop = 'desktop',\r\n Mobile = 'mobile',\r\n Other = 'other',\r\n}\r\n\r\nexport class EnvironmentHelper {\r\n\r\n /**\r\n * Returns the Operating System the code is executed in\r\n *\r\n * @return {string}\r\n */\r\n static getOS = (): OperatingSystems => {\r\n const osInformation = EnvironmentHelper._uaParser.getOS();\r\n const detectedOs = osInformation?.name as OperatingSystems ?? EnvironmentHelper._getOsFallback(EnvironmentHelper._uaParser.getUA() || window.navigator.userAgent);\r\n // iPads send by default MacOS user agent to so correctly detect iPad we use this trick\r\n if (detectedOs === OperatingSystems.MacOS && (navigator?.maxTouchPoints ?? 0) > 1) {\r\n return OperatingSystems.iOS;\r\n }\r\n\r\n return detectedOs;\r\n }\r\n\r\n /**\r\n * Returns the browser name\r\n *\r\n * @return {string}\r\n */\r\n static getBrowserName = (): Browsers => {\r\n const browserName = EnvironmentHelper._uaParser.getBrowser();\r\n return browserName?.name as Browsers ?? EnvironmentHelper._getBrowserNameFallback(EnvironmentHelper._uaParser.getUA() || window.navigator.userAgent);\r\n }\r\n\r\n static getSafariBrowserVersion = (): IBrowserVersion | undefined => {\r\n const version = EnvironmentHelper._uaParser.getUA().match(/version\\/(\\d+)\\.(\\d+)(\\.(\\d+))?/i);\r\n\r\n if (!version) {\r\n return;\r\n }\r\n\r\n return {\r\n major: parseInt(version[1], 10),\r\n minor: parseInt(version[2], 10),\r\n bugfix: parseInt(version[4], 10) || undefined,\r\n };\r\n }\r\n\r\n static isSafariBrowserVersionAtLeast(minimumVersion: IBrowserVersion): boolean {\r\n if (EnvironmentHelper.getBrowserName() !== Browsers.Safari) {\r\n return false;\r\n }\r\n\r\n const version = EnvironmentHelper.getSafariBrowserVersion();\r\n\r\n if (!version) {\r\n return false;\r\n }\r\n\r\n return version.major > minimumVersion.major\r\n || (version.major === minimumVersion.major && version.minor >= minimumVersion.minor);\r\n }\r\n\r\n static isSafariBrowserEligibleForMeetingGuestFlow = (): boolean => {\r\n return EnvironmentHelper.isSafariBrowserVersionAtLeast({\r\n major: 13,\r\n minor: 1,\r\n });\r\n }\r\n\r\n /**\r\n * Returns the device type\r\n *\r\n * @return {string}\r\n */\r\n static getDeviceType = (): DeviceTypes => {\r\n switch (EnvironmentHelper.getOS()) {\r\n case OperatingSystems.Win:\r\n case OperatingSystems.MacOS:\r\n case OperatingSystems.WinRT:\r\n case OperatingSystems.ChromeOS:\r\n case OperatingSystems.Linux:\r\n case OperatingSystems.Ubuntu:\r\n return DeviceTypes.Desktop;\r\n\r\n case OperatingSystems.WinPhone:\r\n case OperatingSystems.iOS:\r\n case OperatingSystems.Android:\r\n case OperatingSystems.AndroidX86:\r\n return DeviceTypes.Mobile;\r\n\r\n case OperatingSystems.Unknown:\r\n case OperatingSystems.WebOS:\r\n case OperatingSystems.Tizen:\r\n default:\r\n return DeviceTypes.Other;\r\n }\r\n }\r\n\r\n static isQuickWebJoinSupported = (): boolean => {\r\n return EnvironmentHelper._currentBrowserSupportsQuickJoinOnWeb();\r\n }\r\n\r\n /**\r\n * Returns current screen resolution\r\n *\r\n * @return {string}\r\n */\r\n static getScreenResolution = (_screen = window.screen) => {\r\n if (_screen.width == null || typeof _screen.width === 'undefined' ||\r\n _screen.height == null || typeof _screen.height === 'undefined') {\r\n\r\n return 'Unknown';\r\n }\r\n\r\n return _screen.width + 'x' + _screen.height;\r\n }\r\n\r\n /**\r\n * Returns language from the browser\r\n *\r\n * @return {string}\r\n */\r\n static getLanguage = (_navigator = window.navigator) => {\r\n const lang = _navigator.language || (_navigator as any).userLanguage;\r\n\r\n if (lang !== undefined && lang.length > 2) {\r\n return lang.substr(0, 2);\r\n }\r\n\r\n return lang;\r\n }\r\n\r\n /**\r\n * Returns the iOS version\r\n * Based on detectDevice can returns iPhone/iPad or just version number\r\n *\r\n * @return {string}\r\n */\r\n static getIOSVersion() {\r\n\r\n const iOSVersionMatches = EnvironmentHelper._uaParser.getUA().match(\r\n new RegExp('(iPhone OS|CPU OS)' + ' ([\\\\d_]+)'),\r\n );\r\n\r\n if (iOSVersionMatches) {\r\n return iOSVersionMatches[2].replace(/_/g, '.');\r\n }\r\n\r\n return 'Unknown';\r\n }\r\n\r\n static isIOSInAppBrowserFlow = (_os: OperatingSystems = os, _browser: Browsers = browser): boolean => {\r\n const knownInAppBrowsers = [\r\n Browsers.Facebook,\r\n ];\r\n\r\n return _os === OperatingSystems.iOS && knownInAppBrowsers.indexOf(browser) > -1;\r\n }\r\n\r\n static getSupportedBrowsersDefault = (): QuickJoinFlowSupportedBrowsers => {\r\n return {\r\n android: [Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n ios: [Browsers.Safari, Browsers.SafariMobile, Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n mac: [Browsers.Safari, Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n windows: [Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.EdgeOld, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n others: [Browsers.Chrome, Browsers.Chromium, Browsers.Edge, Browsers.Firefox, Browsers.Opera, Browsers.Yandex],\r\n };\r\n }\r\n\r\n static updateEnvironmentSettings = (quickJoinFlowSupportedBrowsers?: QuickJoinFlowSupportedBrowsers, customUaParser?: UAParser) => {\r\n EnvironmentHelper._quickJoinFlowSupportedBrowsers = quickJoinFlowSupportedBrowsers ?? EnvironmentHelper._quickJoinFlowSupportedBrowsers;\r\n if (customUaParser) {\r\n EnvironmentHelper._uaParser = customUaParser;\r\n }\r\n }\r\n\r\n private static _uaParser = new UAParser();\r\n private static _quickJoinFlowSupportedBrowsers = EnvironmentHelper.getSupportedBrowsersDefault();\r\n\r\n private static _currentBrowserSupportsQuickJoinOnWeb = (): boolean => {\r\n const currentBrowser = EnvironmentHelper.getBrowserName();\r\n const currentOs = EnvironmentHelper.getOS();\r\n const supportedBrowsers = EnvironmentHelper._quickJoinFlowSupportedBrowsers;\r\n switch (currentOs) {\r\n case OperatingSystems.Android:\r\n case OperatingSystems.AndroidX86:\r\n case OperatingSystems.ChromeOS:\r\n return supportedBrowsers.android.includes(currentBrowser);\r\n\r\n case OperatingSystems.iOS:\r\n return supportedBrowsers.ios.includes(currentBrowser);\r\n\r\n case OperatingSystems.MacOS:\r\n return supportedBrowsers.mac.includes(currentBrowser);\r\n\r\n case OperatingSystems.Win:\r\n case OperatingSystems.WinRT:\r\n return supportedBrowsers.windows.includes(currentBrowser);\r\n\r\n default:\r\n return supportedBrowsers.others.includes(currentBrowser);\r\n }\r\n }\r\n\r\n private static _getOsFallback = (userAgent: string): OperatingSystems => {\r\n for (const osKey in osRegExps) {\r\n if (userAgent.match(osRegExps[osKey])) {\r\n // iPads send by default MacOS user agent to so correctly detect iPad we use this trick\r\n if (osKey === OperatingSystems.MacOS && (navigator?.maxTouchPoints ?? 0) > 1) {\r\n return OperatingSystems.iOS;\r\n }\r\n\r\n return osKey as OperatingSystems;\r\n }\r\n }\r\n\r\n return OperatingSystems.Unknown;\r\n }\r\n\r\n private static _getBrowserNameFallback = (userAgent: string): Browsers => {\r\n for (const browserKey in browserRegExps) {\r\n if (userAgent.match(browserRegExps[browserKey])) {\r\n return browserKey as Browsers;\r\n }\r\n }\r\n\r\n return Browsers.Unknown;\r\n }\r\n}\r\n\r\n// PlatformVersion: Helpers.Environment.pureOSVersion,\r\n// Platform: Helpers.Environment.platform,\r\n// Language: Helpers.Environment.language,\r\n// ScreenResolution: Helpers.Environment.screenResolution\r\n\r\nexport const os = EnvironmentHelper.getOS();\r\nexport const browser = EnvironmentHelper.getBrowserName();\r\nexport const deviceType = EnvironmentHelper.getDeviceType();\r\nexport const canJoinOnWeb = EnvironmentHelper.isQuickWebJoinSupported();\r\nexport const screenResolution = EnvironmentHelper.getScreenResolution();\r\nexport const deviceLanguage = EnvironmentHelper.getLanguage();\r\nexport const platform = window.navigator.platform;\r\nexport const isIOSInAppBrowserFlow = EnvironmentHelper.isIOSInAppBrowserFlow();\r\nexport const isSafariBrowserEligibleForMeetingGuestFlow = EnvironmentHelper.isSafariBrowserEligibleForMeetingGuestFlow();\r\nexport const getSupportedBrowsersDefault = EnvironmentHelper.getSupportedBrowsersDefault();\r\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","import * as React from 'react';\r\nimport { getSupportedBrowsersDefault } from './../helpers/EnvironmentHelper';\r\n\r\nexport interface EcsSettings {\r\n useMeetingsApi: boolean;\r\n useUnifiedView: boolean;\r\n useJoinThread?: boolean;\r\n maxRetries?: number;\r\n allowDesktopSafariGuestFlow?: boolean;\r\n webSubdomainForRedirect?: string;\r\n useNewMobileJoinFlow?: boolean;\r\n quickJoinFlowSupportedBrowsers?: QuickJoinFlowSupportedBrowsers;\r\n}\r\n\r\nexport interface QuickJoinFlowSupportedBrowsers {\r\n windows: string[];\r\n mac: string[];\r\n ios: string[];\r\n android: string[];\r\n others: string[];\r\n}\r\n\r\nexport interface EcsContext {\r\n settings: EcsSettings;\r\n}\r\n\r\nconst context = React.createContext({} as EcsContext);\r\n\r\nconst ecsDefaults: EcsSettings = {\r\n useMeetingsApi: true,\r\n useUnifiedView: true,\r\n useJoinThread: true,\r\n maxRetries: 0,\r\n useNewMobileJoinFlow: true,\r\n allowDesktopSafariGuestFlow: true,\r\n quickJoinFlowSupportedBrowsers: getSupportedBrowsersDefault,\r\n};\r\n\r\nexport const EcsContextProvider = context.Provider;\r\n\r\nexport const EcsContextConsumer = context.Consumer;\r\n\r\nexport const EcsConfigFallback = ecsDefaults;\r\n","import { localizer } from '@skype/bew-localization';\r\nimport { Avatar, Button, Header, Text } from '@stardust-ui/react';\r\nimport config from 'config';\r\nimport * as React from 'react';\r\nimport { logger } from 'src/ts/helpers/LoggerHelper';\r\nimport { ProfilesContextConsumer } from '../../contexts/profiles/ProfilesContext';\r\nimport { OperatingSystems, os } from '../../helpers/EnvironmentHelper';\r\nimport { Footer } from '../common/Footer';\r\nimport { Padder } from '../common/Padder';\r\n\r\ninterface ProfileViewProps {\r\n onLaunchClick: () => void;\r\n}\r\n\r\nexport class ProfileView extends React.PureComponent {\r\n\r\n renderAvatar() {\r\n return { (profilesContext) =>\r\n \r\n };\r\n }\r\n\r\n renderTitle() {\r\n return { (profilesContext) =>\r\n
{ localizer.get('add_to_contacts_user', {\r\n user_name: { profilesContext.skypeId },\r\n }) }
\r\n }
;\r\n }\r\n\r\n renderControls() {\r\n return <>\r\n \r\n ;\r\n }\r\n\r\n renderBody() {\r\n return <>\r\n \r\n { localizer.getString('txt_launch_first_time_device') }\r\n \r\n \r\n { localizer.get('txt_launch_please_download', {\r\n download_skype: \r\n { localizer.getString('btn_launch_download_skype') }\r\n ,\r\n }) }\r\n \r\n ;\r\n }\r\n\r\n render() {\r\n return
\r\n \r\n
\r\n { this.renderAvatar() }\r\n { this.renderTitle() }\r\n { this.renderControls() }\r\n { this.renderBody() }\r\n
\r\n \r\n
\r\n
;\r\n }\r\n\r\n private _downloadSkype = () => {\r\n logger.action({ name: 'download' });\r\n\r\n const downloadUrl = os === OperatingSystems.MacOS ? config.urls.app.downloadDesktop : config.urls.app.download;\r\n window.open(downloadUrl, '_blank');\r\n }\r\n}\r\n","\nvar content = require(\"!!../../node_modules/css-loader/index.js??ref--6-1!../../node_modules/postcss-loader/lib/index.js??ref--6-2!../../node_modules/less-loader/dist/cjs.js!./app.less\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../node_modules/css-loader/index.js??ref--6-1!../../node_modules/postcss-loader/lib/index.js??ref--6-2!../../node_modules/less-loader/dist/cjs.js!./app.less\", function() {\n\t\tvar newContent = require(\"!!../../node_modules/css-loader/index.js??ref--6-1!../../node_modules/postcss-loader/lib/index.js??ref--6-2!../../node_modules/less-loader/dist/cjs.js!./app.less\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","/**\r\n * @copyright © Microsoft. All rights reserved.\r\n *\r\n * Skype Silent Login SDK\r\n */\r\n(function() {\r\n \"use strict\";\r\n\r\n if (typeof window.SKYPE === \"undefined\") {\r\n window.SKYPE = {};\r\n }\r\n window.SKYPE.login = window.SKYPE.login || {};\r\n\r\n window.SKYPE.login.Silent = (function() {\r\n var loginDomains = {\r\n qa: \"https://a.qa.lw.skype.net\",\r\n live: \"https://a.lw.skype.com\"\r\n },\r\n ssoLoginDomains = {\r\n qa: \"https://a.qalogin.skype.net\",\r\n live: \"https://a.login.skype.com\"\r\n },\r\n originCheckMap = {\r\n qa: [\"https://a.qa.lw.skype.net\", \"https://a.qalogin.skype.net\"],\r\n live: [\"https://a.lw.skype.com\", \"https://a.login.skype.com\"]\r\n },\r\n endpoint = \"/login/silent\", // Silent login endpoint uri\r\n endpointVersion = \"1.0\", // Endpoint version\r\n iFrameReference = null, // iFrame object reference\r\n ancestorElement, // iFrame's ancestor\r\n callback, // Callback function\r\n response = {}, // Response object\r\n timeout = 5000, // Timeout for the call in ms\r\n timeoutObj = null, // Timeout reference\r\n host = null, // Selected login hostname\r\n originCheckHosts = null, // Array of hosts for postmessage origin check\r\n state = \"\", // State passed through the silent login\r\n eventRegistered = false, // Post message event listener registered\r\n processing = false, // Processing the Silent login request\r\n logEnabled = null; // Debug logging enabled\r\n\r\n /**\r\n * Settings object. will be overriden by init()\r\n */\r\n var settings = {\r\n env: \"live\",\r\n client_id: null,\r\n redirect_uri: null,\r\n isSsoCompatible: false\r\n };\r\n\r\n /**\r\n * Simple debug logger\r\n *\r\n * @param string message Logged message\r\n * @param Object debug Optional debug data\r\n *\r\n * @return void\r\n */\r\n var _log = function(message, debug) {\r\n if (logEnabled === null) {\r\n logEnabled = (window.location.host.match(/^(pre|dev|qa).*\\.net$/) || document.cookie.indexOf(\"debug\") > -1 || window.location.search.indexOf(\"debug\") > -1);\r\n }\r\n if (!logEnabled) {\r\n return;\r\n }\r\n try {\r\n if (typeof debug === \"object\") {\r\n var tokens = [];\r\n\r\n for (var prop in debug) {\r\n if (prop === \"skypetoken\") {\r\n // Hide the skypetoken from console\r\n tokens.push(prop + \": \" + \"\");\r\n } else {\r\n tokens.push(prop + \": \" + JSON.stringify(debug[prop]));\r\n }\r\n }\r\n\r\n message += \" - \" + tokens.join(\", \");\r\n } else if (typeof debug === \"string\") {\r\n message += \" - \" + debug;\r\n }\r\n message = \"[silentlogin.js] - \" + message;\r\n console.log(message);\r\n } catch (e) {}\r\n };\r\n\r\n /**\r\n * Post message event listener\r\n *\r\n * @return void\r\n */\r\n var _messageListener = function(e) {\r\n _log(\"Received message from \" + e.origin);\r\n\r\n // Verify the message origin\r\n var originCheckPassed = false;\r\n\r\n if (!originCheckHosts) {\r\n return;\r\n }\r\n\r\n for (var i = 0; i < originCheckHosts.length; i++) {\r\n if (e.origin === originCheckHosts[i]) {\r\n originCheckPassed = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!originCheckPassed) {\r\n return;\r\n }\r\n\r\n var data = e.data;\r\n\r\n // If the postMessage sends just a string, try to JSON parse it\r\n if (typeof e.data === \"string\") {\r\n try {\r\n data = JSON.parse(e.data);\r\n } catch (ex) {}\r\n }\r\n _log(\"Message data\", data);\r\n\r\n // Verify the message state\r\n var receivedState = data.state || null;\r\n if (state !== receivedState) {\r\n _log(\"State \" + receivedState + \" doesn't match the last submitted state \" + state);\r\n return;\r\n }\r\n // Response is trusted\r\n window.clearTimeout(timeoutObj);\r\n // Clone the response data\r\n response = {};\r\n for (var attr in data) {\r\n if (data.hasOwnProperty(attr)) {\r\n response[attr] = data[attr];\r\n }\r\n }\r\n\r\n _callCallback();\r\n };\r\n\r\n /**\r\n * Create the silent login iframe and start loading\r\n *\r\n * @return void\r\n */\r\n var _createSilentLogin = function(source) {\r\n _destroySilentLogin();\r\n if (typeof ancestorElement === \"undefined\") {\r\n // Use body as the ancestor, but when it's not available yet, use head instead.\r\n // document.head is not available in IE8, so fallback is to get it by tag name.\r\n ancestorElement = document.body || document.head || document.getElementsByTagName('head')[0];\r\n }\r\n iFrameReference = document.createElement(\"iframe\");\r\n iFrameReference.frameBorder = 0;\r\n iFrameReference.width = \"1px\";\r\n iFrameReference.height = \"1px\";\r\n iFrameReference.style.display = \"none\";\r\n iFrameReference.style.visibility = \"hidden\";\r\n iFrameReference.id = \"silentLoginFrame\" + Math.floor((Math.random() * 10) + 1);\r\n iFrameReference.setAttribute(\"src\", source);\r\n ancestorElement.appendChild(iFrameReference);\r\n _log(\"Created iFrame: \" + source);\r\n };\r\n\r\n /**\r\n * Destroy the silent login iframe\r\n *\r\n * @return void\r\n */\r\n var _destroySilentLogin = function() {\r\n if (iFrameReference) {\r\n ancestorElement.removeChild(iFrameReference);\r\n iFrameReference = null;\r\n }\r\n };\r\n\r\n /**\r\n * Verify if the provided settings are valid. Initialize the redirect uri if missing.\r\n *\r\n * @return void\r\n */\r\n var _validateSettings = function() {\r\n if (!settings.client_id) {\r\n throw \"[silentlogin.js] client_id not initialized. Call init() first.\";\r\n }\r\n\r\n if (!settings.redirect_uri) {\r\n // If redirect_uri not set, use the page location (without parameters)\r\n settings.redirect_uri = window.location.protocol + \"//\" + window.location.host + window.location.pathname;\r\n }\r\n };\r\n\r\n /**\r\n * Check if the browser supports postMessage and JSON.parse\r\n *\r\n * @return boolean\r\n */\r\n var _isSupportedBrowser = function() {\r\n return (\"postMessage\" in window) && (typeof JSON === \"object\" && JSON.parse);\r\n };\r\n\r\n /**\r\n * Call the callback function and pass the response object to it.\r\n *\r\n * @return void\r\n */\r\n var _callCallback = function() {\r\n _log(\"Calling callback function\", response);\r\n\r\n // No longer processing request. Unlock.\r\n processing = false;\r\n\r\n if (typeof callback === \"function\") {\r\n callback(response);\r\n }\r\n };\r\n\r\n /**\r\n * Handle timeout event and call the callback function.\r\n *\r\n * @return void\r\n */\r\n var _handleTimeout = function() {\r\n _destroySilentLogin();\r\n response = {};\r\n response.error = \"timeout\";\r\n _callCallback();\r\n };\r\n\r\n /**\r\n * Serialize object into query parameters\r\n *\r\n * @param Object query Object holding the parameters to serialize\r\n * @return string Serialized query string\r\n */\r\n var _createQuery = function(query) {\r\n var str = [];\r\n for (var k in query) {\r\n if (query.hasOwnProperty(k)) {\r\n str.push(encodeURIComponent(k) + \"=\" + encodeURIComponent(query[k]));\r\n }\r\n }\r\n return str.join(\"&\");\r\n };\r\n\r\n /**\r\n * Get the iFrame source url\r\n *\r\n * @return string Frame url\r\n */\r\n var _getFrameSource = function() {\r\n var timestamp = new Date().getTime(),\r\n domainMap = settings.isSsoCompatible ? ssoLoginDomains : loginDomains;\r\n\r\n state = \"silentloginsdk_\" + timestamp;\r\n var query = {\r\n response_type: \"postmessage\",\r\n client_id: settings.client_id,\r\n partner: \"999\",\r\n redirect_uri: settings.redirect_uri,\r\n state: state,\r\n _accept: endpointVersion,\r\n _nc: timestamp\r\n };\r\n\r\n originCheckHosts = originCheckMap[settings.env] || originCheckMap.live;\r\n host = domainMap[settings.env] || domainMap.live;\r\n return host + endpoint + \"?\" + _createQuery(query);\r\n };\r\n\r\n /**\r\n * Initialize the Silent login before using it\r\n *\r\n * Pass in the settings object:\r\n *
\r\n         * {\r\n         *  env: \"\", // Skype environment to be used: Live (default), QA. Optional.\r\n         *  client_id: , // Client id of your application. Mandatory.\r\n         *  redirect_uri: , // Redirect uri of your application. If left empty, will be autodetected from current location. (Optional, recommended)\r\n         * }\r\n         * 
\r\n *\r\n * @param Object options Silent login options\r\n * @return SKYPE.login.Silent\r\n */\r\n var init = function(options) {\r\n if (typeof options === \"object\") {\r\n options = options || {};\r\n // If callback function passed into init method, set it correctly\r\n if (options.hasOwnProperty(\"callback\")) {\r\n setCallback(options.callback);\r\n }\r\n // Copy overrides to settings\r\n for (var k in settings) {\r\n if (options.hasOwnProperty(k)) {\r\n settings[k] = options[k];\r\n }\r\n }\r\n }\r\n // Register the message listener\r\n if (!eventRegistered) {\r\n eventRegistered = true;\r\n if (!window.addEventListener) {\r\n window.attachEvent(\"onmessage\", _messageListener);\r\n } else {\r\n window.addEventListener(\"message\", _messageListener, false);\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Set the callback function, which will be called once we get the result.\r\n * Note the function parameter will contain the response object.\r\n *\r\n * @param function callbackFunction Callback function\r\n * @return SKYPE.login.Silent\r\n */\r\n var setCallback = function(callbackFunction) {\r\n if (typeof callbackFunction === \"function\") {\r\n callback = callbackFunction;\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Trigger loading the Silent login iFrame. Registered callback will be called once finished.\r\n *\r\n * @return void\r\n */\r\n var load = function() {\r\n // Prevent multiple simultaneous calls\r\n if (processing) {\r\n return;\r\n }\r\n _validateSettings();\r\n processing = true;\r\n // If this browser doesn't support postMessage, we're done.\r\n if (!_isSupportedBrowser()) {\r\n response = {error: \"unsupported_browser\"};\r\n _callCallback();\r\n return;\r\n }\r\n // Initialize timer\r\n window.clearTimeout(timeoutObj);\r\n timeoutObj = window.setTimeout(_handleTimeout, timeout);\r\n // Start loading the iFrame\r\n _createSilentLogin(_getFrameSource());\r\n };\r\n\r\n /**\r\n * Get the Skypetoken from response or null if not provided\r\n *\r\n * @return string|null Skypetoken or null\r\n */\r\n var getSkypetoken = function() {\r\n return response.skypetoken || null;\r\n };\r\n\r\n /**\r\n * Get the full response object\r\n *\r\n * @return Object Response object\r\n */\r\n var getFullResponse = function() {\r\n return response;\r\n };\r\n\r\n return {\r\n init: init,\r\n setCallback: setCallback,\r\n load: load,\r\n getSkypetoken: getSkypetoken,\r\n getFullResponse: getFullResponse\r\n };\r\n }());\r\n}());\r\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".footer{position:absolute;left:0;right:0;bottom:0;background-color:#f2f2f2;color:#2b2c33;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex:0 0 auto;-webkit-box-flex:0;flex:0 0 auto;-ms-flex-direction:row;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-justify-content:space-between;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:9.6px;font-size:.6rem;font-weight:700;min-height:19.2px;min-height:1.2rem;padding:5px 10px}@media only screen and (max-width:600px){.footer{text-align:center}}.footer.dark{background-color:transparent;color:#fff}.footer .link{color:#000;opacity:.8;text-decoration:none}.footer.dark .link{opacity:1;color:#fff}.footer .link:focus,.footer .link:hover{color:#000}.footer_link:focus{color:#000;text-decoration:underline}.footer .separator{display:inline-block;margin:0;padding:0 3px}@media only screen and (max-width:600px){.footer .app{width:100%}}@media only screen and (max-width:600px){.footer .legal{opacity:.5;width:100%}}@media only screen and (max-width:412px){.footer .legal .footer .separator:last-of-type{display:none}}.rtl .footer .app{margin-left:20px;margin-right:0}@media only screen and (max-width:412px){.copyright{display:block;width:100%}}.language-selector{display:inline-block;position:relative}.language-selector .selected{line-height:15px;display:inline-block}.language-selector .select{border:none;cursor:pointer;height:100%;left:0;font-size:11px;opacity:0;position:absolute;top:0;width:100%;z-index:20}.rtl .language-selector .select{left:auto;right:0}.header{position:absolute;left:0;right:0;top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header.dark{background-color:#2b2c33;color:#fff}.header-flex{-ms-flex-item-align:start;align-self:flex-start}.header a.light{text-decoration:none;color:#0078d4}.stack.fullscreen,.stack.fullscreen>div{height:100%;width:100%;position:absolute}.stack.nested{height:100%;width:100%}.stack>div{box-sizing:border-box;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-ms-justify-content:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.stack.prev{z-index:0;overflow:hidden}.stack.current{z-index:1;overflow:hidden}@-webkit-keyframes stackFade{0%{opacity:0}to{opacity:1}}@keyframes stackFade{0%{opacity:0}to{opacity:1}}@-webkit-keyframes stackFadeOut{0%{opacity:1}to{opacity:0}}@keyframes stackFadeOut{0%{opacity:1}to{opacity:0}}@-webkit-keyframes stackLeft{0%{left:100%}to{left:0}}@keyframes stackLeft{0%{left:100%}to{left:0}}@-webkit-keyframes stackLeftOut{0%{left:0}to{left:100%}}@keyframes stackLeftOut{0%{left:0}to{left:100%}}@-webkit-keyframes stackRight{0%{right:100%}to{right:0}}@keyframes stackRight{0%{right:100%}to{right:0}}@-webkit-keyframes stackRightOut{0%{right:0}to{right:100%}}@keyframes stackRightOut{0%{right:0}to{right:100%}}.meetings.joinView{padding:0 1rem}.meetings.joinView .ui-button:not(.fakeLink){min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin:1rem 0 0}.meetings.joinView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.meetings.joinView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.meetings.joinView .body{margin:1rem 0;text-align:center}@font-face{font-family:SkypeAssetsLight;src:url(https://meetnow.azureedge.net/assets/v2/SkypeAssets-Light.woff) format(\\\"woff\\\")}.meetings.joinView .joinLinkContainer{font-size:16px;font-size:1rem;text-align:center;width:100%}.meetings.joinView .joinLinkContainer .joinLink{background-color:#f1f1f4;border-radius:11px;box-sizing:border-box;color:#2b2c33;font-size:18px;height:50px;line-height:50px;margin:10px 0;overflow:hidden;padding:0 45px;position:relative;text-align:left;text-overflow:ellipsis;width:100%}[dir=rtl] .meetings.joinView .joinLinkContainer .joinLink{text-align:right}.meetings.joinView .joinLinkContainer .joinLink:after,.meetings.joinView .joinLinkContainer .joinLink:before{cursor:pointer;font-family:SkypeAssetsLight;font-size:20px;position:absolute;top:0;width:20px}.meetings.joinView .joinLinkContainer .joinLink:before{color:#7b7b7b;content:\\\"\\\\E612\\\"}.meetings.joinView .joinLinkContainer .joinLink:after{content:\\\"\\\\E941\\\"}.meetings.joinView .joinLinkContainer .joinLink.copied:after{color:green;content:\\\"\\\\E412\\\"}[dir=ltr] .meetings.joinView .joinLinkContainer .joinLink:before,[dir=rtl] .meetings.joinView .joinLinkContainer .joinLink:after{left:15px}[dir=ltr] .meetings.joinView .joinLinkContainer .joinLink:after,[dir=rtl] .meetings.joinView .joinLinkContainer .joinLink:before{right:15px}.guestLogin .ui-input input{background:transparent;border-bottom:1px solid #fff;border-radius:0;color:#fff;text-align:center;line-height:normal}.guestLogin .ui-input input::-webkit-input-placeholder{color:#fff}.guestLogin .ui-input input:-ms-input-placeholder{color:#fff}.guestLogin .ui-input input::placeholder{color:#fff}.loginView .body{color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.loginView .body a{color:#fff;text-decoration:underline}.loginView .actions>.ui-button{margin:1rem 0 0;width:100%;min-width:192px;min-width:12rem;height:48px;height:3rem}.loginView .body .actions{padding:1rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.loginView .body .actions .help{font-size:small;margin-top:1rem}.loginView .body .actions .active{background:#fff;color:#000;border-radius:10px;cursor:pointer}.loginView .body .actions .active .ui-button{width:100%;height:auto;border-radius:0;margin:0;color:#000;min-width:0}.loginView .body .actions .active .login-option{width:100%}.loginView .body .actions .active .login-option>.ui-layout__main{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;padding-left:1rem}.loginView .body .actions .active .ui-button:focus,.loginView .body .actions .active .ui-button:hover{background-color:#f1f1f4}.loginView .body .actions .active .ui-layout__start>.ui-button:focus,.loginView .body .actions .active .ui-layout__start>.ui-button:hover{border-top-left-radius:10px;border-top-right-radius:10px}.loginView .body .actions .active .ui-layout__end>.ui-button:focus,.loginView .body .actions .active .ui-layout__end>.ui-button:hover{border-bottom-left-radius:10px;border-bottom-right-radius:10px}.loginView .captcha-container :focus{outline-color:#fff}.unifiedView .body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%}.unifiedView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.unifiedView .privacy-statement{margin-top:1rem;max-width:480px;max-width:30rem;text-align:justify;font-size:16px;font-size:1rem;font-weight:100}.unifiedView .actions-container{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;width:100%}.unifiedView .actions-container,.unifiedView .text-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.unifiedView .text-body{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.unifiedView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.unifiedView .margin-top{margin-top:1rem}.unifiedView .actions>.ui-button{margin:1rem 0 0;width:100%;min-width:192px;min-width:12rem;height:48px;height:3rem}.unifiedView .body .actions{padding:1rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;margin-bottom:20px}.unifiedView .body .actions .help{font-size:small;margin-top:1rem}.unifiedView .body .actions .active{background:#fff;color:#000;border-radius:10px;cursor:pointer}.unifiedView .body .actions .active .ui-button{width:100%;height:auto;border-radius:0;margin:0;color:#000;min-width:0}.unifiedView .body .actions .active .login-option{width:100%}.unifiedView .body .actions .active .login-option>.ui-layout__main{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;padding-left:1rem}.unifiedView .body .actions .active .ui-button:focus,.unifiedView .body .actions .active .ui-button:hover{background-color:#f1f1f4}.unifiedView .body .actions .active .ui-layout__start>.ui-button:focus,.unifiedView .body .actions .active .ui-layout__start>.ui-button:hover{border-top-left-radius:10px;border-top-right-radius:10px}.unifiedView .body .actions .active .ui-layout__end>.ui-button:focus,.unifiedView .body .actions .active .ui-layout__end>.ui-button:hover{border-bottom-left-radius:10px;border-bottom-right-radius:10px}.unifiedView .body a{color:#000}.unifiedView .guestLogin .ui-input input{background:transparent;border-bottom:1px solid #0078ca;border-radius:0;text-align:center;color:#000;line-height:normal}.unifiedView .guestLogin .ui-input input:focus{box-shadow:none}.unifiedView .guestLogin .ui-input input::-webkit-input-placeholder{color:#a8abad}.unifiedView .guestLogin .ui-input input:-ms-input-placeholder{color:#a8abad}.unifiedView .guestLogin .ui-input input::placeholder{color:#a8abad}.unifiedView .footer{background-color:transparent}.unifiedView div.selectWrapper,.unifiedView span.copyright{color:#000;opacity:.8}.unifiedView .captcha-container input.solution{background:transparent;border-width:1px!important;border-bottom:1px solid #a8abad;color:#a8abad;text-align:center!important;line-height:normal}.unifiedView .captcha-container :focus{outline-color:#000}.unifiedView .guestLogin button:first-of-type{background-color:#0078ca;color:#fff}.unifiedView .guestLogin button:first-of-type[disabled]{background-color:#d5d9de}.unifiedView .guestLogin button:last-of-type .ui-text{color:#000}.unifiedView .guestLogin .spinnerContainer{width:16px;width:1rem;height:16px;height:1rem;line-height:16px;line-height:1rem;margin:0 .5rem 0 -1.5rem}[dir=rtl] .unifiedView .guestLogin .spinnerContainer{margin:0 -1.5rem 0 .5rem}.unifiedView .guestLogin .spinnerContainer .ui-animation g[stroke]{stroke:#fff}.invites.inviteView{padding:0 1rem}.invites.inviteView .ui-button:not(.fakeLink){min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin:1rem 0 0}.invites.inviteView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.invites.inviteView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.invites.inviteView .body{margin:1rem 0;text-align:center}.captcha-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.captcha-container table{border-collapse:collapse;border-spacing:0}.captcha-container td,.captcha-container th{border:none}.captcha-container input.solution{padding:.375rem .75rem!important;outline:0;overflow:visible;font-family:inherit;font-size:16px;font-size:1rem;margin:0!important;width:222px!important;background:transparent;border-width:1px!important;border:none;border-bottom:1px solid #fff;color:#fff;text-align:center!important;line-height:normal}.captcha-container a.link{font-size:16px;font-size:1rem}.captcha-container .menu{text-align:center}.captcha-container img{padding-left:10px}.errorDetails{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.5rem}.errorDetails .title{text-align:center;font-weight:100}@media only screen and (max-width:767px){.errorDetails h2{font-size:1.5rem}}.errorDetails .description{text-align:center;max-width:400px;margin:0 auto}.errorBoundary{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:0 4%;overflow:auto}.errorBoundary,.errorBoundary .alternatives{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.errorBoundary .alternatives{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row;padding-top:100px}@media only screen and (max-width:767px){.errorBoundary .alternatives{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}}.errorBoundary .alternatives .item{max-width:250px;padding:30px 20px}@media only screen and (max-width:767px){.errorBoundary .alternatives .item{max-width:none;padding:1rem}}.errorBoundary .alternatives .item .ui-button{margin:0;padding:0}.errorBoundary .alternatives .item .ui-header{font-weight:100}@media only screen and (max-width:767px){.errorBoundary .alternatives .item .ui-header{margin-top:1rem;font-size:1.5rem}}.errorBoundary .alternatives .item .ui-header__description{font-size:16px;font-size:1rem;margin-bottom:0}.bots.addBotView{text-align:center;padding:0 1rem}.bots.addBotView .body{max-width:815px}.bots.addBotView h1{margin:1rem;font-weight:100}.bots.addBotView .ui-button{min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin-bottom:1rem}@media only screen and (max-width:767px){.bots.addBotView .ui-button{min-width:10rem;min-height:3rem;margin:2rem 0}}.botDetails{text-align:justify;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;max-width:815px}.botDetails .capabilities{margin:2rem 0}.botDetails .capabilities ul{list-style:none;margin:0;padding:0 0 0 .1rem}.botDetails .capabilities li{text-indent:-1.6px;text-indent:-.1rem;line-height:16px;line-height:1rem}.botDetails .capabilities li span{display:inline;display:initial}.botDetails .capabilities li:before{content:\\\"- \\\"}.botDetails .capabilities h3{margin:0;font-size:16px;font-size:1rem}.botDetails .disclaimer{text-align:justify}.botDetails .privacy{text-align:center;font-size:16px;font-size:1rem;margin:2rem 0}.botDetails .privacy a{text-decoration:none}.botDetails .privacy a:hover{text-decoration:underline}.botInfoContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #eff5f8;border-top:1px solid #eff5f8;margin:1.5rem 0;padding:1.5rem 0;width:100%}@media only screen and (max-width:767px){.botInfoContainer{margin:0;padding:0;border:0}}.botInfoContainer .certified{margin-bottom:.5rem;margin-right:.5rem}.botInfoContainer h2{margin:0;font-size:32px;font-size:2rem;font-weight:100}.botInfoContainer h3{margin:0;font-size:16px;font-size:1rem;font-weight:100}.botInfoContainer .ui-avatar{height:120px;height:7.5rem;width:120px;width:7.5rem}.botInfoContainer .avatarMask{height:100%;left:0;position:absolute;top:0;width:100%}.do.doView{padding:0 1rem}.do.doView .ui-button:not(.fakeLink){min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin:1rem 0 0}.do.doView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.do.doView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.do.doView .body{margin:1rem 0;text-align:center}.profiles.profileView{padding:0 1rem}.profiles.profileView .ui-button:not(.fakeLink){min-width:192px;min-width:12rem;min-height:56px;min-height:3.5rem;width:100%;margin:1rem 0 0}.profiles.profileView .ui-button.fakeLink{height:100%;font-size:100%;margin:0;padding:0;vertical-align:baseline;vertical-align:initial}.profiles.profileView .title{margin-top:1rem;max-width:320px;max-width:20rem;text-align:center;font-size:24px;font-size:1.5rem;font-weight:100}.profiles.profileView .body{margin:1rem 0;text-align:center}body[data-platform=macIos],body[data-platform=macIos] button,body[data-platform=macIos] input,body[data-platform=macIos] select,body[data-platform=macIos] textarea{font-family:-apple-system,BlinkMacSystemFont,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif!important}body[data-platform=android],body[data-platform=android] button,body[data-platform=android] input,body[data-platform=android] select,body[data-platform=android] textarea{font-family:Roboto,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif!important}html[lang=bg] body,html[lang=bg] button,html[lang=bg] input,html[lang=bg] select,html[lang=bg] textarea,html[lang=ru] body,html[lang=ru] button,html[lang=ru] input,html[lang=ru] select,html[lang=ru] textarea,html[lang=uk] body,html[lang=uk] button,html[lang=uk] input,html[lang=uk] select,html[lang=uk] textarea{font-family:Segoe UI,Segoe WP,Segoe UI Cyrillic Web,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif}html[lang=el] body,html[lang=el] button,html[lang=el] input,html[lang=el] select,html[lang=el] textarea{font-family:Segoe UI,Segoe WP,Segoe UI Greek Web,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif}html[lang=he] body,html[lang=he] button,html[lang=he] input,html[lang=he] select textarea{font-family:Segoe UI,Segoe WP,Segoe UI Hebrew Web,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif}html[lang=hi] body,html[lang=hi] button,html[lang=hi] input,html[lang=hi] select,html[lang=hi] textarea{font-family:Local Hindi,Segoe UI,Segoe WP,Tahoma,Helvetica Neue,Helvetica,Meiryo UI,Meiryo,Arial Unicode MS,sans-serif}html[lang=ja] body,html[lang=ja] button,html[lang=ja] input,html[lang=ja] select,html[lang=ja] textarea{font-family:Meiryo,Segoe UI,Segoe WP,Tahoma,Verdana,Arial,sans-serif}html[lang=ko] body,html[lang=ko] button,html[lang=ko] input,html[lang=ko] select,html[lang=ko] textarea{font-family:Malgun Gothic,Gulim,Segoe UI,Segoe WP,Tahoma,Verdana,Arial,sans-serif}html[lang=zh-Hant] body,html[lang=zh-Hant] button,html[lang=zh-Hant] input,html[lang=zh-Hant] select,html[lang=zh-Hant] textarea{font-family:微軟正黑體Microsoft JhengHei,微軟正黑體 Microsoft JhengHei,Microsoft JhengHei,微軟正黑體,Segoe UI,Segoe WP,Tahoma,Verdana,Arial,sans-serif}html[lang=zh_CN] body,html[lang=zh_CN] button,html[lang=zh_CN] input,html[lang=zh_CN] select,html[lang=zh_CN] textarea{font-family:Microsoft yahei,微软雅黑,Segoe UI,Segoe WP,Tahoma,Verdana,Arial,sans-serif}b,strong{font-weight:600}.fontSizeH1{font-size:4em;margin-bottom:.48387em}.fontSizeH1,.fontSizeH2{font-weight:100;letter-spacing:normal;line-height:1.16129em}.fontSizeH2{font-size:60px;margin:0;font-size:2.5em}@media only screen and (max-width:600px){.fontSizeH2{font-size:40px}}.fontSizeH3{font-size:1.7em;font-weight:300;letter-spacing:.013em;line-height:1.4em;margin-bottom:.48387em;margin-top:0}@media only screen and (max-width:600px){.fontSizeH3{margin:0 auto;font-size:1.2em}}.fontSizeH4{font-size:1em;font-weight:400;letter-spacing:normal;line-height:1.33333em;margin-bottom:.83333em}.button{background-color:#008cc0;border:1px solid transparent;border-radius:50px;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-size:18px;line-height:24px;margin:0;max-width:440px;min-width:150px;padding:5px 0 8px;text-align:center;text-decoration:none;vertical-align:middle;width:100%;word-wrap:break-word}@media only screen and (min-width:767px){.button{font-size:20px;padding:7px 0 10px;width:auto}}.button:focus{outline:1px dotted #333534}.button:focus,.button:hover{text-decoration:none;background-color:#0c7daf}.button--disabled{background-color:#a3d0ed!important;cursor:not-allowed}.buttonBlue,.buttonSimple,.buttonWhite,.newButton,.portalContent .closeButton{box-sizing:border-box;border:1px solid transparent;border-radius:100px;cursor:pointer;display:inline-block;font-size:18px;font-weight:400;margin:0 7px 10px;position:relative;text-align:center;text-decoration:none;word-wrap:break-word;padding:19px 30px;min-width:260px;-webkit-transition:background-color .1s ease-in-out;transition:background-color .1s ease-in-out}.newButton .button__text{padding:0}@media only screen and (max-width:600px){.buttonBlue,.buttonSimple,.buttonWhite,.newButton,.portalContent .closeButton{padding:9px 30px;min-width:190px;font-size:14px}}.buttonBlue{color:#fff;background-color:#0078ca}.buttonBlue:active,.buttonBlue:hover{background-color:#0b64a4}.buttonWhite{color:#2b2c33;border:1px solid #2b2c33}.buttonWhite:active,.buttonWhite:hover{background-color:#2b2c33;color:#fff}.buttonSimple,.portalContent .closeButton{color:#0078ca;border:none}.buttonSimple:active,.buttonSimple:hover{color:#0b64a4}.portalContainer{position:absolute;top:0;bottom:0;right:0;left:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000;background-color:rgba(0,0,0,.5)}.portalContainer,.portalContent{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.portalContent{background-color:#fff;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:15px;box-shadow:0 5px 10px rgba(0,0,0,.3);border:1px solid rgba(0,0,0,.3);border-radius:5px;max-width:450px}.portalContent .logo{width:96px;width:6rem;height:96px;height:6rem;-ms-flex-negative:0;flex-shrink:0}.portalContent .title{font-weight:400;text-align:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;max-width:100%;margin:1rem 0}.portalContent .closeButton{margin-top:20px;color:#000;background-color:#e5e4e8}.portalContent .closeButton:active,.portalContent .closeButton:hover{background-color:#cecdd0}img.logo{width:96px;width:6rem;height:96px;height:6rem;-ms-flex-negative:0;flex-shrink:0}.hidden{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}.rtl .hidden{left:auto;right:-1000px}.scrollable-y{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto;padding:1rem;-webkit-overflow-scrolling:touch;width:100%}.focused{outline:1px solid;outline:auto}.ariaLive{width:0!important;height:0!important;overflow:hidden!important}\", \"\"]);\n\n// exports\n","import config from 'config';\r\nimport * as SyncTasks from 'synctasks';\r\nimport { UserProfile } from '../models/ProfileServiceModel';\r\nimport { ApiCallOptions, BaseRestClient } from './BaseRestClient';\r\n\r\nclass ProfileRestClient extends BaseRestClient {\r\n getUserProfileInfo(skypetoken: string): SyncTasks.Promise {\r\n const uri = '/v1/users/self/profile';\r\n const options: ApiCallOptions = {\r\n headers: {\r\n 'X-Skypetoken': skypetoken,\r\n },\r\n };\r\n\r\n return this.performApiGet(uri, options);\r\n }\r\n}\r\n\r\nexport default new ProfileRestClient(config.urls.api.profile);\r\n"],"sourceRoot":""}