{"version":3,"sources":["webpack:///./ClientApp/app/utils/objectCompareUtilities.ts","webpack:///./ClientApp/app/widgetRuntime/apis/api.interfaces.ts","webpack:///./ClientApp/app/widgetRuntime/hostAccess/hostAccess.ts","webpack:///./ClientApp/app/widgetRuntime/orchestrator/orchestrator.ts","webpack:///./ClientApp/app/widgetRuntime/placeholderImageElement/img-placeholder.ts","webpack:///./ClientApp/app/webUXApi/userInfoApi.ts","webpack:///./ClientApp/app/utils/stringUtilities.ts","webpack:///./ClientApp/app/widgetRuntime/orchestrator/VisibilityTelemetry.ts","webpack:///./ClientApp/app/webUXApi/widgetApi.tsx","webpack:///./ClientApp/app/widgetRuntime/orchestrator/WidgetApi.ts"],"names":["deepCompare","obj1","obj2","keys1","Object","keys","filter","key","undefined","keys2","length","__webpack_require__","d","__webpack_exports__","WidgetForceRefreshUnify1SCallVerb","RefreshContentTaskStatus","BackgroundTaskStatus","Disabled","Running","Suspended","TelemetryModule","e","then","bind","hostAccess_WidgetAuthenticator","WidgetApi","[object Object]","widgetInstance","super","name","authenticator","window","__com_microsoft_dsh_widgetModelApiFactory","tryGetApi","accountId","this","getAccountId","getAccountPropertyAsync","clientId","scope","resource","apiVersion","Promise","async","resolve","reject","result","getAccountTokenAsync","_widgetInstance","widgetId","thisInstance","token","errorResult","userInteractionRequired","lazyLoadModule","Telemetry","logEvent","TraceLogging","appId","widgetRegistration","providerId","widgetDefinitionId","widgetInstanceId","toLowerCase","widgetErrorStateReason","widgetErrorCode","widgetState","tokenReceived","interactionRequired","Trace","accountRequestFailed","getDefaultAccountIdAsync","supportedAuth","accountState","defaultAccountType","AuthenticatorApi","isDefaultAccountValid","find","auth","isMSASupported","isAADSupported","isNONESupported","entryPoint","className","validAccountId","getAccountIdsAsync","isMSAAccountAsync","isAADAccountAsync","accountIdState","getWidgetOrchestrator","__asyncValues","o","Symbol","asyncIterator","TypeError","i","m","call","__values","iterator","verb","n","v","value","done","settle","orchestrator_TelemetryModule","orchestrator_WidgetFiltering","geoName","accountType","anyMSAAvailable","anyAADAvailable","isUserSignedOut","isRegistrationValidForRegion","isRegistrationValidForAccountType","registration","region","excludedRegionsByLocation","excludedRegion","DashboardHostApiInternal","excludedRegions","includes","exclusiveRegions","exclusiveRegion","widgetType","defaultAccountValid","orchestrator_WidgetOrchestratorImpl","widgetInstanceManager","widgetRegistrar","customElements","get","define","widget_instance","img_placeholder","extends","_eventListeners","Array","_peregrineLoadListeners","Map","_peregrineLoadTimestamp","_widgetHtmlElements","_widgetInstanceManager","_widgetRegistrar","_widgetContentRefreshTimeSeconds","contentRefreshTimeParam","URLSearchParams","location","search","parseInt","startInitialPeregrineWidgetLoad","_listenderAddedForPCSFailure","addEventListener","detail","payload","stage","sendAllPeregrineWidgetsToErrorState","e_1","_a","widgetFiltering","VelocityApi","provider","getSignInStatus","getSignInTargetAccountId","getDefaultAccountId","getAccountProperty","accountIds","accountIds_1_1","accountIds_1","next","e_1_1","error","return","isUserSignedInAsync","getWidgetRegistrations","isRegistrationValid","getRiverWidgetInstances","filteredInstances","getWidgetInstances","defaultStateCheckCompleted","localStorage","getItem","setItem","filteredRegistrations","isDefault","widgetInstances","numDefaultWidgets","_b","_c","defaults","getWidgetProperty","column","position","defaultSize","areWidgetInstancesInDefaultState","numRemovedWidgets","forEach","removeWidgetInstance","Measures","numMatchingRegistrations","getFeedInstance","has","initializeWidget","id","widget","addWidgetInstanceForPin","fireEvent","addWidgetInstanceForRiver","removeWidgetInstanceFromPins","delete","catch","isRiverInstance","isHide","removeWidgetInstanceFromRiver","listener","push","index","indexOf","splice","updateWidgetInstance","getAllWidgetInstances","map","host","oldVal","newVal","_d","_e","_f","_g","instance","_","instanceId","removeAttributeListener","now","Date","getTime","indexedDBInstanceId","loadTime","callback","peregrineWidgetStatusUpdated","element","set","addAttributeListener","widget__initWidgets","loadPeregrineWidgets","widgetIdList","widgetIds","isPcsCallSuccess","widgetInitializer","Prefetch","success","startWidgetInitializer","type","TelemetryData","pcsBuildVersion","pcs","widgetsBuildVersion","client","lifecycle","forceReloadPage","pgWidgets","pgWidget","document","body","getElementsByClassName","peregrineWidgets","DashboardHostApi","loadSpecificPeregrineWidgets","loadPeregrineWidget","reloadFailedNonPeregrineWidgets","getWidget","widgetElement","initializeFn","instanceManagerApi","InstanceManagerApi","activateWidget","peregrineChangesPromise","_h","shouldRefresh","isPeregrineChangesSuccess","peregrineChanges","widgetsChanged","changeReason","buildVersion","widgetsChangedInfoVersion","anyChange","isSuccess","version","changeReasonFlight","flightsChanged","changeReasonBundleHash","bundleHashChanged","changeReasonConfigsHash","configsHashChanged","changeReasonLocConfigsHash","locConfigsHashChanged","isPlatform","refreshContent","reloadFailedWidgets","refreshTimeoutPromise","setTimeout","suspendPromises","suspend","all","resume","widgetInstanceElement","entryPointHost","isTombstoned","loglevel_default","a","info","src","queryParams","url","errorValue","split","join","api_interfaces","upn","isSignedIn","authV5Api","getSignedInAccount","getProperty","Error","reason","replace","fillURLVariables","widgetModule","import","dashedName","exportedTag","createElement","appendChild","constants","Owa","calendarwidget","defineWidget","isCustomElementDefined","elementName","todowidget","defineWidgetExported","failureMessage","message","failureName","widgetUrl","instances","isAdaptiveCard","lifecycleEvent","appType","isUserRegionChina","initialWidgetInstances","widgetLifecycleObserver","setNumWidgets","registerWidget","initialPeregrineWidgetInstances","widgetInitPromise","isDarkTheme","ThemeApi","substr","setApi","WidgetStatusApi","WidgetVisibilityApi","WidgetSettingsApi","WidgetSizeApi","WidgetLifecycleApi","widgetPropertiesInternal","WidgetInteractionsApi","WidgetPreviewApi","WidgetInnerFocus","insertPlaceholderImage","signalAPIInitialization","addStateChangeListener","previousState","currentState","hasChildNodes","lastChild","entryPointKey","entryPointOverrides","toUpperCase","getEntryPointOverride","originalEntryPoint","overrideEntryPoint","initializeOutlookWidgetAsync","configuration","dataset","JSON","stringify","removeChild","placeholderImg","createPlaceholderImage","listenerToken","feedInstance","g_orchestratorInstance","registrar","instanceManager","registrar_registrar","widgetInstanceManager_widgetInstanceManager","global","PlaceholderImageElement","_telemetry_Measures__WEBPACK_IMPORTED_MODULE_0__","_telemetry_Trace__WEBPACK_IMPORTED_MODULE_1__","_telemetry_TraceLogging__WEBPACK_IMPORTED_MODULE_2__","_externalApi_ThemeApi__WEBPACK_IMPORTED_MODULE_3__","loglevel__WEBPACK_IMPORTED_MODULE_4__","loglevel__WEBPACK_IMPORTED_MODULE_4___default","_registrar_registrarHelpers__WEBPACK_IMPORTED_MODULE_5__","defaultWidgetTimeoutSeconds","feedTimeoutSeconds","HTMLImageElement","_elapsedTime","_timeout","_boundStateCallback","_boundLifecycleCallback","_boundSizeCallback","_boundThemeCallback","_startRuntime","performance","_isDarkTheme","_placeholderSize","placeholderImageElement","is","init","setAttribute","lifecycleApi","widgetLifecycleEvent","widgetSizeApi","sizeChangeEvent","onThemeChanged","size","preferredSize","placeholderImage","findPlaceholderImage","widgetTimeoutSeconds","reportLoadFailed","widgetStateChangeCallback","isConnected","parentNode","eventName","_j","_k","Math","max","clearTimeout","remainingRunningTimeinMs","removeEventListener","removeStateChangeListener","val","systemBackgroundColor","image","theme","startsWith","getUserInfo","_telemetry_TraceLogging__WEBPACK_IMPORTED_MODULE_1__","_externalApi_AuthenticatorApi__WEBPACK_IMPORTED_MODULE_2__","userInfo","authenticatorApi","userPrincipalName","userProfileImage","getAccountPictureAsync","defaultAccountId","imageString","formatString","tryParseJson","react_html_parser__WEBPACK_IMPORTED_MODULE_0__","react_html_parser__WEBPACK_IMPORTED_MODULE_0___default","sanitize_html__WEBPACK_IMPORTED_MODULE_1__","sanitize_html__WEBPACK_IMPORTED_MODULE_1___default","_telemetry_Trace__WEBPACK_IMPORTED_MODULE_2__","_telemetry_TraceLogging__WEBPACK_IMPORTED_MODULE_3__","format","values","RegExp","jsonString","parse","Data","_visibility","_percentVisible","visibility","state","percentVisible","getWidgetRegistrationsPromise","getWidgetInstancesPromise","getFeedsInstancePromise","addWidgetInstance","addWidgetOrchestratorEventListener","removeWidgetOrchestratorEventListener","getWidgetElementAsync","addWidgetVisibilityEventListener","removeWidgetVisibilityEventListener","onSettingsInteracted","onWidgetVisible","onWidgetHidden","isConfigurationSupported","showSettings","hideSettings","updateSize","onWidgetRemoved","onWidgetRemovedFromRiver","_components_AdaptiveCardWidget_AdaptiveCardRenderingAndActions__WEBPACK_IMPORTED_MODULE_0__","_widgetRuntime_apis_api_interfaces__WEBPACK_IMPORTED_MODULE_1__","_widgetRuntime_orchestrator_orchestrator__WEBPACK_IMPORTED_MODULE_2__","orchestrator","orchestratorCallback","statusUpdateCallback","widgetInitializationPromise","visibilityApi","widgetInteractions","eventKind","visibilityKind","onVisible","onHidden","settingsApi","onShowSettingsStart","onShowSettingsEnd","onHideSettingsStart","onHideSettingsEnd","event","sizeApi","fireStartEvent","fireEndEventAndUpdateSize","WidgetAPI"],"mappings":"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","file":"21.9450a9c976adac8268dd.js","sourcesContent":["// Deep compare two objects.  Used for comparing registrations while ignoring undefined properties.\r\nexport function deepCompare(obj1, obj2) {\r\n    // Check if the objects are of the same type\r\n    if (typeof obj1 !== typeof obj2) {\r\n        return false;\r\n    }\r\n    // Handle null or non-object values\r\n    if (obj1 === null || typeof obj1 !== \"object\") {\r\n        return obj1 === obj2;\r\n    }\r\n    // Get the property names of the objects, ignore undefined properties\r\n    const keys1 = Object.keys(obj1).filter((key) => obj1[key] !== undefined);\r\n    const keys2 = Object.keys(obj2).filter((key) => obj2[key] !== undefined);\r\n    // Check if the number of properties is the same\r\n    if (keys1.length !== keys2.length) {\r\n        return false;\r\n    }\r\n    // Compare each property recursively\r\n    for (let key of keys1) {\r\n        if (!deepCompare(obj1[key], obj2[key])) {\r\n            return false;\r\n        }\r\n    }\r\n    // If all properties match\r\n    return true;\r\n}\r\n","// All \"public\" types visible to widgets\r\n// Global version of this set of api contracts, use this in the target version of all tryGetApi requests\r\nlet widgetApiVersion = 1;\r\nexport default widgetApiVersion;\r\n;\r\nexport var WidgetForceRefreshUnify1SCallVerb;\r\n(function (WidgetForceRefreshUnify1SCallVerb) {\r\n    WidgetForceRefreshUnify1SCallVerb[\"modifyUrl\"] = \"modifyUrl\";\r\n    WidgetForceRefreshUnify1SCallVerb[\"refresh\"] = \"refresh\";\r\n})(WidgetForceRefreshUnify1SCallVerb || (WidgetForceRefreshUnify1SCallVerb = {}));\r\n// The RefreshContent Task Status\r\n// 0 Failed\r\n// 1 Succeed\r\n// 2 Running\r\nexport var RefreshContentTaskStatus;\r\n(function (RefreshContentTaskStatus) {\r\n    RefreshContentTaskStatus[RefreshContentTaskStatus[\"Failed\"] = 0] = \"Failed\";\r\n    RefreshContentTaskStatus[RefreshContentTaskStatus[\"Succeed\"] = 1] = \"Succeed\";\r\n    RefreshContentTaskStatus[RefreshContentTaskStatus[\"Running\"] = 2] = \"Running\";\r\n})(RefreshContentTaskStatus || (RefreshContentTaskStatus = {}));\r\n/**\r\n * Prong2 Cache module background task status enums\r\n */\r\nexport const BackgroundTaskStatus = {\r\n    Disabled: \"0\",\r\n    Running: \"1\",\r\n    Suspended: \"2\",\r\n};\r\n","import { Trace } from \"../../../telemetry/Trace\";\r\nimport { dashboard } from \"../../../telemetry/TraceLogging\";\r\nimport { getDefaultAccountType } from \"../../externalApi/AuthenticatorApi\";\r\nimport { lazyLoadModule } from \"../../lazyLoadModule\";\r\nimport { WidgetApi } from \"../orchestrator/WidgetApi\";\r\nconst TelemetryModule = import(\r\n/* webpackChunkName: \"Telemetry-Chunk\" */\r\n\"../../../telemetry/Telemetry\");\r\n// This authenticator object is used by a widget to request properties and tokens on the account that has been selected for it.\r\n// V1 this will be the single default account.  V2 the inner account object may be changed by the user.\r\nexport class WidgetAuthenticator extends WidgetApi {\r\n    constructor(widgetInstance) {\r\n        super(widgetInstance);\r\n    }\r\n    // Props available are values such as:\r\n    //  AccountId, UPN, DisplayName, OID, Authority, FirstName, LastName,  MUID, ProviderAuthority (i.e. \"consumers\"|\"organizations\")\r\n    async getProperty(name) {\r\n        const authenticator = window.__com_microsoft_dsh_widgetModelApiFactory.tryGetApi(\"authenticator\", 1, 1);\r\n        if (authenticator) {\r\n            let accountId = await this.getAccountId();\r\n            return await authenticator.getAccountPropertyAsync(accountId, name);\r\n        }\r\n        return undefined;\r\n    }\r\n    async getToken(clientId, scope, resource, apiVersion) {\r\n        // Create a local callback that completes the promise.\r\n        let completed = new Promise(async (resolve, reject) => {\r\n            function tokenReceived(thisInstance, token, errorResult, userInteractionRequired) {\r\n                if (!token || token === \"\") {\r\n                    lazyLoadModule(TelemetryModule).then((Telemetry) => {\r\n                        Telemetry.logEvent(dashboard, \"WebAppWidgetAuthenticatorGetTokenFailed\", 16777216 /* productAndServicePerformance */, {\r\n                            apiVersion: apiVersion,\r\n                            appId: thisInstance._widgetInstance.widgetRegistration.appId,\r\n                            clientId: clientId,\r\n                            errorResult: errorResult,\r\n                            providerId: thisInstance._widgetInstance.widgetRegistration.providerId,\r\n                            resource: resource,\r\n                            scope: scope,\r\n                            userInteractionRequired: userInteractionRequired,\r\n                            widgetDefinitionId: thisInstance._widgetInstance.widgetDefinitionId,\r\n                            widgetInstanceId: thisInstance._widgetInstance.widgetId,\r\n                        });\r\n                    });\r\n                    // Only if the error was a result of UserInteractionRequired state*, put the widget\r\n                    // into error state, otherwise let the widget try to render what it can.\r\n                    // *If the value us undefined, the host app did not send this value, use previous behavior\r\n                    if (userInteractionRequired === undefined || userInteractionRequired) {\r\n                        // In phase1, if the Non-Signed-In user is enabled and the widget is the feed widget,\r\n                        // the host app should show the page instead of setting the state to error to show the  error page\r\n                        const isFeedWidget = thisInstance._widgetInstance.widgetId.toLowerCase() === \"com.msn.desktopfeed\";\r\n                        if (isFeedWidget) {\r\n                            return;\r\n                        }\r\n                        thisInstance._widgetInstance.widgetErrorStateReason = \"GetTokenFailure\";\r\n                        thisInstance._widgetInstance.widgetErrorCode = errorResult;\r\n                        thisInstance._widgetInstance.widgetState = \"error\";\r\n                    }\r\n                }\r\n            }\r\n            function accountRequestFailed(thisInstance) {\r\n                Trace.logEvent(dashboard, \"WebAppWidgetAuthenticatorGetAccountFailed\", 3 /* error */, {\r\n                    apiVersion: apiVersion,\r\n                    appId: thisInstance._widgetInstance.widgetRegistration.appId,\r\n                    clientId: clientId,\r\n                    providerId: thisInstance._widgetInstance.widgetRegistration.providerId,\r\n                    resource: resource,\r\n                    scope: scope,\r\n                    widgetDefinitionId: thisInstance._widgetInstance.widgetDefinitionId,\r\n                    widgetInstanceId: thisInstance._widgetInstance.widgetId,\r\n                });\r\n            }\r\n            const authenticator = window.__com_microsoft_dsh_widgetModelApiFactory.tryGetApi(\"authenticator\", 1, 1);\r\n            if (authenticator) {\r\n                let accountId = await this.getAccountId();\r\n                if (accountId !== \"\") {\r\n                    // Automation parameters are added in reverse in the host. 'token' is sent as param[2], userInteractionRequiredas param[0]\r\n                    let result = await authenticator.getAccountTokenAsync(accountId, clientId, scope, resource, apiVersion, this._widgetInstance.widgetId);\r\n                    tokenReceived(this, result.token, result.errorResult, result.interactionRequired);\r\n                    resolve(result.token);\r\n                }\r\n                else {\r\n                    accountRequestFailed(this);\r\n                    reject(\"WebAppWidgetAuthenticatorGetAccountFailed\");\r\n                }\r\n            }\r\n            reject(\"WebAppWidgetAuthenticatorGetAccountFailed\");\r\n        });\r\n        return completed;\r\n    }\r\n    async getAccountId() {\r\n        // AccountId has not been assigned\r\n        if (this._widgetInstance.accountId === \"\") {\r\n            const authenticator = window.__com_microsoft_dsh_widgetModelApiFactory.tryGetApi(\"authenticator\", 1, 1);\r\n            if (authenticator) {\r\n                this._widgetInstance.accountId = await authenticator.getDefaultAccountIdAsync();\r\n                // Finds SupportedAuth in widget registration\r\n                const supportedAuth = this._widgetInstance.widgetRegistration.supportedAuth;\r\n                if (supportedAuth) {\r\n                    let accountState = \"DefaultAccountFound\";\r\n                    const defaultAccountType = await getDefaultAccountType();\r\n                    const isDefaultAccountValid = supportedAuth.find((auth) => auth.toLowerCase() === defaultAccountType.toLowerCase()) !== undefined;\r\n                    const isMSASupported = supportedAuth.find((auth) => auth.toLowerCase() === \"msa\") !== undefined;\r\n                    const isAADSupported = supportedAuth.find((auth) => auth.toLowerCase() === \"aad\") !== undefined;\r\n                    const isNONESupported = supportedAuth.find((auth) => auth.toLowerCase() === \"none\") !== undefined;\r\n                    // Looking to load first compatible account for non-peregrine widget\r\n                    if (!isDefaultAccountValid && this._widgetInstance.widgetRegistration.entryPoint.className !== \"peregrine-widgets\") {\r\n                        const validAccountId = (await authenticator.getAccountIdsAsync()).find(async (accountId) => {\r\n                            (isMSASupported && (await authenticator.isMSAAccountAsync(accountId))) ||\r\n                                (isAADSupported && (await authenticator.isAADAccountAsync(accountId)));\r\n                        });\r\n                        if (validAccountId != undefined) {\r\n                            this._widgetInstance.accountId = validAccountId;\r\n                            accountState = \"SecondaryAccountFound\";\r\n                        }\r\n                        else {\r\n                            this._widgetInstance.accountId = await authenticator.getDefaultAccountIdAsync();\r\n                            accountState = \"NoSecondaryAccountFound\";\r\n                        }\r\n                    }\r\n                    Trace.logEvent(dashboard, \"WidgetAuthenticatorGetAccountId\", 0 /* verbose */, {\r\n                        accountIdState: accountState,\r\n                        appId: this._widgetInstance.widgetRegistration.appId,\r\n                        defaultAccountType: defaultAccountType,\r\n                        isAADSupported: isAADSupported,\r\n                        isMSASupported: isMSASupported,\r\n                        isNONESupported: isNONESupported,\r\n                        providerId: this._widgetInstance.widgetRegistration.providerId,\r\n                        widgetDefinitionId: this._widgetInstance.widgetDefinitionId,\r\n                        widgetInstanceId: this._widgetInstance.widgetId,\r\n                    });\r\n                }\r\n            }\r\n        }\r\n        return this._widgetInstance.accountId;\r\n    }\r\n}\r\n","// This hack is needed to import an API via a remote script\r\n/// <reference path=\"widgetApiModule.d.ts\" />\r\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n};\r\nimport log from \"loglevel\";\r\nimport { addMarkerToPageTimings, Measures } from \"../../../telemetry/Measures\";\r\nimport { TelemetryData } from \"../../../telemetry/TelemetryData\";\r\nimport { Trace } from \"../../../telemetry/Trace\";\r\nimport { dashboard } from \"../../../telemetry/TraceLogging\";\r\nimport { fetchWidgetIntializer } from \"../../components/Pages/MainPage/Prefetch\";\r\nimport { getDefaultAccountType, getHostAuthenticatorApiV5 } from \"../../externalApi/AuthenticatorApi\";\r\nimport { requestRefresh, setDashboardLoading } from \"../../externalApi/DashboardHostApi\";\r\nimport { getGeoLocationCode, getUserGeoName } from \"../../externalApi/DashboardHostApiInternal\";\r\nimport { getHostInstanceManagerApi } from \"../../externalApi/InstanceManagerApi\";\r\nimport { getSystemTheme } from \"../../externalApi/ThemeApi\";\r\nimport { isFeatureEnabled } from \"../../externalApi/VelocityApi\";\r\nimport { lazyLoadModule } from \"../../lazyLoadModule\";\r\nimport widgetApiVersion from \"../apis/api.interfaces\";\r\nimport { WidgetAuthenticator } from \"../hostAccess/hostAccess\";\r\nimport { PlaceholderImageElement } from \"../placeholderImageElement/img-placeholder\";\r\nimport { getWidgetRegistrarAsync } from \"../registrar/registrar\";\r\nimport { WidgetInnerFocus } from \"../widgetApis/WidgetInnerFocus\";\r\nimport { WidgetInteractionsApi } from \"../widgetApis/WidgetInteractionsApi\";\r\nimport { WidgetLifecycleApi } from \"../widgetApis/WidgetLifecycleApi\";\r\nimport { WidgetPreviewApi } from \"../widgetApis/WidgetPreviewApi\";\r\nimport { WidgetSettingsApi } from \"../widgetApis/WidgetSettingsApi\";\r\nimport { WidgetSizeApi } from \"../widgetApis/WidgetSizeApi\";\r\nimport { WidgetStatusApi } from \"../widgetApis/WidgetStatusApi\";\r\nimport { WidgetVisibilityApi } from \"../widgetApis/WidgetVisibilityApi\";\r\nimport { WidgetInstanceElement } from \"../widgetInstanceElement/widget-instance\";\r\nimport { getWidgetInstanceManager } from \"../widgetInstanceManager/widgetInstanceManager\";\r\nimport { WidgetProperties } from \"../widgetInstanceManager/widgetPropertiesInternal\";\r\nimport { getErrorWidgetLifecycleObserver, getLoadingWidgetLifecycleObserver } from \"../widgetLifecycleObserver/widgetLifecycleObserver\";\r\nimport * as Constants from \"../../constants\";\r\nconst TelemetryModule = import(\r\n/* webpackChunkName: \"Telemetry-Chunk\" */\r\n\"../../../telemetry/Telemetry\");\r\nexport class WidgetFiltering {\r\n    isRegistrationValid(widgetRegistration, geoName, accountType, anyMSAAvailable, anyAADAvailable, isUserSignedOut) {\r\n        return (this.isRegistrationValidForRegion(widgetRegistration, geoName) &&\r\n            this.isRegistrationValidForAccountType(widgetRegistration, accountType, anyMSAAvailable, anyAADAvailable, isUserSignedOut));\r\n    }\r\n    isRegistrationValidForRegion(registration, region) {\r\n        // If exclusive regions exist(regions the user must be in for the widget to be available), return true if the users selected region is present in the list.\r\n        // else if excluded regions exist and the users selected region is present in the list, return false.\r\n        // else return true that it is valid for all regions\r\n        if (registration.excludedRegionsByLocation &&\r\n            registration.excludedRegionsByLocation.find((excludedRegion) => getGeoLocationCode() === excludedRegion) !==\r\n                undefined) {\r\n            return false;\r\n        }\r\n        else if (registration.excludedRegions &&\r\n            registration.excludedRegions.find((excludedRegion) => region.toLowerCase() === excludedRegion.toLowerCase()) !== undefined) {\r\n            return false;\r\n        } // Consult geoLocationCode to ensure that in China we are not displaying widgets which are unsupported\r\n        else if (registration.excludedRegions && registration.excludedRegions.includes(\"CN\") && getGeoLocationCode() === \"CN\") {\r\n            return false;\r\n        }\r\n        else if (registration.exclusiveRegions) {\r\n            // For CN compliance, checking the region is not sufficient. We must consult the geoLocationCode which includes consideration for a conservative interpretation of local device state + reverse IP lookup.\r\n            if (!registration.exclusiveRegions.includes(\"CN\") && getGeoLocationCode() === \"CN\") {\r\n                return false;\r\n            }\r\n            return (registration.exclusiveRegions.find((exclusiveRegion) => region.toLowerCase() === exclusiveRegion.toLowerCase()) !==\r\n                undefined);\r\n        }\r\n        return true;\r\n    }\r\n    isRegistrationValidForAccountType(registration, accountType, anyMSAAvailable, anyAADAvailable, isUserSignedOut) {\r\n        const widgetType = registration.entryPoint.className != \"peregrine-widgets\";\r\n        // If a supported auth list is provided, return true if the specified auth is in that list.\r\n        if (registration.supportedAuth) {\r\n            if (isUserSignedOut) {\r\n                // If user is signed out, return true only if \"none\" account type is supported.\r\n                // User may have a valid default account and simply chose to sign out from Widgets, so don't check for MSA or AAD.\r\n                return registration.supportedAuth.find((auth) => auth.toLowerCase() === \"none\") != undefined;\r\n            }\r\n            const defaultAccountValid = registration.supportedAuth.find((auth) => auth.toLowerCase() === accountType.toLowerCase()) !== undefined;\r\n            // Looking for multi accounts in non peregrine widgets (X-Box, Outlook, AC) if the first account is not valid\r\n            if (widgetType && !defaultAccountValid) {\r\n                return ((anyMSAAvailable === true && registration.supportedAuth.find((auth) => auth.toLowerCase() === \"msa\") != undefined) ||\r\n                    (anyAADAvailable === true && registration.supportedAuth.find((auth) => auth.toLowerCase() === \"aad\") != undefined));\r\n            }\r\n            // WebXT handles their own account selection\r\n            return defaultAccountValid;\r\n        }\r\n        return true;\r\n    }\r\n}\r\n// Helper function used to dynamically replace variables in URL with their values\r\nexport async function fillURLVariables(queryParams, url, widgetInstance) {\r\n    // Enumerate all values that are present in the additional args, find and replace each in the url.\r\n    // Values in the search params are constructed by the host which may include values from EndpointAdditionalArguments\r\n    // Values in the registry should be URI encoded.\r\n    const urlParams = new URLSearchParams(queryParams);\r\n    urlParams.forEach((value, key) => {\r\n        const token = \"$(\" + key + \")\";\r\n        // Values in urlParams are already pre-decoded so an additional decodeURI call is not necessary.\r\n        if (url.includes(token)) {\r\n            let errorValue = undefined;\r\n            try {\r\n                url = url.split(token).join(value);\r\n            }\r\n            catch (error) {\r\n                errorValue = error;\r\n            }\r\n            Trace.logEvent(dashboard, \"FillUrlVariables\", 0 /* verbose */, {\r\n                error: errorValue ? errorValue : \"\",\r\n                token: token,\r\n            });\r\n        }\r\n    });\r\n    // Special case the UPN token and replace it with the UPN of the default account\r\n    if (url.includes(\"$(UPN)\")) {\r\n        const authenticator = widgetInstance.tryGetApi(\"authenticator\", widgetApiVersion, widgetApiVersion);\r\n        if (authenticator) {\r\n            try {\r\n                let upn = undefined;\r\n                let isSignedIn = false;\r\n                if (isFeatureEnabled('Feature_AuthApiV5')) {\r\n                    const authV5Api = await getHostAuthenticatorApiV5();\r\n                    if (authV5Api) {\r\n                        const accountId = await authV5Api.getSignedInAccount(\"\");\r\n                        if (accountId) {\r\n                            isSignedIn = true;\r\n                            upn = await authV5Api.getAccountProperty(accountId, \"UPN\");\r\n                        }\r\n                    }\r\n                }\r\n                else {\r\n                    isSignedIn = true;\r\n                    upn = await authenticator.getProperty(\"UPN\");\r\n                }\r\n                if (!upn || upn.length === 0) {\r\n                    if (isFeatureEnabled('Feature_AuthApiV5')) {\r\n                        if (isSignedIn) {\r\n                            widgetInstance.widgetState = \"error\";\r\n                        }\r\n                    }\r\n                    throw new Error(\"EmptyUPNStringReceived\");\r\n                }\r\n                // We cannot use replaceAll because it is only available in es2021\r\n                url = url.split(\"$(UPN)\").join(upn);\r\n            }\r\n            catch (error) {\r\n                // Log the failure and remove UPN from the URL\r\n                Trace.logEvent(dashboard, \"FillUPNFailed\", 0 /* verbose */, {\r\n                    reason: error,\r\n                });\r\n                url = url.split(\"$(UPN)/\").join(\"\");\r\n            }\r\n        }\r\n    }\r\n    // Remove all non matched tokens of the form $(.*)\r\n    try {\r\n        url = url.replace(/\\$\\([^\\)]*\\)/g, \"\");\r\n    }\r\n    catch (error) {\r\n        Trace.logEvent(dashboard, \"RemoveNonMatchedTokens\", 0 /* verbose */, {\r\n            reason: error,\r\n            url: url,\r\n        });\r\n    }\r\n    return url;\r\n}\r\nexport function getEntryPointOverride(registration, key) {\r\n    if (registration.entryPointOverrides !== undefined) {\r\n        for (let i = 0; i < registration.entryPointOverrides.length; ++i) {\r\n            if (registration.entryPointOverrides[i].key.toUpperCase() === key.toUpperCase()) {\r\n                return registration.entryPointOverrides[i];\r\n            }\r\n        }\r\n    }\r\n    return null;\r\n}\r\nexport function areWidgetInstancesInDefaultState(widgetInstances, numDefaultWidgets) {\r\n    var _a, _b, _c;\r\n    if (widgetInstances.length != numDefaultWidgets) {\r\n        return false;\r\n    }\r\n    for (let i = 0; i < widgetInstances.length; ++i) {\r\n        if (!widgetInstances[i].widgetRegistration.isDefault ||\r\n            !widgetInstances[i].widgetRegistration.defaults ||\r\n            widgetInstances[i].getWidgetProperty(\"column\") != ((_a = widgetInstances[i].widgetRegistration.defaults) === null || _a === void 0 ? void 0 : _a.column) ||\r\n            widgetInstances[i].getWidgetProperty(\"position\") != ((_b = widgetInstances[i].widgetRegistration.defaults) === null || _b === void 0 ? void 0 : _b.position) ||\r\n            widgetInstances[i].getWidgetProperty(\"size\") != ((_c = widgetInstances[i].widgetRegistration.defaults) === null || _c === void 0 ? void 0 : _c.defaultSize)) {\r\n            return false;\r\n        }\r\n    }\r\n    return true;\r\n}\r\nexport class WidgetOrchestratorImpl {\r\n    constructor(widgetInstanceManager, widgetRegistrar) {\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorCreated\", 0 /* verbose */);\r\n        if (!customElements.get(\"widget-instance\")) {\r\n            customElements.define(\"widget-instance\", WidgetInstanceElement);\r\n        }\r\n        if (!customElements.get(\"img-placeholder\")) {\r\n            customElements.define(\"img-placeholder\", PlaceholderImageElement, { extends: \"img\" });\r\n        }\r\n        this._eventListeners = new Array();\r\n        this._peregrineLoadListeners = new Map();\r\n        this._peregrineLoadTimestamp = 0;\r\n        this._widgetHtmlElements = new Map();\r\n        this._widgetInstanceManager = widgetInstanceManager;\r\n        this._widgetRegistrar = widgetRegistrar;\r\n        // Initialize the time given to widgets to refresh their content, allowing for\r\n        // an override value to be used if it was specified in the URL parameters.\r\n        this._widgetContentRefreshTimeSeconds = 10;\r\n        const urlParams = new URLSearchParams(window.location.search);\r\n        const contentRefreshTimeParam = urlParams.get(\"contentrefreshtime\");\r\n        if (contentRefreshTimeParam !== null) {\r\n            this._widgetContentRefreshTimeSeconds = parseInt(contentRefreshTimeParam, 10);\r\n        }\r\n        // Start the process that will load/initialize initially present Peregrine widgets\r\n        // once their containers are present on the page.\r\n        this.startInitialPeregrineWidgetLoad();\r\n        // This event is fired from peregrine side when PCS failed to load:\r\n        // https://dev.azure.com/msasg/ContentServices/_git/msnews-experiences?path=/libs/widget-initializer/src/WidgetInitializer.ts&version=GBmain&line=114&lineEnd=115&lineStartColumn=1&lineEndColumn=1&lineStyle=plain&_a=contents.\r\n        if (!WidgetOrchestratorImpl._listenderAddedForPCSFailure) {\r\n            window.addEventListener(\"CustomWidgetErrorEvent\", (e) => {\r\n                if (e && e.detail && e.detail.payload && e.detail.payload.stage === \"initialize\") {\r\n                    // Only handle this event fired when initializing PCS\r\n                    this.sendAllPeregrineWidgetsToErrorState(\"PeregrinePCSLoadFailure\");\r\n                }\r\n            });\r\n        }\r\n        WidgetOrchestratorImpl._listenderAddedForPCSFailure = true;\r\n    }\r\n    async getWidgetRegistrations() {\r\n        var e_1, _a;\r\n        const widgetFiltering = new WidgetFiltering();\r\n        const geoName = getUserGeoName();\r\n        let accountType = \"\";\r\n        if (isFeatureEnabled(\"Feature_AuthApiV5\")) {\r\n            const authenticator = await getHostAuthenticatorApiV5();\r\n            if (authenticator) {\r\n                // If we're signed in, get the provider authority of the signed in account. Otherwise use the default account for signed out/unknown.\r\n                const signinStatus = await authenticator.getSignInStatus();\r\n                let accountId = \"\";\r\n                if (signinStatus === 1 /* SignedIn */) {\r\n                    accountId = await authenticator.getSignInTargetAccountId();\r\n                }\r\n                else {\r\n                    accountId = await authenticator.getDefaultAccountId();\r\n                }\r\n                const provider = accountId ? await authenticator.getAccountProperty(accountId, \"ProviderAuthority\") : \"unknown\";\r\n                accountType = provider === \"organizations\" ? \"AAD\" : \"MSA\";\r\n            }\r\n        }\r\n        else {\r\n            accountType = await getDefaultAccountType();\r\n        }\r\n        const authenticator = window.__com_microsoft_dsh_widgetModelApiFactory.tryGetApi(\"authenticator\", 1, 1);\r\n        let anyMSAAvailable = false;\r\n        let anyAADAvailable = false;\r\n        let isUserSignedOut = false;\r\n        if (authenticator) {\r\n            const accountIds = await authenticator.getAccountIdsAsync();\r\n            try {\r\n                for (var accountIds_1 = __asyncValues(accountIds), accountIds_1_1; accountIds_1_1 = await accountIds_1.next(), !accountIds_1_1.done;) {\r\n                    const accountId = accountIds_1_1.value;\r\n                    if (await authenticator.isMSAAccountAsync(accountId))\r\n                        anyMSAAvailable = true;\r\n                    else if (await authenticator.isAADAccountAsync(accountId))\r\n                        anyAADAvailable = true;\r\n                }\r\n            }\r\n            catch (e_1_1) { e_1 = { error: e_1_1 }; }\r\n            finally {\r\n                try {\r\n                    if (accountIds_1_1 && !accountIds_1_1.done && (_a = accountIds_1.return)) await _a.call(accountIds_1);\r\n                }\r\n                finally { if (e_1) throw e_1.error; }\r\n            }\r\n            isUserSignedOut = !(await authenticator.isUserSignedInAsync()) || (await authenticator.getDefaultAccountIdAsync()) === \"\";\r\n        }\r\n        // Return filtered registrations by region and default account type\r\n        let filteredRegistrations = (await this._widgetRegistrar.getWidgetRegistrations()).filter((widgetRegistration) => {\r\n            return widgetFiltering.isRegistrationValid(widgetRegistration, geoName, accountType, anyMSAAvailable, anyAADAvailable, isUserSignedOut);\r\n        });\r\n        return filteredRegistrations;\r\n    }\r\n    async getRiverInstances() {\r\n        return this._widgetInstanceManager.getRiverWidgetInstances();\r\n    }\r\n    async getWidgetInstances() {\r\n        const widgetFiltering = new WidgetFiltering();\r\n        const geoName = getUserGeoName();\r\n        const accountType = await getDefaultAccountType();\r\n        // Filter widgets stored by the current user geo region and default account type\r\n        let filteredInstances = (await this._widgetInstanceManager.getWidgetInstances()).filter((widgetInstance) => widgetFiltering.isRegistrationValid(widgetInstance.widgetRegistration, geoName, accountType, undefined, undefined, undefined));\r\n        let isRemoveDefaultInstancesEnabled = isFeatureEnabled(\"Feature_RemoveDefaultInstances\");\r\n        if (isRemoveDefaultInstancesEnabled) {\r\n            let defaultStateCheckCompleted = localStorage.getItem(\"DefaultStateCheckCompleted\");\r\n            // getWidgetInstances is called a LOT. Avoid logging telemetry for something we don't necessarily need to know\r\n            Trace.logEvent(dashboard, \"CheckDefaultStateForDynamicFeed\", 0 /* verbose */, {\r\n                defaultStateCheckCompleted: defaultStateCheckCompleted,\r\n            });\r\n            if (!defaultStateCheckCompleted || defaultStateCheckCompleted === \"false\") {\r\n                localStorage.setItem(\"DefaultStateCheckCompleted\", \"true\");\r\n                // match filtering of widget instances by user geo region and default account type\r\n                let filteredRegistrations = (await this._widgetRegistrar.getWidgetRegistrations()).filter((widgetRegistration) => widgetRegistration.isDefault == true &&\r\n                    widgetFiltering.isRegistrationValid(widgetRegistration, geoName, accountType, undefined, undefined, undefined));\r\n                let shouldDefaultWidgetsBeRemoved = areWidgetInstancesInDefaultState(filteredInstances, filteredRegistrations.length);\r\n                if (shouldDefaultWidgetsBeRemoved) {\r\n                    lazyLoadModule(TelemetryModule).then((Telemetry) => {\r\n                        Telemetry.logEvent(dashboard, \"RemoveDefaultWidgetInstances\", 16777216 /* productAndServicePerformance */);\r\n                    });\r\n                    let numRemovedWidgets = 0;\r\n                    filteredInstances.forEach((i) => {\r\n                        numRemovedWidgets++;\r\n                        this.removeWidgetInstance(i);\r\n                    });\r\n                    Measures.logEvent(dashboard, \"StateCheckForRemoveDefaultInstances\", 16777216 /* productAndServicePerformance */, {\r\n                        numMatchingRegistrations: filteredRegistrations.length,\r\n                        numRemovedWidgets: numRemovedWidgets,\r\n                    });\r\n                    return new Array();\r\n                }\r\n            }\r\n        }\r\n        return filteredInstances;\r\n    }\r\n    async getFeedInstance() {\r\n        return this._widgetInstanceManager.getFeedInstance();\r\n    }\r\n    async getWidget(widgetInstance) {\r\n        if (this._widgetHtmlElements.has(widgetInstance)) {\r\n            return this._widgetHtmlElements.get(widgetInstance);\r\n        }\r\n        else {\r\n            return this.initializeWidget(widgetInstance);\r\n        }\r\n    }\r\n    async addWidgetInstance(widgetRegistration, widgetId) {\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorAddingWidgetInstance\", 0 /* verbose */, {\r\n            appId: widgetRegistration.appId,\r\n            providerId: widgetRegistration.providerId,\r\n            widgetDefinitionId: widgetRegistration.id,\r\n        });\r\n        try {\r\n            const widget = await this._widgetInstanceManager.addWidgetInstanceForPin(widgetRegistration, widgetId);\r\n            this.fireEvent(\"widgetAdded\", widget);\r\n            return widget;\r\n        }\r\n        catch (error) {\r\n            throw error;\r\n        }\r\n    }\r\n    async addWidgetInstanceForRiver(widgetRegistration) {\r\n        lazyLoadModule(TelemetryModule).then((Telemetry) => {\r\n            Telemetry.logEvent(dashboard, \"WebAppOrchestratorAddingWidgetInstanceForRiver\", 16777216 /* productAndServicePerformance */, {\r\n                appId: widgetRegistration.appId,\r\n                providerId: widgetRegistration.providerId,\r\n                widgetDefinitionId: widgetRegistration.id,\r\n            });\r\n        });\r\n        try {\r\n            return this._widgetInstanceManager.addWidgetInstanceForRiver(widgetRegistration);\r\n        }\r\n        catch (error) {\r\n            throw error;\r\n        }\r\n    }\r\n    removeWidgetInstance(widgetInstance) {\r\n        lazyLoadModule(TelemetryModule).then((Telemetry) => {\r\n            Telemetry.logEvent(dashboard, \"WebAppOrchestratorRemovingWidgetInstance\", 16777216 /* productAndServicePerformance */, {\r\n                appId: widgetInstance.widgetRegistration.appId,\r\n                providerId: widgetInstance.widgetRegistration.providerId,\r\n                widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n                widgetInstanceId: widgetInstance.widgetId,\r\n            });\r\n        });\r\n        this._widgetInstanceManager\r\n            .removeWidgetInstanceFromPins(widgetInstance)\r\n            .then((widgetInstance) => {\r\n            this._widgetHtmlElements.delete(widgetInstance);\r\n            this.fireEvent(\"widgetRemoved\", widgetInstance);\r\n        })\r\n            .catch((error) => {\r\n            throw error;\r\n        });\r\n    }\r\n    isRiverInstance(widgetInstance) {\r\n        return this._widgetInstanceManager.isRiverInstance(widgetInstance);\r\n    }\r\n    removeWidgetInstanceFromRiver(widgetInstance, isHide) {\r\n        lazyLoadModule(TelemetryModule).then((Telemetry) => {\r\n            Telemetry.logEvent(dashboard, \"WebAppOrchestratorRemovingWidgetInstanceFromRiver\", 16777216 /* productAndServicePerformance */, {\r\n                appId: widgetInstance.widgetRegistration.appId,\r\n                isHide: isHide,\r\n                providerId: widgetInstance.widgetRegistration.providerId,\r\n                widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n                widgetInstanceId: widgetInstance.widgetId,\r\n            });\r\n        });\r\n        try {\r\n            if (this.isRiverInstance(widgetInstance)) {\r\n                this._widgetInstanceManager.removeWidgetInstanceFromRiver(widgetInstance);\r\n                this._widgetHtmlElements.delete(widgetInstance);\r\n                // Only signal hide if this came from user intent.\r\n                if (isHide) {\r\n                    this.fireEvent(\"widgetHidden\", widgetInstance);\r\n                }\r\n            }\r\n        }\r\n        catch (error) {\r\n            throw error;\r\n        }\r\n    }\r\n    addEventListener(listener) {\r\n        this._eventListeners.push(listener);\r\n    }\r\n    removeEventListener(listener) {\r\n        let index = this._eventListeners.indexOf(listener);\r\n        if (index > -1) {\r\n            this._eventListeners.splice(index, 1);\r\n        }\r\n    }\r\n    async updateWidgetInstance(widgetInstance) {\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorUpdatingWidgetInstance\", 0 /* verbose */, {\r\n            appId: widgetInstance.widgetRegistration.appId,\r\n            providerId: widgetInstance.widgetRegistration.providerId,\r\n            widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n            widgetInstanceId: widgetInstance.widgetId,\r\n        });\r\n        return this._widgetInstanceManager.updateWidgetInstance(widgetInstance);\r\n    }\r\n    async sendAllPeregrineWidgetsToErrorState(widgetErrorStateReason) {\r\n        Measures.logEvent(dashboard, \"WebAppOrchestratorSendingAllPeregrineWidgetsToError\", 16777216 /* productAndServicePerformance */);\r\n        (await this.getAllWidgetInstances()).map((widgetInstance) => {\r\n            if (typeof widgetInstance.widgetRegistration.entryPoint.host === \"undefined\" && widgetInstance.widgetState !== \"error\") {\r\n                widgetInstance.widgetErrorStateReason = widgetErrorStateReason;\r\n                widgetInstance.widgetErrorCode = 0x8000ffff; // E_UNEXPECTED\r\n                widgetInstance.widgetState = \"error\";\r\n            }\r\n        });\r\n    }\r\n    async peregrineWidgetStatusUpdated(widget, oldVal, newVal) {\r\n        var _a, _b, _c, _d, _e, _f, _g;\r\n        // Can be error, loading, loaded, normal. Set error state and widget load perf when these attributes change.\r\n        if (newVal === \"error\") {\r\n            for (const [instance, _] of this._widgetHtmlElements) {\r\n                if (((_a = widget.instance) === null || _a === void 0 ? void 0 : _a.instanceId) == instance.instanceId && instance.widgetState !== \"error\") {\r\n                    instance.widgetErrorStateReason = \"PeregrineLoadFailure\";\r\n                    instance.widgetErrorCode = 0x8000ffff; // E_UNEXPECTED\r\n                    instance.widgetState = \"error\";\r\n                }\r\n            }\r\n            this.removeAttributeListener(widget);\r\n        }\r\n        else if (newVal === \"loaded\") {\r\n            let now = new Date().getTime();\r\n            Trace.logEvent(dashboard, \"WebAppWidgetLoadedTime\", 0 /* verbose */, {\r\n                indexedDBInstanceId: (_b = widget.instance) === null || _b === void 0 ? void 0 : _b.instanceId,\r\n                loadTime: now - this._peregrineLoadTimestamp,\r\n                widgetDefinitionId: (_c = widget.instance) === null || _c === void 0 ? void 0 : _c.widgetDefinitionId,\r\n                widgetInstanceId: (_d = widget.instance) === null || _d === void 0 ? void 0 : _d.widgetId,\r\n            });\r\n        }\r\n        else if (newVal === \"normal\") {\r\n            let now = new Date().getTime();\r\n            Trace.logEvent(dashboard, \"WebAppWidgetNormalTime\", 0 /* verbose */, {\r\n                indexedDBInstanceId: (_e = widget.instance) === null || _e === void 0 ? void 0 : _e.instanceId,\r\n                loadTime: now - this._peregrineLoadTimestamp,\r\n                widgetDefinitionId: (_f = widget.instance) === null || _f === void 0 ? void 0 : _f.widgetDefinitionId,\r\n                widgetInstanceId: (_g = widget.instance) === null || _g === void 0 ? void 0 : _g.widgetId,\r\n            });\r\n            this.removeAttributeListener(widget);\r\n        }\r\n    }\r\n    listenForPeregrineStatus() {\r\n        // Bind callback to this so we can access this._peregrineLoadTimestamp later.\r\n        let callback = ((widget, oldVal, newVal) => {\r\n            this.peregrineWidgetStatusUpdated(widget, oldVal, newVal);\r\n        }).bind(this);\r\n        for (const [instance, element] of this._widgetHtmlElements) {\r\n            element.then((value) => {\r\n                this._peregrineLoadListeners.set(instance.instanceId, value.addAttributeListener(\"data-widget-state\", callback));\r\n            });\r\n        }\r\n    }\r\n    loadPeregrineWidget(widgetInstance) {\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorLoadingPeregrineWidget\", 0 /* verbose */, {\r\n            appId: widgetInstance.widgetRegistration.appId,\r\n            providerId: widgetInstance.widgetRegistration.providerId,\r\n            widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n            widgetInstanceId: widgetInstance.widgetId,\r\n        });\r\n        if (widgetInstance) {\r\n            if (window.widget__initWidgets) {\r\n                Trace.logEvent(dashboard, \"WebAppOrchestratorInitPeregrineWidget\", 0 /* verbose */, {\r\n                    appId: widgetInstance.widgetRegistration.appId,\r\n                    providerId: widgetInstance.widgetRegistration.providerId,\r\n                    widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n                    widgetInstanceId: widgetInstance.widgetId,\r\n                });\r\n                window.widget__initWidgets([\r\n                    widgetInstance.widgetId + \":\" + widgetInstance.instanceId,\r\n                ] /* optional: widgetInstance.getWidgetProperty(\"sessionId\") */);\r\n            }\r\n            else {\r\n                this.loadPeregrineWidgets();\r\n            }\r\n        }\r\n    }\r\n    loadSpecificPeregrineWidgets(widgetInstances) {\r\n        let widgetIdList = new Array();\r\n        for (let widgetInstance of widgetInstances) {\r\n            widgetIdList.push(widgetInstance.widgetId + \":\" + widgetInstance.instanceId);\r\n        }\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorLoadingSpecificPeregrineWidgets\", 0 /* verbose */, {\r\n            widgetIds: widgetIdList,\r\n        });\r\n        if (widgetInstances.length > 0) {\r\n            if (window.widget__initWidgets) {\r\n                Trace.logEvent(dashboard, \"WebAppOrchestratorInitSpecificPeregrineWidgets\", 0 /* verbose */, {\r\n                    widgetIds: widgetIdList,\r\n                });\r\n                window.widget__initWidgets(widgetIdList);\r\n            }\r\n            else {\r\n                this.loadPeregrineWidgets();\r\n            }\r\n        }\r\n    }\r\n    isUserRegionChina() {\r\n        return getGeoLocationCode() === \"CN\";\r\n    }\r\n    isUserRegionUnitedStates() {\r\n        return getGeoLocationCode() === \"US\";\r\n    }\r\n    async loadPeregrineWidgets() {\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorLoadingPeregrineWidgets\", 0 /* verbose */);\r\n        this._peregrineLoadTimestamp = new Date().getTime();\r\n        let isPcsCallSuccess = true;\r\n        let widgetInitializer = await fetchWidgetIntializer().catch((e) => {\r\n            Measures.logEvent(dashboard, \"WebAppOrchestratorPcsInitImport\", 16777216 /* productAndServicePerformance */, {\r\n                error: e,\r\n                success: false,\r\n            });\r\n            isPcsCallSuccess = false;\r\n            this.sendAllPeregrineWidgetsToErrorState(\"PeregrineLoadFailure\");\r\n        });\r\n        if (isPcsCallSuccess) {\r\n            Measures.logEvent(dashboard, \"WebAppOrchestratorPcsInitImport\", 16777216 /* productAndServicePerformance */, {\r\n                error: \"\",\r\n                success: true,\r\n            });\r\n            // TODO: Awaiting implementation from WebXT http://osgvsowi/40547543\r\n            addMarkerToPageTimings(\"MEE.WidgetInitializerStart\");\r\n            widgetInitializer.startWidgetInitializer().then((value) => {\r\n                addMarkerToPageTimings(\"MEE.WidgetInitializerEnd\");\r\n                lazyLoadModule(TelemetryModule).then((Telemetry) => {\r\n                    Telemetry.logEvent(dashboard, \"WebAppPerfMeasure\", 16777216 /* productAndServicePerformance */, {\r\n                        type: \"StartWidgetInitializerEnd\"\r\n                    });\r\n                });\r\n                let buildInfo = value;\r\n                if (buildInfo) {\r\n                    TelemetryData.pcsBuildVersion = value === null || value === void 0 ? void 0 : value.pcs;\r\n                    TelemetryData.widgetsBuildVersion = value === null || value === void 0 ? void 0 : value.client;\r\n                }\r\n            });\r\n        }\r\n    }\r\n    async reloadFailedWidgets(lifecycle, forceReloadPage) {\r\n        // Peregrine\r\n        let pgWidgets = (await this.getAllWidgetInstances()).filter((widgetInstance) => typeof widgetInstance.widgetRegistration.entryPoint.host === \"undefined\" && widgetInstance.widgetState === \"error\");\r\n        for (let pgWidget of pgWidgets) {\r\n            pgWidget.widgetState = \"loading\";\r\n        }\r\n        const coreBundleScripts = document.body.getElementsByClassName(\"peregrine-core-bundle\");\r\n        if (coreBundleScripts.length === 0 || forceReloadPage) {\r\n            Measures.logEvent(dashboard, \"WebAppOrchestratorFullPageReload\", 16777216 /* productAndServicePerformance */, {\r\n                peregrineWidgets: pgWidgets,\r\n            });\r\n            // We need to set the dashboard loading state to false to reload the page\r\n            await setDashboardLoading(false);\r\n            // PCS failed, we reload the whole page\r\n            await requestRefresh();\r\n        }\r\n        else if (pgWidgets.length > 1) {\r\n            this.loadSpecificPeregrineWidgets(pgWidgets);\r\n        }\r\n        else if (pgWidgets.length === 1) {\r\n            this.loadPeregrineWidget(pgWidgets[0]);\r\n        }\r\n        // Non-Peregrine\r\n        this.reloadFailedNonPeregrineWidgets(lifecycle, await this.getAllWidgetInstances());\r\n        // Non-Peregrine in the river\r\n        this.reloadFailedNonPeregrineWidgets(lifecycle, this._widgetInstanceManager.getRiverWidgetInstances());\r\n    }\r\n    // To reload dynamic feed FAST widget using passed in widgetInstance.\r\n    async reloadFailedWidgetsInDynamicFeed(widgetInstance) {\r\n        this.getWidget(widgetInstance).then(async (widgetElement) => {\r\n            if (widgetInstance.widgetState === \"error\" && widgetElement.initializeFn) {\r\n                await widgetElement.initializeFn();\r\n                // Because this was a user action clicking the reload button and the widget is already visible, activate immediately\r\n                // passing true that this is the first activation to force notification of any current payload.\r\n                let instanceManagerApi = await getHostInstanceManagerApi();\r\n                await (instanceManagerApi === null || instanceManagerApi === void 0 ? void 0 : instanceManagerApi.activateWidget(widgetInstance.widgetId, true));\r\n            }\r\n        });\r\n    }\r\n    async refreshWidgets() {\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorRefreshingWidgets\", 0 /* verbose */);\r\n        let isPcsCallSuccess = true;\r\n        let peregrineChangesPromise = new Promise(async (resolve) => {\r\n            var _a, _b, _c, _d, _e, _f, _g, _h;\r\n            // Call PCS API to check whether newer version of bundles are available\r\n            let widgetInitializer = await fetchWidgetIntializer().catch((e) => {\r\n                // Let widgets stay in current state.\r\n                // Widgets shouldn't go to error state when PCS doesn't clearly\r\n                // indicate a refresh is needed.\r\n                isPcsCallSuccess = false;\r\n                Trace.logEvent(dashboard, \"WebAppOrchestratorPcsRefreshImportFailed\", 0 /* verbose */);\r\n            });\r\n            let shouldRefresh = false;\r\n            if (isPcsCallSuccess) {\r\n                let isPeregrineChangesSuccess = true;\r\n                let peregrineChanges = await widgetInitializer.widgetsChanged().catch(() => {\r\n                    // Let widgets stay in current state.\r\n                    // Widgets shouldn't go to error state when PCS doesn't clearly\r\n                    // indicate a refresh is needed.\r\n                    isPeregrineChangesSuccess = false;\r\n                    Trace.logEvent(dashboard, \"WebAppOrchestratorRefreshingWidgetsPcsWidgetsChangedFailed\", 0 /* verbose */);\r\n                });\r\n                if (isPeregrineChangesSuccess) {\r\n                    TelemetryData.pcsBuildVersion = (_b = (_a = peregrineChanges.changeReason) === null || _a === void 0 ? void 0 : _a.buildVersion) === null || _b === void 0 ? void 0 : _b.pcs;\r\n                    TelemetryData.widgetsBuildVersion = (_d = (_c = peregrineChanges.changeReason) === null || _c === void 0 ? void 0 : _c.buildVersion) === null || _d === void 0 ? void 0 : _d.client;\r\n                    if (peregrineChanges.widgetsChangedInfoVersion >= 1) {\r\n                        // Be conservative with refreshing more frequently than planned to limit load on services\r\n                        Measures.logEvent(dashboard, \"WebAppOrchestratorPcsRefreshVersionValid\", 16777216 /* productAndServicePerformance */, {\r\n                            anyChange: peregrineChanges.anyChange,\r\n                            isSuccess: peregrineChanges.isSuccess,\r\n                            version: peregrineChanges.widgetsChangedInfoVersion,\r\n                            changeReasonFlight: (_e = peregrineChanges.changeReason) === null || _e === void 0 ? void 0 : _e.flightsChanged,\r\n                            changeReasonBundleHash: (_f = peregrineChanges.changeReason) === null || _f === void 0 ? void 0 : _f.bundleHashChanged,\r\n                            changeReasonConfigsHash: (_g = peregrineChanges.changeReason) === null || _g === void 0 ? void 0 : _g.configsHashChanged,\r\n                            changeReasonLocConfigsHash: (_h = peregrineChanges.changeReason) === null || _h === void 0 ? void 0 : _h.locConfigsHashChanged,\r\n                        });\r\n                        shouldRefresh = peregrineChanges.isSuccess && (peregrineChanges === null || peregrineChanges === void 0 ? void 0 : peregrineChanges.anyChange);\r\n                    }\r\n                    else {\r\n                        Measures.logEvent(dashboard, \"WebAppOrchestratorPcsRefreshVersionInvalid\", 16777216 /* productAndServicePerformance */, {\r\n                            anyChange: peregrineChanges.anyChange,\r\n                            isSuccess: peregrineChanges.isSuccess,\r\n                            version: peregrineChanges.widgetsChangedInfoVersion,\r\n                        });\r\n                        // If unsupported, then wait until next opportunity to check\r\n                        shouldRefresh = false;\r\n                    }\r\n                }\r\n            }\r\n            resolve(shouldRefresh);\r\n        });\r\n        // Since the full page (including all rendered widgets) are rendered by peregrine, first\r\n        // check to see if a page refresh is needed before refreshing individual widgets. If it is,\r\n        // refreshing individual widgets is not needed since the full page will refresh anyway.\r\n        let peregrineChangesResult = await peregrineChangesPromise;\r\n        if (peregrineChangesResult) {\r\n            return true;\r\n        }\r\n        // Give widgets a chance to refresh their content.\r\n        (await this.getAllWidgetInstances()).map((widgetInstance) => {\r\n            // Platform widgets will push updates, we should not attempt to pull data before it is ready\r\n            if (!widgetInstance.isPlatform) {\r\n                return widgetInstance.refreshContent();\r\n            }\r\n            return;\r\n        });\r\n        // If any widgets are in an error state, reload them\r\n        await this.reloadFailedWidgets(\"contentrefresh\");\r\n        // For now, always wait until the full refresh timeout period has passed before completing the refresh. In the future,\r\n        // this should be updated to wait only until all widgets have indicated they are done refreshing.\r\n        const refreshTimeoutPromise = new Promise((resolve) => setTimeout(resolve, 1000 * this._widgetContentRefreshTimeSeconds));\r\n        await refreshTimeoutPromise;\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorWidgetRefreshComplete\", 0 /* verbose */);\r\n        return false;\r\n    }\r\n    async suspendWidgets() {\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorSuspendingWidgets\", 0 /* verbose */);\r\n        // Suspend any active widgets.\r\n        const suspendPromises = (await this.getAllWidgetInstances()).map((widgetInstance) => {\r\n            return widgetInstance.suspend();\r\n        });\r\n        // Wait for all active widgets to suspend.\r\n        await Promise.all(suspendPromises);\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorWidgetSuspendComplete\", 0 /* verbose */);\r\n    }\r\n    async resumeWidgets() {\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorResumingWidgets\", 0 /* verbose */);\r\n        // Resume any active widgets.\r\n        await Promise.all((await this.getAllWidgetInstances()).map(async (widgetInstance) => {\r\n            await widgetInstance.resume();\r\n        }));\r\n        // If any widgets are in an error state, reload them\r\n        await this.reloadFailedWidgets(\"resumed\");\r\n        Measures.logEvent(dashboard, \"WebAppOrchestratorWidgetResumeComplete\", 16777216 /* productAndServicePerformance */);\r\n    }\r\n    widgetInnerFocus(widgetInstance) {\r\n        this.fireEvent(\"widgetInnerFocus\", widgetInstance);\r\n    }\r\n    async initializeOutlookWidgetAsync(widgetInstance, widgetInstanceElement, entryPointHost) {\r\n        var _a, _b, _c, _d;\r\n        Measures.logEvent(dashboard, \"InitializeOutlookWidget\", 16777216 /* productAndServicePerformance */, {\r\n            appId: widgetInstance.widgetRegistration.appId,\r\n            isTombstoned: widgetInstance.widgetRegistration.isTombstoned,\r\n            providerId: widgetInstance.widgetRegistration.providerId,\r\n            widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n            widgetInstanceId: widgetInstance.widgetId,\r\n        });\r\n        log.info(\"orchestrator.initializeWidgetFn [\" + widgetInstance.widgetId + \"] entry point: \" + entryPointHost);\r\n        try {\r\n            // When an Outlook widget is loaded, do the following:\r\n            // (1) Import its JS endpoint as a module\r\n            // (2) Append a new child to widgetInstanceElement with a tag of the format \"widget-id\"\r\n            // (3) Call into the required widget export \"defineWidget\" with this tag name. The widget is then expected to assign its own component to this tag using define Opens in new window or tab\r\n            // (OR) Render Outlook Widget with Adaptive Card Tombstone UI when Edge is uninstalled\r\n            // (OR) Render Outlook Widget with Adaptive Card Signout UI when user is signed out\r\n            // (4) Place widget into error state if this process fails\r\n            const src = await fillURLVariables(window.location.search, entryPointHost, widgetInstance);\r\n            // webpackIgnore prevents Webpack from trying to import the url at build time(which would cause a failure to reach the endpoint at runtime)\r\n            const widgetModule = (await import(/* webpackIgnore: true */ src));\r\n            // Tag names must be separated by a dash and be unique to the given instance\r\n            const dashedName = widgetInstance.widgetId.replace(/\\./g, \"-\") + \"-\" + widgetInstance.instanceId;\r\n            const exportedTag = document.createElement(dashedName);\r\n            widgetInstanceElement.appendChild(exportedTag);\r\n            // Do not render Outlook widgets when tombstoned\r\n            if (!widgetInstance.widgetRegistration.isTombstoned) {\r\n                // OWA cannot export defineWidget from their module so we must check their global for the function\r\n                if (widgetInstance.widgetId === Constants.CalendarWidgetId && ((_b = (_a = window === null || window === void 0 ? void 0 : window.Owa) === null || _a === void 0 ? void 0 : _a.calendarwidget) === null || _b === void 0 ? void 0 : _b.defineWidget)) {\r\n                    if (!widgetInstance.isCustomElementDefined) {\r\n                        window.Owa.calendarwidget.defineWidget({\r\n                            elementName: dashedName,\r\n                            src: src,\r\n                        });\r\n                        widgetInstance.isCustomElementDefined = true;\r\n                    }\r\n                }\r\n                else if (widgetInstance.widgetId === Constants.ToDoWidgetId && ((_d = (_c = window === null || window === void 0 ? void 0 : window.Owa) === null || _c === void 0 ? void 0 : _c.todowidget) === null || _d === void 0 ? void 0 : _d.defineWidget)) {\r\n                    if (!widgetInstance.isCustomElementDefined) {\r\n                        window.Owa.todowidget.defineWidget({\r\n                            elementName: dashedName,\r\n                            src: src,\r\n                        });\r\n                        widgetInstance.isCustomElementDefined = true;\r\n                    }\r\n                }\r\n                else if (widgetModule.defineWidget) {\r\n                    if (!widgetInstance.isCustomElementDefined) {\r\n                        widgetModule.defineWidget({\r\n                            elementName: dashedName,\r\n                            src: src,\r\n                        });\r\n                        widgetInstance.isCustomElementDefined = true;\r\n                    }\r\n                }\r\n            }\r\n            Measures.logEvent(dashboard, \"InitializeOutlookWidgetComplete\", 16777216 /* productAndServicePerformance */, {\r\n                appId: widgetInstance.widgetRegistration.appId,\r\n                defineWidgetExported: widgetModule === null || widgetModule === void 0 ? void 0 : widgetModule.defineWidget,\r\n                isCustomElementDefined: widgetInstance.isCustomElementDefined,\r\n                isTombstoned: widgetInstance.widgetRegistration.isTombstoned,\r\n                providerId: widgetInstance.widgetRegistration.providerId,\r\n                widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n                widgetInstanceId: widgetInstance.widgetId,\r\n            });\r\n        }\r\n        catch (error) {\r\n            Measures.logEvent(dashboard, \"ModuleCallFailed\", 16777216 /* productAndServicePerformance */, {\r\n                failureMessage: error.message,\r\n                failureName: error.name,\r\n                widgetUrl: entryPointHost,\r\n            });\r\n            widgetInstance.widgetErrorStateReason = \"ModuleCallFailed\";\r\n            widgetInstance.widgetErrorCode = 0x8000ffff; // E_UNEXPECTED\r\n            widgetInstance.widgetState = \"error\";\r\n        }\r\n    }\r\n    reloadFailedNonPeregrineWidgets(lifecycle, instances) {\r\n        instances\r\n            .filter((widgetInstance) => (typeof widgetInstance.widgetRegistration.entryPoint.host !== \"undefined\" ||\r\n            widgetInstance.widgetRegistration.isAdaptiveCard) &&\r\n            widgetInstance.widgetState === \"error\")\r\n            .map((widgetInstance) => {\r\n            this.getWidget(widgetInstance).then(async (widgetElement) => {\r\n                if (widgetInstance.widgetState === \"error\" && widgetElement.initializeFn) {\r\n                    // If a lifecycle event was specified, this is an attempt to automatically recover\r\n                    if (lifecycle) {\r\n                        Measures.logEvent(dashboard, \"AutoReloadWidget\", 16777216 /* productAndServicePerformance */, {\r\n                            appId: widgetInstance.widgetRegistration.appId,\r\n                            lifecycleEvent: lifecycle,\r\n                            providerId: widgetInstance.widgetRegistration.providerId,\r\n                            widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n                            widgetInstanceId: widgetInstance.widgetId,\r\n                        });\r\n                        if (widgetInstance.isPlatform) {\r\n                            // If a platform widget was in an error state, ensure it is activated to give it\r\n                            // an opportunity to recover.  Force the notify if data is available.\r\n                            let instanceManagerApi = await getHostInstanceManagerApi();\r\n                            await (instanceManagerApi === null || instanceManagerApi === void 0 ? void 0 : instanceManagerApi.activateWidget(widgetInstance.widgetId, true));\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n        });\r\n    }\r\n    // // https://assets.msn.com/bundles/v1/winWidgets/latest/widget-initializer.js\r\n    getWidgetInitializerUrl(appType) {\r\n        let widgetInitializerDomain = this.isUserRegionChina() ? \"https://assets.msn.cn\" : \"https://assets.msn.com\";\r\n        let widgetInitializerUrl = widgetInitializerDomain + \"/bundles/v1/\" + appType + \"/latest/widget-initializer.js\";\r\n        return widgetInitializerUrl;\r\n    }\r\n    // Starts the initial loading/initialization process for Peregrine widgets. Peregrine\r\n    // widgets must be loaded/initialized by the Peregrine PCS system. This must be done\r\n    // once after all Peregrine widget containers have been created on the page.\r\n    async startInitialPeregrineWidgetLoad() {\r\n        addMarkerToPageTimings(\"MEE.InitialPeregrineWidgetLoadStart\");\r\n        // Set up the WidgetLifecycleObserver that will track how many widgets end up\r\n        // in the error state.\r\n        const initialWidgetInstances = await this.getAllWidgetInstances();\r\n        getErrorWidgetLifecycleObserver().setNumWidgets(initialWidgetInstances.length);\r\n        initialWidgetInstances.forEach((widgetInstance) => {\r\n            getErrorWidgetLifecycleObserver().registerWidget(widgetInstance);\r\n        });\r\n        // Set up the WidgetLifeCycleObserver that will track when Peregrine widgets are ready to\r\n        // be loaded/initialized by PCS.\r\n        const initialPeregrineWidgetInstances = initialWidgetInstances.filter((widgetInstance) => {\r\n            return typeof widgetInstance.widgetRegistration.entryPoint.host === \"undefined\";\r\n        });\r\n        getLoadingWidgetLifecycleObserver().setNumWidgets(initialPeregrineWidgetInstances.length);\r\n        initialPeregrineWidgetInstances.forEach((widgetInstance) => {\r\n            getLoadingWidgetLifecycleObserver().registerWidget(widgetInstance);\r\n        });\r\n    }\r\n    initializeWidget(widgetInstance) {\r\n        Trace.logEvent(dashboard, \"WebAppOrchestratorInitializingWidget\", 0 /* verbose */, {\r\n            appId: widgetInstance.widgetRegistration.appId,\r\n            providerId: widgetInstance.widgetRegistration.providerId,\r\n            widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n            widgetInstanceId: widgetInstance.widgetId,\r\n        });\r\n        // Create a <widget-instance> element and attach the widgetInstance object to it\r\n        // so that widgets are able to access the widgetInstance object from the parent of their\r\n        // content root:\r\n        // <widget-instance>\r\n        //      <content-root-element-of-widget/>\r\n        // </widget-instance>\r\n        let widgetInitPromise = new Promise(async (resolve) => {\r\n            // Initialize with core api\r\n            const widgetInstanceElement = document.createElement(\"widget-instance\");\r\n            widgetInstanceElement.instance = widgetInstance;\r\n            widgetInstanceElement.id = widgetInstance.widgetId + \":\" + widgetInstance.instanceId;\r\n            let systemColors = await getSystemTheme();\r\n            const systemBackgroundColor = systemColors.substr(0, 6);\r\n            const isDarkTheme = systemBackgroundColor === \"000000\";\r\n            widgetInstance.setApi(\"status\", 1, new WidgetStatusApi(widgetInstance));\r\n            widgetInstance.setApi(\"visibility\", 1, new WidgetVisibilityApi(widgetInstance));\r\n            widgetInstance.setApi(\"settings\", 1, new WidgetSettingsApi(widgetInstance));\r\n            widgetInstance.setApi(\"sizes\", 1, new WidgetSizeApi(widgetInstance));\r\n            widgetInstance.setApi(\"lifecycle\", 1, new WidgetLifecycleApi(widgetInstance));\r\n            widgetInstance.setApi(\"authenticator\", 1, new WidgetAuthenticator(widgetInstance));\r\n            widgetInstance.setApi(\"properties\", 1, new WidgetProperties(widgetInstance));\r\n            widgetInstance.setApi(\"interactions\", 1, new WidgetInteractionsApi(widgetInstance));\r\n            widgetInstance.setApi(\"preview\", 1, new WidgetPreviewApi(widgetInstance));\r\n            widgetInstance.setApi(\"innerfocus\", 1, new WidgetInnerFocus(widgetInstance));\r\n            this.insertPlaceholderImage(widgetInstanceElement, widgetInstance, isDarkTheme);\r\n            let initializeWidgetFn = async () => {\r\n                Trace.logEvent(dashboard, \"WebAppOrchestratorInitializingWidgetCallback\", 0 /* verbose */, {\r\n                    appId: widgetInstance.widgetRegistration.appId,\r\n                    providerId: widgetInstance.widgetRegistration.providerId,\r\n                    widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n                    widgetInstanceId: widgetInstance.widgetId,\r\n                });\r\n                widgetInstance.widgetState = \"loading\";\r\n                // Now that API's have been set, signal completion\r\n                widgetInstance.signalAPIInitialization();\r\n                widgetInstance.addStateChangeListener((widgetInstance, previousState, currentState) => {\r\n                    if (currentState === \"loading\") {\r\n                        if (widgetInstanceElement.hasChildNodes() && widgetInstanceElement.lastChild) {\r\n                            Trace.logEvent(dashboard, \"ChildrenDeletedOnLoadingStateChange\", 0 /* verbose */, {\r\n                                appId: widgetInstance.widgetRegistration.appId,\r\n                                providerId: widgetInstance.widgetRegistration.providerId,\r\n                                widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n                                widgetInstanceId: widgetInstance.widgetId,\r\n                            });\r\n                        }\r\n                        this.insertPlaceholderImage(widgetInstanceElement, widgetInstance, isDarkTheme);\r\n                    }\r\n                });\r\n                // Allow for an entryPoint override, currently based on geolocation, eg: for CN\r\n                let entryPointKey = getGeoLocationCode();\r\n                let entryPoint = getEntryPointOverride(widgetInstance.widgetRegistration, entryPointKey);\r\n                if (entryPoint !== null) {\r\n                    Trace.logEvent(dashboard, \"InitializeWidgetEntryPointOverride\", 0 /* verbose */, {\r\n                        appId: widgetInstance.widgetRegistration.appId,\r\n                        providerId: widgetInstance.widgetRegistration.providerId,\r\n                        widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n                        widgetInstanceId: widgetInstance.widgetId,\r\n                        originalEntryPoint: widgetInstance.widgetRegistration.entryPoint,\r\n                        overrideEntryPoint: entryPoint,\r\n                        key: entryPointKey,\r\n                    });\r\n                }\r\n                else {\r\n                    entryPoint = widgetInstance.widgetRegistration.entryPoint;\r\n                }\r\n                // A non-existent host indicates that the widget is Outlook widget, and will be later loaded by the dashboard\r\n                if (typeof entryPoint.host !== \"undefined\" && entryPoint.type !== \"PLATFORM\") {\r\n                    await this.initializeOutlookWidgetAsync(widgetInstance, widgetInstanceElement, entryPoint.host);\r\n                }\r\n                if (typeof entryPoint.className !== \"undefined\") {\r\n                    widgetInstanceElement.className = entryPoint.className;\r\n                }\r\n                if (typeof entryPoint.configuration !== \"undefined\") {\r\n                    widgetInstanceElement.dataset.widget = JSON.stringify(entryPoint.configuration);\r\n                }\r\n            };\r\n            widgetInstanceElement.initializeFn = initializeWidgetFn;\r\n            resolve(widgetInstanceElement);\r\n        });\r\n        this._widgetHtmlElements.set(widgetInstance, widgetInitPromise);\r\n        return widgetInitPromise;\r\n    }\r\n    insertPlaceholderImage(widgetInstanceElement, widgetInstance, isDarkTheme) {\r\n        // Ensure that the instance element is empty before adding the placeholder\r\n        while (widgetInstanceElement.hasChildNodes() && widgetInstanceElement.lastChild) {\r\n            widgetInstanceElement.removeChild(widgetInstanceElement.lastChild);\r\n        }\r\n        const placeholderImg = PlaceholderImageElement.createPlaceholderImage(widgetInstance, widgetInstanceElement.id, isDarkTheme);\r\n        placeholderImg && widgetInstanceElement.appendChild(placeholderImg);\r\n    }\r\n    async removeAttributeListener(widget) {\r\n        var _a;\r\n        // Remove the callback once we're done with it so we don't get updates from individual widgets loading.\r\n        let instanceId = (_a = widget.instance) === null || _a === void 0 ? void 0 : _a.instanceId;\r\n        if (instanceId !== undefined) {\r\n            let listenerToken = this._peregrineLoadListeners.get(instanceId);\r\n            if (listenerToken !== undefined) {\r\n                widget.removeAttributeListener(\"data-widget-state\", listenerToken);\r\n            }\r\n        }\r\n    }\r\n    fireEvent(name, widgetInstance) {\r\n        for (let index = 0; index < this._eventListeners.length; index++) {\r\n            if (this._eventListeners[index]) {\r\n                this._eventListeners[index](name, widgetInstance);\r\n            }\r\n        }\r\n    }\r\n    async getAllWidgetInstances() {\r\n        let widgetInstances;\r\n        // In dynamic feed, ignore all peregrine widgets in the orchestrator since they will be managed by the feed\r\n        widgetInstances = (await this.getWidgetInstances()).filter((widgetInstance) => typeof widgetInstance.widgetRegistration.entryPoint.host !== \"undefined\");\r\n        const feedInstance = await this.getFeedInstance();\r\n        return [...widgetInstances, feedInstance];\r\n    }\r\n}\r\nWidgetOrchestratorImpl._listenderAddedForPCSFailure = false; // Use this to avoid add listener for PCS failure multiple times\r\n// Singleton instance\r\nlet g_orchestratorInstance;\r\nexport async function getWidgetOrchestrator() {\r\n    addMarkerToPageTimings(\"MEE.GetWidgetOrchestratorStart\");\r\n    if (!g_orchestratorInstance) {\r\n        g_orchestratorInstance = new Promise(async (resolve) => {\r\n            const [registrar, instanceManager] = await Promise.all([\r\n                getWidgetRegistrarAsync(),\r\n                getWidgetInstanceManager()\r\n            ]);\r\n            addMarkerToPageTimings(\"MEE.GetWidgetOrchestratorEnd\");\r\n            resolve(new WidgetOrchestratorImpl(instanceManager, registrar));\r\n        });\r\n    }\r\n    return g_orchestratorInstance;\r\n}\r\n","import { Measures } from \"../../../telemetry/Measures\";\r\nimport { Trace } from \"../../../telemetry/Trace\";\r\nimport { dashboard } from \"../../../telemetry/TraceLogging\";\r\nimport { addSystemThemeChangedEventListener, getSystemTheme, removeSystemThemeChangedEventListener } from \"../../externalApi/ThemeApi\";\r\nimport log from \"loglevel\";\r\nimport { getUriForResource } from \"../registrar/registrarHelpers\";\r\n//\r\n// customized img element for placeholder image\r\n// this extends img so we can know when its replaced by the widget\r\n//\r\nconst defaultWidgetTimeoutSeconds = 120;\r\nconst feedTimeoutSeconds = 20;\r\nexport class PlaceholderImageElement extends HTMLImageElement {\r\n    constructor() {\r\n        super();\r\n        this._elapsedTime = 0; // Time passed since the first timeout for feed widget starts to run\r\n        this._widgetInstance = null;\r\n        this._timeout = null;\r\n        this._boundStateCallback = null;\r\n        this._boundLifecycleCallback = null;\r\n        this._boundSizeCallback = null;\r\n        this._boundThemeCallback = null;\r\n        this._startRuntime = performance.now();\r\n        this._isDarkTheme = null;\r\n        this._placeholderSize = null;\r\n    }\r\n    static createPlaceholderImage(widgetInstance, id, isDarkTheme) {\r\n        Trace.logEvent(dashboard, \"WebAppPlaceholderCreating\", 0 /* verbose */, {\r\n            appId: widgetInstance.widgetRegistration.appId,\r\n            providerId: widgetInstance.widgetRegistration.providerId,\r\n            widgetDefinitionId: widgetInstance.widgetDefinitionId,\r\n            widgetInstanceId: widgetInstance.widgetId,\r\n        });\r\n        const placeholderImageElement = document.createElement(\"img\", {\r\n            is: \"img-placeholder\",\r\n        });\r\n        placeholderImageElement.init(widgetInstance, id, isDarkTheme);\r\n        return placeholderImageElement;\r\n    }\r\n    init(widgetInstance, id, isDarkTheme) {\r\n        var _a, _b, _c, _d;\r\n        this.widgetInstance = widgetInstance;\r\n        this.id = \"placeholder:\" + id;\r\n        this.setAttribute(\"role\", \"presentation\");\r\n        this._isDarkTheme = isDarkTheme;\r\n        let lifecycleApi = widgetInstance.tryGetApi(\"lifecycle\", 1, 1);\r\n        if (lifecycleApi) {\r\n            this._boundLifecycleCallback = this.widgetLifecycleEvent.bind(this);\r\n            lifecycleApi.addEventListener(this._boundLifecycleCallback);\r\n        }\r\n        const widgetSizeApi = widgetInstance.tryGetApi(\"sizes\", 1, 1);\r\n        if (widgetSizeApi) {\r\n            this._boundSizeCallback = this.sizeChangeEvent.bind(this);\r\n            widgetSizeApi.addEventListener(this._boundSizeCallback);\r\n        }\r\n        this._boundThemeCallback = this.onThemeChanged.bind(this);\r\n        addSystemThemeChangedEventListener(this._boundThemeCallback);\r\n        if (widgetInstance.widgetDefinitionId != \"com.msn.desktopfeed\") {\r\n            let size = widgetInstance.getWidgetProperty(\"size\");\r\n            if (!size) {\r\n                size = widgetInstance.widgetRegistration.preferredSize;\r\n            }\r\n            if (widgetInstance.widgetRegistration.placeholderImage[0].src.length < 1) {\r\n                Trace.logEvent(dashboard, \"WebAppPlaceholderNoImage\", 3 /* error */, {\r\n                    appId: (_a = this._widgetInstance) === null || _a === void 0 ? void 0 : _a.widgetRegistration.appId,\r\n                    providerId: (_b = this._widgetInstance) === null || _b === void 0 ? void 0 : _b.widgetRegistration.providerId,\r\n                    widgetDefinitionId: (_c = this._widgetInstance) === null || _c === void 0 ? void 0 : _c.widgetDefinitionId,\r\n                    widgetInstanceId: (_d = this._widgetInstance) === null || _d === void 0 ? void 0 : _d.widgetId,\r\n                });\r\n                log.error(\"Placeholder image src empty [\", widgetInstance.widgetRegistration.id, \"]\");\r\n            }\r\n            else {\r\n                this._placeholderSize = size;\r\n                this.findPlaceholderImage(this.widgetInstance);\r\n                if (!this.src) {\r\n                    // If we couldn't find a match, just use the first one available\r\n                    Trace.logEvent(dashboard, \"WebAppPlaceholderNoMatchFound\", 3 /* error */, {\r\n                        widgetId: widgetInstance.widgetId,\r\n                    });\r\n                    this.src = getUriForResource(widgetInstance.widgetRegistration.id, widgetInstance.widgetRegistration.placeholderImage[0].src);\r\n                }\r\n            }\r\n        }\r\n        const widgetTimeoutSeconds = this._widgetInstance && this._widgetInstance.widgetId === \"com.msn.desktopfeed\"\r\n            ? feedTimeoutSeconds\r\n            : defaultWidgetTimeoutSeconds;\r\n        // In case the widget fails to remove the placeholder and nothing signals an error,\r\n        // automatically send widget to error state with a timeout\r\n        this._timeout = global.setTimeout(() => this.reportLoadFailed(), widgetTimeoutSeconds * 1000);\r\n        this._startRuntime = performance.now();\r\n        this._boundStateCallback = this.widgetStateChangeCallback.bind(this);\r\n        widgetInstance.addStateChangeListener(this._boundStateCallback);\r\n    }\r\n    widgetStateChangeCallback(instance, previousState, currentState) {\r\n        var _a;\r\n        if (currentState === \"normal\" || currentState === \"error\") {\r\n            // If we are transitioning from any state to normal or error the placeholder shoud be removed from the DOM if it still exists\r\n            if (this.isConnected) {\r\n                (_a = this.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this);\r\n            }\r\n        }\r\n    }\r\n    sizeChangeEvent(eventName, size) {\r\n        if (eventName === \"onSizeChangeEnd\" && this.widgetInstance) {\r\n            this._placeholderSize = size;\r\n            this.findPlaceholderImage(this.widgetInstance);\r\n        }\r\n    }\r\n    reportLoadFailed() {\r\n        if (this._widgetInstance) {\r\n            Trace.logEvent(dashboard, \"WebAppPlaceholderReportLoadFailed\", 0 /* verbose */, {\r\n                appId: this._widgetInstance.widgetRegistration.appId,\r\n                providerId: this._widgetInstance.widgetRegistration.providerId,\r\n                widgetDefinitionId: this._widgetInstance.widgetDefinitionId,\r\n                widgetInstanceId: this._widgetInstance.widgetId,\r\n            });\r\n            this._widgetInstance.widgetErrorStateReason = \"LoadTimeout\";\r\n            this._widgetInstance.widgetErrorCode = 258; // WAIT_TIMEOUT\r\n            this._widgetInstance.widgetState = \"error\";\r\n        }\r\n    }\r\n    async widgetLifecycleEvent(eventName) {\r\n        var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\r\n        if (eventName == \"suspending\") {\r\n            this._elapsedTime += Math.max(performance.now() - this._startRuntime, 0);\r\n            if (this.isConnected) {\r\n                // On suspend clear the timeout\r\n                this.clearTimeout();\r\n                Measures.logEvent(dashboard, \"WidgetInstancePlaceholderTimeoutSuspended\", 16777216 /* productAndServicePerformance */, {\r\n                    appId: (_a = this._widgetInstance) === null || _a === void 0 ? void 0 : _a.widgetRegistration.appId,\r\n                    providerId: (_b = this._widgetInstance) === null || _b === void 0 ? void 0 : _b.widgetRegistration.providerId,\r\n                    widgetDefinitionId: (_c = this._widgetInstance) === null || _c === void 0 ? void 0 : _c.widgetDefinitionId,\r\n                    widgetInstanceId: (_d = this._widgetInstance) === null || _d === void 0 ? void 0 : _d.widgetId,\r\n                    widgetState: (_e = this._widgetInstance) === null || _e === void 0 ? void 0 : _e.widgetState,\r\n                });\r\n            }\r\n        }\r\n        else if (eventName == \"resumed\") {\r\n            this._startRuntime = performance.now();\r\n            if (this.isConnected) {\r\n                // On resume restart the timeout\r\n                this.clearTimeout();\r\n                if (this.widgetInstance && this.widgetInstance.widgetId === \"com.msn.desktopfeed\") {\r\n                    const remainingRunningTimeinMs = Math.max(feedTimeoutSeconds * 1000 - this._elapsedTime, 0);\r\n                    this._timeout = global.setTimeout(() => this.reportLoadFailed(), remainingRunningTimeinMs);\r\n                }\r\n                else {\r\n                    this._timeout = global.setTimeout(() => this.reportLoadFailed(), defaultWidgetTimeoutSeconds * 1000);\r\n                }\r\n                Measures.logEvent(dashboard, \"WidgetInstancePlaceholderTimeoutResumed\", 16777216 /* productAndServicePerformance */, {\r\n                    appId: (_f = this._widgetInstance) === null || _f === void 0 ? void 0 : _f.widgetRegistration.appId,\r\n                    providerId: (_g = this._widgetInstance) === null || _g === void 0 ? void 0 : _g.widgetRegistration.providerId,\r\n                    widgetDefinitionId: (_h = this._widgetInstance) === null || _h === void 0 ? void 0 : _h.widgetDefinitionId,\r\n                    widgetInstanceId: (_j = this._widgetInstance) === null || _j === void 0 ? void 0 : _j.widgetId,\r\n                    widgetState: (_k = this._widgetInstance) === null || _k === void 0 ? void 0 : _k.widgetState,\r\n                });\r\n            }\r\n        }\r\n    }\r\n    disconnectedCallback() {\r\n        var _a, _b, _c, _d, _e, _f;\r\n        // element removed from DOM\r\n        // this means that the widget replaced the placeholder or we've hit an error state\r\n        this.clearTimeout();\r\n        let lifecycleApi = (_a = this._widgetInstance) === null || _a === void 0 ? void 0 : _a.tryGetApi(\"lifecycle\", 1, 1);\r\n        if (lifecycleApi && this._boundLifecycleCallback) {\r\n            lifecycleApi.removeEventListener(this._boundLifecycleCallback);\r\n            this._boundLifecycleCallback = null;\r\n        }\r\n        const widgetSizeApi = (_b = this._widgetInstance) === null || _b === void 0 ? void 0 : _b.tryGetApi(\"sizes\", 1, 1);\r\n        if (widgetSizeApi && this._boundSizeCallback) {\r\n            widgetSizeApi.removeEventListener(this._boundSizeCallback);\r\n        }\r\n        removeSystemThemeChangedEventListener(this.onThemeChanged);\r\n        if (this._widgetInstance) {\r\n            if (this._boundStateCallback) {\r\n                this._widgetInstance.removeStateChangeListener(this._boundStateCallback);\r\n                this._boundStateCallback = null;\r\n            }\r\n            Trace.logEvent(dashboard, \"WebAppPlaceholderRemoved\", 0 /* verbose */, {\r\n                appId: (_c = this._widgetInstance) === null || _c === void 0 ? void 0 : _c.widgetRegistration.appId,\r\n                providerId: (_d = this._widgetInstance) === null || _d === void 0 ? void 0 : _d.widgetRegistration.providerId,\r\n                widgetDefinitionId: (_e = this._widgetInstance) === null || _e === void 0 ? void 0 : _e.widgetDefinitionId,\r\n                widgetInstanceId: (_f = this._widgetInstance) === null || _f === void 0 ? void 0 : _f.widgetId,\r\n            });\r\n            if (this._widgetInstance.widgetState !== \"error\") {\r\n                // it's possible that the widget state is already in a normal state when the widget is disconnected.\r\n                // In this case, we can leave the widget state as normal and just disconnect the widget instance.\r\n                if (this._widgetInstance.widgetState !== \"normal\") {\r\n                    log.info(\"PlaceHolderImageElement[\" + this.id + \"]: setting widgetState to normal\");\r\n                    this._widgetInstance.widgetState = \"normal\";\r\n                }\r\n                this._widgetInstance = null;\r\n            }\r\n            else {\r\n                log.info(\"PlaceHolderImageElement[\" + this.id + \"]: removed during error state\");\r\n            }\r\n        }\r\n    }\r\n    get widgetInstance() {\r\n        return this._widgetInstance;\r\n    }\r\n    set widgetInstance(val) {\r\n        this._widgetInstance = val;\r\n    }\r\n    clearTimeout() {\r\n        if (this._timeout) {\r\n            global.clearTimeout(this._timeout);\r\n            this._timeout = null;\r\n        }\r\n    }\r\n    // Changes placeholder mode when user changes mode in between sessions\r\n    async onThemeChanged() {\r\n        let systemColors = await getSystemTheme();\r\n        const systemBackgroundColor = systemColors.substr(0, 6);\r\n        this._isDarkTheme = systemBackgroundColor === \"000000\";\r\n        if (this.widgetInstance) {\r\n            this.findPlaceholderImage(this.widgetInstance);\r\n        }\r\n    }\r\n    findPlaceholderImage(widgetInstance) {\r\n        // Find the first matching image for the theme and set it as the placeholder\r\n        for (let image of widgetInstance.widgetRegistration.placeholderImage) {\r\n            if (image.size === this._placeholderSize && ((this._isDarkTheme && image.theme === \"dark\") || (!this._isDarkTheme && image.theme === \"light\"))) {\r\n                if (widgetInstance.isPlatform && !widgetInstance.widgetRegistration.id.startsWith(\"com.\")) {\r\n                    this.src = image.src;\r\n                }\r\n                else {\r\n                    this.src = getUriForResource(widgetInstance.widgetRegistration.id, image.src);\r\n                }\r\n                break;\r\n            }\r\n        }\r\n    }\r\n}\r\n","import { Measures } from \"../../telemetry/Measures\";\r\nimport { dashboard } from \"../../telemetry/TraceLogging\";\r\nimport { getHostAuthenticatorApiV2 } from \"../externalApi/AuthenticatorApi\";\r\nexport async function getUserInfo() {\r\n    let userInfo = undefined;\r\n    const authenticatorApi = await getHostAuthenticatorApiV2();\r\n    const authenticator = window.__com_microsoft_dsh_widgetModelApiFactory.tryGetApi(\"authenticator\", 1, 1);\r\n    if (authenticator) {\r\n        const accountId = await authenticator.getDefaultAccountIdAsync();\r\n        if (accountId !== \"\") {\r\n            const [userPrincipalName, userProfileImage] = await Promise.all([\r\n                authenticator.getAccountPropertyAsync(accountId, \"UPN\"),\r\n                authenticator.getAccountPictureAsync(accountId)\r\n            ]);\r\n            userInfo = {\r\n                userPrincipalName,\r\n                userProfileImage\r\n            };\r\n        }\r\n        // else return userInfo as undefined\r\n    }\r\n    else if (authenticatorApi) {\r\n        const defaultAccountId = await authenticatorApi.getDefaultAccountId();\r\n        if (defaultAccountId !== null) {\r\n            userInfo = await new Promise(async (resolve, reject) => {\r\n                let info = {};\r\n                info.userPrincipalName = await authenticatorApi.getAccountProperty(defaultAccountId, \"UPN\");\r\n                authenticatorApi.getAccountPictureAsync(defaultAccountId, (imageString) => {\r\n                    info.userProfileImage = imageString;\r\n                    resolve(info);\r\n                });\r\n            });\r\n        }\r\n        // else return userInfo as undefined\r\n    }\r\n    else {\r\n        // Auth APIs are not available, so return undefined to indicate that we're effectively signed out.\r\n        Measures.logEvent(dashboard, \"WebAppGetUserInfoFailed\", 16777216 /* productAndServicePerformance */);\r\n    }\r\n    return userInfo;\r\n}\r\n","import HtmlParser from \"react-html-parser\";\r\nimport sanitize from \"sanitize-html\";\r\nimport { Trace } from \"../../telemetry/Trace\";\r\nimport { dashboard } from \"../../telemetry/TraceLogging\";\r\n/**\r\n * Creates a formatted string from a template where the value for {foo} in the format is substituted from\r\n * the value keyed by \"foo\". For example formatString(\"{foo}\", { \"foo\": \"x\" }) would return \"x\". In general,\r\n * you should use templates like `${value}` for creating strings, but formatString should be used when\r\n * constructing strings from localized string resources as the former is not possible..\r\n *\r\n * Also sanitizes html strings and converts tags to rich text formatting.\r\n */\r\nexport function formatString(format, values) {\r\n    let result = format;\r\n    if (values) {\r\n        const keys = Object.keys(values);\r\n        for (let i = 0; i < keys.length; ++i) {\r\n            const key = keys[i];\r\n            result = result.replace(new RegExp(`\\\\{${key}\\\\}`, \"g\"), values[key]);\r\n        }\r\n    }\r\n    return HtmlParser(sanitize(result));\r\n}\r\n/**\r\n * Attempts to parse a given string to a JSON object\r\n * @param {string} jsonString - The string to parse.\r\n * @returns {any} - the parsed object if successful, or null otherwise.\r\n */\r\nexport function tryParseJson(jsonString) {\r\n    if (!jsonString) {\r\n        return null;\r\n    }\r\n    try {\r\n        return JSON.parse(jsonString);\r\n    }\r\n    catch (error) {\r\n        Trace.logEvent(dashboard, \"tryParseJsonFailed\", 1 /* information */, {\r\n            jsonString: jsonString,\r\n            reason: error,\r\n        });\r\n        return null;\r\n    }\r\n}\r\n","// Use of this namespace should be restricted only to telemetry concepts that would confuse otherwise readable code\r\n// Members of this namespace should *never* be used for business logic or functionality\r\n// Each item in this namespace should be well commented\r\nexport var Data;\r\n(function (Data) {\r\n    class Telemetry {\r\n        constructor() {\r\n            this._visibility = 0 /* Unknown */;\r\n            this._percentVisible = \"Unknown\";\r\n        }\r\n        get visibility() {\r\n            return this._visibility;\r\n        }\r\n        set visibility(state) {\r\n            this._visibility = state;\r\n        }\r\n        get percentVisible() {\r\n            return this._percentVisible;\r\n        }\r\n        set percentVisible(state) {\r\n            this._percentVisible = state;\r\n        }\r\n    }\r\n    Data.Telemetry = Telemetry;\r\n})(Data || (Data = {}));\r\n","import { notifyWidgetProvider } from \"../components/AdaptiveCardWidget/AdaptiveCardRenderingAndActions\";\r\nimport widgetApiVersion from \"../widgetRuntime/apis/api.interfaces\";\r\nimport { getWidgetOrchestrator } from \"../widgetRuntime/orchestrator/orchestrator\";\r\nexport async function getWidgetRegistrationsPromise() {\r\n    return await getWidgetOrchestrator().then((result) => result.getWidgetRegistrations());\r\n}\r\nexport async function getWidgetInstancesPromise() {\r\n    return await getWidgetOrchestrator().then((result) => result.getWidgetInstances());\r\n}\r\nexport async function getFeedsInstancePromise() {\r\n    return await getWidgetOrchestrator().then((orchestrator) => orchestrator\r\n        .getFeedInstance()\r\n        .then((result) => {\r\n        return result;\r\n    })\r\n        .catch((reason) => {\r\n        return undefined;\r\n    }));\r\n}\r\nexport async function getWidgetInstancePromise(index) {\r\n    const widgetInstances = await getWidgetInstancesPromise();\r\n    return widgetInstances[index];\r\n}\r\nexport async function addWidgetInstance(widgetRegistration) {\r\n    return await getWidgetOrchestrator().then((result) => {\r\n        return result.addWidgetInstance(widgetRegistration);\r\n    });\r\n}\r\nexport async function removeWidgetInstance(widgetInstance) {\r\n    await getWidgetOrchestrator().then((result) => {\r\n        result.removeWidgetInstance(widgetInstance);\r\n    });\r\n}\r\nexport async function addWidgetOrchestratorEventListener(orchestratorCallback) {\r\n    await getWidgetOrchestrator().then((result) => {\r\n        return result.addEventListener(orchestratorCallback);\r\n    });\r\n}\r\nexport async function removeWidgetOrchestratorEventListener(orchestratorCallback) {\r\n    await getWidgetOrchestrator().then((result) => {\r\n        result.removeEventListener(orchestratorCallback);\r\n    });\r\n}\r\nexport async function getWidgetElementAsync(widgetInstance) {\r\n    return await getWidgetOrchestrator().then((result) => {\r\n        return result.getWidget(widgetInstance);\r\n    });\r\n}\r\nexport async function getWidgetStatus(widgetInstance) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const statusApi = widgetInstance.tryGetApi(\"status\", 1, widgetApiVersion);\r\n    if (statusApi) {\r\n        return statusApi.getStatus();\r\n    }\r\n    return \"\";\r\n}\r\nexport async function addWidgetStatusEventListener(widgetInstance, statusUpdateCallback) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const statusApi = widgetInstance.tryGetApi(\"status\", 1, widgetApiVersion);\r\n    if (statusApi) {\r\n        statusApi.addStatusEventListenerInternal(statusUpdateCallback);\r\n    }\r\n}\r\nexport async function removeWidgetStatusEventListener(widgetInstance, statusUpdateCallback) {\r\n    if (widgetInstance) {\r\n        await widgetInstance.widgetInitializationPromise();\r\n        const statusApi = widgetInstance.tryGetApi(\"status\", 1, widgetApiVersion);\r\n        if (statusApi) {\r\n            statusApi.removeStatusEventListenerInternal(statusUpdateCallback);\r\n        }\r\n    }\r\n}\r\nexport async function addWidgetVisibilityEventListener(widgetInstance, statusUpdateCallback) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const visibilityApi = widgetInstance.tryGetApi(\"visibility\", 1, widgetApiVersion);\r\n    if (visibilityApi) {\r\n        visibilityApi.addEventListener(statusUpdateCallback);\r\n    }\r\n}\r\nexport async function removeWidgetVisibilityEventListener(widgetInstance, statusUpdateCallback) {\r\n    if (widgetInstance) {\r\n        await widgetInstance.widgetInitializationPromise();\r\n        const visibilityApi = widgetInstance.tryGetApi(\"visibility\", 1, widgetApiVersion);\r\n        if (visibilityApi) {\r\n            visibilityApi.removeEventListener(statusUpdateCallback);\r\n        }\r\n    }\r\n}\r\nexport async function onTitleInteracted(widgetInstance) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    let widgetInteractions = widgetInstance.tryGetApi(\"interactions\", 1, widgetApiVersion);\r\n    if (widgetInteractions) {\r\n        widgetInteractions.onTitleInteracted();\r\n    }\r\n}\r\nexport async function onSettingsInteracted(widgetInstance) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    let widgetInteractions = widgetInstance.tryGetApi(\"interactions\", 1, widgetApiVersion);\r\n    if (widgetInteractions) {\r\n        widgetInteractions.onSettingsInteracted();\r\n    }\r\n}\r\nexport async function onWidgetPositionUpdated(widgetInstance) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    let widgetInteractions = widgetInstance.tryGetApi(\"interactions\", 1, widgetApiVersion);\r\n    if (widgetInteractions) {\r\n        widgetInteractions.onWidgetPositionUpdated();\r\n    }\r\n}\r\nexport async function onWidgetVisible(widgetInstance) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    if (widgetInstance.widgetRegistration.isAdaptiveCard) {\r\n        notifyWidgetProvider(widgetInstance, { \"eventKind\": \"visibility\", \"visibilityKind\": \"visible\" });\r\n    }\r\n    const visibilityApi = widgetInstance.tryGetApi(\"visibility\", 1, widgetApiVersion);\r\n    if (visibilityApi) {\r\n        visibilityApi.onVisible();\r\n    }\r\n}\r\nexport async function onWidgetHidden(widgetInstance) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    if (widgetInstance.widgetRegistration.isAdaptiveCard) {\r\n        notifyWidgetProvider(widgetInstance, { \"eventKind\": \"visibility\", \"visibilityKind\": \"hidden\" });\r\n    }\r\n    const visibilityApi = widgetInstance.tryGetApi(\"visibility\", 1, widgetApiVersion);\r\n    if (visibilityApi) {\r\n        visibilityApi.onHidden();\r\n        // The widget becoming hidden should also remove it from the edit state\r\n        const settingsApi = widgetInstance.tryGetApi(\"settings\", 1, widgetApiVersion);\r\n        if (settingsApi) {\r\n            settingsApi.hideSettings();\r\n        }\r\n    }\r\n}\r\nexport async function getWidgetProperty(widgetInstance, property) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const propertiesApi = widgetInstance.tryGetApi(\"properties\", 1, widgetApiVersion);\r\n    if (propertiesApi) {\r\n        return propertiesApi[property];\r\n    }\r\n    return undefined;\r\n}\r\nexport async function setWidgetProperty(widgetInstance, property, value) {\r\n    return widgetInstance.setWidgetProperty(property, value);\r\n}\r\nexport async function addWidgetPropertiesEventListener(widgetInstance, propertyChangeCallback) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const propertiesApi = widgetInstance.tryGetApi(\"properties\", 1, widgetApiVersion);\r\n    if (propertiesApi) {\r\n        propertiesApi.addPropertyChangeListener(propertyChangeCallback);\r\n    }\r\n}\r\nexport async function removeWidgetPropertiesEventListener(widgetInstance, propertyChangeCallback) {\r\n    if (widgetInstance) {\r\n        await widgetInstance.widgetInitializationPromise();\r\n        const propertiesApi = widgetInstance.tryGetApi(\"properties\", 1, widgetApiVersion);\r\n        if (propertiesApi) {\r\n            propertiesApi.removePropertyChangeListener(propertyChangeCallback);\r\n        }\r\n    }\r\n}\r\nexport async function isConfigurationSupported(widgetInstance) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const settingsApi = widgetInstance.tryGetApi(\"settings\", 1, 1);\r\n    if (settingsApi) {\r\n        return settingsApi.isConfigurationSupported();\r\n    }\r\n    return false;\r\n}\r\nexport async function showSettings(widgetInstance) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const settingsApi = widgetInstance.tryGetApi(\"settings\", 1, widgetApiVersion);\r\n    if (settingsApi) {\r\n        settingsApi.onShowSettingsStart();\r\n        settingsApi.onShowSettingsEnd();\r\n    }\r\n}\r\nexport async function hideSettings(widgetInstance) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const settingsApi = widgetInstance.tryGetApi(\"settings\", 1, widgetApiVersion);\r\n    if (settingsApi) {\r\n        settingsApi.onHideSettingsStart();\r\n        settingsApi.onHideSettingsEnd();\r\n    }\r\n}\r\nexport async function setupShowHideSettingsListeners(widgetInstance, widgetSettingsEventsCallback) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const settingsApi = widgetInstance.tryGetApi(\"settings\", 1, widgetApiVersion);\r\n    if (settingsApi) {\r\n        settingsApi.addEventListenerInternal(widgetSettingsEventsCallback);\r\n    }\r\n}\r\nexport async function removeShowHideSettingsListeners(widgetInstance, widgetSettingsEventsCallback) {\r\n    if (widgetInstance) {\r\n        await widgetInstance.widgetInitializationPromise();\r\n        const settingsApi = widgetInstance.tryGetApi(\"settings\", 1, widgetApiVersion);\r\n        if (settingsApi) {\r\n            settingsApi.removeEventListenerInternal(widgetSettingsEventsCallback);\r\n        }\r\n    }\r\n}\r\nexport async function updateSize(widgetInstance, size, event) {\r\n    await widgetInstance.widgetInitializationPromise();\r\n    const sizeApi = widgetInstance.tryGetApi(\"sizes\", 1, 1);\r\n    if (sizeApi) {\r\n        if (event === \"onSizeChangeStart\") {\r\n            sizeApi.fireStartEvent(size);\r\n        }\r\n        else if (event === \"onSizeChangeEnd\") {\r\n            sizeApi.fireEndEventAndUpdateSize(size);\r\n        }\r\n    }\r\n}\r\nexport async function onWidgetRemoved(widgetInstance) {\r\n    if (widgetInstance) {\r\n        await widgetInstance.widgetInitializationPromise();\r\n        if (widgetInstance.widgetRegistration.isAdaptiveCard) {\r\n            notifyWidgetProvider(widgetInstance, { WidgetAPI: \"Removed\" });\r\n        }\r\n        const lifecycleApi = widgetInstance.tryGetApi(\"lifecycle\", 1, widgetApiVersion);\r\n        if (lifecycleApi) {\r\n            // Wait for the lifecycle api to notify widget and then remove instance\r\n            await lifecycleApi.onWidgetRemoved().then(() => {\r\n                removeWidgetInstance(widgetInstance);\r\n            });\r\n        }\r\n    }\r\n}\r\nexport async function isRiverInstance(widgetInstance) {\r\n    let orchestrator = await getWidgetOrchestrator();\r\n    return (orchestrator && orchestrator.isRiverInstance(widgetInstance));\r\n}\r\nexport async function onWidgetRemovedFromRiver(widgetInstance, isHide) {\r\n    if (widgetInstance) {\r\n        await widgetInstance.widgetInitializationPromise();\r\n        const lifecycleApi = widgetInstance.tryGetApi(\"lifecycle\", 1, widgetApiVersion);\r\n        if (lifecycleApi) {\r\n            // Wait for the lifecycle api to notify widget and then remove instance\r\n            await lifecycleApi.onWidgetRemoved().then(() => {\r\n                getWidgetOrchestrator().then((result) => {\r\n                    result.removeWidgetInstanceFromRiver(widgetInstance, isHide);\r\n                });\r\n            });\r\n        }\r\n    }\r\n}\r\n","export class WidgetApi {\r\n    constructor(widgetInstance) {\r\n        this._widgetInstance = widgetInstance;\r\n    }\r\n}\r\n"],"sourceRoot":"","x_microsoft_symbol_client_key":"f6591f60a0093862049c1c9cb355f48dfbe49f43dec6f3034863ef46785803b0"}