{"version":3,"file":"adaptivecards.min.js","mappings":"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","sources":["webpack://AdaptiveCards/webpack/universalModuleDefinition","webpack://AdaptiveCards/./src/activity-request.ts","webpack://AdaptiveCards/./src/adaptive-applet.ts","webpack://AdaptiveCards/./src/adaptivecards.ts","webpack://AdaptiveCards/./src/card-elements.ts","webpack://AdaptiveCards/./src/card-object.ts","webpack://AdaptiveCards/./src/channel-adapter.ts","webpack://AdaptiveCards/./src/controls/collection.ts","webpack://AdaptiveCards/./src/controls/constants.ts","webpack://AdaptiveCards/./src/controls/index.ts","webpack://AdaptiveCards/./src/controls/menu-item.ts","webpack://AdaptiveCards/./src/controls/popup-control.ts","webpack://AdaptiveCards/./src/controls/popup-menu.ts","webpack://AdaptiveCards/./src/enums.ts","webpack://AdaptiveCards/./src/host-capabilities.ts","webpack://AdaptiveCards/./src/host-config.ts","webpack://AdaptiveCards/./src/registry.ts","webpack://AdaptiveCards/./src/serialization.ts","webpack://AdaptiveCards/./src/shared.ts","webpack://AdaptiveCards/./src/strings.ts","webpack://AdaptiveCards/./src/table.ts","webpack://AdaptiveCards/./src/text-formatters.ts","webpack://AdaptiveCards/./src/utils.ts","webpack://AdaptiveCards/webpack/bootstrap","webpack://AdaptiveCards/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AdaptiveCards\"] = factory();\n\telse\n\t\troot[\"AdaptiveCards\"] = factory();\n})(this, function() {\nreturn ","import { Authentication, AuthCardButton, ExecuteAction, TokenExchangeResource } from \"./card-elements\";\n\nexport enum ActivityRequestTrigger {\n Automatic = \"automatic\",\n Manual = \"manual\",\n}\n\nexport interface IActivityRequest {\n readonly action: ExecuteAction;\n readonly trigger: ActivityRequestTrigger;\n readonly attemptNumber: number;\n readonly consecutiveRefreshes: number;\n\n authCode?: string;\n authToken?: string;\n\n retryAsync(): void;\n}\n\nexport class ActivityRequestError {\n constructor(readonly code?: string, readonly message?: string) { }\n}\n\nexport abstract class ActivityResponse {\n constructor(readonly request: IActivityRequest) { }\n}\n\nexport class SuccessResponse extends ActivityResponse {\n constructor(readonly request: IActivityRequest, readonly rawContent?: string) {\n super(request);\n }\n}\n\nexport class ErrorResponse extends ActivityResponse {\n constructor(readonly request: IActivityRequest, readonly error: ActivityRequestError) {\n super(request);\n }\n}\n\nexport class LoginRequestResponse extends ActivityResponse {\n readonly signinButton?: AuthCardButton;\n\n constructor(readonly request: IActivityRequest, private _auth: Authentication) {\n super(request);\n\n for (let button of this._auth.buttons) {\n if (button.type === \"signin\" && button.value !== undefined) {\n try {\n new URL(button.value);\n\n this.signinButton = button;\n\n break;\n }\n catch (e) {\n // Ignore parsing error\n }\n }\n }\n }\n\n get tokenExchangeResource(): TokenExchangeResource | undefined {\n return this._auth.tokenExchangeResource;\n }\n}","import * as Enums from \"./enums\";\nimport * as Utils from \"./utils\";\nimport { GlobalSettings } from \"./shared\";\nimport { ChannelAdapter } from \"./channel-adapter\";\nimport { ActivityResponse, IActivityRequest, ActivityRequestTrigger, SuccessResponse, ErrorResponse, LoginRequestResponse } from \"./activity-request\";\nimport { Strings } from \"./strings\";\nimport { SubmitAction, ExecuteAction, SerializationContext, AdaptiveCard, Action, Input, Authentication, TokenExchangeResource, AuthCardButton, CardElement } from \"./card-elements\";\nimport { Versions } from \"./serialization\";\nimport { HostConfig } from \"./host-config\";\n\nfunction logEvent(level: Enums.LogLevel, message?: any, ...optionalParams: any[]) {\n if (GlobalSettings.applets.logEnabled) {\n if (GlobalSettings.applets.onLogEvent) {\n GlobalSettings.applets.onLogEvent(level, message, optionalParams);\n }\n else {\n switch (level) {\n case Enums.LogLevel.Warning:\n console.warn(message, optionalParams);\n break;\n case Enums.LogLevel.Error:\n console.error(message, optionalParams);\n break;\n default:\n console.log(message, optionalParams);\n break;\n }\n }\n }\n}\n\nclass ActivityRequest implements IActivityRequest {\n constructor(\n readonly action: ExecuteAction,\n readonly trigger: ActivityRequestTrigger,\n readonly consecutiveRefreshes: number) { }\n\n authCode?: string;\n authToken?: string;\n attemptNumber: number = 0;\n\n onSend: (sender: ActivityRequest) => void;\n\n async retryAsync(): Promise {\n if (this.onSend) {\n this.onSend(this);\n }\n }\n}\n\nexport class AdaptiveApplet {\n private static readonly submitMagicCodeActionId = \"submitMagicCode\";\n private static readonly cancelMagicCodeAuthActionId = \"cancelMagicCodeAuth\";\n\n private _card?: AdaptiveCard;\n private _cardPayload: any;\n private _allowAutomaticCardUpdate: boolean = false;\n private _refreshButtonHostElement: HTMLElement;\n private _cardHostElement: HTMLElement;\n private _progressOverlay?: HTMLElement;\n\n private displayCard(card: AdaptiveCard) {\n if (card.renderedElement) {\n Utils.clearElementChildren(this._cardHostElement);\n\n this._refreshButtonHostElement.style.display = \"none\";\n\n this._cardHostElement.appendChild(card.renderedElement);\n }\n else {\n throw new Error(\"displayCard: undefined card.\");\n }\n }\n\n private showManualRefreshButton(refreshAction: ExecuteAction) {\n let displayBuiltInManualRefreshButton = this.onShowManualRefreshButton ? this.onShowManualRefreshButton(this) : true;\n\n if (displayBuiltInManualRefreshButton) {\n this._refreshButtonHostElement.style.display = \"none\";\n\n let renderedRefreshButton: HTMLElement | undefined = undefined;\n\n if (this.onRenderManualRefreshButton) {\n renderedRefreshButton = this.onRenderManualRefreshButton(this);\n }\n else {\n let message = Strings.runtime.refreshThisCard();\n \n if (GlobalSettings.applets.refresh.mode === Enums.RefreshMode.Automatic) {\n let autoRefreshPausedMessage = Strings.runtime.automaticRefreshPaused();\n\n if (autoRefreshPausedMessage[autoRefreshPausedMessage.length - 1] !== \" \") {\n autoRefreshPausedMessage += \" \";\n }\n\n message = Strings.runtime.clckToRestartAutomaticRefresh();\n }\n\n let cardPayload = {\n type: \"AdaptiveCard\",\n version: \"1.2\",\n body: [\n {\n type: \"RichTextBlock\",\n horizontalAlignment: \"right\",\n inlines: [\n {\n type: \"TextRun\",\n text: message,\n selectAction: {\n type: \"Action.Submit\",\n id: \"refreshCard\"\n }\n }\n ]\n }\n ]\n };\n\n let card = new AdaptiveCard();\n card.parse(cardPayload, new SerializationContext(Versions.v1_2));\n card.onExecuteAction = (action: Action) => {\n if (action.id === \"refreshCard\") {\n Utils.clearElementChildren(this._refreshButtonHostElement);\n \n this.internalExecuteAction(refreshAction, ActivityRequestTrigger.Automatic, 0);\n }\n }\n\n renderedRefreshButton = card.render();\n }\n\n if (renderedRefreshButton) {\n Utils.clearElementChildren(this._refreshButtonHostElement);\n\n this._refreshButtonHostElement.appendChild(renderedRefreshButton);\n\n this._refreshButtonHostElement.style.removeProperty(\"display\");\n }\n }\n }\n\n private createActivityRequest(action: ExecuteAction, trigger: ActivityRequestTrigger, consecutiveRefreshes: number): ActivityRequest | undefined {\n if (this.card) {\n let request = new ActivityRequest(action, trigger, consecutiveRefreshes);\n request.onSend = (sender: ActivityRequest) => {\n sender.attemptNumber++;\n\n this.internalSendActivityRequestAsync(request);\n }\n\n let cancel = this.onPrepareActivityRequest ? !this.onPrepareActivityRequest(this, request, action) : false;\n\n return cancel ? undefined : request;\n }\n else {\n throw new Error(\"createActivityRequest: no card has been set.\");\n }\n }\n\n private createMagicCodeInputCard(attemptNumber: number): AdaptiveCard {\n let payload = {\n type: \"AdaptiveCard\",\n version: \"1.0\",\n body: [\n {\n type: \"TextBlock\",\n color: \"attention\",\n text: attemptNumber === 1 ? undefined : \"That didn't work... let's try again.\",\n wrap: true,\n horizontalAlignment: \"center\"\n },\n {\n type: \"TextBlock\",\n text: \"Please login in the popup. You will obtain a magic code. Paste that code below and select \\\"Submit\\\"\",\n wrap: true,\n horizontalAlignment: \"center\"\n },\n {\n type: \"Input.Text\",\n id: \"magicCode\",\n placeholder: \"Enter magic code\"\n },\n {\n type: \"ActionSet\",\n horizontalAlignment: \"center\",\n actions: [\n {\n type: \"Action.Submit\",\n id: AdaptiveApplet.submitMagicCodeActionId,\n title: \"Submit\"\n },\n {\n type: \"Action.Submit\",\n id: AdaptiveApplet.cancelMagicCodeAuthActionId,\n title: \"Cancel\"\n }\n ]\n }\n ]\n };\n\n let card = new AdaptiveCard();\n card.parse(payload);\n\n return card;\n }\n\n private cancelAutomaticRefresh() {\n if (this._allowAutomaticCardUpdate) {\n logEvent(Enums.LogLevel.Warning, \"Automatic card refresh has been cancelled as a result of the user interacting with the card.\");\n }\n\n this._allowAutomaticCardUpdate = false;\n }\n\n private createSerializationContext(): SerializationContext {\n return this.onCreateSerializationContext ? this.onCreateSerializationContext(this) : new SerializationContext();\n }\n\n private internalSetCard(payload: any, consecutiveRefreshes: number) {\n if (typeof payload === \"object\" && payload[\"type\"] === \"AdaptiveCard\") {\n this._cardPayload = payload;\n }\n\n if (this._cardPayload) {\n try {\n let card = new AdaptiveCard();\n\n if (this.hostConfig) {\n card.hostConfig = this.hostConfig;\n }\n\n let serializationContext = this.createSerializationContext();\n\n card.parse(this._cardPayload, serializationContext);\n\n let doChangeCard = this.onCardChanging ? this.onCardChanging(this, this._cardPayload) : true;\n\n if (doChangeCard) {\n this._card = card;\n\n if (this._card.authentication && this._card.authentication.tokenExchangeResource && this.onPrefetchSSOToken) {\n this.onPrefetchSSOToken(this, this._card.authentication.tokenExchangeResource);\n }\n\n this._card.onExecuteAction = (action: Action) => {\n // If the user takes an action, cancel any pending automatic refresh\n this.cancelAutomaticRefresh();\n\n this.internalExecuteAction(action, ActivityRequestTrigger.Manual, 0);\n }\n this._card.onInputValueChanged = (input: Input) => {\n // If the user modifies an input, cancel any pending automatic refresh\n this.cancelAutomaticRefresh();\n }\n\n this._card.render();\n\n if (this._card.renderedElement) {\n this.displayCard(this._card);\n\n if (this.onCardChanged) {\n this.onCardChanged(this);\n }\n\n if (this._card.refresh) {\n if (GlobalSettings.applets.refresh.mode === Enums.RefreshMode.Automatic && consecutiveRefreshes < GlobalSettings.applets.refresh.maximumConsecutiveAutomaticRefreshes) {\n if (GlobalSettings.applets.refresh.timeBetweenAutomaticRefreshes <= 0) {\n logEvent(Enums.LogLevel.Info, \"Triggering automatic card refresh number \" + (consecutiveRefreshes + 1));\n\n this.internalExecuteAction(this._card.refresh.action, ActivityRequestTrigger.Automatic, consecutiveRefreshes + 1);\n }\n else {\n logEvent(Enums.LogLevel.Info, \"Scheduling automatic card refresh number \" + (consecutiveRefreshes + 1) + \" in \" + GlobalSettings.applets.refresh.timeBetweenAutomaticRefreshes + \"ms\");\n\n let action = this._card.refresh.action;\n\n this._allowAutomaticCardUpdate = true;\n\n window.setTimeout(\n () => {\n if (this._allowAutomaticCardUpdate) {\n this.internalExecuteAction(action, ActivityRequestTrigger.Automatic, consecutiveRefreshes + 1);\n }\n },\n GlobalSettings.applets.refresh.timeBetweenAutomaticRefreshes\n )\n }\n }\n else if (GlobalSettings.applets.refresh.mode !== Enums.RefreshMode.Disabled) {\n if (consecutiveRefreshes > 0) {\n logEvent(Enums.LogLevel.Warning, \"Stopping automatic refreshes after \" + consecutiveRefreshes + \" consecutive refreshes.\");\n }\n else {\n logEvent(Enums.LogLevel.Warning, \"The card has a refresh section, but automatic refreshes are disabled.\");\n }\n\n if (GlobalSettings.applets.refresh.allowManualRefreshesAfterAutomaticRefreshes || GlobalSettings.applets.refresh.mode === Enums.RefreshMode.Manual) {\n logEvent(Enums.LogLevel.Info, \"Showing manual refresh button.\");\n\n this.showManualRefreshButton(this._card.refresh.action);\n }\n }\n }\n }\n }\n }\n catch (error) {\n // Ignore all errors\n logEvent(Enums.LogLevel.Error, \"setCard: \" + error);\n }\n }\n }\n\n private internalExecuteAction(action: Action, trigger: ActivityRequestTrigger, consecutiveRefreshes: number) {\n if (action instanceof ExecuteAction) {\n if (this.channelAdapter) {\n let request = this.createActivityRequest(action, trigger, consecutiveRefreshes);\n\n if (request) {\n request.retryAsync();\n }\n }\n else {\n throw new Error(\"internalExecuteAction: No channel adapter set.\");\n }\n }\n\n if (this.onAction) {\n this.onAction(this, action);\n }\n }\n\n private createProgressOverlay(request: ActivityRequest): HTMLElement | undefined {\n if (!this._progressOverlay) {\n if (this.onCreateProgressOverlay) {\n this._progressOverlay = this.onCreateProgressOverlay(this, request);\n }\n else {\n this._progressOverlay = document.createElement(\"div\");\n this._progressOverlay.className = \"aaf-progress-overlay\";\n\n let spinner = document.createElement(\"div\");\n spinner.className = \"aaf-spinner\";\n spinner.style.width = \"28px\";\n spinner.style.height = \"28px\";\n\n this._progressOverlay.appendChild(spinner);\n }\n }\n\n return this._progressOverlay;\n }\n\n private removeProgressOverlay(request: IActivityRequest) {\n if (this.onRemoveProgressOverlay) {\n this.onRemoveProgressOverlay(this, request);\n }\n \n if (this._progressOverlay !== undefined) {\n this.renderedElement.removeChild(this._progressOverlay);\n\n this._progressOverlay = undefined;\n }\n }\n\n private activityRequestSucceeded(response: SuccessResponse, parsedContent: string | AdaptiveCard | undefined) {\n if (this.onActivityRequestSucceeded) {\n this.onActivityRequestSucceeded(this, response, parsedContent);\n }\n }\n\n private activityRequestFailed(response: ErrorResponse): number {\n return this.onActivityRequestFailed ? this.onActivityRequestFailed(this, response) : GlobalSettings.applets.defaultTimeBetweenRetryAttempts;\n }\n\n private showAuthCodeInputDialog(request: ActivityRequest) {\n let showBuiltInAuthCodeInputCard = this.onShowAuthCodeInputDialog ? this.onShowAuthCodeInputDialog(this, request) : true;\n\n if (showBuiltInAuthCodeInputCard) {\n let authCodeInputCard = this.createMagicCodeInputCard(request.attemptNumber);\n authCodeInputCard.render();\n authCodeInputCard.onExecuteAction = (submitMagicCodeAction: Action) => {\n if (this.card && submitMagicCodeAction instanceof SubmitAction) {\n switch (submitMagicCodeAction.id) {\n case AdaptiveApplet.submitMagicCodeActionId:\n let authCode: string | undefined = undefined;\n\n if (submitMagicCodeAction.data && typeof (submitMagicCodeAction.data)[\"magicCode\"] === \"string\") {\n authCode = (submitMagicCodeAction.data)[\"magicCode\"];\n }\n\n if (authCode) {\n this.displayCard(this.card);\n\n request.authCode = authCode;\n request.retryAsync();\n }\n else {\n alert(\"Please enter the magic code you received.\");\n }\n\n break;\n case AdaptiveApplet.cancelMagicCodeAuthActionId:\n logEvent(Enums.LogLevel.Warning, \"Authentication cancelled by user.\");\n\n this.displayCard(this.card);\n\n break;\n default:\n logEvent(Enums.LogLevel.Error, \"Unespected action taken from magic code input card (id = \" + submitMagicCodeAction.id + \")\");\n\n alert(Strings.magicCodeInputCard.somethingWentWrong());\n\n break;\n }\n }\n }\n\n this.displayCard(authCodeInputCard);\n }\n }\n\n private async internalSendActivityRequestAsync(request: ActivityRequest) {\n if (!this.channelAdapter) {\n throw new Error(\"internalSendActivityRequestAsync: channelAdapter is not set.\")\n }\n\n let overlay = this.createProgressOverlay(request);\n\n if (overlay !== undefined) {\n this.renderedElement.appendChild(overlay);\n }\n\n let done = false;\n\n while (!done) {\n let response: ActivityResponse | undefined = undefined;\n\n if (request.attemptNumber === 1) {\n logEvent(Enums.LogLevel.Info, \"Sending activity request to channel (attempt \" + request.attemptNumber + \")\");\n }\n else {\n logEvent(Enums.LogLevel.Info, \"Re-sending activity request to channel (attempt \" + request.attemptNumber + \")\");\n }\n\n try {\n response = await this.channelAdapter.sendRequestAsync(request);\n }\n catch (error) {\n logEvent(Enums.LogLevel.Error, \"Activity request failed: \" + error);\n\n this.removeProgressOverlay(request);\n\n done = true;\n }\n\n if (response) {\n if (response instanceof SuccessResponse) {\n this.removeProgressOverlay(request);\n\n if (response.rawContent === undefined) {\n throw new Error(\"internalSendActivityRequestAsync: Action.Execute result is undefined\");\n }\n\n let parsedContent = response.rawContent;\n\n try {\n parsedContent = JSON.parse(response.rawContent);\n }\n catch {\n // Leave parseContent as is\n }\n\n if (typeof parsedContent === \"string\") {\n logEvent(Enums.LogLevel.Info, \"The activity request returned a string after \" + request.attemptNumber + \" attempt(s).\");\n\n this.activityRequestSucceeded(response, parsedContent);\n }\n else if (typeof parsedContent === \"object\" && parsedContent[\"type\"] === \"AdaptiveCard\") {\n logEvent(Enums.LogLevel.Info, \"The activity request returned an Adaptive Card after \" + request.attemptNumber + \" attempt(s).\");\n\n this.internalSetCard(parsedContent, request.consecutiveRefreshes);\n this.activityRequestSucceeded(response, this.card);\n }\n else {\n throw new Error(\"internalSendActivityRequestAsync: Action.Execute result is of unsupported type (\" + typeof response.rawContent + \")\");\n }\n\n done = true;\n }\n else if (response instanceof ErrorResponse) {\n let retryIn: number = this.activityRequestFailed(response);\n\n if (retryIn >= 0 && request.attemptNumber < GlobalSettings.applets.maximumRetryAttempts) {\n logEvent(\n Enums.LogLevel.Warning,\n `Activity request failed: ${response.error.message}. Retrying in ${retryIn}ms`);\n\n request.attemptNumber++;\n\n await new Promise(\n (resolve, reject) => {\n window.setTimeout(\n () => { resolve(); },\n retryIn\n )\n });\n }\n else {\n logEvent(\n Enums.LogLevel.Error,\n `Activity request failed: ${response.error.message}. Giving up after ${request.attemptNumber} attempt(s)`);\n\n this.removeProgressOverlay(request);\n\n done = true;\n }\n }\n else if (response instanceof LoginRequestResponse) {\n logEvent(Enums.LogLevel.Info, \"The activity request returned a LoginRequestResponse after \" + request.attemptNumber + \" attempt(s).\");\n\n if (request.attemptNumber <= GlobalSettings.applets.maximumRetryAttempts) {\n let attemptOAuth = true;\n\n if (response.tokenExchangeResource && this.onSSOTokenNeeded) {\n // Attempt to use SSO. The host will return true if it can handle SSO, in which case\n // we bypass OAuth\n attemptOAuth = !this.onSSOTokenNeeded(this, request, response.tokenExchangeResource);\n }\n\n if (attemptOAuth) {\n // Attempt to use OAuth\n this.removeProgressOverlay(request);\n \n if (response.signinButton === undefined) {\n throw new Error(\"internalSendActivityRequestAsync: the login request doesn't contain a valid signin URL.\");\n }\n\n logEvent(Enums.LogLevel.Info, \"Login required at \" + response.signinButton.value);\n\n if (this.onShowSigninPrompt) {\n // Bypass the built-in auth prompt if the host app handles it\n this.onShowSigninPrompt(this, request, response.signinButton);\n }\n else {\n this.showAuthCodeInputDialog(request);\n\n let left = window.screenX + (window.outerWidth - GlobalSettings.applets.authPromptWidth) / 2;\n let top = window.screenY + (window.outerHeight - GlobalSettings.applets.authPromptHeight) / 2;\n\n window.open(\n response.signinButton.value,\n response.signinButton.title ? response.signinButton.title : \"Sign in\",\n `width=${GlobalSettings.applets.authPromptWidth},height=${GlobalSettings.applets.authPromptHeight},left=${left},top=${top}`);\n }\n }\n }\n else {\n logEvent(Enums.LogLevel.Error, \"Authentication failed. Giving up after \" + request.attemptNumber + \" attempt(s)\");\n\n alert(Strings.magicCodeInputCard.authenticationFailed());\n }\n\n // Exit the loop. After a LoginRequestResponse, the host app is responsible for retrying the request\n break;\n }\n else {\n throw new Error(\"Unhandled response type: \" + response.toString());\n }\n }\n }\n }\n\n readonly renderedElement: HTMLElement;\n\n hostConfig?: HostConfig;\n channelAdapter?: ChannelAdapter;\n\n onCardChanging?: (sender: AdaptiveApplet, card: any) => boolean;\n onCardChanged?: (sender: AdaptiveApplet) => void;\n onPrefetchSSOToken?: (sender: AdaptiveApplet, tokenExchangeResource: TokenExchangeResource) => void;\n onSSOTokenNeeded?: (sender: AdaptiveApplet, request: IActivityRequest, tokenExchangeResource: TokenExchangeResource) => boolean;\n onPrepareActivityRequest?: (sender: AdaptiveApplet, request: IActivityRequest, action: ExecuteAction) => boolean;\n onActivityRequestSucceeded?: (sender: AdaptiveApplet, response: SuccessResponse, parsedContent: string | AdaptiveCard | undefined) => void;\n onActivityRequestFailed?: (sender: AdaptiveApplet, response: ErrorResponse) => number;\n onCreateSerializationContext?: (sender: AdaptiveApplet) => SerializationContext;\n onCreateProgressOverlay?: (sender: AdaptiveApplet, request: IActivityRequest) => HTMLElement | undefined;\n onRemoveProgressOverlay?: (sender: AdaptiveApplet, request: IActivityRequest) => void;\n onRenderManualRefreshButton?: (sender: AdaptiveApplet) => HTMLElement | undefined;\n onAction?: (sender: AdaptiveApplet, action: Action) => void;\n onShowManualRefreshButton?: (sender: AdaptiveApplet) => boolean;\n onShowAuthCodeInputDialog?: (sender: AdaptiveApplet, request: IActivityRequest) => boolean;\n onShowSigninPrompt?: (sender: AdaptiveApplet, request: IActivityRequest, signinButton: AuthCardButton) => void;\n\n constructor() {\n this.renderedElement = document.createElement(\"div\");\n this.renderedElement.className = \"aaf-cardHost\"\n this.renderedElement.style.position = \"relative\";\n this.renderedElement.style.display = \"flex\";\n this.renderedElement.style.flexDirection = \"column\";\n\n this._cardHostElement = document.createElement(\"div\");\n\n this._refreshButtonHostElement = document.createElement(\"div\");\n this._refreshButtonHostElement.className = \"aaf-refreshButtonHost\"; \n this._refreshButtonHostElement.style.display = \"none\";\n\n this.renderedElement.appendChild(this._cardHostElement);\n this.renderedElement.appendChild(this._refreshButtonHostElement);\n }\n\n refreshCard() {\n if (this._card && this._card.refresh) {\n this.internalExecuteAction(this._card.refresh.action, ActivityRequestTrigger.Manual, 0);\n }\n }\n\n setCard(payload: any) {\n this.internalSetCard(payload, 0);\n }\n\n get card(): AdaptiveCard | undefined {\n return this._card;\n }\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nexport * from \"./strings\";\nexport * from \"./enums\";\nexport * from \"./shared\";\nexport * from \"./utils\";\nexport * from \"./serialization\";\nexport * from \"./host-capabilities\";\nexport * from \"./host-config\";\nexport * from \"./registry\";\nexport * from \"./card-object\";\nexport * from \"./card-elements\";\nexport * from \"./table\";\nexport * from \"./channel-adapter\";\nexport * from \"./activity-request\";\nexport * from \"./adaptive-applet\";\n\nexport { IAdaptiveCard, ICardElement } from \"./schema\";","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport * as Enums from \"./enums\";\nimport { PaddingDefinition, GlobalSettings, SizeAndUnit,SpacingDefinition, ISeparationDefinition,\n Dictionary, StringWithSubstitutions, ContentTypes, IInput, IResourceInformation } from \"./shared\";\nimport * as Utils from \"./utils\";\nimport { HostConfig, defaultHostConfig, BaseTextDefinition, FontTypeDefinition, ColorSetDefinition, TextColorDefinition, ContainerStyleDefinition, TextStyleDefinition } from \"./host-config\";\nimport * as TextFormatters from \"./text-formatters\";\nimport { CardObject, ValidationResults } from \"./card-object\";\nimport { Versions, Version, property, BaseSerializationContext, SerializableObject, SerializableObjectSchema, StringProperty,\n BoolProperty, ValueSetProperty, EnumProperty, SerializableObjectCollectionProperty, SerializableObjectProperty, PixelSizeProperty,\n NumProperty, PropertyBag, CustomProperty, PropertyDefinition, StringArrayProperty } from \"./serialization\";\nimport { CardObjectRegistry, GlobalRegistry } from \"./registry\";\nimport { Strings } from \"./strings\";\nimport { MenuItem, PopupMenu } from \"./controls\";\n\nexport function renderSeparation(hostConfig: HostConfig, separationDefinition: ISeparationDefinition, orientation: Enums.Orientation): HTMLElement | undefined {\n if (separationDefinition.spacing > 0 || (separationDefinition.lineThickness && separationDefinition.lineThickness > 0)) {\n let separator = document.createElement(\"div\");\n separator.className = hostConfig.makeCssClassName(\"ac-\" + (orientation == Enums.Orientation.Horizontal ? \"horizontal\" : \"vertical\") + \"-separator\");\n separator.setAttribute(\"aria-hidden\", \"true\");\n\n let color = separationDefinition.lineColor ? Utils.stringToCssColor(separationDefinition.lineColor) : \"\";\n\n if (orientation == Enums.Orientation.Horizontal) {\n if (separationDefinition.lineThickness) {\n separator.style.paddingTop = (separationDefinition.spacing / 2) + \"px\";\n separator.style.marginBottom = (separationDefinition.spacing / 2) + \"px\";\n separator.style.borderBottom = separationDefinition.lineThickness + \"px solid \" + color;\n }\n else {\n separator.style.height = separationDefinition.spacing + \"px\";\n }\n }\n else {\n if (separationDefinition.lineThickness) {\n separator.style.paddingLeft = (separationDefinition.spacing / 2) + \"px\";\n separator.style.marginRight = (separationDefinition.spacing / 2) + \"px\";\n separator.style.borderRight = separationDefinition.lineThickness + \"px solid \" + color;\n }\n else {\n separator.style.width = separationDefinition.spacing + \"px\";\n }\n }\n\n separator.style.overflow = \"hidden\";\n separator.style.flex = \"0 0 auto\";\n\n return separator;\n }\n else {\n return undefined;\n }\n}\n\nexport type CardElementHeight = \"auto\" | \"stretch\";\n\nexport abstract class CardElement extends CardObject {\n //#region Schema\n\n static readonly langProperty = new StringProperty(Versions.v1_1, \"lang\", true, /^[a-z]{2,3}$/ig);\n static readonly isVisibleProperty = new BoolProperty(Versions.v1_2, \"isVisible\", true);\n static readonly separatorProperty = new BoolProperty(Versions.v1_0, \"separator\", false);\n static readonly heightProperty = new ValueSetProperty(\n Versions.v1_1,\n \"height\",\n [\n { value: \"auto\" },\n { value: \"stretch\" }\n ],\n \"auto\");\n static readonly horizontalAlignmentProperty = new EnumProperty(\n Versions.v1_0,\n \"horizontalAlignment\",\n Enums.HorizontalAlignment);\n static readonly spacingProperty = new EnumProperty(\n Versions.v1_0,\n \"spacing\",\n Enums.Spacing,\n Enums.Spacing.Default);\n\n @property(CardElement.horizontalAlignmentProperty)\n horizontalAlignment?: Enums.HorizontalAlignment;\n\n @property(CardElement.spacingProperty)\n spacing: Enums.Spacing;\n\n @property(CardElement.separatorProperty)\n separator: boolean;\n\n @property(CardElement.heightProperty)\n height: CardElementHeight;\n\n @property(CardElement.langProperty)\n get lang(): string | undefined {\n let lang = this.getValue(CardElement.langProperty);\n\n if (lang) {\n return lang;\n }\n else {\n if (this.parent) {\n return this.parent.lang;\n }\n else {\n return undefined;\n }\n }\n }\n\n set lang(value: string | undefined) {\n this.setValue(CardElement.langProperty, value);\n }\n\n @property(CardElement.isVisibleProperty)\n get isVisible(): boolean {\n return this.getValue(CardElement.isVisibleProperty);\n }\n\n set isVisible(value: boolean) {\n // If the element is going to be hidden, reset any changes that were due\n // to overflow truncation (this ensures that if the element is later\n // un-hidden it has the right content)\n if (GlobalSettings.useAdvancedCardBottomTruncation && !value) {\n this.undoOverflowTruncation();\n }\n\n if (this.isVisible !== value) {\n this.setValue(CardElement.isVisibleProperty, value);\n\n this.updateRenderedElementVisibility();\n\n if (this._renderedElement) {\n raiseElementVisibilityChangedEvent(this);\n }\n }\n\n if (this._renderedElement) {\n this._renderedElement.setAttribute(\"aria-expanded\", value.toString());\n }\n }\n\n //#endregion\n\n private _hostConfig?: HostConfig;\n private _separatorElement?: HTMLElement;\n private _truncatedDueToOverflow: boolean = false;\n private _defaultRenderedElementDisplayMode?: string;\n private _padding?: PaddingDefinition;\n\n private internalRenderSeparator(): HTMLElement | undefined {\n let renderedSeparator = renderSeparation(\n this.hostConfig,\n {\n spacing: this.hostConfig.getEffectiveSpacing(this.spacing),\n lineThickness: this.separator ? this.hostConfig.separator.lineThickness : undefined,\n lineColor: this.separator ? this.hostConfig.separator.lineColor : undefined\n },\n this.separatorOrientation);\n\n if (GlobalSettings.alwaysBleedSeparators && renderedSeparator && this.separatorOrientation == Enums.Orientation.Horizontal) {\n // Adjust separator's margins if the option to always bleed separators is turned on\n let parentContainer = this.getParentContainer();\n\n if (parentContainer && parentContainer.getEffectivePadding()) {\n let parentPhysicalPadding = this.hostConfig.paddingDefinitionToSpacingDefinition(parentContainer.getEffectivePadding());\n\n renderedSeparator.style.marginLeft = \"-\" + parentPhysicalPadding.left + \"px\";\n renderedSeparator.style.marginRight = \"-\" + parentPhysicalPadding.right + \"px\";\n }\n }\n\n return renderedSeparator;\n }\n\n private updateRenderedElementVisibility() {\n let displayMode = this.isDesignMode() || this.isVisible ? this._defaultRenderedElementDisplayMode : \"none\";\n\n if (this._renderedElement) {\n if (displayMode) {\n this._renderedElement.style.display = displayMode;\n }\n else {\n this._renderedElement.style.removeProperty(\"display\");\n }\n }\n\n if (this._separatorElement) {\n if (this.parent && this.parent.isFirstElement(this)) {\n this._separatorElement.style.display = \"none\";\n }\n else {\n if (displayMode) {\n this._separatorElement.style.display = displayMode;\n }\n else {\n this._separatorElement.style.removeProperty(\"display\");\n }\n }\n }\n }\n\n private hideElementDueToOverflow() {\n if (this._renderedElement && this.isVisible) {\n this._renderedElement.style.visibility = \"hidden\";\n\n this.isVisible = false;\n raiseElementVisibilityChangedEvent(this, false);\n }\n }\n\n private showElementHiddenDueToOverflow() {\n if (this._renderedElement && !this.isVisible) {\n this._renderedElement.style.removeProperty(\"visibility\");\n\n this.isVisible = true;\n raiseElementVisibilityChangedEvent(this, false);\n }\n }\n\n // Marked private to emulate internal access\n private handleOverflow(maxHeight: number) {\n if (this.isVisible || this.isHiddenDueToOverflow()) {\n let handled = this.truncateOverflow(maxHeight);\n\n // Even if we were unable to truncate the element to fit this time,\n // it still could have been previously truncated\n this._truncatedDueToOverflow = handled || this._truncatedDueToOverflow;\n\n if (!handled) {\n this.hideElementDueToOverflow();\n }\n else if (handled && !this.isVisible) {\n this.showElementHiddenDueToOverflow();\n }\n }\n }\n\n // Marked private to emulate internal access\n private resetOverflow(): boolean {\n let sizeChanged = false;\n\n if (this._truncatedDueToOverflow) {\n this.undoOverflowTruncation();\n this._truncatedDueToOverflow = false;\n sizeChanged = true;\n }\n\n if (this.isHiddenDueToOverflow()) {\n this.showElementHiddenDueToOverflow();\n }\n\n return sizeChanged;\n }\n\n protected getDefaultSerializationContext(): BaseSerializationContext {\n return new SerializationContext();\n }\n\n protected createPlaceholderElement(): HTMLElement {\n let styleDefinition = this.getEffectiveStyleDefinition();\n let foregroundCssColor = Utils.stringToCssColor(styleDefinition.foregroundColors.default.subtle);\n\n let element = document.createElement(\"div\");\n element.style.border = \"1px dashed \" + foregroundCssColor;\n element.style.padding = \"4px\";\n element.style.minHeight = \"32px\";\n element.style.fontSize = \"10px\";\n element.style.color = foregroundCssColor;\n element.innerText = \"Empty \" + this.getJsonTypeName();\n\n return element;\n }\n\n protected adjustRenderedElementSize(renderedElement: HTMLElement) {\n if (this.height === \"auto\") {\n renderedElement.style.flex = \"0 0 auto\";\n }\n else {\n renderedElement.style.flex = \"1 1 auto\";\n }\n }\n\n protected isDisplayed(): boolean {\n return this._renderedElement !== undefined && this.isVisible && this._renderedElement.offsetHeight > 0;\n }\n\n protected abstract internalRender(): HTMLElement | undefined;\n\n protected overrideInternalRender(): HTMLElement | undefined {\n return this.internalRender();\n }\n\n protected applyPadding() {\n if (this.separatorElement && this.separatorOrientation === Enums.Orientation.Horizontal) {\n if (GlobalSettings.alwaysBleedSeparators && !this.isBleeding()) {\n let padding = new PaddingDefinition();\n\n this.getImmediateSurroundingPadding(padding);\n\n let physicalPadding = this.hostConfig.paddingDefinitionToSpacingDefinition(padding);\n\n this.separatorElement.style.marginLeft = \"-\" + physicalPadding.left + \"px\";\n this.separatorElement.style.marginRight = \"-\" + physicalPadding.right + \"px\";\n }\n else {\n this.separatorElement.style.marginRight = \"0\";\n this.separatorElement.style.marginLeft = \"0\";\n }\n }\n }\n\n /*\n * Called when this element overflows the bottom of the card.\n * maxHeight will be the amount of space still available on the card (0 if\n * the element is fully off the card).\n */\n protected truncateOverflow(maxHeight: number): boolean {\n // Child implementations should return true if the element handled\n // the truncation request such that its content fits within maxHeight,\n // false if the element should fall back to being hidden\n return false;\n }\n\n /*\n * This should reverse any changes performed in truncateOverflow().\n */\n protected undoOverflowTruncation() { }\n\n protected getDefaultPadding(): PaddingDefinition {\n return new PaddingDefinition();\n }\n\n protected getHasBackground(): boolean {\n return false;\n }\n\n protected getHasBorder(): boolean {\n return false;\n }\n\n protected getPadding(): PaddingDefinition | undefined {\n return this._padding;\n }\n\n protected setPadding(value: PaddingDefinition | undefined) {\n this._padding = value;\n }\n\n protected shouldSerialize(context: SerializationContext): boolean {\n return context.elementRegistry.findByName(this.getJsonTypeName()) !== undefined;\n }\n\n protected get useDefaultSizing(): boolean {\n return true;\n }\n\n protected get separatorOrientation(): Enums.Orientation {\n return Enums.Orientation.Horizontal;\n }\n\n protected get defaultStyle(): string {\n return Enums.ContainerStyle.Default;\n }\n\n customCssSelector?: string;\n\n parse(source: any, context?: SerializationContext) {\n super.parse(source, context ? context : new SerializationContext());\n }\n\n asString(): string | undefined {\n return \"\";\n }\n\n isBleeding(): boolean {\n return false;\n }\n\n getEffectiveStyle(): string {\n if (this.parent) {\n return this.parent.getEffectiveStyle();\n }\n\n return this.defaultStyle;\n }\n\n getEffectiveStyleDefinition(): ContainerStyleDefinition {\n return this.hostConfig.containerStyles.getStyleByName(this.getEffectiveStyle());\n }\n\n getEffectiveTextStyleDefinition(): TextStyleDefinition {\n if (this.parent) {\n return this.parent.getEffectiveTextStyleDefinition();\n }\n\n return this.hostConfig.textStyles.default;\n }\n\n getForbiddenActionTypes(): ActionType[] {\n return [];\n }\n\n getImmediateSurroundingPadding(\n result: PaddingDefinition,\n processTop: boolean = true,\n processRight: boolean = true,\n processBottom: boolean = true,\n processLeft: boolean = true) {\n if (this.parent) {\n let doProcessTop = processTop && this.parent.isTopElement(this);\n let doProcessRight = processRight && this.parent.isRightMostElement(this);\n let doProcessBottom = processBottom && this.parent.isBottomElement(this);\n let doProcessLeft = processLeft && this.parent.isLeftMostElement(this);\n\n let effectivePadding = this.parent.getEffectivePadding();\n\n if (effectivePadding) {\n if (doProcessTop && effectivePadding.top != Enums.Spacing.None) {\n result.top = effectivePadding.top;\n\n doProcessTop = false;\n }\n\n if (doProcessRight && effectivePadding.right != Enums.Spacing.None) {\n result.right = effectivePadding.right;\n\n doProcessRight = false;\n }\n\n if (doProcessBottom && effectivePadding.bottom != Enums.Spacing.None) {\n result.bottom = effectivePadding.bottom;\n\n doProcessBottom = false;\n }\n\n if (doProcessLeft && effectivePadding.left != Enums.Spacing.None) {\n result.left = effectivePadding.left;\n\n doProcessLeft = false;\n }\n }\n\n if (doProcessTop || doProcessRight || doProcessBottom || doProcessLeft) {\n this.parent.getImmediateSurroundingPadding(\n result,\n doProcessTop,\n doProcessRight,\n doProcessBottom,\n doProcessLeft);\n }\n }\n }\n\n getActionCount(): number {\n return 0;\n }\n\n getActionAt(index: number): Action | undefined {\n throw new Error(Strings.errors.indexOutOfRange(index));\n }\n\n indexOfAction(action: Action): number {\n for (let i = 0; i < this.getActionCount(); i++) {\n if (this.getActionAt(i) === action) {\n return i;\n }\n }\n\n return -1;\n }\n\n remove(): boolean {\n if (this.parent && this.parent instanceof CardElementContainer) {\n return this.parent.removeItem(this);\n }\n\n return false;\n }\n\n render(): HTMLElement | undefined {\n this._renderedElement = this.overrideInternalRender();\n this._separatorElement = this.internalRenderSeparator();\n\n if (this._renderedElement) {\n if (this.id) {\n this._renderedElement.id = this.id;\n }\n\n if (this.customCssSelector) {\n this._renderedElement.classList.add(this.customCssSelector);\n }\n\n this._renderedElement.style.boxSizing = \"border-box\";\n this._defaultRenderedElementDisplayMode = this._renderedElement.style.display ? this._renderedElement.style.display : undefined;\n\n this.adjustRenderedElementSize(this._renderedElement);\n this.updateLayout(false);\n }\n else if (this.isDesignMode()) {\n this._renderedElement = this.createPlaceholderElement();\n }\n\n return this._renderedElement;\n }\n\n updateLayout(processChildren: boolean = true) {\n this.updateRenderedElementVisibility();\n this.applyPadding();\n }\n\n indexOf(cardElement: CardElement): number {\n return -1;\n }\n\n isDesignMode(): boolean {\n let rootElement = this.getRootElement();\n\n return rootElement instanceof AdaptiveCard && rootElement.designMode;\n }\n\n isFirstElement(element: CardElement): boolean {\n return true;\n }\n\n isLastElement(element: CardElement): boolean {\n return true;\n }\n\n isAtTheVeryLeft(): boolean {\n return this.parent ? this.parent.isLeftMostElement(this) && this.parent.isAtTheVeryLeft() : true;\n }\n\n isAtTheVeryRight(): boolean {\n return this.parent ? this.parent.isRightMostElement(this) && this.parent.isAtTheVeryRight() : true;\n }\n\n isAtTheVeryTop(): boolean {\n return this.parent ? this.parent.isFirstElement(this) && this.parent.isAtTheVeryTop() : true;\n }\n\n isAtTheVeryBottom(): boolean {\n return this.parent ? this.parent.isLastElement(this) && this.parent.isAtTheVeryBottom() : true;\n }\n\n isBleedingAtTop(): boolean {\n return false;\n }\n\n isBleedingAtBottom(): boolean {\n return false;\n }\n\n isLeftMostElement(element: CardElement): boolean {\n return true;\n }\n\n isRightMostElement(element: CardElement): boolean {\n return true;\n }\n\n isTopElement(element: CardElement): boolean {\n return this.isFirstElement(element);\n }\n\n isBottomElement(element: CardElement): boolean {\n return this.isLastElement(element);\n }\n\n isHiddenDueToOverflow(): boolean {\n return this._renderedElement !== undefined && this._renderedElement.style.visibility == 'hidden';\n }\n\n getRootElement(): CardElement {\n return this.getRootObject() as CardElement;\n }\n\n getParentContainer(): Container | undefined {\n let currentElement = this.parent;\n\n while (currentElement) {\n if (currentElement instanceof Container) {\n return currentElement;\n }\n\n currentElement = currentElement.parent;\n }\n\n return undefined;\n }\n\n getAllInputs(processActions: boolean = true): Input[] {\n return [];\n }\n\n getResourceInformation(): IResourceInformation[] {\n return [];\n }\n\n getElementById(id: string): CardElement | undefined {\n return this.id === id ? this : undefined;\n }\n\n getActionById(id: string): Action | undefined {\n return undefined;\n }\n\n getEffectivePadding(): PaddingDefinition {\n let padding = this.getPadding();\n\n return padding ? padding : this.getDefaultPadding();\n }\n\n getEffectiveHorizontalAlignment(): Enums.HorizontalAlignment {\n if (this.horizontalAlignment !== undefined) {\n return this.horizontalAlignment;\n }\n\n if (this.parent) {\n return this.parent.getEffectiveHorizontalAlignment();\n }\n\n return Enums.HorizontalAlignment.Left;\n }\n\n get hostConfig(): HostConfig {\n if (this._hostConfig) {\n return this._hostConfig;\n }\n else {\n if (this.parent) {\n return this.parent.hostConfig;\n }\n else {\n return defaultHostConfig;\n }\n }\n }\n\n set hostConfig(value: HostConfig) {\n this._hostConfig = value;\n }\n\n get index(): number {\n if (this.parent) {\n return this.parent.indexOf(this);\n }\n else {\n return 0;\n }\n }\n\n get isInteractive(): boolean {\n return false;\n }\n\n get isStandalone(): boolean {\n return true;\n }\n\n get isInline(): boolean {\n return false;\n }\n\n get hasVisibleSeparator(): boolean {\n if (this.parent && this.separatorElement) {\n return !this.parent.isFirstElement(this) && (this.isVisible || this.isDesignMode());\n }\n else {\n return false;\n }\n }\n\n get separatorElement(): HTMLElement | undefined {\n return this._separatorElement;\n }\n\n get parent(): CardElement | undefined {\n return this._parent;\n }\n}\n\nexport class ActionProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: SerializationContext): Action | undefined {\n let parent = sender;\n\n return context.parseAction(\n parent,\n source[this.name],\n this.forbiddenActionTypes,\n parent.isDesignMode());\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: Action | undefined, context: SerializationContext) {\n context.serializeValue(target, this.name, value ? value.toJSON(context) : undefined, undefined, true);\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly forbiddenActionTypes: string[] = []) {\n super(targetVersion, name, undefined);\n }\n}\n\nexport abstract class BaseTextBlock extends CardElement {\n //#region Schema\n\n static readonly textProperty = new StringProperty(Versions.v1_0, \"text\", true);\n static readonly sizeProperty = new EnumProperty(Versions.v1_0, \"size\", Enums.TextSize);\n static readonly weightProperty = new EnumProperty(Versions.v1_0, \"weight\", Enums.TextWeight);\n static readonly colorProperty = new EnumProperty(Versions.v1_0, \"color\", Enums.TextColor);\n static readonly isSubtleProperty = new BoolProperty(Versions.v1_0, \"isSubtle\");\n static readonly fontTypeProperty = new EnumProperty(Versions.v1_2, \"fontType\", Enums.FontType);\n static readonly selectActionProperty = new ActionProperty(Versions.v1_1, \"selectAction\", [ \"Action.ShowCard\" ]);\n\n protected populateSchema(schema: SerializableObjectSchema) {\n super.populateSchema(schema);\n\n // selectAction is declared on BaseTextBlock but is only exposed on TextRun,\n // so the property is removed from the BaseTextBlock schema.\n schema.remove(BaseTextBlock.selectActionProperty);\n }\n\n @property(BaseTextBlock.sizeProperty)\n size?: Enums.TextSize;\n\n @property(BaseTextBlock.weightProperty)\n weight?: Enums.TextWeight;\n\n @property(BaseTextBlock.colorProperty)\n color?: Enums.TextColor;\n\n @property(BaseTextBlock.fontTypeProperty)\n fontType?: Enums.FontType;\n\n @property(BaseTextBlock.isSubtleProperty)\n isSubtle?: boolean;\n\n @property(BaseTextBlock.textProperty)\n get text(): string | undefined {\n return this.getValue(BaseTextBlock.textProperty);\n }\n\n set text(value: string | undefined) {\n this.setText(value);\n }\n\n @property(BaseTextBlock.selectActionProperty)\n selectAction?: Action;\n\n //#endregion\n\n protected getFontSize(fontType: FontTypeDefinition): number {\n switch (this.effectiveSize) {\n case Enums.TextSize.Small:\n return fontType.fontSizes.small;\n case Enums.TextSize.Medium:\n return fontType.fontSizes.medium;\n case Enums.TextSize.Large:\n return fontType.fontSizes.large;\n case Enums.TextSize.ExtraLarge:\n return fontType.fontSizes.extraLarge;\n default:\n return fontType.fontSizes.default;\n }\n }\n\n protected getColorDefinition(colorSet: ColorSetDefinition, color: Enums.TextColor): TextColorDefinition {\n switch (color) {\n case Enums.TextColor.Accent:\n return colorSet.accent;\n case Enums.TextColor.Dark:\n return colorSet.dark;\n case Enums.TextColor.Light:\n return colorSet.light;\n case Enums.TextColor.Good:\n return colorSet.good;\n case Enums.TextColor.Warning:\n return colorSet.warning;\n case Enums.TextColor.Attention:\n return colorSet.attention;\n default:\n return colorSet.default;\n }\n }\n\n protected setText(value: string | undefined) {\n this.setValue(BaseTextBlock.textProperty, value);\n }\n\n ariaHidden: boolean = false;\n\n constructor(text?: string) {\n super();\n\n if (text) {\n this.text = text;\n }\n }\n\n init(textDefinition: BaseTextDefinition) {\n this.size = textDefinition.size;\n this.weight = textDefinition.weight;\n this.color = textDefinition.color;\n this.isSubtle = textDefinition.isSubtle;\n }\n\n asString(): string | undefined {\n return this.text;\n }\n\n applyStylesTo(targetElement: HTMLElement) {\n let fontType = this.hostConfig.getFontTypeDefinition(this.effectiveFontType);\n\n if (fontType.fontFamily) {\n targetElement.style.fontFamily = fontType.fontFamily;\n }\n\n let fontSize: number;\n\n switch (this.effectiveSize) {\n case Enums.TextSize.Small:\n fontSize = fontType.fontSizes.small;\n break;\n case Enums.TextSize.Medium:\n fontSize = fontType.fontSizes.medium;\n break;\n case Enums.TextSize.Large:\n fontSize = fontType.fontSizes.large;\n break;\n case Enums.TextSize.ExtraLarge:\n fontSize = fontType.fontSizes.extraLarge;\n break;\n default:\n fontSize = fontType.fontSizes.default;\n break;\n }\n\n targetElement.style.fontSize = fontSize + \"px\";\n\n let colorDefinition = this.getColorDefinition(this.getEffectiveStyleDefinition().foregroundColors, this.effectiveColor);\n\n targetElement.style.color = Utils.stringToCssColor(this.effectiveIsSubtle ? colorDefinition.subtle : colorDefinition.default);\n\n let fontWeight: number;\n\n switch (this.effectiveWeight) {\n case Enums.TextWeight.Lighter:\n fontWeight = fontType.fontWeights.lighter;\n break;\n case Enums.TextWeight.Bolder:\n fontWeight = fontType.fontWeights.bolder;\n break;\n default:\n fontWeight = fontType.fontWeights.default;\n break;\n }\n\n targetElement.style.fontWeight = fontWeight.toString();\n\n if (this.ariaHidden) {\n targetElement.setAttribute(\"aria-hidden\", \"true\");\n }\n }\n\n get effectiveColor(): Enums.TextColor {\n return this.color !== undefined ? this.color : this.getEffectiveTextStyleDefinition().color;\n }\n\n get effectiveFontType(): Enums.FontType {\n return this.fontType !== undefined ? this.fontType : this.getEffectiveTextStyleDefinition().fontType;\n }\n\n get effectiveIsSubtle(): boolean {\n return this.isSubtle !== undefined ? this.isSubtle : this.getEffectiveTextStyleDefinition().isSubtle;\n }\n\n get effectiveSize(): Enums.TextSize {\n return this.size !== undefined ? this.size : this.getEffectiveTextStyleDefinition().size;\n }\n\n get effectiveWeight(): Enums.TextWeight {\n return this.weight !== undefined ? this.weight : this.getEffectiveTextStyleDefinition().weight;\n }\n}\n\nexport type TextBlockStyle = \"default\" | \"heading\" | \"columnHeader\";\n\nexport class TextBlock extends BaseTextBlock {\n //#region Schema\n\n static readonly wrapProperty = new BoolProperty(Versions.v1_0, \"wrap\", false);\n static readonly maxLinesProperty = new NumProperty(Versions.v1_0, \"maxLines\");\n static readonly styleProperty = new ValueSetProperty(\n Versions.v1_5,\n \"style\",\n [\n { value: \"default\" },\n { value: \"columnHeader\" },\n { value: \"heading\" }\n ]);\n\n @property(TextBlock.wrapProperty)\n wrap: boolean = false;\n\n @property(TextBlock.maxLinesProperty)\n maxLines?: number;\n\n @property(TextBlock.styleProperty)\n style?: TextBlockStyle;\n\n //#endregion\n\n private _computedLineHeight: number;\n private _originalInnerHtml: string;\n private _processedText?: string;\n private _treatAsPlainText: boolean = true;\n\n private restoreOriginalContent() {\n if (this.renderedElement !== undefined) {\n if (this.maxLines && this.maxLines > 0) {\n this.renderedElement.style.maxHeight = this._computedLineHeight * this.maxLines + \"px\";\n }\n\n this.renderedElement.innerHTML = this._originalInnerHtml;\n }\n }\n\n private truncateIfSupported(maxHeight: number): boolean {\n if (this.renderedElement !== undefined) {\n // For now, only truncate TextBlocks that contain just a single\n // paragraph -- since the maxLines calculation doesn't take into\n // account Markdown lists\n let children = this.renderedElement.children;\n let isTextOnly = !children.length;\n let truncationSupported = isTextOnly || children.length == 1 && (children[0]).tagName.toLowerCase() == 'p';\n\n if (truncationSupported) {\n let element = isTextOnly ? this.renderedElement : children[0];\n\n Utils.truncate(element, maxHeight, this._computedLineHeight);\n\n return true;\n }\n }\n\n return false;\n }\n\n protected setText(value: string) {\n super.setText(value);\n\n this._processedText = undefined;\n }\n\n protected internalRender(): HTMLElement | undefined {\n this._processedText = undefined;\n\n if (this.text) {\n let preProcessedText = this.preProcessPropertyValue(BaseTextBlock.textProperty);\n let hostConfig = this.hostConfig;\n\n let element: HTMLElement;\n\n if (this.forElementId) {\n let labelElement = document.createElement(\"label\");\n labelElement.htmlFor = this.forElementId;\n\n element = labelElement;\n }\n else {\n element = document.createElement(\"div\");\n }\n\n element.classList.add(hostConfig.makeCssClassName(\"ac-textBlock\"));\n element.style.overflow = \"hidden\";\n\n this.applyStylesTo(element);\n\n if (this.style === \"heading\") {\n element.setAttribute(\"role\", \"heading\");\n\n let headingLevel = this.hostConfig.textBlock.headingLevel;\n\n if (headingLevel !== undefined && headingLevel > 0) {\n element.setAttribute(\"aria-level\", headingLevel.toString());\n }\n }\n\n if (this.selectAction && hostConfig.supportsInteractivity) {\n element.onclick = (e) => {\n if (this.selectAction && this.selectAction.isEnabled) {\n e.preventDefault();\n e.cancelBubble = true;\n\n this.selectAction.execute();\n }\n }\n\n this.selectAction.setupElementForAccessibility(element);\n\n if (this.selectAction.isEnabled) {\n element.classList.add(hostConfig.makeCssClassName(\"ac-selectable\"));\n }\n }\n\n if (!this._processedText) {\n this._treatAsPlainText = true;\n\n let formattedText = TextFormatters.formatText(this.lang, preProcessedText);\n\n if (this.useMarkdown && formattedText) {\n if (GlobalSettings.allowMarkForTextHighlighting) {\n formattedText = formattedText.replace(//g, \"===\").replace(/<\\/mark>/g, \"/==/\");\n }\n\n let markdownProcessingResult = AdaptiveCard.applyMarkdown(formattedText);\n\n if (markdownProcessingResult.didProcess && markdownProcessingResult.outputHtml) {\n this._processedText = markdownProcessingResult.outputHtml;\n this._treatAsPlainText = false;\n\n // Only process tag if markdown processing was applied because\n // markdown processing is also responsible for sanitizing the input string\n if (GlobalSettings.allowMarkForTextHighlighting && this._processedText) {\n let markStyle: string = \"\";\n let effectiveStyle = this.getEffectiveStyleDefinition();\n\n if (effectiveStyle.highlightBackgroundColor) {\n markStyle += \"background-color: \" + effectiveStyle.highlightBackgroundColor + \";\";\n }\n\n if (effectiveStyle.highlightForegroundColor) {\n markStyle += \"color: \" + effectiveStyle.highlightForegroundColor + \";\";\n }\n\n if (markStyle) {\n markStyle = 'style=\"' + markStyle + '\"';\n }\n\n this._processedText = this._processedText.replace(/===/g, \"\").replace(/\\/==\\//g, \"\");\n }\n } else {\n this._processedText = formattedText;\n this._treatAsPlainText = true;\n }\n }\n else {\n this._processedText = formattedText;\n this._treatAsPlainText = true;\n }\n }\n\n if (!this._processedText) {\n this._processedText = \"\";\n }\n\n if (this._treatAsPlainText) {\n element.innerText = this._processedText;\n }\n else {\n element.innerHTML = this._processedText;\n }\n\n if (element.firstElementChild instanceof HTMLElement) {\n let firstElementChild = element.firstElementChild;\n firstElementChild.style.marginTop = \"0px\";\n firstElementChild.style.width = \"100%\";\n\n if (!this.wrap) {\n firstElementChild.style.overflow = \"hidden\";\n firstElementChild.style.textOverflow = \"ellipsis\";\n }\n }\n\n if (element.lastElementChild instanceof HTMLElement) {\n (element.lastElementChild).style.marginBottom = \"0px\";\n }\n\n let anchors = element.getElementsByTagName(\"a\");\n\n for (let i = 0; i < anchors.length; i++) {\n let anchor = anchors[i];\n anchor.classList.add(hostConfig.makeCssClassName(\"ac-anchor\"));\n anchor.target = \"_blank\";\n anchor.onclick = (e: MouseEvent) => {\n if (raiseAnchorClickedEvent(this, e.target as HTMLAnchorElement, e)) {\n e.preventDefault();\n e.cancelBubble = true;\n }\n }\n anchor.oncontextmenu = (e: MouseEvent) => {\n if (raiseAnchorClickedEvent(this, e.target as HTMLAnchorElement, e)) {\n e.preventDefault();\n e.cancelBubble = true;\n\n return false;\n }\n\n return true;\n }\n }\n\n if (this.wrap) {\n element.style.wordWrap = \"break-word\";\n\n if (this.maxLines && this.maxLines > 0) {\n element.style.overflow = \"hidden\";\n\n if (Utils.isInternetExplorer() || !GlobalSettings.useWebkitLineClamp) {\n element.style.maxHeight = (this._computedLineHeight * this.maxLines) + \"px\";\n }\n else {\n // While non standard, --webkit-line-clamp works in every browser (except IE)\n // and is a great solution to support the maxLines feature with ellipsis\n // truncation. With --webkit-line-clamp there is need to use explicit line heights\n element.style.removeProperty(\"line-height\");\n element.style.display = \"-webkit-box\";\n element.style.webkitBoxOrient = \"vertical\";\n element.style.webkitLineClamp = this.maxLines.toString();\n }\n }\n }\n else {\n element.style.whiteSpace = \"nowrap\";\n element.style.textOverflow = \"ellipsis\";\n }\n\n if (GlobalSettings.useAdvancedTextBlockTruncation || GlobalSettings.useAdvancedCardBottomTruncation) {\n this._originalInnerHtml = element.innerHTML;\n }\n\n return element;\n }\n else {\n return undefined;\n }\n }\n\n protected truncateOverflow(maxHeight: number): boolean {\n if (maxHeight >= this._computedLineHeight) {\n return this.truncateIfSupported(maxHeight);\n }\n\n return false;\n }\n\n protected undoOverflowTruncation() {\n this.restoreOriginalContent();\n\n if (GlobalSettings.useAdvancedTextBlockTruncation && this.maxLines) {\n let maxHeight = this._computedLineHeight * this.maxLines;\n\n this.truncateIfSupported(maxHeight);\n }\n }\n\n useMarkdown: boolean = true;\n forElementId?: string;\n\n applyStylesTo(targetElement: HTMLElement) {\n super.applyStylesTo(targetElement);\n\n switch (this.getEffectiveHorizontalAlignment()) {\n case Enums.HorizontalAlignment.Center:\n targetElement.style.textAlign = \"center\";\n break;\n case Enums.HorizontalAlignment.Right:\n targetElement.style.textAlign = \"end\";\n break;\n default:\n targetElement.style.textAlign = \"start\";\n break;\n }\n\n let lineHeights = this.hostConfig.lineHeights;\n\n if (lineHeights) {\n switch (this.effectiveSize) {\n case Enums.TextSize.Small:\n this._computedLineHeight = lineHeights.small;\n break;\n case Enums.TextSize.Medium:\n this._computedLineHeight = lineHeights.medium;\n break;\n case Enums.TextSize.Large:\n this._computedLineHeight = lineHeights.large;\n break;\n case Enums.TextSize.ExtraLarge:\n this._computedLineHeight = lineHeights.extraLarge;\n break;\n default:\n this._computedLineHeight = lineHeights.default;\n break;\n }\n }\n else {\n // Looks like 1.33 is the magic number to compute line-height\n // from font size.\n this._computedLineHeight = this.getFontSize(this.hostConfig.getFontTypeDefinition(this.effectiveFontType)) * 1.33;\n }\n\n targetElement.style.lineHeight = this._computedLineHeight + \"px\";\n }\n\n getJsonTypeName(): string {\n return \"TextBlock\";\n }\n\n getEffectiveTextStyleDefinition(): TextStyleDefinition {\n if (this.style) {\n return this.hostConfig.textStyles.getStyleByName(this.style);\n }\n\n return super.getEffectiveTextStyleDefinition();\n }\n\n updateLayout(processChildren: boolean = false) {\n super.updateLayout(processChildren);\n\n if (GlobalSettings.useAdvancedTextBlockTruncation && this.maxLines && this.isDisplayed()) {\n // Reset the element's innerHTML in case the available room for\n // content has increased\n this.restoreOriginalContent();\n this.truncateIfSupported(this._computedLineHeight * this.maxLines);\n }\n }\n}\n\nexport class TextRun extends BaseTextBlock {\n //#region Schema\n\n static readonly italicProperty = new BoolProperty(Versions.v1_2, \"italic\", false);\n static readonly strikethroughProperty = new BoolProperty(Versions.v1_2, \"strikethrough\", false);\n static readonly highlightProperty = new BoolProperty(Versions.v1_2, \"highlight\", false);\n static readonly underlineProperty = new BoolProperty(Versions.v1_3, \"underline\", false);\n\n protected populateSchema(schema: SerializableObjectSchema) {\n super.populateSchema(schema);\n\n schema.add(BaseTextBlock.selectActionProperty);\n }\n\n @property(TextRun.italicProperty)\n italic: boolean = false;\n\n @property(TextRun.strikethroughProperty)\n strikethrough: boolean = false;\n\n @property(TextRun.highlightProperty)\n highlight: boolean = false;\n\n @property(TextRun.underlineProperty)\n underline: boolean = false;\n\n //#endregion\n\n protected internalRender(): HTMLElement | undefined {\n if (this.text) {\n let preProcessedText = this.preProcessPropertyValue(BaseTextBlock.textProperty);\n let hostConfig = this.hostConfig;\n\n let formattedText = TextFormatters.formatText(this.lang, preProcessedText);\n\n if (!formattedText) {\n formattedText = \"\";\n }\n\n let element = document.createElement(\"span\");\n element.classList.add(hostConfig.makeCssClassName(\"ac-textRun\"));\n\n this.applyStylesTo(element);\n\n if (this.selectAction && hostConfig.supportsInteractivity) {\n let anchor = document.createElement(\"a\");\n anchor.classList.add(hostConfig.makeCssClassName(\"ac-anchor\"));\n\n let href = this.selectAction.getHref();\n\n anchor.href = href ? href : \"\";\n anchor.target = \"_blank\";\n anchor.onclick = (e) => {\n if (this.selectAction && this.selectAction.isEnabled) {\n e.preventDefault();\n e.cancelBubble = true;\n\n this.selectAction.execute();\n }\n }\n\n this.selectAction.setupElementForAccessibility(anchor);\n\n anchor.innerText = formattedText;\n\n element.appendChild(anchor);\n }\n else {\n element.innerText = formattedText;\n }\n\n return element;\n }\n else {\n return undefined;\n }\n }\n\n applyStylesTo(targetElement: HTMLElement) {\n super.applyStylesTo(targetElement);\n\n if (this.italic) {\n targetElement.style.fontStyle = \"italic\";\n }\n\n if (this.strikethrough) {\n targetElement.style.textDecoration = \"line-through\";\n }\n\n if (this.highlight) {\n let colorDefinition = this.getColorDefinition(this.getEffectiveStyleDefinition().foregroundColors, this.effectiveColor);\n\n targetElement.style.backgroundColor = Utils.stringToCssColor(this.effectiveIsSubtle ? colorDefinition.highlightColors.subtle : colorDefinition.highlightColors.default);\n }\n\n if (this.underline) {\n targetElement.style.textDecoration = \"underline\";\n }\n }\n\n getJsonTypeName(): string {\n return \"TextRun\";\n }\n\n get isStandalone(): boolean {\n return false;\n }\n\n get isInline(): boolean {\n return true;\n }\n}\n\nexport class RichTextBlock extends CardElement {\n private _inlines: CardElement[] = [];\n\n private internalAddInline(inline: CardElement, forceAdd: boolean = false) {\n if (!inline.isInline) {\n throw new Error(Strings.errors.elementCannotBeUsedAsInline());\n }\n\n let doAdd: boolean = inline.parent === undefined || forceAdd;\n\n if (!doAdd && inline.parent != this) {\n throw new Error(Strings.errors.inlineAlreadyParented());\n }\n else {\n inline.setParent(this);\n\n this._inlines.push(inline);\n }\n }\n\n protected internalParse(source: any, context: SerializationContext) {\n super.internalParse(source, context);\n\n this._inlines = [];\n\n if (Array.isArray(source[\"inlines\"])) {\n for (let jsonInline of source[\"inlines\"]) {\n let inline: CardElement | undefined;\n\n if (typeof jsonInline === \"string\") {\n let textRun = new TextRun();\n textRun.text = jsonInline;\n\n inline = textRun;\n }\n else {\n // No fallback for inlines in 1.2\n inline = context.parseElement(this, jsonInline, false);\n }\n\n if (inline) {\n this.internalAddInline(inline, true);\n }\n }\n }\n }\n\n protected internalToJSON(target: PropertyBag, context: SerializationContext) {\n super.internalToJSON(target, context);\n\n if (this._inlines.length > 0) {\n let jsonInlines: any[] = [];\n\n for (let inline of this._inlines) {\n jsonInlines.push(inline.toJSON(context));\n }\n\n context.serializeValue(target, \"inlines\", jsonInlines);\n }\n }\n\n protected internalRender(): HTMLElement | undefined {\n if (this._inlines.length > 0) {\n let element: HTMLElement;\n\n if (this.forElementId) {\n let labelElement = document.createElement(\"label\");\n labelElement.htmlFor = this.forElementId;\n\n element = labelElement;\n }\n else {\n element = document.createElement(\"div\");\n }\n\n element.className = this.hostConfig.makeCssClassName(\"ac-richTextBlock\");\n\n switch (this.getEffectiveHorizontalAlignment()) {\n case Enums.HorizontalAlignment.Center:\n element.style.textAlign = \"center\";\n break;\n case Enums.HorizontalAlignment.Right:\n element.style.textAlign = \"end\";\n break;\n default:\n element.style.textAlign = \"start\";\n break;\n }\n\n let renderedInlines: number = 0;\n\n for (let inline of this._inlines) {\n let renderedInline = inline.render();\n\n if (renderedInline) {\n element.appendChild(renderedInline);\n\n renderedInlines++;\n }\n }\n\n if (renderedInlines > 0) {\n return element;\n }\n }\n\n return undefined;\n }\n\n forElementId?: string;\n\n asString(): string | undefined {\n let result = \"\";\n\n for (let inline of this._inlines) {\n result += inline.asString();\n }\n\n return result;\n }\n\n getJsonTypeName(): string {\n return \"RichTextBlock\";\n }\n\n getInlineCount(): number {\n return this._inlines.length;\n }\n\n getInlineAt(index: number): CardElement {\n if (index >= 0 && index < this._inlines.length) {\n return this._inlines[index];\n }\n else {\n throw new Error(Strings.errors.indexOutOfRange(index));\n }\n }\n\n addInline(inline: CardElement | string) {\n if (typeof inline === \"string\") {\n this.internalAddInline(new TextRun(inline));\n }\n else {\n this.internalAddInline(inline);\n }\n }\n\n removeInline(inline: CardElement): boolean {\n let index = this._inlines.indexOf(inline);\n\n if (index >= 0) {\n this._inlines[index].setParent(undefined);\n this._inlines.splice(index, 1);\n\n return true;\n }\n\n return false;\n }\n}\n\nexport class Fact extends SerializableObject {\n //#region Schema\n\n static readonly titleProperty = new StringProperty(Versions.v1_0, \"title\");\n static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\n\n // For historic reasons, the \"title\" schema property is exposed as \"name\" in the OM.\n @property(Fact.titleProperty)\n name?: string;\n\n @property(Fact.valueProperty)\n value?: string;\n\n //#endregion\n\n protected getSchemaKey(): string {\n return \"Fact\";\n }\n\n constructor(name?: string, value?: string) {\n super();\n\n this.name = name;\n this.value = value;\n }\n}\n\nexport class FactSet extends CardElement {\n //#region Schema\n\n static readonly factsProperty = new SerializableObjectCollectionProperty(Versions.v1_0, \"facts\", Fact);\n\n @property(FactSet.factsProperty)\n facts: Fact[];\n\n //#endregion\n\n protected get useDefaultSizing(): boolean {\n return false;\n }\n\n protected internalRender(): HTMLElement | undefined {\n let element: HTMLElement | undefined = undefined;\n let hostConfig = this.hostConfig;\n\n if (this.facts.length > 0) {\n element = document.createElement(\"table\");\n element.style.borderWidth = \"0px\";\n element.style.borderSpacing = \"0px\";\n element.style.borderStyle = \"none\";\n element.style.borderCollapse = \"collapse\";\n element.style.display = \"block\";\n element.style.overflow = \"hidden\";\n element.classList.add(hostConfig.makeCssClassName(\"ac-factset\"));\n element.setAttribute(\"role\", \"presentation\");\n\n for (let i = 0; i < this.facts.length; i++) {\n let trElement = document.createElement(\"tr\");\n\n if (i > 0) {\n trElement.style.marginTop = hostConfig.factSet.spacing + \"px\";\n }\n\n // Title column\n let tdElement = document.createElement(\"td\");\n tdElement.style.padding = \"0\";\n tdElement.classList.add(hostConfig.makeCssClassName(\"ac-fact-title\"));\n\n if (hostConfig.factSet.title.maxWidth) {\n tdElement.style.maxWidth = hostConfig.factSet.title.maxWidth + \"px\";\n }\n\n tdElement.style.verticalAlign = \"top\";\n\n let textBlock = new TextBlock();\n textBlock.setParent(this);\n textBlock.text = (!this.facts[i].name && this.isDesignMode()) ? \"Title\" : this.facts[i].name;\n textBlock.size = hostConfig.factSet.title.size;\n textBlock.color = hostConfig.factSet.title.color;\n textBlock.isSubtle = hostConfig.factSet.title.isSubtle;\n textBlock.weight = hostConfig.factSet.title.weight;\n textBlock.wrap = hostConfig.factSet.title.wrap;\n textBlock.spacing = Enums.Spacing.None;\n\n Utils.appendChild(tdElement, textBlock.render());\n Utils.appendChild(trElement, tdElement);\n\n // Spacer column\n tdElement = document.createElement(\"td\");\n tdElement.style.width = \"10px\";\n\n Utils.appendChild(trElement, tdElement);\n\n // Value column\n tdElement = document.createElement(\"td\");\n tdElement.style.padding = \"0\";\n tdElement.style.verticalAlign = \"top\";\n tdElement.classList.add(hostConfig.makeCssClassName(\"ac-fact-value\"));\n\n textBlock = new TextBlock();\n textBlock.setParent(this);\n textBlock.text = this.facts[i].value;\n textBlock.size = hostConfig.factSet.value.size;\n textBlock.color = hostConfig.factSet.value.color;\n textBlock.isSubtle = hostConfig.factSet.value.isSubtle;\n textBlock.weight = hostConfig.factSet.value.weight;\n textBlock.wrap = hostConfig.factSet.value.wrap;\n textBlock.spacing = Enums.Spacing.None;\n\n Utils.appendChild(tdElement, textBlock.render());\n Utils.appendChild(trElement, tdElement);\n Utils.appendChild(element, trElement);\n }\n }\n\n return element;\n }\n\n getJsonTypeName(): string {\n return \"FactSet\";\n }\n}\n\nclass ImageDimensionProperty extends PropertyDefinition {\n getInternalName(): string {\n return this.internalName;\n }\n\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): number | undefined {\n let result: number | undefined = undefined;\n let sourceValue = source[this.name];\n\n if (sourceValue === undefined) {\n return this.defaultValue;\n }\n\n let isValid = false;\n\n if (typeof sourceValue === \"string\") {\n try {\n let size = SizeAndUnit.parse(sourceValue, true);\n\n if (size.unit == Enums.SizeUnit.Pixel) {\n result = size.physicalSize;\n\n isValid = true;\n }\n }\n catch {\n // Swallow the exception\n }\n\n // If the source value isn't valid per this property definition,\n // check its validity per the fallback property, if specified\n if (!isValid && this.fallbackProperty) {\n isValid = this.fallbackProperty.isValidValue(sourceValue, context);\n }\n }\n\n if (!isValid) {\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidPropertyValue(sourceValue, this.name));\n }\n\n return result;\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: number | undefined, context: BaseSerializationContext) {\n context.serializeValue(\n target,\n this.name,\n typeof value === \"number\" && !isNaN(value) ? value + \"px\" : undefined);\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly internalName: string,\n readonly fallbackProperty?: ValueSetProperty) {\n super(targetVersion, name);\n }\n}\n\nexport class Image extends CardElement {\n //#region Schema\n\n static readonly urlProperty = new StringProperty(Versions.v1_0, \"url\");\n static readonly altTextProperty = new StringProperty(Versions.v1_0, \"altText\");\n static readonly backgroundColorProperty = new StringProperty(Versions.v1_1, \"backgroundColor\");\n static readonly styleProperty = new EnumProperty(\n Versions.v1_0,\n \"style\",\n Enums.ImageStyle,\n Enums.ImageStyle.Default);\n static readonly sizeProperty = new EnumProperty(\n Versions.v1_0,\n \"size\",\n Enums.Size,\n Enums.Size.Auto);\n static readonly pixelWidthProperty = new ImageDimensionProperty(Versions.v1_1, \"width\", \"pixelWidth\");\n static readonly pixelHeightProperty = new ImageDimensionProperty(Versions.v1_1, \"height\", \"pixelHeight\", CardElement.heightProperty);\n static readonly selectActionProperty = new ActionProperty(Versions.v1_1, \"selectAction\", [ \"Action.ShowCard\" ]);\n\n protected populateSchema(schema: SerializableObjectSchema) {\n super.populateSchema(schema);\n\n schema.remove(CardElement.heightProperty);\n }\n\n @property(Image.urlProperty)\n url?: string;\n\n @property(Image.altTextProperty)\n altText?: string;\n\n @property(Image.backgroundColorProperty)\n backgroundColor?: string;\n\n @property(Image.sizeProperty)\n size: Enums.Size = Enums.Size.Auto;\n\n @property(Image.styleProperty)\n style: Enums.ImageStyle = Enums.ImageStyle.Default;\n\n @property(Image.pixelWidthProperty)\n pixelWidth?: number;\n\n @property(Image.pixelHeightProperty)\n pixelHeight?: number;\n\n @property(Image.selectActionProperty)\n selectAction?: Action;\n\n //#endregion\n\n private applySize(element: HTMLElement) {\n if (this.pixelWidth || this.pixelHeight) {\n if (this.pixelWidth) {\n element.style.width = this.pixelWidth + \"px\";\n }\n\n if (this.pixelHeight) {\n element.style.height = this.pixelHeight + \"px\";\n }\n }\n else {\n if (this.maxHeight) {\n // If the image is constrained in height, we set its height property and\n // auto and stretch are ignored (default to medium). THis is necessary for\n // ImageSet which uses a maximum image height as opposed to the cards width\n // as a constraining dimension\n switch (this.size) {\n case Enums.Size.Small:\n element.style.height = this.hostConfig.imageSizes.small + \"px\";\n break;\n case Enums.Size.Large:\n element.style.height = this.hostConfig.imageSizes.large + \"px\";\n break;\n default:\n element.style.height = this.hostConfig.imageSizes.medium + \"px\";\n break;\n }\n\n element.style.maxHeight = this.maxHeight + \"px\";\n }\n else {\n switch (this.size) {\n case Enums.Size.Stretch:\n element.style.width = \"100%\";\n break;\n case Enums.Size.Auto:\n element.style.maxWidth = \"100%\";\n break;\n case Enums.Size.Small:\n element.style.width = this.hostConfig.imageSizes.small + \"px\";\n break;\n case Enums.Size.Large:\n element.style.width = this.hostConfig.imageSizes.large + \"px\";\n break;\n case Enums.Size.Medium:\n element.style.width = this.hostConfig.imageSizes.medium + \"px\";\n break;\n }\n\n element.style.maxHeight = \"100%\";\n }\n }\n }\n\n protected get useDefaultSizing() {\n return false;\n }\n\n protected internalRender(): HTMLElement | undefined {\n let element: HTMLElement | undefined = undefined;\n\n if (this.url) {\n element = document.createElement(\"div\");\n element.style.display = \"flex\";\n element.style.alignItems = \"flex-start\";\n\n // Cache hostConfig to avoid walking the parent hierarchy multiple times\n let hostConfig = this.hostConfig;\n\n switch (this.getEffectiveHorizontalAlignment()) {\n case Enums.HorizontalAlignment.Center:\n element.style.justifyContent = \"center\";\n break;\n case Enums.HorizontalAlignment.Right:\n element.style.justifyContent = \"flex-end\";\n break;\n default:\n element.style.justifyContent = \"flex-start\";\n break;\n }\n\n let imageElement = document.createElement(\"img\");\n imageElement.onload = (e: Event) => {\n raiseImageLoadedEvent(this);\n }\n imageElement.onerror = (e: Event) => {\n if (this.renderedElement) {\n let card = this.getRootElement() as AdaptiveCard;\n\n this.renderedElement.innerHTML = \"\";\n\n if (card && card.designMode) {\n let errorElement = document.createElement(\"div\");\n errorElement.style.display = \"flex\";\n errorElement.style.alignItems = \"center\";\n errorElement.style.justifyContent = \"center\";\n errorElement.style.backgroundColor = \"#EEEEEE\";\n errorElement.style.color = \"black\";\n errorElement.innerText = \":-(\";\n errorElement.style.padding = \"10px\";\n\n this.applySize(errorElement);\n\n this.renderedElement.appendChild(errorElement);\n }\n }\n\n raiseImageLoadedEvent(this);\n }\n imageElement.style.minWidth = \"0\";\n imageElement.classList.add(hostConfig.makeCssClassName(\"ac-image\"));\n\n if (this.selectAction && hostConfig.supportsInteractivity) {\n imageElement.onkeypress = (e) => {\n if (this.selectAction && this.selectAction.isEnabled && (e.code == \"Enter\" || e.code == \"Space\")) { // enter or space pressed\n e.preventDefault();\n e.cancelBubble = true;\n\n this.selectAction.execute();\n }\n }\n\n imageElement.onclick = (e) => {\n if (this.selectAction && this.selectAction.isEnabled) {\n e.preventDefault();\n e.cancelBubble = true;\n\n this.selectAction.execute();\n }\n }\n\n this.selectAction.setupElementForAccessibility(imageElement);\n\n if (this.selectAction.isEnabled) {\n imageElement.classList.add(hostConfig.makeCssClassName(\"ac-selectable\"));\n }\n }\n\n this.applySize(imageElement);\n\n if (this.style === Enums.ImageStyle.Person) {\n imageElement.style.borderRadius = \"50%\";\n imageElement.style.backgroundPosition = \"50% 50%\";\n imageElement.style.backgroundRepeat = \"no-repeat\";\n }\n\n imageElement.style.backgroundColor = Utils.stringToCssColor(this.backgroundColor);\n imageElement.src = this.preProcessPropertyValue(Image.urlProperty);\n\n const altTextProperty = this.preProcessPropertyValue(Image.altTextProperty);\n if (altTextProperty) {\n imageElement.alt = altTextProperty;\n }\n\n element.appendChild(imageElement);\n }\n\n return element;\n }\n\n maxHeight?: number;\n\n getJsonTypeName(): string {\n return \"Image\";\n }\n\n getActionById(id: string) {\n let result = super.getActionById(id);\n\n if (!result && this.selectAction) {\n result = this.selectAction.getActionById(id);\n }\n\n return result;\n }\n\n getResourceInformation(): IResourceInformation[] {\n return this.url ? [{ url: this.url, mimeType: \"image\" }] : [];\n }\n}\n\nexport abstract class CardElementContainer extends CardElement {\n //#region Schema\n\n static readonly selectActionProperty = new ActionProperty(Versions.v1_1, \"selectAction\", [ \"Action.ShowCard\" ]);\n\n protected populateSchema(schema: SerializableObjectSchema) {\n super.populateSchema(schema);\n\n if (!this.isSelectable) {\n schema.remove(CardElementContainer.selectActionProperty);\n }\n }\n\n @property(CardElementContainer.selectActionProperty)\n protected _selectAction?: Action;\n\n //#endregion\n\n protected isElementAllowed(element: CardElement) {\n return this.hostConfig.supportsInteractivity || !element.isInteractive;\n }\n\n protected applyPadding() {\n super.applyPadding();\n\n if (!this.renderedElement) {\n return;\n }\n\n let physicalPadding = new SpacingDefinition();\n\n if (this.getEffectivePadding()) {\n physicalPadding = this.hostConfig.paddingDefinitionToSpacingDefinition(this.getEffectivePadding());\n }\n\n this.renderedElement.style.paddingTop = physicalPadding.top + \"px\";\n this.renderedElement.style.paddingRight = physicalPadding.right + \"px\";\n this.renderedElement.style.paddingBottom = physicalPadding.bottom + \"px\";\n this.renderedElement.style.paddingLeft = physicalPadding.left + \"px\";\n\n this.renderedElement.style.marginRight = \"0\";\n this.renderedElement.style.marginLeft = \"0\";\n }\n\n protected get isSelectable(): boolean {\n return false;\n }\n\n abstract getItemCount(): number;\n abstract getItemAt(index: number): CardElement;\n abstract getFirstVisibleRenderedItem(): CardElement | undefined;\n abstract getLastVisibleRenderedItem(): CardElement | undefined;\n abstract removeItem(item: CardElement): boolean;\n\n allowVerticalOverflow: boolean = false;\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n for (let i = 0; i < this.getItemCount(); i++) {\n let item = this.getItemAt(i);\n\n if (!this.hostConfig.supportsInteractivity && item.isInteractive) {\n context.addFailure(\n this,\n Enums.ValidationEvent.InteractivityNotAllowed,\n Strings.errors.interactivityNotAllowed());\n }\n\n if (!this.isElementAllowed(item)) {\n context.addFailure(\n this,\n Enums.ValidationEvent.InteractivityNotAllowed,\n Strings.errors.elementTypeNotAllowed(item.getJsonTypeName()));\n }\n\n item.internalValidateProperties(context);\n }\n\n if (this._selectAction) {\n this._selectAction.internalValidateProperties(context);\n }\n }\n\n render(): HTMLElement | undefined {\n let element = super.render();\n\n if (element) {\n let hostConfig = this.hostConfig;\n\n if (this.allowVerticalOverflow) {\n element.style.overflowX = \"hidden\";\n element.style.overflowY = \"auto\";\n }\n\n if (element && this.isSelectable && this._selectAction && hostConfig.supportsInteractivity) {\n element.onclick = (e) => {\n if (this._selectAction && this._selectAction.isEnabled) {\n e.preventDefault();\n e.cancelBubble = true;\n\n this._selectAction.execute();\n }\n }\n\n element.onkeypress = (e) => {\n if (this._selectAction && this._selectAction.isEnabled && (e.code == \"Enter\" || e.code == \"Space\")) {\n // Enter or space pressed\n e.preventDefault();\n e.cancelBubble = true;\n\n this._selectAction.execute();\n }\n }\n\n this._selectAction.setupElementForAccessibility(element);\n\n if (this._selectAction.isEnabled) {\n element.classList.add(hostConfig.makeCssClassName(\"ac-selectable\"));\n }\n\n }\n }\n\n return element;\n }\n\n updateLayout(processChildren: boolean = true) {\n super.updateLayout(processChildren);\n\n if (processChildren) {\n for (let i = 0; i < this.getItemCount(); i++) {\n this.getItemAt(i).updateLayout();\n }\n }\n }\n\n getAllInputs(processActions: boolean = true): Input[] {\n let result: Input[] = [];\n\n for (let i = 0; i < this.getItemCount(); i++) {\n result = result.concat(this.getItemAt(i).getAllInputs(processActions));\n }\n\n return result;\n }\n\n getResourceInformation(): IResourceInformation[] {\n let result: IResourceInformation[] = [];\n\n for (let i = 0; i < this.getItemCount(); i++) {\n result = result.concat(this.getItemAt(i).getResourceInformation());\n }\n\n return result;\n }\n\n getElementById(id: string): CardElement | undefined {\n let result = super.getElementById(id);\n\n if (!result) {\n for (let i = 0; i < this.getItemCount(); i++) {\n result = this.getItemAt(i).getElementById(id);\n\n if (result) {\n break;\n }\n }\n }\n\n return result;\n }\n\n /**\n * @inheritdoc\n */\n findDOMNodeOwner(node: Node): CardObject | undefined {\n let target: CardObject | undefined = undefined;\n\n for (let i = 0; i < this.getItemCount(); i++) {\n // recur through child elements\n target = this.getItemAt(i).findDOMNodeOwner(node);\n\n if (target) {\n return target;\n }\n }\n\n // if not found in children, defer to parent implementation\n return super.findDOMNodeOwner(node);\n }\n}\n\nexport class ImageSet extends CardElementContainer {\n //#region Schema\n\n static readonly imagesProperty = new SerializableObjectCollectionProperty(\n Versions.v1_0,\n \"images\",\n Image,\n (sender: SerializableObject, item: Image) => { item.setParent(sender); });\n static readonly imageSizeProperty = new EnumProperty(\n Versions.v1_0,\n \"imageSize\",\n Enums.ImageSize,\n Enums.ImageSize.Medium);\n\n @property(ImageSet.imagesProperty)\n private _images: Image[] = [];\n\n @property(ImageSet.imageSizeProperty)\n imageSize: Enums.ImageSize = Enums.ImageSize.Medium;\n\n //#endregion\n\n protected internalRender(): HTMLElement | undefined {\n let element: HTMLElement | undefined = undefined;\n\n if (this._images.length > 0) {\n element = document.createElement(\"div\");\n element.style.display = \"flex\";\n element.style.flexWrap = \"wrap\";\n\n for (let image of this._images) {\n switch (this.imageSize) {\n case Enums.ImageSize.Small:\n image.size = Enums.Size.Small;\n break;\n case Enums.ImageSize.Large:\n image.size = Enums.Size.Large;\n break;\n default:\n image.size = Enums.Size.Medium;\n break;\n }\n\n image.maxHeight = this.hostConfig.imageSet.maxImageHeight;\n\n let renderedImage = image.render();\n\n if (renderedImage) {\n renderedImage.style.display = \"inline-flex\";\n renderedImage.style.margin = \"0px\";\n renderedImage.style.marginRight = \"10px\";\n\n Utils.appendChild(element, renderedImage);\n }\n }\n }\n\n return element;\n }\n\n getItemCount(): number {\n return this._images.length;\n }\n\n getItemAt(index: number): CardElement {\n return this._images[index];\n }\n\n getFirstVisibleRenderedItem(): CardElement | undefined {\n return this._images && this._images.length > 0 ? this._images[0] : undefined;\n }\n\n getLastVisibleRenderedItem(): CardElement | undefined {\n return this._images && this._images.length > 0 ? this._images[this._images.length - 1] : undefined;\n }\n\n removeItem(item: CardElement): boolean {\n if (item instanceof Image) {\n let itemIndex = this._images.indexOf(item);\n\n if (itemIndex >= 0) {\n this._images.splice(itemIndex, 1);\n\n item.setParent(undefined);\n\n this.updateLayout();\n\n return true;\n }\n }\n\n return false;\n }\n\n getJsonTypeName(): string {\n return \"ImageSet\";\n }\n\n addImage(image: Image) {\n if (!image.parent) {\n this._images.push(image);\n\n image.setParent(this);\n }\n else {\n throw new Error(\"This image already belongs to another ImageSet\");\n }\n }\n\n indexOf(cardElement: CardElement): number {\n return cardElement instanceof Image ? this._images.indexOf(cardElement) : -1;\n }\n}\n\nexport class MediaSource extends SerializableObject {\n //#region Schema\n\n static readonly mimeTypeProperty = new StringProperty(Versions.v1_1, \"mimeType\");\n static readonly urlProperty = new StringProperty(Versions.v1_1, \"url\");\n\n @property(MediaSource.mimeTypeProperty)\n mimeType?: string;\n\n @property(MediaSource.urlProperty)\n url?: string;\n\n //#endregion\n\n protected getSchemaKey(): string {\n return \"MediaSource\";\n }\n\n constructor(url?: string, mimeType?: string) {\n super();\n\n this.url = url;\n this.mimeType = mimeType;\n }\n\n isValid(): boolean {\n return this.mimeType && this.url ? true : false;\n }\n\n render(): HTMLElement | undefined {\n let result: HTMLSourceElement | undefined = undefined;\n\n if (this.isValid()) {\n result = document.createElement(\"source\");\n result.src = this.url;\n result.type = this.mimeType;\n }\n\n return result;\n }\n}\n\nexport class Media extends CardElement {\n //#region Schema\n\n static readonly sourcesProperty = new SerializableObjectCollectionProperty(Versions.v1_1, \"sources\", MediaSource);\n static readonly posterProperty = new StringProperty(Versions.v1_1, \"poster\");\n static readonly altTextProperty = new StringProperty(Versions.v1_1, \"altText\");\n\n @property(Media.sourcesProperty)\n sources: MediaSource[] = [];\n\n @property(Media.posterProperty)\n poster?: string;\n\n @property(Media.altTextProperty)\n altText?: string;\n\n //#endregion\n\n static readonly supportedMediaTypes = [\"audio\", \"video\"];\n\n private _selectedMediaType?: string;\n private _selectedSources: MediaSource[];\n\n private getPosterUrl(): string | undefined {\n return this.poster ? this.poster : this.hostConfig.media.defaultPoster;\n }\n\n private processSources() {\n this._selectedSources = [];\n this._selectedMediaType = undefined;\n\n for (let source of this.sources) {\n let mimeComponents = source.mimeType ? source.mimeType.split('/') : [];\n\n if (mimeComponents.length == 2) {\n if (!this._selectedMediaType) {\n let index = Media.supportedMediaTypes.indexOf(mimeComponents[0]);\n\n if (index >= 0) {\n this._selectedMediaType = Media.supportedMediaTypes[index];\n }\n }\n if (mimeComponents[0] == this._selectedMediaType) {\n this._selectedSources.push(source);\n }\n }\n }\n }\n\n private handlePlayButtonInvoke(event: UIEvent) : void\n {\n if (this.hostConfig.media.allowInlinePlayback) {\n event.preventDefault();\n event.cancelBubble = true;\n\n if (this.renderedElement) {\n let mediaPlayerElement = this.renderMediaPlayer();\n\n this.renderedElement.innerHTML = \"\";\n this.renderedElement.appendChild(mediaPlayerElement);\n\n mediaPlayerElement.play();\n mediaPlayerElement.focus();\n }\n }\n else {\n if (Media.onPlay) {\n event.preventDefault();\n event.cancelBubble = true;\n\n Media.onPlay(this);\n }\n }\n }\n\n private renderPoster(): HTMLElement {\n const playButtonArrowWidth = 12;\n const playButtonArrowHeight = 15;\n\n let posterRootElement = document.createElement(\"div\");\n posterRootElement.className = this.hostConfig.makeCssClassName(\"ac-media-poster\");\n posterRootElement.setAttribute(\"role\", \"contentinfo\");\n posterRootElement.setAttribute(\"aria-label\", this.altText ? this.altText : Strings.defaults.mediaPlayerAriaLabel());\n posterRootElement.style.position = \"relative\";\n posterRootElement.style.display = \"flex\";\n\n let posterUrl = this.getPosterUrl();\n\n if (posterUrl) {\n let posterImageElement = document.createElement(\"img\");\n posterImageElement.style.width = \"100%\";\n posterImageElement.style.height = \"100%\";\n posterImageElement.setAttribute(\"role\", \"presentation\");\n\n posterImageElement.onerror = (e: Event) => {\n if (posterImageElement.parentNode) {\n posterImageElement.parentNode.removeChild(posterImageElement);\n }\n\n posterRootElement.classList.add(\"empty\");\n posterRootElement.style.minHeight = \"150px\";\n }\n\n posterImageElement.src = posterUrl;\n\n posterRootElement.appendChild(posterImageElement);\n }\n else {\n posterRootElement.classList.add(\"empty\");\n posterRootElement.style.minHeight = \"150px\";\n }\n\n if (this.hostConfig.supportsInteractivity && this._selectedSources.length > 0) {\n let playButtonOuterElement = document.createElement(\"div\");\n playButtonOuterElement.tabIndex = 0;\n playButtonOuterElement.setAttribute(\"role\", \"button\");\n playButtonOuterElement.setAttribute(\"aria-label\", Strings.defaults.mediaPlayerPlayMedia());\n playButtonOuterElement.className = this.hostConfig.makeCssClassName(\"ac-media-playButton\");\n playButtonOuterElement.style.display = \"flex\";\n playButtonOuterElement.style.alignItems = \"center\";\n playButtonOuterElement.style.justifyContent = \"center\";\n playButtonOuterElement.onclick = (e) => {\n this.handlePlayButtonInvoke(e);\n }\n\n playButtonOuterElement.onkeypress = (e: KeyboardEvent) => {\n if (e.code == \"Enter\" || e.code == \"Space\") { // space or enter\n this.handlePlayButtonInvoke(e);\n }\n }\n\n let playButtonInnerElement = document.createElement(\"div\");\n playButtonInnerElement.className = this.hostConfig.makeCssClassName(\"ac-media-playButton-arrow\");\n playButtonInnerElement.style.width = playButtonArrowWidth + \"px\";\n playButtonInnerElement.style.height = playButtonArrowHeight + \"px\";\n playButtonInnerElement.style.borderTopWidth = (playButtonArrowHeight / 2) + \"px\";\n playButtonInnerElement.style.borderBottomWidth = (playButtonArrowHeight / 2) + \"px\";\n playButtonInnerElement.style.borderLeftWidth = playButtonArrowWidth + \"px\";\n playButtonInnerElement.style.borderRightWidth = \"0\";\n playButtonInnerElement.style.borderStyle = \"solid\";\n playButtonInnerElement.style.borderTopColor = \"transparent\";\n playButtonInnerElement.style.borderRightColor = \"transparent\";\n playButtonInnerElement.style.borderBottomColor = \"transparent\";\n playButtonInnerElement.style.transform = \"translate(\" + (playButtonArrowWidth / 10) + \"px,0px)\";\n\n playButtonOuterElement.appendChild(playButtonInnerElement);\n\n let playButtonContainer = document.createElement(\"div\");\n playButtonContainer.style.position = \"absolute\";\n playButtonContainer.style.left = \"0\";\n playButtonContainer.style.top = \"0\";\n playButtonContainer.style.width = \"100%\";\n playButtonContainer.style.height = \"100%\";\n playButtonContainer.style.display = \"flex\";\n playButtonContainer.style.justifyContent = \"center\";\n playButtonContainer.style.alignItems = \"center\";\n\n playButtonContainer.appendChild(playButtonOuterElement);\n posterRootElement.appendChild(playButtonContainer);\n }\n\n return posterRootElement;\n }\n\n private renderMediaPlayer(): HTMLMediaElement {\n let mediaElement: HTMLMediaElement;\n\n if (this._selectedMediaType == \"video\") {\n let videoPlayer = document.createElement(\"video\");\n\n let posterUrl = this.getPosterUrl();\n\n if (posterUrl) {\n videoPlayer.poster = posterUrl;\n }\n\n mediaElement = videoPlayer;\n }\n else {\n mediaElement = document.createElement(\"audio\");\n }\n\n mediaElement.setAttribute(\"aria-label\", this.altText ? this.altText : Strings.defaults.mediaPlayerAriaLabel());\n mediaElement.setAttribute(\"webkit-playsinline\", \"\");\n mediaElement.setAttribute(\"playsinline\", \"\");\n mediaElement.autoplay = true;\n mediaElement.controls = true;\n\n if (Utils.isMobileOS()) {\n mediaElement.muted = true;\n }\n\n mediaElement.preload = \"none\";\n mediaElement.style.width = \"100%\";\n\n for (let source of this.sources) {\n let renderedSource = source.render();\n\n Utils.appendChild(mediaElement, renderedSource);\n }\n\n return mediaElement;\n }\n\n protected internalRender(): HTMLElement | undefined {\n let element = document.createElement(\"div\");\n element.className = this.hostConfig.makeCssClassName(\"ac-media\");\n\n this.processSources();\n\n element.appendChild(this.renderPoster());\n\n return element;\n }\n\n static onPlay?: (sender: Media) => void;\n\n getJsonTypeName(): string {\n return \"Media\";\n }\n\n getResourceInformation(): IResourceInformation[] {\n let result: IResourceInformation[] = [];\n\n let posterUrl = this.getPosterUrl();\n\n if (posterUrl) {\n result.push({ url: posterUrl, mimeType: \"image\" });\n }\n\n for (let mediaSource of this.sources) {\n if (mediaSource.isValid()) {\n result.push(\n {\n url: mediaSource.url,\n mimeType: mediaSource.mimeType\n }\n );\n }\n }\n\n return result;\n }\n\n get selectedMediaType(): string | undefined {\n return this._selectedMediaType;\n }\n}\n\nexport abstract class Input extends CardElement implements IInput {\n //#region Schema\n\n static readonly labelProperty = new StringProperty(Versions.v1_3, \"label\", true);\n static readonly isRequiredProperty = new BoolProperty(Versions.v1_3, \"isRequired\", false);\n static readonly errorMessageProperty = new StringProperty(Versions.v1_3, \"errorMessage\", true);\n\n @property(Input.labelProperty)\n label?: string;\n\n @property(Input.isRequiredProperty)\n isRequired: boolean;\n\n @property(Input.errorMessageProperty)\n errorMessage?: string;\n\n //#endregion\n\n private _outerContainerElement: HTMLElement;\n private _inputControlContainerElement: HTMLElement;\n private _renderedErrorMessageElement?: HTMLElement;\n private _renderedLabelElement?: HTMLElement;\n private _renderedInputControlElement?: HTMLElement;\n\n protected getAllLabelIds(): string[] {\n let labelIds: string[] = [];\n\n if (this.labelledBy) {\n labelIds.push(this.labelledBy);\n }\n\n if (this._renderedLabelElement) {\n labelIds.push(this._renderedLabelElement.id);\n }\n\n if (this._renderedErrorMessageElement) {\n labelIds.push(this._renderedErrorMessageElement.id);\n }\n\n return labelIds;\n }\n\n protected updateInputControlAriaLabelledBy() {\n if (this._renderedInputControlElement) {\n let labelIds: string[] = this.getAllLabelIds();\n\n if (labelIds.length > 0) {\n this._renderedInputControlElement.setAttribute(\"aria-labelledby\", labelIds.join(\" \"));\n }\n else {\n this._renderedInputControlElement.removeAttribute(\"aria-labelledby\");\n }\n }\n }\n\n protected get isNullable(): boolean {\n return true;\n }\n\n protected get renderedInputControlElement(): HTMLElement | undefined {\n return this._renderedInputControlElement;\n }\n\n protected get inputControlContainerElement(): HTMLElement {\n return this._inputControlContainerElement;\n }\n\n protected overrideInternalRender(): HTMLElement | undefined {\n let hostConfig = this.hostConfig;\n\n this._outerContainerElement = document.createElement(\"div\");\n this._outerContainerElement.style.display = \"flex\";\n this._outerContainerElement.style.flexDirection = \"column\";\n\n let renderedInputControlId = Utils.generateUniqueId();\n\n if (this.label) {\n let labelRichTextBlock = new RichTextBlock();\n labelRichTextBlock.setParent(this);\n labelRichTextBlock.forElementId = renderedInputControlId;\n\n let labelInline = new TextRun(this.label);\n labelRichTextBlock.addInline(labelInline);\n\n if (this.isRequired) {\n labelInline.init(hostConfig.inputs.label.requiredInputs);\n\n let isRequiredCueInline = new TextRun(hostConfig.inputs.label.requiredInputs.suffix);\n isRequiredCueInline.color = hostConfig.inputs.label.requiredInputs.suffixColor;\n isRequiredCueInline.ariaHidden = true;\n\n labelRichTextBlock.addInline(isRequiredCueInline);\n }\n else {\n labelInline.init(hostConfig.inputs.label.optionalInputs);\n }\n\n this._renderedLabelElement = labelRichTextBlock.render();\n\n if (this._renderedLabelElement) {\n this._renderedLabelElement.id = Utils.generateUniqueId();\n this._renderedLabelElement.style.marginBottom = hostConfig.getEffectiveSpacing(hostConfig.inputs.label.inputSpacing) + \"px\";\n\n this._outerContainerElement.appendChild(this._renderedLabelElement);\n }\n }\n\n this._inputControlContainerElement = document.createElement(\"div\");\n this._inputControlContainerElement.className = hostConfig.makeCssClassName(\"ac-input-container\");\n this._inputControlContainerElement.style.display = \"flex\";\n\n if (this.height === \"stretch\") {\n this._inputControlContainerElement.style.alignItems = \"stretch\";\n this._inputControlContainerElement.style.flex = \"1 1 auto\";\n }\n\n this._renderedInputControlElement = this.internalRender();\n\n if (this._renderedInputControlElement) {\n this._renderedInputControlElement.id = renderedInputControlId;\n this._renderedInputControlElement.style.minWidth = \"0px\";\n\n if (this.isNullable && this.isRequired) {\n this._renderedInputControlElement.setAttribute(\"aria-required\", \"true\");\n this._renderedInputControlElement.classList.add(hostConfig.makeCssClassName(\"ac-input-required\"));\n }\n\n this._inputControlContainerElement.appendChild(this._renderedInputControlElement);\n this._outerContainerElement.appendChild(this._inputControlContainerElement);\n\n this.updateInputControlAriaLabelledBy();\n\n return this._outerContainerElement;\n }\n\n return undefined;\n }\n\n protected valueChanged() {\n if (this.isValid()) {\n this.resetValidationFailureCue();\n }\n\n if (this.onValueChanged) {\n this.onValueChanged(this);\n }\n\n raiseInputValueChangedEvent(this);\n }\n\n protected resetValidationFailureCue() {\n if (this.renderedInputControlElement) {\n this.renderedInputControlElement.classList.remove(this.hostConfig.makeCssClassName(\"ac-input-validation-failed\"));\n\n this.updateInputControlAriaLabelledBy();\n\n if (this._renderedErrorMessageElement) {\n this._outerContainerElement.removeChild(this._renderedErrorMessageElement);\n\n this._renderedErrorMessageElement = undefined;\n }\n }\n }\n\n protected showValidationErrorMessage() {\n if (this.renderedElement && this.errorMessage && GlobalSettings.displayInputValidationErrors) {\n let errorMessageTextBlock = new TextBlock();\n errorMessageTextBlock.setParent(this);\n errorMessageTextBlock.text = this.errorMessage;\n errorMessageTextBlock.wrap = true;\n errorMessageTextBlock.init(this.hostConfig.inputs.errorMessage);\n\n this._renderedErrorMessageElement = errorMessageTextBlock.render();\n\n if (this._renderedErrorMessageElement) {\n this._renderedErrorMessageElement.id = Utils.generateUniqueId();\n this._outerContainerElement.appendChild(this._renderedErrorMessageElement);\n\n this.updateInputControlAriaLabelledBy();\n }\n }\n }\n\n onValueChanged: (sender: Input) => void;\n\n labelledBy?: string;\n\n abstract isSet(): boolean;\n\n focus() {\n if (this._renderedInputControlElement) {\n this._renderedInputControlElement.focus();\n }\n }\n\n isValid(): boolean {\n return true;\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n if (!this.id) {\n context.addFailure(\n this,\n Enums.ValidationEvent.PropertyCantBeNull,\n Strings.errors.inputsMustHaveUniqueId());\n }\n\n if (this.isRequired) {\n if (!this.label) {\n context.addFailure(\n this,\n Enums.ValidationEvent.RequiredInputsShouldHaveLabel,\n \"Required inputs should have a label\");\n }\n\n if (!this.errorMessage) {\n context.addFailure(\n this,\n Enums.ValidationEvent.RequiredInputsShouldHaveErrorMessage,\n \"Required inputs should have an error message\");\n }\n }\n }\n\n validateValue(): boolean {\n this.resetValidationFailureCue();\n\n let result = this.isRequired ? this.isSet() && this.isValid() : this.isValid();\n\n if (!result && this.renderedInputControlElement) {\n this.renderedInputControlElement.classList.add(this.hostConfig.makeCssClassName(\"ac-input-validation-failed\"));\n\n this.showValidationErrorMessage();\n }\n\n return result;\n }\n\n getAllInputs(processActions: boolean = true): Input[] {\n return [ this ];\n }\n\n abstract get value(): any;\n\n get isInteractive(): boolean {\n return true;\n }\n}\n\nexport class TextInput extends Input {\n //#region Schema\n\n static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\n static readonly maxLengthProperty = new NumProperty(Versions.v1_0, \"maxLength\");\n static readonly isMultilineProperty = new BoolProperty(Versions.v1_0, \"isMultiline\", false);\n static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\n static readonly styleProperty = new EnumProperty(\n Versions.v1_0,\n \"style\",\n Enums.InputTextStyle,\n Enums.InputTextStyle.Text,\n [\n { value: Enums.InputTextStyle.Text },\n { value: Enums.InputTextStyle.Tel },\n { value: Enums.InputTextStyle.Url },\n { value: Enums.InputTextStyle.Email },\n { value: Enums.InputTextStyle.Password, targetVersion: Versions.v1_5}\n ]\n );\n static readonly inlineActionProperty = new ActionProperty(Versions.v1_0, \"inlineAction\", [ \"Action.ShowCard\" ]);\n static readonly regexProperty = new StringProperty(Versions.v1_3, \"regex\", true);\n\n @property(TextInput.valueProperty)\n defaultValue?: string;\n\n @property(TextInput.maxLengthProperty)\n maxLength?: number;\n\n @property(TextInput.isMultilineProperty)\n isMultiline: boolean = false;\n\n @property(TextInput.placeholderProperty)\n placeholder?: string;\n\n @property(TextInput.styleProperty)\n style: Enums.InputTextStyle = Enums.InputTextStyle.Text;\n\n @property(TextInput.inlineActionProperty)\n inlineAction?: Action;\n\n @property(TextInput.regexProperty)\n regex?: string;\n\n //#endregion\n\n private setupInput(input: HTMLInputElement | HTMLTextAreaElement) {\n input.style.flex = \"1 1 auto\";\n input.tabIndex = 0;\n\n if (this.placeholder) {\n input.placeholder = this.placeholder;\n input.setAttribute(\"aria-label\", this.placeholder)\n }\n\n if (this.defaultValue) {\n input.value = this.defaultValue;\n }\n\n if (this.maxLength && this.maxLength > 0) {\n input.maxLength = this.maxLength;\n }\n\n input.oninput = () => { this.valueChanged(); }\n input.onkeypress = (e: KeyboardEvent) => {\n // Ctrl+Enter pressed\n if (e.ctrlKey && e.code === \"Enter\" && this.inlineAction && this.inlineAction.isEnabled) {\n this.inlineAction.execute();\n }\n }\n }\n\n protected internalRender(): HTMLElement | undefined {\n let result: HTMLInputElement | HTMLTextAreaElement;\n\n if (this.isMultiline && this.style !== Enums.InputTextStyle.Password) {\n result = document.createElement(\"textarea\");\n result.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-textInput\", \"ac-multiline\");\n\n if (this.height === \"stretch\") {\n result.style.height = \"initial\";\n }\n }\n else {\n result = document.createElement(\"input\");\n result.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-textInput\");\n result.type = Enums.InputTextStyle[this.style].toLowerCase();\n }\n\n this.setupInput(result);\n\n return result;\n }\n\n protected overrideInternalRender(): HTMLElement | undefined {\n let renderedInputControl = super.overrideInternalRender();\n\n if (this.inlineAction) {\n let button = document.createElement(\"button\");\n button.className = this.hostConfig.makeCssClassName(this.inlineAction.isEnabled ? \"ac-inlineActionButton\" : \"ac-inlineActionButton-disabled\");\n\n button.onclick = (e) => {\n if (this.inlineAction && this.inlineAction.isEnabled) {\n e.preventDefault();\n e.cancelBubble = true;\n\n this.inlineAction.execute();\n }\n };\n\n if (this.inlineAction.iconUrl) {\n button.classList.add(\"iconOnly\");\n\n let icon = document.createElement(\"img\");\n icon.style.height = \"100%\";\n icon.setAttribute(\"role\", \"presentation\");\n\n // The below trick is necessary as a workaround in Chrome where the icon is initially displayed\n // at its native size then resized to 100% of the button's height. This cfreates an unpleasant\n // flicker. On top of that, Chrome's flex implementation fails to prperly re-layout the button\n // after the image has loaded and been gicven its final size. The below trick also fixes that.\n icon.style.display = \"none\";\n icon.onload = () => {\n icon.style.removeProperty(\"display\");\n };\n icon.onerror = () => {\n button.removeChild(icon);\n button.classList.remove(\"iconOnly\");\n button.classList.add(\"textOnly\");\n button.textContent = this.inlineAction && this.inlineAction.title ? this.inlineAction.title : Strings.defaults.inlineActionTitle();\n }\n\n icon.src = this.inlineAction.iconUrl;\n\n button.appendChild(icon);\n button.title = this.inlineAction.title ? this.inlineAction.title : Strings.defaults.inlineActionTitle();\n }\n else {\n button.classList.add(\"textOnly\");\n button.textContent = this.inlineAction.title ? this.inlineAction.title : Strings.defaults.inlineActionTitle();\n }\n\n this.inlineAction.setupElementForAccessibility(button, true);\n\n button.style.marginLeft = \"8px\";\n\n this.inputControlContainerElement.appendChild(button);\n }\n\n return renderedInputControl;\n }\n\n getJsonTypeName(): string {\n return \"Input.Text\";\n }\n\n getActionById(id: string) {\n let result = super.getActionById(id);\n\n if (!result && this.inlineAction) {\n result = this.inlineAction.getActionById(id);\n }\n\n return result;\n }\n\n isSet(): boolean {\n return this.value ? true : false;\n }\n\n isValid(): boolean {\n if (!this.value) {\n return true;\n }\n\n if (this.regex) {\n return new RegExp(this.regex, \"g\").test(this.value);\n }\n\n return true;\n }\n\n get value(): string | undefined {\n if (this.renderedInputControlElement) {\n if (this.isMultiline) {\n return (this.renderedInputControlElement).value;\n }\n else {\n return (this.renderedInputControlElement).value;\n }\n }\n else {\n return undefined;\n }\n }\n}\n\nexport class ToggleInput extends Input {\n //#region Schema\n\n static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\n static readonly titleProperty = new StringProperty(Versions.v1_0, \"title\");\n static readonly valueOnProperty = new StringProperty(Versions.v1_0, \"valueOn\", true, undefined, \"true\", (sender: SerializableObject) => { return \"true\"; });\n static readonly valueOffProperty = new StringProperty(Versions.v1_0, \"valueOff\", true, undefined, \"false\", (sender: SerializableObject) => { return \"false\"; });\n static readonly wrapProperty = new BoolProperty(Versions.v1_2, \"wrap\", false);\n\n @property(ToggleInput.valueProperty)\n defaultValue?: string;\n\n @property(ToggleInput.titleProperty)\n title?: string;\n\n @property(ToggleInput.valueOnProperty)\n valueOn: string = \"true\";\n\n @property(ToggleInput.valueOffProperty)\n valueOff: string = \"false\";\n\n @property(ToggleInput.wrapProperty)\n wrap: boolean = false;\n\n //#endregion\n\n private _checkboxInputElement: HTMLInputElement;\n private _checkboxInputLabelElement: HTMLElement | undefined;\n\n protected updateInputControlAriaLabelledBy() {\n if (this._checkboxInputElement) {\n let joinedLabelIds = this.getAllLabelIds().join(\" \");\n\n if (this._checkboxInputLabelElement && this._checkboxInputLabelElement.id) {\n joinedLabelIds += \" \" + this._checkboxInputLabelElement.id;\n }\n\n if (joinedLabelIds) {\n this._checkboxInputElement.setAttribute(\"aria-labelledby\", joinedLabelIds);\n }\n else {\n this._checkboxInputElement.removeAttribute(\"aria-labelledby\");\n }\n }\n }\n\n protected internalRender(): HTMLElement | undefined {\n let element = document.createElement(\"div\");\n element.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-toggleInput\");\n element.style.width = \"100%\";\n element.style.display = \"flex\";\n element.style.alignItems = \"center\";\n\n this._checkboxInputElement = document.createElement(\"input\");\n this._checkboxInputElement.id = Utils.generateUniqueId();\n this._checkboxInputElement.type = \"checkbox\";\n this._checkboxInputElement.style.display = \"inline-block\";\n this._checkboxInputElement.style.verticalAlign = \"middle\";\n this._checkboxInputElement.style.margin = \"0\";\n this._checkboxInputElement.style.flex = \"0 0 auto\";\n\n if (this.title) {\n this._checkboxInputElement.setAttribute(\"aria-label\", this.title);\n }\n\n if (this.isRequired) {\n this._checkboxInputElement.setAttribute(\"aria-required\", \"true\");\n }\n\n this._checkboxInputElement.tabIndex = 0;\n\n if (this.defaultValue == this.valueOn) {\n this._checkboxInputElement.checked = true;\n }\n\n this._checkboxInputElement.onchange = () => { this.valueChanged(); }\n\n Utils.appendChild(element, this._checkboxInputElement);\n\n if (this.title || this.isDesignMode()) {\n let label = new TextBlock();\n label.setParent(this);\n label.forElementId = this._checkboxInputElement.id;\n label.hostConfig = this.hostConfig;\n label.text = !this.title ? this.getJsonTypeName() : this.title;\n label.useMarkdown = GlobalSettings.useMarkdownInRadioButtonAndCheckbox;\n label.wrap = this.wrap;\n\n this._checkboxInputLabelElement = label.render();\n\n if (this._checkboxInputLabelElement) {\n this._checkboxInputLabelElement.id = Utils.generateUniqueId();\n this._checkboxInputLabelElement.style.display = \"inline-block\";\n this._checkboxInputLabelElement.style.flex = \"1 1 auto\";\n this._checkboxInputLabelElement.style.marginLeft = \"6px\";\n this._checkboxInputLabelElement.style.verticalAlign = \"middle\";\n\n let spacerElement = document.createElement(\"div\");\n spacerElement.style.width = \"6px\";\n\n Utils.appendChild(element, spacerElement);\n Utils.appendChild(element, this._checkboxInputLabelElement);\n }\n }\n\n return element;\n }\n\n protected get isNullable(): boolean {\n return false;\n }\n\n getJsonTypeName(): string {\n return \"Input.Toggle\";\n }\n\n focus() {\n if (this._checkboxInputElement) {\n this._checkboxInputElement.focus();\n }\n }\n\n isSet(): boolean {\n if (this.isRequired) {\n return this.value === this.valueOn;\n }\n\n return this.value ? true : false;\n }\n\n get value(): string | undefined {\n if (this._checkboxInputElement) {\n return this._checkboxInputElement.checked ? this.valueOn : this.valueOff;\n }\n else {\n return undefined;\n }\n }\n}\n\nexport class Choice extends SerializableObject {\n //#region Schema\n\n static readonly titleProperty = new StringProperty(Versions.v1_0, \"title\");\n static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\n\n @property(Choice.titleProperty)\n title?: string;\n\n @property(Choice.valueProperty)\n value?: string;\n\n //#endregion\n\n protected getSchemaKey(): string {\n return \"Choice\";\n }\n\n constructor(title?: string, value?: string) {\n super();\n\n this.title = title;\n this.value = value;\n }\n}\n\nexport class ChoiceSetInput extends Input {\n //#region Schema\n\n static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\n static readonly choicesProperty = new SerializableObjectCollectionProperty(Versions.v1_0, \"choices\", Choice);\n static readonly styleProperty = new ValueSetProperty(\n Versions.v1_0,\n \"style\",\n [\n { value: \"compact\" },\n { value: \"expanded\" },\n { value: \"filtered\", targetVersion: Versions.v1_5 }\n ],\n \"compact\");\n static readonly isMultiSelectProperty = new BoolProperty(Versions.v1_0, \"isMultiSelect\", false);\n static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\n static readonly wrapProperty = new BoolProperty(Versions.v1_2, \"wrap\", false);\n\n @property(ChoiceSetInput.valueProperty)\n defaultValue?: string;\n\n @property(ChoiceSetInput.styleProperty)\n style?: \"compact\" | \"expanded\" | \"filtered\";\n\n get isCompact(): boolean {\n return !this.style || this.style === \"compact\";\n }\n\n set isCompact(value: boolean) {\n this.style = value ? undefined : \"expanded\";\n }\n\n @property(ChoiceSetInput.isMultiSelectProperty)\n isMultiSelect: boolean = false;\n\n @property(ChoiceSetInput.placeholderProperty)\n placeholder?: string;\n\n @property(ChoiceSetInput.wrapProperty)\n wrap: boolean = false;\n\n @property(ChoiceSetInput.choicesProperty)\n choices: Choice[] = [];\n\n //#endregion\n\n private static uniqueCategoryCounter = 0;\n\n private static getUniqueCategoryName(): string {\n let uniqueCategoryName = \"__ac-category\" + ChoiceSetInput.uniqueCategoryCounter;\n\n ChoiceSetInput.uniqueCategoryCounter++;\n\n return uniqueCategoryName;\n }\n\n private _uniqueCategoryName: string;\n private _selectElement: HTMLSelectElement | undefined;\n private _textInput: HTMLInputElement | undefined;\n private _toggleInputs: HTMLInputElement[] | undefined;\n private _labels: Array;\n\n // Make sure `aria-current` is applied to the currently-selected item\n private internalApplyAriaCurrent(): void {\n if (this._selectElement) {\n const options = this._selectElement.options;\n\n if (options) {\n for (let i = 0; i < options.length; i++) {\n if (options[i].selected) {\n options[i].setAttribute(\"aria-current\", \"true\");\n }\n else {\n options[i].removeAttribute(\"aria-current\");\n }\n }\n }\n }\n }\n\n private renderCompoundInput(cssClassName: string, type: \"checkbox\" | \"radio\", defaultValues: string[] | undefined): HTMLElement {\n let element = document.createElement(\"div\");\n element.className = this.hostConfig.makeCssClassName(\"ac-input\", cssClassName);\n element.style.width = \"100%\";\n\n this._toggleInputs = [];\n this._labels = [];\n\n for (let choice of this.choices) {\n let input = document.createElement(\"input\");\n input.id = Utils.generateUniqueId();\n input.type = type;\n input.style.margin = \"0\";\n input.style.display = \"inline-block\";\n input.style.verticalAlign = \"middle\";\n input.style.flex = \"0 0 auto\";\n input.name = this.id ? this.id : this._uniqueCategoryName;\n\n if (this.isRequired) {\n input.setAttribute(\"aria-required\", \"true\");\n }\n\n if (choice.value) {\n input.value = choice.value;\n }\n\n if (choice.title) {\n input.setAttribute(\"aria-label\", choice.title);\n }\n\n if (defaultValues && choice.value) {\n if (defaultValues.indexOf(choice.value) >= 0) {\n input.checked = true;\n }\n }\n\n input.onchange = () => { this.valueChanged(); }\n\n this._toggleInputs.push(input);\n\n let compoundInput = document.createElement(\"div\");\n compoundInput.style.display = \"flex\";\n compoundInput.style.alignItems = \"center\";\n\n Utils.appendChild(compoundInput, input);\n\n let label = new TextBlock();\n label.setParent(this);\n label.forElementId = input.id;\n label.hostConfig = this.hostConfig;\n label.text = choice.title ? choice.title : \"Choice \" + this._toggleInputs.length;\n label.useMarkdown = GlobalSettings.useMarkdownInRadioButtonAndCheckbox;\n label.wrap = this.wrap;\n\n let labelElement = label.render();\n\n this._labels.push(labelElement);\n\n if (labelElement) {\n labelElement.id = Utils.generateUniqueId();\n labelElement.style.display = \"inline-block\";\n labelElement.style.flex = \"1 1 auto\";\n labelElement.style.marginLeft = \"6px\";\n labelElement.style.verticalAlign = \"middle\";\n\n let spacerElement = document.createElement(\"div\");\n spacerElement.style.width = \"6px\";\n\n Utils.appendChild(compoundInput, spacerElement);\n Utils.appendChild(compoundInput, labelElement);\n }\n\n Utils.appendChild(element, compoundInput);\n }\n\n return element;\n }\n\n protected updateInputControlAriaLabelledBy() {\n if ((this.isMultiSelect || this.style === \"expanded\") && this._toggleInputs && this._labels) {\n let labelIds: string[] = this.getAllLabelIds();\n\n for (let i = 0; i < this._toggleInputs.length; i++) {\n let joinedLabelIds = labelIds.join(\" \");\n let label = this._labels[i];\n\n if (label && label.id) {\n joinedLabelIds += \" \" + label.id;\n }\n\n if (joinedLabelIds) {\n this._toggleInputs[i].setAttribute(\"aria-labelledby\", joinedLabelIds);\n }\n else {\n this._toggleInputs[i].removeAttribute(\"aria-labelledby\");\n }\n }\n }\n else {\n super.updateInputControlAriaLabelledBy();\n }\n }\n\n protected internalRender(): HTMLElement | undefined {\n this._uniqueCategoryName = ChoiceSetInput.getUniqueCategoryName();\n\n if (this.isMultiSelect) {\n // Render as a list of toggle inputs\n return this.renderCompoundInput(\n \"ac-choiceSetInput-multiSelect\",\n \"checkbox\",\n this.defaultValue ? this.defaultValue.split(this.hostConfig.choiceSetInputValueSeparator) : undefined);\n }\n else {\n if (this.style === \"expanded\") {\n // Render as a series of radio buttons\n return this.renderCompoundInput(\n \"ac-choiceSetInput-expanded\",\n \"radio\",\n this.defaultValue ? [ this.defaultValue ] : undefined);\n }\n else if (this.style === \"filtered\") {\n // Render as a text input coupled with a datalist\n let inputContainer = document.createElement(\"div\");\n inputContainer.style.width = \"100%\";\n\n this._textInput = document.createElement(\"input\");\n this._textInput.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-multichoiceInput\", \"ac-choiceSetInput-filtered\");\n this._textInput.type = \"text\";\n this._textInput.style.width = \"100%\";\n this._textInput.oninput = () => {\n this.valueChanged();\n\n if (this._textInput) {\n // Remove aria-label when value is not empty so narration software doesn't\n // read the placeholder\n if (this.value) {\n this._textInput.removeAttribute(\"placeholder\");\n this._textInput.removeAttribute(\"aria-label\");\n }\n else if (this.placeholder) {\n this._textInput.placeholder = this.placeholder;\n this._textInput.setAttribute(\"aria-label\", this.placeholder);\n }\n }\n }\n\n if (this.defaultValue) {\n this._textInput.value = this.defaultValue;\n }\n\n if (this.placeholder && !this._textInput.value) {\n this._textInput.placeholder = this.placeholder;\n this._textInput.setAttribute(\"aria-label\", this.placeholder);\n }\n\n let dataList = document.createElement(\"datalist\");\n dataList.id = Utils.generateUniqueId();\n\n for (let choice of this.choices) {\n let option = document.createElement(\"option\");\n // To fix https://stackoverflow.com/questions/29882361/show-datalist-labels-but-submit-the-actual-value\n // value is mapped to choice.title other than choice.value\n option.value = choice.title;\n option.setAttribute(\"aria-label\", choice.title);\n\n dataList.appendChild(option);\n }\n\n this._textInput.setAttribute(\"list\", dataList.id);\n\n inputContainer.append(this._textInput, dataList);\n\n return inputContainer;\n }\n else {\n // Render as a combo box\n this._selectElement = document.createElement(\"select\");\n this._selectElement.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-multichoiceInput\", \"ac-choiceSetInput-compact\");\n this._selectElement.style.width = \"100%\";\n\n let option = document.createElement(\"option\");\n option.selected = true;\n option.disabled = true;\n option.hidden = true;\n option.value = \"\";\n\n if (this.placeholder) {\n option.text = this.placeholder;\n }\n\n Utils.appendChild(this._selectElement, option);\n\n for (let choice of this.choices) {\n let option = document.createElement(\"option\");\n option.value = choice.value;\n option.text = choice.title;\n option.setAttribute(\"aria-label\", choice.title);\n\n if (choice.value == this.defaultValue) {\n option.selected = true;\n }\n\n Utils.appendChild(this._selectElement, option);\n }\n\n this._selectElement.onchange = () => {\n this.internalApplyAriaCurrent();\n this.valueChanged();\n }\n\n this.internalApplyAriaCurrent();\n\n return this._selectElement;\n }\n }\n }\n\n getJsonTypeName(): string {\n return \"Input.ChoiceSet\";\n }\n\n focus() {\n if (this._toggleInputs && (this.isMultiSelect || this.style === \"expanded\")) {\n if (this._toggleInputs.length > 0) {\n this._toggleInputs[0].focus();\n }\n }\n else if (this._textInput) {\n this._textInput.focus();\n }\n else {\n super.focus();\n }\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n if (this.choices.length == 0) {\n context.addFailure(\n this,\n Enums.ValidationEvent.CollectionCantBeEmpty,\n Strings.errors.choiceSetMustHaveAtLeastOneChoice());\n }\n\n for (let choice of this.choices) {\n if (!choice.title || !choice.value) {\n context.addFailure(\n this,\n Enums.ValidationEvent.PropertyCantBeNull,\n Strings.errors.choiceSetChoicesMustHaveTitleAndValue());\n }\n }\n }\n\n isSet(): boolean {\n return this.value ? true : false;\n }\n\n isValid(): boolean {\n if (this._textInput) {\n if (this.value === \"\" || this.value === this.placeholder) {\n return true;\n }\n for (let choice of this.choices) {\n if (this.value === choice.value) {\n return true;\n }\n }\n\n return false;\n }\n\n return super.isValid();\n }\n\n get value(): string | undefined {\n if (!this.isMultiSelect) {\n if (this._selectElement) {\n return this._selectElement.selectedIndex > 0 ? this._selectElement.value : undefined;\n }\n else if (this._textInput) {\n for (let choice of this.choices)\n {\n if (choice.title && this._textInput.value === choice.title)\n {\n return choice.value;\n }\n }\n return this._textInput.value;\n }\n else if (this._toggleInputs && this._toggleInputs.length > 0) {\n for (let toggleInput of this._toggleInputs) {\n if (toggleInput.checked) {\n return toggleInput.value;\n }\n }\n }\n\n return undefined;\n }\n else {\n if (!this._toggleInputs || this._toggleInputs.length == 0) {\n return undefined;\n }\n\n let result: string = \"\";\n\n for (let toggleInput of this._toggleInputs) {\n if (toggleInput.checked) {\n if (result != \"\") {\n result += this.hostConfig.choiceSetInputValueSeparator;\n }\n\n result += toggleInput.value;\n }\n }\n\n return result ? result : undefined;\n }\n }\n}\n\nexport class NumberInput extends Input {\n //#region Schema\n\n static readonly valueProperty = new NumProperty(Versions.v1_0, \"value\");\n static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\n static readonly minProperty = new NumProperty(Versions.v1_0, \"min\");\n static readonly maxProperty = new NumProperty(Versions.v1_0, \"max\");\n\n @property(NumberInput.valueProperty)\n defaultValue?: number;\n\n @property(NumberInput.minProperty)\n min?: number;\n\n @property(NumberInput.maxProperty)\n max?: number;\n\n @property(NumberInput.placeholderProperty)\n placeholder?: string;\n\n //#endregion\n\n private _numberInputElement: HTMLInputElement;\n\n protected internalRender(): HTMLElement | undefined {\n this._numberInputElement = document.createElement(\"input\");\n this._numberInputElement.setAttribute(\"type\", \"number\");\n\n if (this.min !== undefined) {\n this._numberInputElement.setAttribute(\"min\", this.min.toString());\n }\n\n if (this.max !== undefined) {\n this._numberInputElement.setAttribute(\"max\", this.max.toString());\n }\n\n this._numberInputElement.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-numberInput\");\n this._numberInputElement.style.width = \"100%\";\n this._numberInputElement.tabIndex = 0;\n\n if (this.defaultValue !== undefined) {\n this._numberInputElement.valueAsNumber = this.defaultValue;\n }\n\n if (this.placeholder) {\n this._numberInputElement.placeholder = this.placeholder;\n this._numberInputElement.setAttribute(\"aria-label\", this.placeholder);\n }\n\n this._numberInputElement.oninput = () => { this.valueChanged(); }\n\n return this._numberInputElement;\n }\n\n getJsonTypeName(): string {\n return \"Input.Number\";\n }\n\n isSet(): boolean {\n return this.value !== undefined && !isNaN(this.value);\n }\n\n isValid(): boolean {\n if (this.value === undefined) {\n return !this.isRequired;\n }\n\n let result = true;\n\n if (this.min !== undefined) {\n result = result && (this.value >= this.min);\n }\n\n if (this.max !== undefined) {\n result = result && (this.value <= this.max);\n }\n\n return result;\n }\n\n get value(): number | undefined {\n return this._numberInputElement ? this._numberInputElement.valueAsNumber : undefined;\n }\n}\n\nexport class DateInput extends Input {\n //#region Schema\n\n static readonly valueProperty = new StringProperty(Versions.v1_0, \"value\");\n static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\n static readonly minProperty = new StringProperty(Versions.v1_0, \"min\");\n static readonly maxProperty = new StringProperty(Versions.v1_0, \"max\");\n\n @property(DateInput.valueProperty)\n defaultValue?: string;\n\n @property(DateInput.minProperty)\n min?: string;\n\n @property(DateInput.maxProperty)\n max?: string;\n\n @property(DateInput.placeholderProperty)\n placeholder?: string;\n\n //#endregion\n\n private _dateInputElement: HTMLInputElement;\n\n protected internalRender(): HTMLElement | undefined {\n this._dateInputElement = document.createElement(\"input\");\n this._dateInputElement.setAttribute(\"type\", \"date\");\n\n if (this.min) {\n this._dateInputElement.setAttribute(\"min\", this.min);\n }\n\n if (this.max) {\n this._dateInputElement.setAttribute(\"max\", this.max);\n }\n\n if (this.placeholder) {\n this._dateInputElement.placeholder = this.placeholder;\n this._dateInputElement.setAttribute(\"aria-label\", this.placeholder);\n }\n\n this._dateInputElement.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-dateInput\");\n this._dateInputElement.style.width = \"100%\";\n\n this._dateInputElement.oninput = () => { this.valueChanged(); }\n\n if (this.defaultValue) {\n this._dateInputElement.value = this.defaultValue;\n }\n\n return this._dateInputElement;\n }\n\n getJsonTypeName(): string {\n return \"Input.Date\";\n }\n\n isSet(): boolean {\n return this.value ? true : false;\n }\n\n isValid(): boolean {\n if (!this.value) {\n return !this.isRequired;\n }\n\n let valueAsDate = new Date(this.value);\n\n let result = true;\n\n if (this.min) {\n let minDate = new Date(this.min);\n\n result = result && (valueAsDate >= minDate);\n }\n\n if (this.max) {\n let maxDate = new Date(this.max);\n\n result = result && (valueAsDate <= maxDate);\n }\n\n return result;\n }\n\n get value(): string | undefined {\n return this._dateInputElement ? this._dateInputElement.value : undefined;\n }\n}\n\nexport class TimeProperty extends CustomProperty {\n constructor(readonly targetVersion: Version, readonly name: string) {\n super(\n targetVersion,\n name,\n (sender: SerializableObject, property: PropertyDefinition, source: PropertyBag, context: BaseSerializationContext) => {\n let value = source[property.name];\n\n if (typeof value === \"string\" && value && /^[0-9]{2}:[0-9]{2}$/.test(value)) {\n return value;\n }\n\n return undefined;\n },\n (sender: SerializableObject, property: PropertyDefinition, target: PropertyBag, value: string | undefined, context: BaseSerializationContext) => {\n context.serializeValue(target, property.name, value);\n });\n }\n}\n\nexport class TimeInput extends Input {\n private static convertTimeStringToDate(timeString: string): Date {\n return new Date(\"1973-09-04T\" + timeString + \":00Z\");\n }\n\n //#region Schema\n\n static readonly valueProperty = new TimeProperty(Versions.v1_0, \"value\");\n static readonly placeholderProperty = new StringProperty(Versions.v1_0, \"placeholder\");\n static readonly minProperty = new TimeProperty(Versions.v1_0, \"min\");\n static readonly maxProperty = new TimeProperty(Versions.v1_0, \"max\");\n\n @property(TimeInput.valueProperty)\n defaultValue?: string;\n\n @property(TimeInput.minProperty)\n min?: string;\n\n @property(TimeInput.maxProperty)\n max?: string;\n\n @property(TimeInput.placeholderProperty)\n placeholder?: string;\n\n //#endregion\n\n private _timeInputElement: HTMLInputElement;\n\n protected internalRender(): HTMLElement | undefined {\n this._timeInputElement = document.createElement(\"input\");\n this._timeInputElement.setAttribute(\"type\", \"time\");\n this._timeInputElement.setAttribute(\"min\", this.min);\n this._timeInputElement.setAttribute(\"max\", this.max);\n this._timeInputElement.className = this.hostConfig.makeCssClassName(\"ac-input\", \"ac-timeInput\");\n this._timeInputElement.style.width = \"100%\";\n this._timeInputElement.oninput = () => { this.valueChanged(); }\n\n if (this.placeholder) {\n this._timeInputElement.placeholder = this.placeholder;\n this._timeInputElement.setAttribute(\"aria-label\", this.placeholder);\n }\n\n if (this.defaultValue) {\n this._timeInputElement.value = this.defaultValue;\n }\n\n return this._timeInputElement;\n }\n\n getJsonTypeName(): string {\n return \"Input.Time\";\n }\n\n isSet(): boolean {\n return this.value ? true : false;\n }\n\n isValid(): boolean {\n if (!this.value) {\n return !this.isRequired;\n }\n\n let valueAsDate = TimeInput.convertTimeStringToDate(this.value);\n\n let result = true;\n\n if (this.min) {\n let minDate = TimeInput.convertTimeStringToDate(this.min);\n\n result = result && (valueAsDate >= minDate);\n }\n\n if (this.max) {\n let maxDate = TimeInput.convertTimeStringToDate(this.max);\n\n result = result && (valueAsDate <= maxDate);\n }\n\n return result;\n }\n\n get value(): string | undefined {\n return this._timeInputElement ? this._timeInputElement.value : undefined;\n }\n}\n\nexport const enum ActionButtonState {\n Normal,\n Expanded,\n Subdued\n}\n\nexport type ActionType = { new(): Action };\n\nexport abstract class Action extends CardObject {\n //#region Schema\n\n static readonly titleProperty = new StringProperty(Versions.v1_0, \"title\");\n static readonly iconUrlProperty = new StringProperty(Versions.v1_1, \"iconUrl\");\n static readonly styleProperty = new ValueSetProperty(\n Versions.v1_2,\n \"style\",\n [\n { value: Enums.ActionStyle.Default },\n { value: Enums.ActionStyle.Positive },\n { value: Enums.ActionStyle.Destructive }\n ],\n Enums.ActionStyle.Default);\n static readonly modeProperty = new ValueSetProperty(\n Versions.v1_5,\n \"mode\",\n [\n { value: Enums.ActionMode.Primary },\n { value: Enums.ActionMode.Secondary }\n ],\n Enums.ActionMode.Primary);\n static readonly tooltipProperty = new StringProperty(Versions.v1_5, \"tooltip\");\n static readonly isEnabledProperty = new BoolProperty(Versions.v1_5, \"isEnabled\", true);\n\n @property(Action.titleProperty)\n title?: string;\n\n @property(Action.iconUrlProperty)\n iconUrl?: string;\n\n @property(Action.styleProperty)\n style: string = Enums.ActionStyle.Default;\n\n @property(Action.modeProperty)\n mode: string = Enums.ActionMode.Primary;\n\n @property(Action.tooltipProperty)\n tooltip?: string;\n\n @property(Action.isEnabledProperty)\n isEnabled: boolean;\n\n //#endregion\n\n private renderButtonContent() {\n if (this.renderedElement) {\n // Cache hostConfig for perf\n let hostConfig = this.hostConfig;\n\n let titleElement = document.createElement(\"div\");\n titleElement.style.overflow = \"hidden\";\n titleElement.style.textOverflow = \"ellipsis\";\n\n if (!(hostConfig.actions.iconPlacement == Enums.ActionIconPlacement.AboveTitle || hostConfig.actions.allowTitleToWrap)) {\n titleElement.style.whiteSpace = \"nowrap\";\n }\n\n if (this.title) {\n titleElement.innerText = this.title;\n }\n\n if (!this.iconUrl) {\n this.renderedElement.classList.add(\"noIcon\");\n this.renderedElement.appendChild(titleElement);\n }\n else {\n let iconElement = document.createElement(\"img\");\n iconElement.src = this.iconUrl;\n iconElement.style.width = hostConfig.actions.iconSize + \"px\";\n iconElement.style.height = hostConfig.actions.iconSize + \"px\";\n iconElement.style.flex = \"0 0 auto\";\n\n if (hostConfig.actions.iconPlacement == Enums.ActionIconPlacement.AboveTitle) {\n this.renderedElement.classList.add(\"iconAbove\");\n this.renderedElement.style.flexDirection = \"column\";\n\n if (this.title) {\n iconElement.style.marginBottom = \"6px\";\n }\n }\n else {\n this.renderedElement.classList.add(\"iconLeft\");\n\n iconElement.style.maxHeight = \"100%\";\n\n if (this.title) {\n iconElement.style.marginRight = \"6px\";\n }\n }\n\n this.renderedElement.appendChild(iconElement);\n this.renderedElement.appendChild(titleElement);\n }\n }\n }\n\n private getParentContainer(): Container | undefined {\n if (this.parent instanceof Container) {\n return this.parent;\n }\n\n return this.parent ? this.parent.getParentContainer() : undefined;\n }\n\n private _state: ActionButtonState = ActionButtonState.Normal;\n private _actionCollection?: ActionCollection; // hold the reference to its action collection\n private _isFocusable: boolean = true;\n\n protected updateCssClasses() {\n if (this.parent && this.renderedElement) {\n let hostConfig = this.parent.hostConfig;\n\n this.renderedElement.className = hostConfig.makeCssClassName(this.isEnabled ? \"ac-pushButton\" : \"ac-pushButton-disabled\");\n\n let parentContainer = this.getParentContainer();\n\n if (parentContainer) {\n let parentContainerStyle = parentContainer.getEffectiveStyle();\n\n if (parentContainerStyle) {\n this.renderedElement.classList.add(\"style-\" + parentContainerStyle);\n }\n }\n\n this.renderedElement.tabIndex = this.isFocusable ? 0 : -1;\n\n switch (this._state) {\n case ActionButtonState.Expanded:\n this.renderedElement.classList.add(hostConfig.makeCssClassName(\"expanded\"));\n break;\n case ActionButtonState.Subdued:\n this.renderedElement.classList.add(hostConfig.makeCssClassName(\"subdued\"));\n break;\n }\n\n if (this.style && this.isEnabled) {\n if (this.style === Enums.ActionStyle.Positive) {\n this.renderedElement.classList.add(...hostConfig.makeCssClassNames(\"primary\", \"style-positive\"));\n }\n else {\n this.renderedElement.classList.add(...hostConfig.makeCssClassNames(\"style-\" + this.style.toLowerCase()));\n }\n }\n }\n }\n\n protected getDefaultSerializationContext(): BaseSerializationContext {\n return new SerializationContext();\n }\n\n protected internalGetReferencedInputs(): Dictionary {\n return {};\n }\n\n protected internalPrepareForExecution(inputs: Dictionary | undefined) {\n // Do nothing in base implementation\n }\n\n protected internalValidateInputs(referencedInputs: Dictionary | undefined): Input[] {\n let result: Input[] = [];\n\n if (referencedInputs) {\n for (let key of Object.keys(referencedInputs)) {\n let input = referencedInputs[key];\n\n if (!input.validateValue()) {\n result.push(input);\n }\n }\n }\n\n return result;\n }\n\n protected shouldSerialize(context: SerializationContext): boolean {\n return context.actionRegistry.findByName(this.getJsonTypeName()) !== undefined;\n }\n\n protected raiseExecuteActionEvent() {\n if (this.onExecute) {\n this.onExecute(this);\n }\n\n raiseExecuteActionEvent(this);\n }\n\n onExecute: (sender: Action) => void;\n\n getHref(): string | undefined {\n return \"\";\n }\n\n getAriaRole(): string {\n return \"button\";\n }\n\n setupElementForAccessibility(element: HTMLElement, promoteTooltipToLabel: boolean = false) {\n element.tabIndex = this.isEnabled ? 0 : -1;\n\n element.setAttribute(\"role\", this.getAriaRole());\n\n if (element instanceof HTMLButtonElement) {\n element.disabled = !this.isEnabled;\n }\n\n if (!this.isEnabled) {\n element.setAttribute(\"aria-disabled\", \"true\");\n }\n else {\n element.classList.add(this.hostConfig.makeCssClassName(\"ac-selectable\"));\n }\n\n if (this.title) {\n element.setAttribute(\"aria-label\", this.title);\n element.title = this.title;\n }\n\n if (this.tooltip) {\n let targetAriaAttribute = promoteTooltipToLabel ? (this.title ? \"aria-description\" : \"aria-label\") : \"aria-description\";\n\n element.setAttribute(targetAriaAttribute, this.tooltip);\n element.title = this.tooltip;\n }\n }\n\n parse(source: any, context?: SerializationContext) {\n return super.parse(source, context ? context : new SerializationContext());\n }\n\n render() {\n let buttonElement = document.createElement(\"button\");\n buttonElement.type = \"button\";\n buttonElement.style.display = \"flex\";\n buttonElement.style.alignItems = \"center\";\n buttonElement.style.justifyContent = \"center\";\n buttonElement.onclick = (e) => {\n if (this.isEnabled) {\n e.preventDefault();\n e.cancelBubble = true;\n\n this.execute();\n }\n };\n\n this._renderedElement = buttonElement;\n\n this.renderButtonContent();\n this.updateCssClasses();\n this.setupElementForAccessibility(buttonElement);\n }\n\n execute() {\n if (this._actionCollection) {\n this._actionCollection.actionExecuted(this);\n }\n\n this.raiseExecuteActionEvent();\n }\n\n prepareForExecution(): boolean {\n let referencedInputs = this.getReferencedInputs();\n let invalidInputs = this.internalValidateInputs(referencedInputs);\n\n if (invalidInputs.length > 0) {\n invalidInputs[0].focus();\n\n return false;\n }\n\n this.internalPrepareForExecution(referencedInputs);\n\n return true;\n };\n\n remove(): boolean {\n if (this._actionCollection) {\n return this._actionCollection.removeAction(this);\n }\n\n return false;\n }\n\n getAllInputs(processActions: boolean = true): Input[] {\n return [];\n }\n\n getResourceInformation(): IResourceInformation[] {\n return this.iconUrl ? [{ url: this.iconUrl, mimeType: \"image\" }] : [];\n }\n\n getActionById(id: string): Action | undefined {\n return this.id === id ? this : undefined;\n }\n\n getReferencedInputs(): Dictionary | undefined {\n return this.internalGetReferencedInputs();\n }\n\n /**\n * Validates the inputs associated with this action.\n *\n * @returns A list of inputs that failed validation, or an empty array if no input failed validation.\n */\n validateInputs(): Input[] {\n return this.internalValidateInputs(this.getReferencedInputs());\n }\n\n get isPrimary(): boolean {\n return this.style == Enums.ActionStyle.Positive;\n }\n\n set isPrimary(value: boolean) {\n if (value) {\n this.style = Enums.ActionStyle.Positive;\n }\n else {\n if (this.style == Enums.ActionStyle.Positive) {\n this.style = Enums.ActionStyle.Default;\n }\n }\n }\n\n get hostConfig(): HostConfig {\n return this.parent ? this.parent.hostConfig : defaultHostConfig;\n }\n\n get parent(): CardElement | undefined {\n return this._parent;\n }\n\n get state(): ActionButtonState {\n return this._state;\n }\n\n set state(value: ActionButtonState) {\n if (this._state !== value) {\n this._state = value;\n\n this.updateCssClasses();\n }\n }\n\n get isFocusable(): boolean {\n return this._isFocusable;\n }\n\n set isFocusable(value: boolean) {\n if (this._isFocusable !== value) {\n this._isFocusable = value;\n\n this.updateCssClasses();\n }\n }\n}\n\nexport abstract class SubmitActionBase extends Action {\n //#region Schema\n\n static readonly dataProperty = new PropertyDefinition(Versions.v1_0, \"data\");\n static readonly associatedInputsProperty = new CustomProperty(\n Versions.v1_3,\n \"associatedInputs\",\n (sender: SerializableObject, property: PropertyDefinition, source: PropertyBag, context: BaseSerializationContext) => {\n let value = source[property.name];\n\n if (value !== undefined && typeof value === \"string\") {\n return value.toLowerCase() === \"none\" ? \"none\" : \"auto\";\n }\n\n return undefined;\n },\n (sender: SerializableObject, property: PropertyDefinition, target: PropertyBag, value: string | undefined, context: BaseSerializationContext) => {\n context.serializeValue(target, property.name, value);\n });\n\n @property(SubmitActionBase.dataProperty)\n private _originalData?: PropertyBag;\n\n @property(SubmitActionBase.associatedInputsProperty)\n associatedInputs?: \"auto\" | \"none\";\n\n //#endregion\n\n private _isPrepared: boolean = false;\n private _processedData?: PropertyBag;\n\n protected internalGetReferencedInputs(): Dictionary {\n let result: Dictionary = {};\n\n if (this.associatedInputs !== \"none\") {\n let current: CardElement | undefined = this.parent;\n let inputs: Input[] = [];\n\n while (current) {\n inputs = inputs.concat(current.getAllInputs(false));\n\n current = current.parent;\n }\n\n for (let input of inputs) {\n if (input.id) {\n result[input.id] = input;\n }\n }\n }\n\n return result;\n }\n\n protected internalPrepareForExecution(inputs: Dictionary | undefined) {\n if (this._originalData) {\n this._processedData = JSON.parse(JSON.stringify(this._originalData));\n }\n else {\n this._processedData = {};\n }\n\n if (this._processedData && inputs) {\n for (let key of Object.keys(inputs)) {\n let input = inputs[key];\n\n if (input.id && input.isSet()) {\n this._processedData[input.id] = typeof input.value === \"string\" ? input.value : input.value.toString();\n }\n }\n }\n\n this._isPrepared = true;\n }\n\n get data(): object | undefined {\n return this._isPrepared ? this._processedData : this._originalData;\n }\n\n set data(value: object | undefined) {\n this._originalData = value;\n this._isPrepared = false;\n }\n}\n\nexport class SubmitAction extends SubmitActionBase {\n // Note the \"weird\" way this field is declared is to work around a breaking\n // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\n static readonly JsonTypeName: \"Action.Submit\" = \"Action.Submit\";\n\n getJsonTypeName(): string {\n return SubmitAction.JsonTypeName;\n }\n}\n\nexport class ExecuteAction extends SubmitActionBase {\n // Note the \"weird\" way this field is declared is to work around a breaking\n // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\n static readonly JsonTypeName: \"Action.Execute\" = \"Action.Execute\";\n\n //#region Schema\n\n static readonly verbProperty = new StringProperty(Versions.v1_4, \"verb\");\n\n @property(ExecuteAction.verbProperty)\n verb: string;\n\n //#endregion\n\n getJsonTypeName(): string {\n return ExecuteAction.JsonTypeName;\n }\n}\n\nexport class OpenUrlAction extends Action {\n //#region Schema\n\n static readonly urlProperty = new StringProperty(Versions.v1_0, \"url\");\n\n @property(OpenUrlAction.urlProperty)\n url?: string;\n\n //#endregion\n\n // Note the \"weird\" way this field is declared is to work around a breaking\n // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\n static readonly JsonTypeName: \"Action.OpenUrl\" = \"Action.OpenUrl\";\n\n getJsonTypeName(): string {\n return OpenUrlAction.JsonTypeName;\n }\n\n getAriaRole() : string {\n return \"link\";\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n if (!this.url) {\n context.addFailure(\n this,\n Enums.ValidationEvent.PropertyCantBeNull,\n Strings.errors.propertyMustBeSet(\"url\"));\n }\n }\n\n getHref(): string | undefined {\n return this.url;\n }\n}\n\nexport class ToggleVisibilityAction extends Action {\n //#region Schema\n\n static readonly targetElementsProperty = new CustomProperty(\n Versions.v1_2,\n \"targetElements\",\n (sender: SerializableObject, property: PropertyDefinition, source: PropertyBag, context: BaseSerializationContext) => {\n let result: PropertyBag = {}\n\n if (Array.isArray(source[property.name])) {\n for (let item of source[property.name]) {\n if (typeof item === \"string\") {\n result[item] = undefined;\n }\n else if (typeof item === \"object\") {\n let elementId = item[\"elementId\"];\n\n if (typeof elementId === \"string\") {\n result[elementId] = Utils.parseBool(item[\"isVisible\"]);\n }\n }\n }\n }\n\n return result;\n },\n (sender: SerializableObject, property: PropertyDefinition, target: PropertyBag, value: PropertyBag, context: BaseSerializationContext) => {\n let targetElements: any[] = [];\n\n for (let id of Object.keys(value)) {\n if (typeof value[id] === \"boolean\") {\n targetElements.push(\n {\n elementId: id,\n isVisible: value[id]\n }\n );\n }\n else {\n targetElements.push(id);\n }\n }\n\n context.serializeArray(target, property.name, targetElements);\n },\n {},\n (sender: SerializableObject) => { return {}; });\n\n @property(ToggleVisibilityAction.targetElementsProperty)\n targetElements: { [key: string]: any } = {};\n\n //#endregion\n\n // Note the \"weird\" way this field is declared is to work around a breaking\n // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\n static readonly JsonTypeName: \"Action.ToggleVisibility\" = \"Action.ToggleVisibility\";\n\n private updateAriaControlsAttribute() {\n // apply aria labels to make it clear which elements this action will toggle\n if (this.targetElements) {\n const elementIds = Object.keys(this.targetElements);\n\n if (this._renderedElement) {\n if (elementIds.length > 0) {\n this._renderedElement.setAttribute(\"aria-controls\", elementIds.join(\" \"));\n }\n else {\n this._renderedElement.removeAttribute(\"aria-controls\");\n }\n }\n }\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n if (!this.targetElements) {\n context.addFailure(\n this,\n Enums.ValidationEvent.PropertyCantBeNull,\n Strings.errors.propertyMustBeSet(\"targetElements\"));\n }\n }\n\n getJsonTypeName(): string {\n return ToggleVisibilityAction.JsonTypeName;\n }\n\n render() {\n super.render();\n\n this.updateAriaControlsAttribute();\n }\n\n execute() {\n if (this.parent) {\n for (let elementId of Object.keys(this.targetElements)) {\n let targetElement = this.parent.getRootElement().getElementById(elementId);\n\n if (targetElement) {\n if (typeof this.targetElements[elementId] === \"boolean\") {\n targetElement.isVisible = this.targetElements[elementId];\n }\n else {\n targetElement.isVisible = !targetElement.isVisible;\n }\n }\n }\n }\n }\n\n addTargetElement(elementId: string, isVisible: boolean | undefined = undefined) {\n this.targetElements[elementId] = isVisible;\n this.updateAriaControlsAttribute();\n }\n\n removeTargetElement(elementId: string) {\n delete this.targetElements[elementId];\n this.updateAriaControlsAttribute();\n }\n}\n\nclass StringWithSubstitutionProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): StringWithSubstitutions {\n let result = new StringWithSubstitutions();\n result.set(Utils.parseString(source[this.name]));\n\n return result;\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: StringWithSubstitutions, context: BaseSerializationContext): void {\n context.serializeValue(target, this.name, value.getOriginal());\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string) {\n super(targetVersion, name, undefined, () => { return new StringWithSubstitutions(); });\n }\n}\n\nexport class HttpHeader extends SerializableObject {\n //#region Schema\n\n static readonly nameProperty = new StringProperty(Versions.v1_0, \"name\");\n static readonly valueProperty = new StringWithSubstitutionProperty(Versions.v1_0, \"value\");\n\n protected getSchemaKey(): string {\n return \"HttpHeader\";\n }\n\n @property(HttpHeader.nameProperty)\n name: string;\n\n @property(HttpHeader.valueProperty)\n private _value: StringWithSubstitutions;\n\n //#endregion\n\n constructor(name: string = \"\", value: string = \"\") {\n super();\n\n this.name = name;\n this.value = value;\n }\n\n getReferencedInputs(inputs: Input[], referencedInputs: Dictionary) {\n this._value.getReferencedInputs(inputs, referencedInputs);\n }\n\n prepareForExecution(inputs: Dictionary) {\n this._value.substituteInputValues(inputs, ContentTypes.applicationXWwwFormUrlencoded);\n }\n\n get value(): string | undefined {\n return this._value.get();\n }\n\n set value(newValue: string | undefined) {\n this._value.set(newValue);\n }\n}\n\nexport class HttpAction extends Action {\n //#region Schema\n\n static readonly urlProperty = new StringWithSubstitutionProperty(Versions.v1_0, \"url\");\n static readonly bodyProperty = new StringWithSubstitutionProperty(Versions.v1_0, \"body\");\n static readonly methodProperty = new StringProperty(Versions.v1_0, \"method\");\n static readonly headersProperty = new SerializableObjectCollectionProperty(Versions.v1_0, \"headers\", HttpHeader);\n static readonly ignoreInputValidationProperty = new BoolProperty(Versions.v1_3, \"ignoreInputValidation\", false);\n\n @property(HttpAction.urlProperty)\n private _url: StringWithSubstitutions;\n\n @property(HttpAction.bodyProperty)\n private _body: StringWithSubstitutions;\n\n @property(HttpAction.methodProperty)\n method?: string;\n\n @property(HttpAction.headersProperty)\n headers: HttpHeader[];\n\n @property(HttpAction.ignoreInputValidationProperty)\n private _ignoreInputValidation: boolean = false;\n\n //#endregion\n\n // Note the \"weird\" way this field is declared is to work around a breaking\n // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\n static readonly JsonTypeName: \"Action.Http\" = \"Action.Http\";\n\n protected internalGetReferencedInputs(): Dictionary {\n let allInputs = this.parent ? this.parent.getRootElement().getAllInputs() : [];\n let result: Dictionary = {};\n\n this._url.getReferencedInputs(allInputs, result);\n\n for (let header of this.headers) {\n header.getReferencedInputs(allInputs, result);\n }\n\n this._body.getReferencedInputs(allInputs, result);\n\n return result;\n }\n\n protected internalPrepareForExecution(inputs: Dictionary | undefined) {\n if (inputs) {\n this._url.substituteInputValues(inputs, ContentTypes.applicationXWwwFormUrlencoded);\n\n let contentType = ContentTypes.applicationJson;\n\n for (let header of this.headers) {\n header.prepareForExecution(inputs);\n\n if (header.name && header.name.toLowerCase() == \"content-type\") {\n contentType = header.value;\n }\n }\n\n this._body.substituteInputValues(inputs, contentType);\n }\n };\n\n getJsonTypeName(): string {\n return HttpAction.JsonTypeName;\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n if (!this.url) {\n context.addFailure(\n this,\n Enums.ValidationEvent.PropertyCantBeNull,\n Strings.errors.propertyMustBeSet(\"url\"));\n }\n\n if (this.headers.length > 0) {\n for (let header of this.headers) {\n if (!header.name) {\n context.addFailure(\n this,\n Enums.ValidationEvent.PropertyCantBeNull,\n Strings.errors.actionHttpHeadersMustHaveNameAndValue());\n }\n }\n }\n }\n\n get ignoreInputValidation(): boolean {\n return this._ignoreInputValidation;\n }\n\n set ignoreInputValidation(value: boolean) {\n this._ignoreInputValidation = value;\n }\n\n get url(): string | undefined {\n return this._url.get();\n }\n\n set url(value: string | undefined) {\n this._url.set(value);\n }\n\n get body(): string | undefined {\n return this._body.get();\n }\n\n set body(value: string | undefined) {\n this._body.set(value);\n }\n}\n\nexport class ShowCardAction extends Action {\n // Note the \"weird\" way this field is declared is to work around a breaking\n // change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\n static readonly JsonTypeName: \"Action.ShowCard\" = \"Action.ShowCard\";\n\n protected updateCssClasses() {\n super.updateCssClasses();\n\n if (this.renderedElement) {\n let effectiveHostConfig = this.parent ? this.parent.hostConfig : defaultHostConfig;\n\n this.renderedElement.classList.add(effectiveHostConfig.makeCssClassName(\"expandable\"));\n this.renderedElement.setAttribute(\"aria-expanded\", (this.state === ActionButtonState.Expanded).toString());\n }\n }\n\n protected internalParse(source: any, context: SerializationContext) {\n super.internalParse(source, context);\n\n let jsonCard = source[\"card\"];\n\n if (jsonCard) {\n this.card.parse(jsonCard, context);\n }\n else {\n context.logParseEvent(\n this,\n Enums.ValidationEvent.PropertyCantBeNull,\n Strings.errors.showCardMustHaveCard());\n }\n }\n\n protected internalToJSON(target: PropertyBag, context: SerializationContext) {\n super.internalToJSON(target, context);\n\n if (this.card) {\n context.serializeValue(target, \"card\", this.card.toJSON(context));\n }\n }\n\n protected raiseExecuteActionEvent() {\n if (this.hostConfig.actions.showCard.actionMode === Enums.ShowCardActionMode.Popup) {\n // Only raise the event in Popup mode.\n super.raiseExecuteActionEvent();\n }\n }\n\n readonly card: AdaptiveCard = new InlineAdaptiveCard();\n\n getJsonTypeName(): string {\n return ShowCardAction.JsonTypeName;\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n this.card.internalValidateProperties(context);\n }\n\n setParent(value: CardElement) {\n super.setParent(value);\n\n this.card.setParent(value);\n }\n\n getAllInputs(processActions: boolean = true): Input[] {\n return this.card.getAllInputs(processActions);\n }\n\n getResourceInformation(): IResourceInformation[] {\n return super.getResourceInformation().concat(this.card.getResourceInformation());\n }\n\n getActionById(id: string): Action | undefined {\n let result = super.getActionById(id);\n\n if (!result) {\n result = this.card.getActionById(id);\n }\n\n return result;\n }\n}\n\nclass OverflowAction extends Action {\n static readonly JsonTypeName: \"Action.Overflow\" = \"Action.Overflow\";\n\n constructor(private actions: Action[]) {\n super();\n\n this.title = Strings.defaults.overflowButtonText();\n }\n\n getActions(): readonly Action[] {\n return this.actions;\n }\n\n getJsonTypeName(): string {\n return ShowCardAction.JsonTypeName;\n }\n\n execute() {\n const shouldDisplayPopupMenu = !raiseDisplayOverflowActionMenuEvent(this, this.renderedElement);\n\n if (shouldDisplayPopupMenu && this.renderedElement) {\n let contextMenu = new PopupMenu();\n contextMenu.hostConfig = this.hostConfig;\n\n for (let i = 0; i < this.actions.length; i++) {\n const menuItem = new MenuItem(i.toString(), this.actions[i].title ?? \"\");\n menuItem.isEnabled = this.actions[i].isEnabled;\n menuItem.onClick = () => {\n let actionToExecute = this.actions[i];\n\n contextMenu.closePopup(false);\n\n if (actionToExecute.isEnabled) {\n actionToExecute.execute();\n }\n };\n\n contextMenu.items.add(menuItem);\n };\n\n contextMenu.popup(this.renderedElement);\n }\n\t}\n}\n\nclass ActionCollection {\n private _owner: CardElement;\n private _actionCardContainer: HTMLDivElement;\n private _expandedAction?: ShowCardAction;\n private _actionCard?: HTMLElement;\n\n private isActionAllowed(action: Action): boolean {\n let forbiddenTypes = this._owner.getForbiddenActionTypes();\n\n if (forbiddenTypes) {\n for (let forbiddenType of forbiddenTypes) {\n if (action.constructor === forbiddenType) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n private refreshContainer() {\n this._actionCardContainer.innerHTML = \"\";\n\n if (!this._actionCard) {\n this._actionCardContainer.style.marginTop = \"0px\";\n\n return;\n }\n\n this._actionCardContainer.style.marginTop = this.renderedActionCount > 0 ? this._owner.hostConfig.actions.showCard.inlineTopMargin + \"px\" : \"0px\";\n\n let padding = this._owner.getEffectivePadding();\n\n this._owner.getImmediateSurroundingPadding(padding);\n\n let physicalPadding = this._owner.hostConfig.paddingDefinitionToSpacingDefinition(padding);\n\n if (this._actionCard) {\n this._actionCard.style.paddingLeft = physicalPadding.left + \"px\";\n this._actionCard.style.paddingRight = physicalPadding.right + \"px\";\n\n this._actionCard.style.marginLeft = \"-\" + physicalPadding.left + \"px\";\n this._actionCard.style.marginRight = \"-\" + physicalPadding.right + \"px\";\n\n if (physicalPadding.bottom != 0 && !this._owner.isDesignMode()) {\n this._actionCard.style.paddingBottom = physicalPadding.bottom + \"px\";\n this._actionCard.style.marginBottom = \"-\" + physicalPadding.bottom + \"px\";\n }\n\n Utils.appendChild(this._actionCardContainer, this._actionCard);\n }\n }\n\n private layoutChanged() {\n this._owner.getRootElement().updateLayout();\n }\n\n private showActionCard(action: ShowCardAction, suppressStyle: boolean = false, raiseEvent: boolean = true) {\n (action.card).suppressStyle = suppressStyle;\n\n // Always re-render a ShowCard action in design mode; reuse already rendered ShowCard (if available) otherwise\n let renderedCard = action.card.renderedElement && !this._owner.isDesignMode() ? action.card.renderedElement : action.card.render();\n\n this._actionCard = renderedCard;\n this._expandedAction = action;\n\n this.refreshContainer();\n\n if (raiseEvent) {\n this.layoutChanged();\n\n raiseInlineCardExpandedEvent(action, true);\n }\n }\n\n private collapseExpandedAction() {\n for (let action of this._renderedActions) {\n action.state = ActionButtonState.Normal;\n }\n\n let previouslyExpandedAction = this._expandedAction;\n\n this._expandedAction = undefined;\n this._actionCard = undefined;\n\n this.refreshContainer();\n\n if (previouslyExpandedAction) {\n this.layoutChanged();\n\n raiseInlineCardExpandedEvent(previouslyExpandedAction, false);\n }\n }\n\n private expandShowCardAction(action: ShowCardAction, raiseEvent: boolean) {\n let afterSelectedAction = false;\n\n for (let renderedAction of this._renderedActions) {\n // Remove actions after selected action from tabOrder, to skip focus directly to expanded card\n if (afterSelectedAction) {\n renderedAction.isFocusable = false;\n }\n\n if (renderedAction !== action) {\n renderedAction.state = ActionButtonState.Subdued;\n }\n else {\n renderedAction.state = ActionButtonState.Expanded;\n\n afterSelectedAction = true;\n\n if (renderedAction.renderedElement) {\n renderedAction.renderedElement.onblur = (e) => {\n for (let ra of this._renderedActions) {\n ra.isFocusable = true;\n }\n }\n }\n }\n }\n\n this.showActionCard(\n action,\n !(this._owner.isAtTheVeryLeft() && this._owner.isAtTheVeryRight()),\n raiseEvent);\n }\n\n private _items: Action[] = [];\n private _overflowAction?: OverflowAction;\n private _renderedActions: Action[] = [];\n\n constructor(owner: CardElement) {\n this._owner = owner;\n }\n\n actionExecuted(action: Action) {\n if (!(action instanceof ShowCardAction)) {\n this.collapseExpandedAction();\n }\n else {\n if (action === this._expandedAction) {\n this.collapseExpandedAction();\n }\n else if (this._owner.hostConfig.actions.showCard.actionMode === Enums.ShowCardActionMode.Inline) {\n this.expandShowCardAction(action, true);\n }\n }\n }\n\n parse(source: any, context: SerializationContext) {\n this.clear();\n\n if (Array.isArray(source)) {\n for (let jsonAction of source) {\n let action = context.parseAction(\n this._owner,\n jsonAction,\n [],\n !this._owner.isDesignMode());\n\n if (action) {\n this.addAction(action);\n }\n }\n }\n }\n\n toJSON(target: PropertyBag, propertyName: string, context: SerializationContext): any {\n context.serializeArray(target, propertyName, this._items);\n }\n\n getActionAt(id: number): Action | undefined {\n return this._items[id];\n }\n\n getActionCount(): number {\n return this._items.length;\n }\n\n getActionById(id: string): Action | undefined {\n let result: Action | undefined = undefined;\n\n for (let item of this._items) {\n result = item.getActionById(id);\n\n if (result) {\n break;\n }\n }\n\n return result;\n }\n\n validateProperties(context: ValidationResults) {\n if (this._owner.hostConfig.actions.maxActions && this._items.length > this._owner.hostConfig.actions.maxActions) {\n context.addFailure(\n this._owner,\n Enums.ValidationEvent.TooManyActions,\n Strings.errors.tooManyActions(this._owner.hostConfig.actions.maxActions));\n }\n\n if (this._items.length > 0 && !this._owner.hostConfig.supportsInteractivity) {\n context.addFailure(\n this._owner,\n Enums.ValidationEvent.InteractivityNotAllowed,\n Strings.errors.interactivityNotAllowed());\n }\n\n for (let item of this._items) {\n if (!this.isActionAllowed(item)) {\n context.addFailure(\n this._owner,\n Enums.ValidationEvent.ActionTypeNotAllowed,\n Strings.errors.actionTypeNotAllowed(item.getJsonTypeName()));\n }\n\n item.internalValidateProperties(context);\n }\n }\n\n render(orientation: Enums.Orientation, isDesignMode: boolean): HTMLElement | undefined {\n // Cache hostConfig for better perf\n let hostConfig = this._owner.hostConfig;\n\n if (!hostConfig.supportsInteractivity) {\n return undefined;\n }\n\n let element = document.createElement(\"div\");\n let maxActions = hostConfig.actions.maxActions ? Math.min(hostConfig.actions.maxActions, this._items.length) : this._items.length;\n\n this._actionCardContainer = document.createElement(\"div\");\n this._renderedActions = [];\n\n if (hostConfig.actions.preExpandSingleShowCardAction && maxActions == 1 && this._items[0] instanceof ShowCardAction && this.isActionAllowed(this._items[0])) {\n this.showActionCard(this._items[0], true);\n this._renderedActions.push(this._items[0]);\n }\n else {\n let buttonStrip = document.createElement(\"div\");\n buttonStrip.className = hostConfig.makeCssClassName(\"ac-actionSet\");\n buttonStrip.style.display = \"flex\";\n buttonStrip.setAttribute(\"role\", \"menubar\");\n\n if (orientation == Enums.Orientation.Horizontal) {\n buttonStrip.style.flexDirection = \"row\";\n\n if (this._owner.horizontalAlignment && hostConfig.actions.actionAlignment != Enums.ActionAlignment.Stretch) {\n switch (this._owner.horizontalAlignment) {\n case Enums.HorizontalAlignment.Center:\n buttonStrip.style.justifyContent = \"center\";\n break;\n case Enums.HorizontalAlignment.Right:\n buttonStrip.style.justifyContent = \"flex-end\";\n break;\n default:\n buttonStrip.style.justifyContent = \"flex-start\";\n break;\n }\n }\n else {\n switch (hostConfig.actions.actionAlignment) {\n case Enums.ActionAlignment.Center:\n buttonStrip.style.justifyContent = \"center\";\n break;\n case Enums.ActionAlignment.Right:\n buttonStrip.style.justifyContent = \"flex-end\";\n break;\n default:\n buttonStrip.style.justifyContent = \"flex-start\";\n break;\n }\n }\n }\n else {\n buttonStrip.style.flexDirection = \"column\";\n\n if (this._owner.horizontalAlignment && hostConfig.actions.actionAlignment != Enums.ActionAlignment.Stretch) {\n switch (this._owner.horizontalAlignment) {\n case Enums.HorizontalAlignment.Center:\n buttonStrip.style.alignItems = \"center\";\n break;\n case Enums.HorizontalAlignment.Right:\n buttonStrip.style.alignItems = \"flex-end\";\n break;\n default:\n buttonStrip.style.alignItems = \"flex-start\";\n break;\n }\n }\n else {\n switch (hostConfig.actions.actionAlignment) {\n case Enums.ActionAlignment.Center:\n buttonStrip.style.alignItems = \"center\";\n break;\n case Enums.ActionAlignment.Right:\n buttonStrip.style.alignItems = \"flex-end\";\n break;\n case Enums.ActionAlignment.Stretch:\n buttonStrip.style.alignItems = \"stretch\";\n break;\n default:\n buttonStrip.style.alignItems = \"flex-start\";\n break;\n }\n }\n }\n\n const allowedActions = this._items.filter(this.isActionAllowed.bind(this));\n\n let primaryActions: Action[] = [];\n let secondaryActions: Action[] = [];\n\n if (!this._owner.isDesignMode()) {\n allowedActions.forEach(action => action.mode === Enums.ActionMode.Secondary ? secondaryActions.push(action) : primaryActions.push(action));\n\n // If primaryActions.length > maxActions, extra actions are moved to overflow\n const overflowPrimaryActions = primaryActions.splice(hostConfig.actions.maxActions);\n\n if (GlobalSettings.allowMoreThanMaxActionsInOverflowMenu) {\n secondaryActions.push(...overflowPrimaryActions);\n }\n\n let shouldRenderOverflowActionButton = true;\n\n if (secondaryActions.length > 0) {\n if (!this._overflowAction) {\n this._overflowAction = new OverflowAction(secondaryActions);\n this._overflowAction.setParent(this._owner);\n this._overflowAction[\"_actionCollection\"] = this;\n }\n\n let isRootAction = this._owner instanceof AdaptiveCard && !this._owner.parent;\n shouldRenderOverflowActionButton = !raiseRenderOverflowActionsEvent(this._overflowAction, isRootAction);\n }\n\n if (this._overflowAction && shouldRenderOverflowActionButton) {\n primaryActions.push(this._overflowAction);\n }\n }\n else {\n primaryActions = allowedActions;\n }\n\n for (let i = 0; i < primaryActions.length; i++) {\n let action = primaryActions[i];\n action.render();\n\n if (action.renderedElement) {\n if (primaryActions.length > 1) {\n action.renderedElement.setAttribute(\"aria-posinset\", (i + 1).toString());\n action.renderedElement.setAttribute(\"aria-setsize\", primaryActions.length.toString());\n action.renderedElement.setAttribute(\"role\", \"menuitem\");\n }\n\n if (hostConfig.actions.actionsOrientation == Enums.Orientation.Horizontal && hostConfig.actions.actionAlignment == Enums.ActionAlignment.Stretch) {\n action.renderedElement.style.flex = \"0 1 100%\";\n }\n else {\n action.renderedElement.style.flex = \"0 1 auto\";\n }\n\n buttonStrip.appendChild(action.renderedElement);\n\n this._renderedActions.push(action);\n\n if (i < primaryActions.length - 1 && hostConfig.actions.buttonSpacing > 0) {\n let spacer = document.createElement(\"div\");\n\n if (orientation === Enums.Orientation.Horizontal) {\n spacer.style.flex = \"0 0 auto\";\n spacer.style.width = hostConfig.actions.buttonSpacing + \"px\";\n }\n else {\n spacer.style.height = hostConfig.actions.buttonSpacing + \"px\";\n }\n\n Utils.appendChild(buttonStrip, spacer);\n }\n }\n }\n\n let buttonStripContainer = document.createElement(\"div\");\n buttonStripContainer.style.overflow = \"hidden\";\n buttonStripContainer.appendChild(buttonStrip);\n\n Utils.appendChild(element, buttonStripContainer);\n }\n\n Utils.appendChild(element, this._actionCardContainer);\n\n for (let renderedAction of this._renderedActions) {\n if (renderedAction.state == ActionButtonState.Expanded) {\n this.expandShowCardAction(renderedAction, false);\n\n break;\n }\n }\n\n return this._renderedActions.length > 0 ? element : undefined;\n }\n\n addAction(action: Action) {\n if (!action) {\n throw new Error(\"The action parameter cannot be null.\");\n }\n\n if ((!action.parent || action.parent === this._owner) && this._items.indexOf(action) < 0) {\n this._items.push(action);\n\n if (!action.parent) {\n action.setParent(this._owner);\n }\n\n action[\"_actionCollection\"] = this;\n }\n else {\n throw new Error(Strings.errors.actionAlreadyParented());\n }\n }\n\n removeAction(action: Action): boolean {\n if (this.expandedAction && this._expandedAction == action) {\n this.collapseExpandedAction();\n }\n\n let actionIndex = this._items.indexOf(action);\n\n if (actionIndex >= 0) {\n this._items.splice(actionIndex, 1);\n\n action.setParent(undefined);\n\n action[\"_actionCollection\"] = undefined;\n\n for (let i = 0; i < this._renderedActions.length; i++) {\n if (this._renderedActions[i] == action) {\n this._renderedActions.splice(i, 1);\n\n break;\n }\n }\n\n return true;\n }\n\n return false;\n }\n\n clear() {\n this._items = [];\n this._renderedActions = [];\n this._expandedAction = undefined;\n }\n\n getAllInputs(processActions: boolean = true): Input[] {\n let result: Input[] = [];\n\n if (processActions) {\n for (let action of this._items) {\n result = result.concat(action.getAllInputs());\n }\n }\n\n return result;\n }\n\n getResourceInformation(): IResourceInformation[] {\n let result: IResourceInformation[] = [];\n\n for (let action of this._items) {\n result = result.concat(action.getResourceInformation());\n }\n\n return result;\n }\n\n get renderedActionCount(): number {\n return this._renderedActions.length;\n }\n\n get expandedAction(): ShowCardAction | undefined {\n return this._expandedAction;\n }\n}\n\nexport class ActionSet extends CardElement {\n //#region Schema\n\n static readonly orientationProperty = new EnumProperty(Versions.v1_1, \"orientation\", Enums.Orientation);\n\n @property(ActionSet.orientationProperty)\n orientation?: Enums.Orientation;\n\n //#endregion\n\n private _actionCollection: ActionCollection;\n\n protected internalParse(source: any, context: SerializationContext) {\n super.internalParse(source, context);\n\n this._actionCollection.parse(source[\"actions\"], context);\n }\n\n protected internalToJSON(target: PropertyBag, context: SerializationContext) {\n super.internalToJSON(target, context);\n\n this._actionCollection.toJSON(target, \"actions\", context);\n }\n\n protected internalRender(): HTMLElement | undefined {\n return this._actionCollection.render(this.orientation !== undefined ? this.orientation : this.hostConfig.actions.actionsOrientation, this.isDesignMode());\n }\n\n constructor() {\n super();\n\n this._actionCollection = new ActionCollection(this);\n }\n\n isBleedingAtBottom(): boolean {\n if (this._actionCollection.renderedActionCount == 0) {\n return super.isBleedingAtBottom();\n }\n else {\n if (this._actionCollection.getActionCount() == 1) {\n return this._actionCollection.expandedAction !== undefined && !this.hostConfig.actions.preExpandSingleShowCardAction;\n }\n else {\n return this._actionCollection.expandedAction !== undefined;\n }\n }\n }\n\n getJsonTypeName(): string {\n return \"ActionSet\";\n }\n\n getActionCount(): number {\n return this._actionCollection.getActionCount();\n }\n\n getActionAt(index: number): Action | undefined {\n if (index >= 0 && index < this.getActionCount()) {\n return this._actionCollection.getActionAt(index);\n }\n else {\n return super.getActionAt(index);\n }\n }\n\n getActionById(id: string): Action | undefined {\n let result: Action | undefined = this._actionCollection.getActionById(id);\n\n return result ? result : super.getActionById(id);\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n this._actionCollection.validateProperties(context);\n }\n\n addAction(action: Action) {\n this._actionCollection.addAction(action);\n }\n\n getAllInputs(processActions: boolean = true): Input[] {\n return processActions ? this._actionCollection.getAllInputs() : [];\n }\n\n getResourceInformation(): IResourceInformation[] {\n return this._actionCollection.getResourceInformation();\n }\n\n /**\n * @inheritdoc\n */\n findDOMNodeOwner(node: Node): CardObject | undefined {\n let target: CardObject | undefined = undefined;\n\n for (let i = 0; i < this.getActionCount(); i++) {\n let action = this.getActionAt(i);\n\n if (action) {\n // recur through each Action\n target = action.findDOMNodeOwner(node);\n\n if (target) {\n return target;\n }\n }\n }\n\n // if not found in any Action, defer to parent implementation\n return super.findDOMNodeOwner(node);\n }\n\n get isInteractive(): boolean {\n return true;\n }\n}\n\nexport class ContainerStyleProperty extends ValueSetProperty {\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly defaultValue?: string,\n readonly onGetInitialValue?: (sender: SerializableObject) => string) {\n super(\n targetVersion,\n name,\n [\n { value: Enums.ContainerStyle.Default },\n { value: Enums.ContainerStyle.Emphasis },\n { targetVersion: Versions.v1_2, value: Enums.ContainerStyle.Accent },\n { targetVersion: Versions.v1_2, value: Enums.ContainerStyle.Good },\n { targetVersion: Versions.v1_2, value: Enums.ContainerStyle.Attention },\n { targetVersion: Versions.v1_2, value: Enums.ContainerStyle.Warning }\n ],\n defaultValue,\n onGetInitialValue);\n }\n}\n\nexport abstract class StylableCardElementContainer extends CardElementContainer {\n //#region Schema\n\n static readonly styleProperty = new ContainerStyleProperty(Versions.v1_0, \"style\");\n\n @property(StylableCardElementContainer.styleProperty)\n get style(): string | undefined {\n if (this.allowCustomStyle) {\n let style = this.getValue(StylableCardElementContainer.styleProperty);\n\n if (style && this.hostConfig.containerStyles.getStyleByName(style)) {\n return style;\n }\n }\n\n return undefined;\n }\n\n set style(value: string | undefined) {\n this.setValue(StylableCardElementContainer.styleProperty, value);\n }\n\n //#endregion\n\n protected get allowCustomStyle(): boolean {\n return true;\n }\n\n protected get hasExplicitStyle(): boolean {\n return this.getValue(StylableCardElementContainer.styleProperty) !== undefined;\n }\n\n protected applyBorder() {\n // No border in base implementation\n }\n\n protected applyBackground() {\n if (this.renderedElement) {\n let styleDefinition = this.hostConfig.containerStyles.getStyleByName(this.style, this.hostConfig.containerStyles.getStyleByName(this.defaultStyle));\n\n if (styleDefinition.backgroundColor) {\n const bgColor = Utils.stringToCssColor(styleDefinition.backgroundColor);\n this.renderedElement.style.backgroundColor = bgColor;\n }\n }\n }\n\n protected applyPadding() {\n super.applyPadding();\n\n if (!this.renderedElement) {\n return;\n }\n\n let physicalPadding = new SpacingDefinition();\n\n if (this.getEffectivePadding()) {\n physicalPadding = this.hostConfig.paddingDefinitionToSpacingDefinition(this.getEffectivePadding());\n }\n\n this.renderedElement.style.paddingTop = physicalPadding.top + \"px\";\n this.renderedElement.style.paddingRight = physicalPadding.right + \"px\";\n this.renderedElement.style.paddingBottom = physicalPadding.bottom + \"px\";\n this.renderedElement.style.paddingLeft = physicalPadding.left + \"px\";\n\n if (this.isBleeding()) {\n // Bleed into the first parent that does have padding\n let padding = new PaddingDefinition();\n\n this.getImmediateSurroundingPadding(padding);\n\n let surroundingPadding = this.hostConfig.paddingDefinitionToSpacingDefinition(padding);\n\n this.renderedElement.style.marginRight = \"-\" + surroundingPadding.right + \"px\";\n this.renderedElement.style.marginLeft = \"-\" + surroundingPadding.left + \"px\";\n\n if (!this.isDesignMode()) {\n this.renderedElement.style.marginTop = \"-\" + surroundingPadding.top + \"px\";\n this.renderedElement.style.marginBottom = \"-\" + surroundingPadding.bottom + \"px\";\n }\n\n if (this.separatorElement && this.separatorOrientation == Enums.Orientation.Horizontal) {\n this.separatorElement.style.marginLeft = \"-\" + surroundingPadding.left + \"px\";\n this.separatorElement.style.marginRight = \"-\" + surroundingPadding.right + \"px\";\n }\n }\n else {\n this.renderedElement.style.marginRight = \"0\";\n this.renderedElement.style.marginLeft = \"0\";\n this.renderedElement.style.marginTop = \"0\";\n this.renderedElement.style.marginBottom = \"0\";\n\n if (this.separatorElement && this.separatorOrientation === Enums.Orientation.Horizontal) {\n this.separatorElement.style.marginRight = \"0\";\n this.separatorElement.style.marginLeft = \"0\";\n }\n }\n }\n\n protected getHasBackground(): boolean {\n let currentElement: CardElement | undefined = this.parent;\n\n while (currentElement) {\n let currentElementHasBackgroundImage = currentElement instanceof Container ? currentElement.backgroundImage.isValid() : false;\n\n if (currentElement instanceof StylableCardElementContainer) {\n if (this.hasExplicitStyle && (currentElement.getEffectiveStyle() != this.getEffectiveStyle() || currentElementHasBackgroundImage)) {\n return true;\n }\n }\n\n currentElement = currentElement.parent;\n }\n\n return false;\n }\n\n protected getDefaultPadding(): PaddingDefinition {\n return this.getHasBackground() || this.getHasBorder() ?\n new PaddingDefinition(\n Enums.Spacing.Padding,\n Enums.Spacing.Padding,\n Enums.Spacing.Padding,\n Enums.Spacing.Padding) : super.getDefaultPadding();\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n let explicitStyle = this.getValue(StylableCardElementContainer.styleProperty);\n\n if (explicitStyle !== undefined) {\n let styleDefinition = this.hostConfig.containerStyles.getStyleByName(explicitStyle);\n\n if (!styleDefinition) {\n context.addFailure(\n this,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidPropertyValue(explicitStyle, \"style\"));\n }\n }\n }\n\n render(): HTMLElement | undefined {\n let renderedElement = super.render();\n\n if (renderedElement && this.getHasBackground()) {\n this.applyBackground();\n }\n\n this.applyBorder();\n\n return renderedElement;\n }\n\n getEffectiveStyle(): string {\n let effectiveStyle = this.style;\n\n return effectiveStyle ? effectiveStyle : super.getEffectiveStyle();\n }\n}\n\nexport abstract class ContainerBase extends StylableCardElementContainer {\n //#region Schema\n\n static readonly bleedProperty = new BoolProperty(Versions.v1_2, \"bleed\", false);\n static readonly minHeightProperty = new PixelSizeProperty(Versions.v1_2, \"minHeight\");\n\n @property(ContainerBase.bleedProperty)\n private _bleed: boolean = false;\n\n @property(ContainerBase.minHeightProperty)\n minPixelHeight?: number;\n\n //#endregion\n\n protected adjustRenderedElementSize(renderedElement: HTMLElement) {\n super.adjustRenderedElementSize(renderedElement);\n\n if (this.minPixelHeight) {\n renderedElement.style.minHeight = this.minPixelHeight + \"px\";\n }\n }\n\n protected getHasExpandedAction(): boolean {\n return false;\n }\n\n protected getBleed(): boolean {\n return this._bleed;\n }\n\n protected setBleed(value: boolean) {\n this._bleed = value;\n }\n\n protected get renderedActionCount(): number {\n return 0;\n }\n\n isBleeding(): boolean {\n\t\treturn (this.getHasBackground() || this.hostConfig.alwaysAllowBleed) && this.getBleed();\n }\n}\n\nexport class BackgroundImage extends SerializableObject {\n //#region Schema\n\n static readonly urlProperty = new StringProperty(Versions.v1_0, \"url\");\n static readonly fillModeProperty = new EnumProperty(Versions.v1_2, \"fillMode\", Enums.FillMode, Enums.FillMode.Cover);\n static readonly horizontalAlignmentProperty = new EnumProperty(Versions.v1_2, \"horizontalAlignment\", Enums.HorizontalAlignment, Enums.HorizontalAlignment.Left);\n static readonly verticalAlignmentProperty = new EnumProperty(Versions.v1_2, \"verticalAlignment\", Enums.VerticalAlignment, Enums.VerticalAlignment.Top);\n\n @property(BackgroundImage.urlProperty)\n url?: string;\n\n @property(BackgroundImage.fillModeProperty)\n fillMode: Enums.FillMode;\n\n @property(BackgroundImage.horizontalAlignmentProperty)\n horizontalAlignment: Enums.HorizontalAlignment;\n\n @property(BackgroundImage.verticalAlignmentProperty)\n verticalAlignment: Enums.VerticalAlignment;\n\n //#endregion\n\n protected getSchemaKey(): string {\n return \"BackgroundImage\";\n }\n\n protected internalParse(source: any, context: BaseSerializationContext) {\n if (typeof source === \"string\") {\n this.resetDefaultValues();\n this.url = source;\n }\n else {\n return super.internalParse(source, context);\n }\n }\n\n apply(element: CardElement) {\n if (this.url && element.renderedElement) {\n element.renderedElement.style.backgroundImage = \"url('\" + element.preProcessPropertyValue(BackgroundImage.urlProperty, this.url) + \"')\";\n\n switch (this.fillMode) {\n case Enums.FillMode.Repeat:\n element.renderedElement.style.backgroundRepeat = \"repeat\";\n break;\n case Enums.FillMode.RepeatHorizontally:\n element.renderedElement.style.backgroundRepeat = \"repeat-x\";\n break;\n case Enums.FillMode.RepeatVertically:\n element.renderedElement.style.backgroundRepeat = \"repeat-y\";\n break;\n case Enums.FillMode.Cover:\n default:\n element.renderedElement.style.backgroundRepeat = \"no-repeat\";\n element.renderedElement.style.backgroundSize = \"cover\";\n break;\n }\n\n switch (this.horizontalAlignment) {\n case Enums.HorizontalAlignment.Center:\n element.renderedElement.style.backgroundPositionX = \"center\";\n break;\n case Enums.HorizontalAlignment.Right:\n element.renderedElement.style.backgroundPositionX = \"right\";\n break;\n }\n\n switch (this.verticalAlignment) {\n case Enums.VerticalAlignment.Center:\n element.renderedElement.style.backgroundPositionY = \"center\";\n break;\n case Enums.VerticalAlignment.Bottom:\n element.renderedElement.style.backgroundPositionY = \"bottom\";\n break;\n }\n }\n }\n\n isValid(): boolean {\n return this.url ? true : false;\n }\n}\n\nexport class Container extends ContainerBase {\n //#region Schema\n\n static readonly backgroundImageProperty = new SerializableObjectProperty(\n Versions.v1_0,\n \"backgroundImage\",\n BackgroundImage);\n static readonly verticalContentAlignmentProperty = new EnumProperty(\n Versions.v1_1,\n \"verticalContentAlignment\",\n Enums.VerticalAlignment);\n static readonly rtlProperty = new BoolProperty(Versions.v1_0, \"rtl\");\n\n @property(Container.backgroundImageProperty)\n get backgroundImage(): BackgroundImage {\n return this.getValue(Container.backgroundImageProperty);\n }\n\n @property(Container.verticalContentAlignmentProperty)\n verticalContentAlignment?: Enums.VerticalAlignment;\n\n @property(Container.rtlProperty)\n rtl?: boolean;\n\n //#endregion\n\n private _items: CardElement[] = [];\n private _renderedItems: CardElement[] = [];\n\n private insertItemAt(\n item: CardElement,\n index: number,\n forceInsert: boolean) {\n if (!item.parent || forceInsert) {\n if (item.isStandalone) {\n if (index < 0 || index >= this._items.length) {\n this._items.push(item);\n }\n else {\n this._items.splice(index, 0, item);\n }\n\n item.setParent(this);\n }\n else {\n throw new Error(Strings.errors.elementTypeNotStandalone(item.getJsonTypeName()));\n }\n }\n else {\n throw new Error(Strings.errors.elementAlreadyParented());\n }\n }\n\n protected getItemsCollectionPropertyName(): string {\n return \"items\";\n }\n\n protected applyBackground() {\n if (this.backgroundImage.isValid() && this.renderedElement) {\n this.backgroundImage.apply(this);\n }\n\n super.applyBackground();\n }\n\n protected internalRender(): HTMLElement | undefined {\n this._renderedItems = [];\n\n // Cache hostConfig to avoid walking the parent hierarchy several times\n let hostConfig = this.hostConfig;\n\n let element = document.createElement(\"div\");\n\n if (this.rtl !== undefined) {\n element.dir = this.rtl ? \"rtl\" : \"ltr\";\n }\n\n element.classList.add(hostConfig.makeCssClassName(\"ac-container\"));\n element.style.display = \"flex\";\n element.style.flexDirection = \"column\";\n\n if (GlobalSettings.useAdvancedCardBottomTruncation) {\n // Forces the container to be at least as tall as its content.\n //\n // Fixes a quirk in Chrome where, for nested flex elements, the\n // inner element's height would never exceed the outer element's\n // height. This caused overflow truncation to break -- containers\n // would always be measured as not overflowing, since their heights\n // were constrained by their parents as opposed to truly reflecting\n // the height of their content.\n //\n // See the \"Browser Rendering Notes\" section of this answer:\n // https://stackoverflow.com/questions/36247140/why-doesnt-flex-item-shrink-past-content-size\n element.style.minHeight = '-webkit-min-content';\n }\n\n switch (this.getEffectiveVerticalContentAlignment()) {\n case Enums.VerticalAlignment.Center:\n element.style.justifyContent = \"center\";\n break;\n case Enums.VerticalAlignment.Bottom:\n element.style.justifyContent = \"flex-end\";\n break;\n default:\n element.style.justifyContent = \"flex-start\";\n break;\n }\n\n if (this._items.length > 0) {\n for (let item of this._items) {\n let renderedItem = this.isElementAllowed(item) ? item.render() : undefined;\n\n if (renderedItem) {\n if (this._renderedItems.length > 0 && item.separatorElement) {\n item.separatorElement.style.flex = \"0 0 auto\";\n\n Utils.appendChild(element, item.separatorElement);\n }\n\n Utils.appendChild(element, renderedItem);\n\n this._renderedItems.push(item);\n }\n }\n }\n else {\n if (this.isDesignMode()) {\n let placeholderElement = this.createPlaceholderElement();\n placeholderElement.style.width = \"100%\";\n placeholderElement.style.height = \"100%\";\n\n element.appendChild(placeholderElement);\n }\n }\n\n return element;\n }\n\n protected truncateOverflow(maxHeight: number): boolean {\n if (this.renderedElement) {\n // Add 1 to account for rounding differences between browsers\n let boundary = this.renderedElement.offsetTop + maxHeight + 1;\n\n let handleElement = (cardElement: CardElement) => {\n let elt = cardElement.renderedElement;\n\n if (elt) {\n switch (Utils.getFitStatus(elt, boundary)) {\n case Enums.ContainerFitStatus.FullyInContainer:\n let sizeChanged = cardElement['resetOverflow']();\n // If the element's size changed after resetting content,\n // we have to check if it still fits fully in the card\n if (sizeChanged) {\n handleElement(cardElement);\n }\n break;\n case Enums.ContainerFitStatus.Overflowing:\n let maxHeight = boundary - elt.offsetTop;\n cardElement['handleOverflow'](maxHeight);\n break;\n case Enums.ContainerFitStatus.FullyOutOfContainer:\n cardElement['handleOverflow'](0);\n break;\n }\n }\n };\n\n for (let item of this._items) {\n handleElement(item);\n }\n\n return true;\n }\n\n return false;\n }\n\n protected undoOverflowTruncation() {\n for (let item of this._items) {\n item['resetOverflow']();\n }\n }\n\n protected getHasBackground(): boolean {\n return this.backgroundImage.isValid() || super.getHasBackground();\n }\n\n protected internalParse(source: any, context: SerializationContext) {\n super.internalParse(source, context);\n\n this.clear();\n this.setShouldFallback(false);\n\n let jsonItems = source[this.getItemsCollectionPropertyName()];\n\n if (Array.isArray(jsonItems)) {\n for (let item of jsonItems) {\n let element = context.parseElement(this, item, !this.isDesignMode());\n\n if (element) {\n this.insertItemAt(element, -1, true);\n }\n }\n }\n }\n\n protected internalToJSON(target: PropertyBag, context: SerializationContext) {\n super.internalToJSON(target, context);\n\n context.serializeArray(target, this.getItemsCollectionPropertyName(), this._items);\n }\n\n protected get isSelectable(): boolean {\n return true;\n }\n\n getEffectiveVerticalContentAlignment(): Enums.VerticalAlignment {\n if (this.verticalContentAlignment !== undefined) {\n return this.verticalContentAlignment;\n }\n\n let parentContainer = this.getParentContainer();\n\n return parentContainer ? parentContainer.getEffectiveVerticalContentAlignment() : Enums.VerticalAlignment.Top;\n }\n\n getItemCount(): number {\n return this._items.length;\n }\n\n getItemAt(index: number): CardElement {\n return this._items[index];\n }\n\n getFirstVisibleRenderedItem(): CardElement | undefined {\n if (this.renderedElement && this._renderedItems && this._renderedItems.length > 0) {\n for (let item of this._renderedItems) {\n if (item.isVisible) {\n return item;\n }\n };\n }\n\n return undefined;\n }\n\n getLastVisibleRenderedItem(): CardElement | undefined {\n if (this.renderedElement && this._renderedItems && this._renderedItems.length > 0) {\n for (let i = this._renderedItems.length - 1; i >= 0; i--) {\n if (this._renderedItems[i].isVisible) {\n return this._renderedItems[i];\n }\n }\n }\n\n return undefined;\n }\n\n getJsonTypeName(): string {\n return \"Container\";\n }\n\n isFirstElement(element: CardElement): boolean {\n let designMode = this.isDesignMode();\n\n for (let item of this._items) {\n if (item.isVisible || designMode) {\n return item == element;\n }\n }\n\n return false;\n }\n\n isLastElement(element: CardElement): boolean {\n let designMode = this.isDesignMode();\n\n for (let i = this._items.length - 1; i >= 0; i--) {\n if (this._items[i].isVisible || designMode) {\n return this._items[i] == element;\n }\n }\n\n return false;\n }\n\n isRtl(): boolean {\n if (this.rtl !== undefined) {\n return this.rtl;\n }\n else {\n let parentContainer = this.getParentContainer();\n\n return parentContainer ? parentContainer.isRtl() : false;\n }\n }\n\n isBleedingAtTop(): boolean {\n let firstRenderedItem = this.getFirstVisibleRenderedItem();\n\n return this.isBleeding() || (firstRenderedItem ? firstRenderedItem.isBleedingAtTop() : false);\n }\n\n isBleedingAtBottom(): boolean {\n let lastRenderedItem = this.getLastVisibleRenderedItem();\n\n return this.isBleeding() || (lastRenderedItem ? lastRenderedItem.isBleedingAtBottom() && lastRenderedItem.getEffectiveStyle() == this.getEffectiveStyle() : false);\n }\n\n indexOf(cardElement: CardElement): number {\n return this._items.indexOf(cardElement);\n }\n\n addItem(item: CardElement) {\n this.insertItemAt(item, -1, false);\n }\n\n insertItemBefore(item: CardElement, insertBefore: CardElement) {\n this.insertItemAt(item, this._items.indexOf(insertBefore), false);\n }\n\n insertItemAfter(item: CardElement, insertAfter: CardElement) {\n this.insertItemAt(item, this._items.indexOf(insertAfter) + 1, false);\n }\n\n removeItem(item: CardElement): boolean {\n let itemIndex = this._items.indexOf(item);\n\n if (itemIndex >= 0) {\n this._items.splice(itemIndex, 1);\n\n item.setParent(undefined);\n\n this.updateLayout();\n\n return true;\n }\n\n return false;\n }\n\n clear() {\n this._items = [];\n this._renderedItems = [];\n }\n\n getResourceInformation(): IResourceInformation[] {\n let result = super.getResourceInformation();\n\n if (this.backgroundImage.isValid()) {\n result.push(\n {\n url: this.backgroundImage.url,\n mimeType: \"image\"\n }\n );\n }\n\n return result;\n }\n\n getActionById(id: string): Action | undefined {\n let result: Action | undefined = super.getActionById(id);\n\n if (!result) {\n if (this.selectAction) {\n result = this.selectAction.getActionById(id);\n }\n\n if (!result) {\n for (let item of this._items) {\n result = item.getActionById(id);\n\n if (result) {\n break;\n }\n }\n }\n }\n\n return result;\n }\n\n get padding(): PaddingDefinition | undefined {\n return this.getPadding();\n }\n\n set padding(value: PaddingDefinition | undefined) {\n this.setPadding(value);\n }\n\n get selectAction(): Action | undefined {\n return this._selectAction;\n }\n\n set selectAction(value: Action | undefined) {\n this._selectAction = value;\n }\n\n get bleed(): boolean {\n return this.getBleed();\n }\n\n set bleed(value: boolean) {\n this.setBleed(value);\n }\n}\n\nexport type ColumnWidth = SizeAndUnit | \"auto\" | \"stretch\";\n\nexport class Column extends Container {\n //#region Schema\n\n static readonly widthProperty = new CustomProperty(\n Versions.v1_0,\n \"width\",\n (sender: SerializableObject, property: PropertyDefinition, source: PropertyBag, context: BaseSerializationContext) => {\n let result: ColumnWidth = property.defaultValue;\n let value = source[property.name];\n let invalidWidth = false;\n\n if (typeof value === \"number\" && !isNaN(value)) {\n result = new SizeAndUnit(value, Enums.SizeUnit.Weight);\n }\n else if (value === \"auto\" || value === \"stretch\") {\n result = value;\n }\n else if (typeof value === \"string\") {\n try {\n result = SizeAndUnit.parse(value);\n\n if (result.unit === Enums.SizeUnit.Pixel && property.targetVersion.compareTo(context.targetVersion) > 0) {\n invalidWidth = true;\n }\n }\n catch (e) {\n invalidWidth = true;\n }\n }\n else {\n invalidWidth = true;\n }\n\n if (invalidWidth) {\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidColumnWidth(value));\n\n result = \"auto\";\n }\n\n return result;\n },\n (sender: SerializableObject, property: PropertyDefinition, target: PropertyBag, value: ColumnWidth, context: BaseSerializationContext) => {\n if (value instanceof SizeAndUnit) {\n if (value.unit === Enums.SizeUnit.Pixel) {\n context.serializeValue(target, \"width\", value.physicalSize + \"px\");\n }\n else {\n context.serializeNumber(target, \"width\", value.physicalSize);\n }\n }\n else {\n context.serializeValue(target, \"width\", value);\n }\n },\n \"stretch\");\n\n @property(Column.widthProperty)\n width: ColumnWidth = \"stretch\";\n\n //#endregion\n\n private _computedWeight: number = 0;\n\n protected adjustRenderedElementSize(renderedElement: HTMLElement) {\n const minDesignTimeColumnHeight = 20;\n\n if (this.isDesignMode()) {\n renderedElement.style.minWidth = \"20px\";\n renderedElement.style.minHeight = (!this.minPixelHeight ? minDesignTimeColumnHeight : Math.max(this.minPixelHeight, minDesignTimeColumnHeight)) + \"px\";\n }\n else {\n renderedElement.style.minWidth = \"0\";\n\n if (this.minPixelHeight) {\n renderedElement.style.minHeight = this.minPixelHeight + \"px\";\n }\n }\n\n if (this.width === \"auto\") {\n renderedElement.style.flex = \"0 1 auto\";\n }\n else if (this.width === \"stretch\") {\n renderedElement.style.flex = \"1 1 50px\";\n }\n else if (this.width instanceof SizeAndUnit) {\n if (this.width.unit == Enums.SizeUnit.Pixel) {\n renderedElement.style.flex = \"0 0 auto\";\n renderedElement.style.width = this.width.physicalSize + \"px\";\n }\n else {\n renderedElement.style.flex = \"1 1 \" + (this._computedWeight > 0 ? this._computedWeight : this.width.physicalSize) + \"%\";\n }\n }\n }\n\n protected shouldSerialize(context: SerializationContext): boolean {\n return true;\n }\n\n protected get separatorOrientation(): Enums.Orientation {\n return Enums.Orientation.Vertical;\n }\n\n constructor(width: ColumnWidth = \"stretch\") {\n super();\n\n this.width = width;\n }\n\n getJsonTypeName(): string {\n return \"Column\";\n }\n\n get hasVisibleSeparator(): boolean {\n if (this.parent && this.parent instanceof ColumnSet) {\n return this.separatorElement !== undefined && !this.parent.isLeftMostElement(this);\n }\n else {\n return false;\n }\n }\n\n get isStandalone(): boolean {\n return false;\n }\n}\n\nexport class ColumnSet extends ContainerBase {\n private _columns: Column[] = [];\n private _renderedColumns: Column[];\n\n private createColumnInstance(source: any, context: SerializationContext): Column | undefined {\n return context.parseCardObject(\n this,\n source,\n [], // Forbidden types not supported for elements for now\n !this.isDesignMode(),\n (typeName: string) => {\n return !typeName || typeName === \"Column\" ? new Column() : undefined;\n },\n (typeName: string, errorType: Enums.TypeErrorType) => {\n context.logParseEvent(\n undefined,\n Enums.ValidationEvent.ElementTypeNotAllowed,\n Strings.errors.elementTypeNotAllowed(typeName));\n });\n }\n\n protected internalRender(): HTMLElement | undefined {\n this._renderedColumns = [];\n\n if (this._columns.length > 0) {\n // Cache hostConfig to avoid walking the parent hierarchy several times\n let hostConfig = this.hostConfig;\n\n let element = document.createElement(\"div\");\n element.className = hostConfig.makeCssClassName(\"ac-columnSet\");\n element.style.display = \"flex\";\n\n if (GlobalSettings.useAdvancedCardBottomTruncation) {\n // See comment in Container.internalRender()\n element.style.minHeight = '-webkit-min-content';\n }\n\n switch (this.getEffectiveHorizontalAlignment()) {\n case Enums.HorizontalAlignment.Center:\n element.style.justifyContent = \"center\";\n break;\n case Enums.HorizontalAlignment.Right:\n element.style.justifyContent = \"flex-end\";\n break;\n default:\n element.style.justifyContent = \"flex-start\";\n break;\n }\n\n let totalWeight: number = 0;\n\n for (let column of this._columns) {\n if (column.width instanceof SizeAndUnit && (column.width.unit == Enums.SizeUnit.Weight)) {\n totalWeight += column.width.physicalSize;\n }\n }\n\n for (let column of this._columns) {\n if (column.width instanceof SizeAndUnit && column.width.unit == Enums.SizeUnit.Weight && totalWeight > 0) {\n let computedWeight = 100 / totalWeight * column.width.physicalSize;\n\n // Best way to emulate \"internal\" access I know of\n column[\"_computedWeight\"] = computedWeight;\n }\n\n let renderedColumn = column.render();\n\n if (renderedColumn) {\n if (this._renderedColumns.length > 0 && column.separatorElement) {\n column.separatorElement.style.flex = \"0 0 auto\";\n\n Utils.appendChild(element, column.separatorElement);\n }\n\n Utils.appendChild(element, renderedColumn);\n\n this._renderedColumns.push(column);\n }\n }\n\n return this._renderedColumns.length > 0 ? element : undefined;\n }\n else {\n return undefined;\n }\n }\n\n protected truncateOverflow(maxHeight: number): boolean {\n for (let column of this._columns) {\n column['handleOverflow'](maxHeight);\n }\n\n return true;\n }\n\n protected undoOverflowTruncation() {\n for (let column of this._columns) {\n column['resetOverflow']();\n }\n }\n\n protected get isSelectable(): boolean {\n return true;\n }\n\n protected internalParse(source: any, context: SerializationContext) {\n super.internalParse(source, context);\n\n this._columns = [];\n this._renderedColumns = [];\n\n let jsonColumns = source[\"columns\"];\n\n if (Array.isArray(jsonColumns)) {\n for (let item of jsonColumns) {\n let column = this.createColumnInstance(item, context);\n\n if (column) {\n this._columns.push(column);\n }\n }\n }\n }\n\n protected internalToJSON(target: PropertyBag, context: SerializationContext) {\n super.internalToJSON(target, context);\n\n context.serializeArray(target, \"columns\", this._columns);\n }\n\n isFirstElement(element: CardElement): boolean {\n for (let column of this._columns) {\n if (column.isVisible) {\n return column == element;\n }\n }\n\n return false;\n }\n\n isBleedingAtTop(): boolean {\n if (this.isBleeding()) {\n return true;\n }\n\n if (this._renderedColumns && this._renderedColumns.length > 0) {\n for (let column of this._columns) {\n if (column.isBleedingAtTop()) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n isBleedingAtBottom(): boolean {\n if (this.isBleeding()) {\n return true;\n }\n\n if (this._renderedColumns && this._renderedColumns.length > 0) {\n for (let column of this._columns) {\n if (column.isBleedingAtBottom()) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n getItemCount(): number {\n return this._columns.length;\n }\n\n getFirstVisibleRenderedItem(): CardElement | undefined {\n if (this.renderedElement && this._renderedColumns && this._renderedColumns.length > 0) {\n return this._renderedColumns[0];\n }\n else {\n return undefined;\n }\n }\n\n getLastVisibleRenderedItem(): CardElement | undefined {\n if (this.renderedElement && this._renderedColumns && this._renderedColumns.length > 0) {\n return this._renderedColumns[this._renderedColumns.length - 1];\n }\n else {\n return undefined;\n }\n }\n\n getColumnAt(index: number): Column {\n return this._columns[index];\n }\n\n getItemAt(index: number): CardElement {\n return this.getColumnAt(index);\n }\n\n getJsonTypeName(): string {\n return \"ColumnSet\";\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n let weightedColumns: number = 0;\n let stretchedColumns: number = 0;\n\n for (let column of this._columns) {\n if (typeof column.width === \"number\") {\n weightedColumns++;\n }\n else if (column.width === \"stretch\") {\n stretchedColumns++;\n }\n }\n\n if (weightedColumns > 0 && stretchedColumns > 0) {\n context.addFailure(\n this,\n Enums.ValidationEvent.Hint,\n Strings.hints.dontUseWeightedAndStrecthedColumnsInSameSet());\n }\n }\n\n addColumn(column: Column) {\n if (!column.parent) {\n this._columns.push(column);\n\n column.setParent(this);\n }\n else {\n throw new Error(Strings.errors.columnAlreadyBelongsToAnotherSet());\n }\n }\n\n removeItem(item: CardElement): boolean {\n if (item instanceof Column) {\n let itemIndex = this._columns.indexOf(item);\n\n if (itemIndex >= 0) {\n this._columns.splice(itemIndex, 1);\n\n item.setParent(undefined);\n\n this.updateLayout();\n\n return true;\n }\n }\n\n return false;\n }\n\n indexOf(cardElement: CardElement): number {\n return cardElement instanceof Column ? this._columns.indexOf(cardElement) : -1;\n }\n\n isLeftMostElement(element: CardElement): boolean {\n return this._columns.indexOf(element) == 0;\n }\n\n isRightMostElement(element: CardElement): boolean {\n return this._columns.indexOf(element) == this._columns.length - 1;\n }\n\n isTopElement(element: CardElement): boolean {\n return this._columns.indexOf(element) >= 0;\n }\n\n isBottomElement(element: CardElement): boolean {\n return this._columns.indexOf(element) >= 0;\n }\n\n getActionById(id: string): Action | undefined {\n let result: Action | undefined = undefined;\n\n for (let column of this._columns) {\n result = column.getActionById(id);\n\n if (result) {\n break;\n }\n }\n\n return result;\n }\n\n get bleed(): boolean {\n return this.getBleed();\n }\n\n set bleed(value: boolean) {\n this.setBleed(value);\n }\n\n get padding(): PaddingDefinition | undefined {\n return this.getPadding();\n }\n\n set padding(value: PaddingDefinition | undefined) {\n this.setPadding(value);\n }\n\n get selectAction(): Action | undefined {\n return this._selectAction;\n }\n\n set selectAction(value: Action | undefined) {\n this._selectAction = value;\n }\n}\n\nfunction raiseImageLoadedEvent(image: Image) {\n let card = image.getRootElement() as AdaptiveCard;\n let onImageLoadedHandler = (card && card.onImageLoaded) ? card.onImageLoaded : AdaptiveCard.onImageLoaded;\n\n if (onImageLoadedHandler) {\n onImageLoadedHandler(image);\n }\n}\n\nfunction raiseAnchorClickedEvent(element: CardElement, anchor: HTMLAnchorElement, ev?: MouseEvent): boolean {\n let card = element.getRootElement() as AdaptiveCard;\n let onAnchorClickedHandler = (card && card.onAnchorClicked) ? card.onAnchorClicked : AdaptiveCard.onAnchorClicked;\n\n return onAnchorClickedHandler !== undefined ? onAnchorClickedHandler(element, anchor, ev) : false;\n}\n\nfunction raiseExecuteActionEvent(action: Action) {\n let card = action.parent ? action.parent.getRootElement() as AdaptiveCard : undefined;\n let onExecuteActionHandler = (card && card.onExecuteAction) ? card.onExecuteAction : AdaptiveCard.onExecuteAction;\n\n if (action.prepareForExecution() && onExecuteActionHandler) {\n onExecuteActionHandler(action);\n }\n}\n\nfunction raiseInlineCardExpandedEvent(action: ShowCardAction, isExpanded: boolean) {\n let card = action.parent ? action.parent.getRootElement() as AdaptiveCard : undefined;\n let onInlineCardExpandedHandler = (card && card.onInlineCardExpanded) ? card.onInlineCardExpanded : AdaptiveCard.onInlineCardExpanded;\n\n if (onInlineCardExpandedHandler) {\n onInlineCardExpandedHandler(action, isExpanded);\n }\n}\n\nfunction raiseInputValueChangedEvent(input: Input) {\n let card = input.getRootElement() as AdaptiveCard;\n let onInputValueChangedHandler = (card && card.onInputValueChanged) ? card.onInputValueChanged : AdaptiveCard.onInputValueChanged;\n\n if (onInputValueChangedHandler) {\n onInputValueChangedHandler(input);\n }\n}\n\nfunction raiseElementVisibilityChangedEvent(element: CardElement, shouldUpdateLayout: boolean = true) {\n let rootElement = element.getRootElement();\n\n if (shouldUpdateLayout) {\n rootElement.updateLayout();\n }\n\n let card = rootElement as AdaptiveCard;\n let onElementVisibilityChangedHandler = (card && card.onElementVisibilityChanged) ? card.onElementVisibilityChanged : AdaptiveCard.onElementVisibilityChanged;\n\n if (onElementVisibilityChangedHandler !== undefined) {\n onElementVisibilityChangedHandler(element);\n }\n}\n\n/**\n * @returns return false to continue with default context menu; return true to skip SDK default context menu\n */\nfunction raiseDisplayOverflowActionMenuEvent(action: OverflowAction, target?: HTMLElement): boolean {\n let card = action.parent ? action.parent.getRootElement() as AdaptiveCard : undefined;\n let onDisplayOverflowActionMenuHandler = (card && card.onDisplayOverflowActionMenu) ? card.onDisplayOverflowActionMenu : AdaptiveCard.onDisplayOverflowActionMenu;\n\n return onDisplayOverflowActionMenuHandler !== undefined ? onDisplayOverflowActionMenuHandler(action.getActions(), target) : false;\n}\n\n/**\n * @returns return false to continue with default action button; return true to skip SDK default action button\n */\nfunction raiseRenderOverflowActionsEvent(action: OverflowAction, isAtRootLevelActions: boolean): boolean {\n let card = action.parent ? action.parent.getRootElement() as AdaptiveCard : undefined;\n let onRenderOverflowActionsHandler = (card && card.onRenderOverflowActions) ? card.onRenderOverflowActions : AdaptiveCard.onRenderOverflowActions;\n\n return onRenderOverflowActionsHandler !== undefined ? onRenderOverflowActionsHandler(action.getActions(), isAtRootLevelActions) : false;\n}\n\nexport abstract class ContainerWithActions extends Container {\n private _actionCollection: ActionCollection;\n\n protected internalParse(source: any, context: SerializationContext) {\n super.internalParse(source, context);\n\n this._actionCollection.parse(source[\"actions\"], context);\n }\n\n protected internalToJSON(target: PropertyBag, context: SerializationContext) {\n super.internalToJSON(target, context);\n\n this._actionCollection.toJSON(target, \"actions\", context);\n }\n\n protected internalRender(): HTMLElement | undefined {\n let element = super.internalRender();\n\n if (element) {\n let renderedActions = this._actionCollection.render(this.hostConfig.actions.actionsOrientation, false);\n\n if (renderedActions) {\n Utils.appendChild(\n element,\n renderSeparation(\n this.hostConfig,\n {\n spacing: this.hostConfig.getEffectiveSpacing(this.hostConfig.actions.spacing)\n },\n Enums.Orientation.Horizontal));\n Utils.appendChild(element, renderedActions);\n }\n\n if (this.renderIfEmpty) {\n return element;\n }\n else {\n return element.children.length > 0 ? element : undefined;\n }\n }\n else {\n return undefined;\n }\n }\n\n protected getHasExpandedAction(): boolean {\n if (this.renderedActionCount == 0) {\n return false;\n }\n else if (this.renderedActionCount == 1) {\n return this._actionCollection.expandedAction !== undefined && !this.hostConfig.actions.preExpandSingleShowCardAction;\n }\n else {\n return this._actionCollection.expandedAction !== undefined;\n }\n }\n\n protected get renderedActionCount(): number {\n return this._actionCollection.renderedActionCount;\n }\n\n protected get renderIfEmpty(): boolean {\n return false;\n }\n\n constructor() {\n super();\n\n this._actionCollection = new ActionCollection(this);\n }\n\n getActionCount(): number {\n return this._actionCollection.getActionCount();\n }\n\n getActionAt(index: number): Action | undefined {\n if (index >= 0 && index < this.getActionCount()) {\n return this._actionCollection.getActionAt(index);\n }\n else {\n return super.getActionAt(index);\n }\n }\n\n getActionById(id: string): Action | undefined {\n let result: Action | undefined = this._actionCollection.getActionById(id);\n\n return result ? result : super.getActionById(id);\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n if (this._actionCollection) {\n this._actionCollection.validateProperties(context);\n }\n }\n\n isLastElement(element: CardElement): boolean {\n return super.isLastElement(element) && this._actionCollection.getActionCount() == 0;\n }\n\n addAction(action: Action) {\n this._actionCollection.addAction(action);\n }\n\n clear() {\n super.clear();\n\n this._actionCollection.clear();\n }\n\n getAllInputs(processActions: boolean = true): Input[] {\n let result = super.getAllInputs(processActions);\n\n if (processActions) {\n result = result.concat(this._actionCollection.getAllInputs(processActions));\n }\n\n return result;\n }\n\n getResourceInformation(): IResourceInformation[] {\n return super.getResourceInformation().concat(this._actionCollection.getResourceInformation());\n }\n\n isBleedingAtBottom(): boolean {\n if (this._actionCollection.renderedActionCount == 0) {\n return super.isBleedingAtBottom();\n }\n else {\n if (this._actionCollection.getActionCount() == 1) {\n return this._actionCollection.expandedAction !== undefined && !this.hostConfig.actions.preExpandSingleShowCardAction;\n }\n else {\n return this._actionCollection.expandedAction !== undefined;\n }\n }\n }\n\n get isStandalone(): boolean {\n return false;\n }\n}\n\nexport interface IMarkdownProcessingResult {\n didProcess: boolean;\n outputHtml?: any;\n}\n\nexport class RefreshActionProperty extends PropertyDefinition {\n parse(sender: RefreshDefinition, source: PropertyBag, context: SerializationContext): ExecuteAction | undefined {\n let action = context.parseAction(\n sender.parent,\n source[this.name],\n [],\n false);\n\n if (action !== undefined) {\n if (action instanceof ExecuteAction) {\n return action;\n }\n\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.ActionTypeNotAllowed,\n Strings.errors.actionTypeNotAllowed(action.getJsonTypeName()));\n }\n\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.PropertyCantBeNull,\n Strings.errors.propertyMustBeSet(\"action\"));\n\n return undefined;\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: ExecuteAction | undefined, context: SerializationContext) {\n context.serializeValue(target, this.name, value ? value.toJSON(context) : undefined, undefined, true);\n }\n\n constructor(readonly targetVersion: Version, readonly name: string) {\n super(targetVersion, name, undefined);\n }\n}\n\nexport class RefreshDefinition extends SerializableObject {\n //#region Schema\n\n static readonly actionProperty = new RefreshActionProperty(Versions.v1_4, \"action\");\n static readonly userIdsProperty = new StringArrayProperty(Versions.v1_4, \"userIds\");\n\n @property(RefreshDefinition.actionProperty)\n get action(): ExecuteAction {\n return this.getValue(RefreshDefinition.actionProperty);\n }\n\n set action(value: ExecuteAction) {\n this.setValue(RefreshDefinition.actionProperty, value);\n\n if (value) {\n value.setParent(this.parent);\n }\n }\n\n @property(RefreshDefinition.userIdsProperty)\n userIds?: string[];\n\n protected getSchemaKey(): string {\n return \"RefreshDefinition\";\n }\n\n //#endregion\n\n parent: CardElement;\n}\n\nexport class AuthCardButton extends SerializableObject {\n //#region Schema\n\n static readonly typeProperty = new StringProperty(Versions.v1_4, \"type\");\n static readonly titleProperty = new StringProperty(Versions.v1_4, \"title\");\n static readonly imageProperty = new StringProperty(Versions.v1_4, \"image\");\n static readonly valueProperty = new StringProperty(Versions.v1_4, \"value\");\n\n protected getSchemaKey(): string {\n return \"AuthCardButton\";\n }\n\n //#endregion\n\n @property(AuthCardButton.typeProperty)\n type: string;\n\n @property(AuthCardButton.titleProperty)\n title?: string;\n\n @property(AuthCardButton.imageProperty)\n image?: string;\n\n @property(AuthCardButton.valueProperty)\n value: string;\n}\n\nexport class TokenExchangeResource extends SerializableObject {\n //#region Schema\n\n static readonly idProperty = new StringProperty(Versions.v1_4, \"id\");\n static readonly uriProperty = new StringProperty(Versions.v1_4, \"uri\");\n static readonly providerIdProperty = new StringProperty(Versions.v1_4, \"providerId\");\n\n protected getSchemaKey(): string {\n return \"TokenExchangeResource\";\n }\n\n //#endregion\n\n @property(TokenExchangeResource.idProperty)\n id?: string;\n\n @property(TokenExchangeResource.uriProperty)\n uri?: string;\n\n @property(TokenExchangeResource.providerIdProperty)\n providerId?: string;\n}\n\nexport class Authentication extends SerializableObject {\n //#region Schema\n\n static readonly textProperty = new StringProperty(Versions.v1_4, \"text\");\n static readonly connectionNameProperty = new StringProperty(Versions.v1_4, \"connectionName\");\n static readonly buttonsProperty = new SerializableObjectCollectionProperty(Versions.v1_4, \"buttons\", AuthCardButton);\n static readonly tokenExchangeResourceProperty = new SerializableObjectProperty(Versions.v1_4, \"tokenExchangeResource\", TokenExchangeResource, true);\n\n protected getSchemaKey(): string {\n return \"Authentication\";\n }\n\n //#endregion\n\n @property(Authentication.textProperty)\n text?: string;\n\n @property(Authentication.connectionNameProperty)\n connectionName?: string;\n\n @property(Authentication.buttonsProperty)\n buttons: AuthCardButton[];\n\n @property(Authentication.tokenExchangeResourceProperty)\n tokenExchangeResource?: TokenExchangeResource;\n}\n\n// @dynamic\nexport class AdaptiveCard extends ContainerWithActions {\n static readonly schemaUrl = \"http://adaptivecards.io/schemas/adaptive-card.json\";\n\n //#region Schema\n\n protected static readonly $schemaProperty = new CustomProperty(\n Versions.v1_0,\n \"$schema\",\n (sender: SerializableObject, property: PropertyDefinition, source: PropertyBag, context: BaseSerializationContext) => {\n return AdaptiveCard.schemaUrl;\n },\n (sender: SerializableObject, property: PropertyDefinition, target: PropertyBag, value: Versions | undefined, context: BaseSerializationContext) => {\n context.serializeValue(target, property.name, AdaptiveCard.schemaUrl);\n });\n\n static readonly versionProperty = new CustomProperty(\n Versions.v1_0,\n \"version\",\n (sender: SerializableObject, property: PropertyDefinition, source: PropertyBag, context: BaseSerializationContext) => {\n let version = Version.parse(source[property.name], context);\n\n if (version === undefined) {\n version = Versions.latest;\n\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidCardVersion(version.toString()));\n }\n\n return version;\n },\n (sender: SerializableObject, property: PropertyDefinition, target: PropertyBag, value: Versions | undefined, context: BaseSerializationContext) => {\n if (value !== undefined) {\n context.serializeValue(target, property.name, value.toString());\n }\n },\n Versions.v1_0);\n static readonly fallbackTextProperty = new StringProperty(Versions.v1_0, \"fallbackText\");\n static readonly speakProperty = new StringProperty(Versions.v1_0, \"speak\");\n static readonly refreshProperty = new SerializableObjectProperty(Versions.v1_4, \"refresh\", RefreshDefinition, true);\n static readonly authenticationProperty = new SerializableObjectProperty(Versions.v1_4, \"authentication\", Authentication, true);\n\n @property(AdaptiveCard.versionProperty)\n version: Version;\n\n @property(AdaptiveCard.fallbackTextProperty)\n fallbackText?: string;\n\n @property(AdaptiveCard.speakProperty)\n speak?: string;\n\n @property(AdaptiveCard.refreshProperty)\n get refresh(): RefreshDefinition | undefined {\n return this.getValue(AdaptiveCard.refreshProperty);\n }\n\n set refresh(value: RefreshDefinition | undefined) {\n this.setValue(AdaptiveCard.refreshProperty, value);\n\n if (value) {\n value.parent = this;\n }\n }\n\n @property(AdaptiveCard.authenticationProperty)\n authentication?: Authentication;\n\n //#endregion\n\n static onAnchorClicked?: (element: CardElement, anchor: HTMLAnchorElement, ev?: MouseEvent) => boolean;\n static onExecuteAction?: (action: Action) => void;\n static onElementVisibilityChanged?: (element: CardElement) => void;\n static onImageLoaded?: (image: Image) => void;\n static onInlineCardExpanded?: (action: ShowCardAction, isExpanded: boolean) => void;\n static onInputValueChanged?: (input: Input) => void;\n static onProcessMarkdown?: (text: string, result: IMarkdownProcessingResult) => void;\n static onDisplayOverflowActionMenu?: (actions: readonly Action[], target?: HTMLElement) => boolean;\n static onRenderOverflowActions?: (actions: readonly Action[], isRootLevelActions: boolean) => boolean;\n\n static get processMarkdown(): (text: string) => string {\n throw new Error(Strings.errors.processMarkdownEventRemoved());\n }\n\n static set processMarkdown(value: (text: string) => string) {\n throw new Error(Strings.errors.processMarkdownEventRemoved());\n }\n\n static applyMarkdown(text: string): IMarkdownProcessingResult {\n let result: IMarkdownProcessingResult = {\n didProcess: false\n };\n\n if (AdaptiveCard.onProcessMarkdown) {\n AdaptiveCard.onProcessMarkdown(text, result);\n }\n else if ((window).markdownit) {\n // Check for markdownit\n let markdownIt: any = (window).markdownit;\n result.outputHtml = markdownIt().render(text);\n result.didProcess = true;\n }\n else {\n console.warn(Strings.errors.markdownProcessingNotEnabled)\n }\n\n return result;\n }\n\n private _fallbackCard?: AdaptiveCard;\n\n private isVersionSupported(): boolean {\n if (this.bypassVersionCheck) {\n return true;\n }\n else {\n let unsupportedVersion: boolean =\n !this.version ||\n !this.version.isValid ||\n (this.maxVersion.major < this.version.major) ||\n (this.maxVersion.major == this.version.major && this.maxVersion.minor < this.version.minor);\n\n return !unsupportedVersion;\n }\n }\n\n protected getDefaultSerializationContext(): BaseSerializationContext {\n return new SerializationContext(this.version);\n }\n\n protected getItemsCollectionPropertyName(): string {\n return \"body\";\n }\n\n protected internalParse(source: any, context: SerializationContext) {\n this._fallbackCard = undefined;\n\n let fallbackElement = context.parseElement(undefined, source[\"fallback\"], !this.isDesignMode());\n\n if (fallbackElement) {\n this._fallbackCard = new AdaptiveCard();\n this._fallbackCard.addItem(fallbackElement);\n }\n\n super.internalParse(source, context);\n }\n\n protected internalToJSON(target: PropertyBag, context: SerializationContext) {\n this.setValue(AdaptiveCard.versionProperty, context.targetVersion);\n\n super.internalToJSON(target, context);\n }\n\n protected internalRender(): HTMLElement | undefined {\n let renderedElement = super.internalRender();\n\n if (GlobalSettings.useAdvancedCardBottomTruncation && renderedElement) {\n // Unlike containers, the root card element should be allowed to\n // be shorter than its content (otherwise the overflow truncation\n // logic would never get triggered)\n renderedElement.style.removeProperty(\"minHeight\");\n }\n\n return renderedElement;\n }\n\n protected getHasBackground(): boolean {\n return true;\n }\n\n protected getDefaultPadding(): PaddingDefinition {\n return new PaddingDefinition(\n Enums.Spacing.Padding,\n Enums.Spacing.Padding,\n Enums.Spacing.Padding,\n Enums.Spacing.Padding);\n }\n\n protected shouldSerialize(context: SerializationContext): boolean {\n return true;\n }\n\n protected get renderIfEmpty(): boolean {\n return true;\n }\n\n protected get bypassVersionCheck(): boolean {\n return false;\n }\n\n protected get allowCustomStyle() {\n return this.hostConfig.adaptiveCard && this.hostConfig.adaptiveCard.allowCustomStyle;\n }\n\n protected get hasBackground(): boolean {\n return true;\n }\n\n onAnchorClicked?: (element: CardElement, anchor: HTMLAnchorElement, ev?: MouseEvent) => boolean;\n onExecuteAction?: (action: Action) => void;\n onElementVisibilityChanged?: (element: CardElement) => void;\n onImageLoaded?: (image: Image) => void;\n onInlineCardExpanded?: (action: ShowCardAction, isExpanded: boolean) => void;\n onInputValueChanged?: (input: Input) => void;\n onDisplayOverflowActionMenu?: (actions: readonly Action[], target?: HTMLElement) => boolean;\n onRenderOverflowActions?: (actions: readonly Action[], isRootLevelActions: boolean) => boolean;\n\n designMode: boolean = false;\n\n getJsonTypeName(): string {\n return \"AdaptiveCard\";\n }\n\n internalValidateProperties(context: ValidationResults) {\n super.internalValidateProperties(context);\n\n if (this.getValue(CardElement.typeNameProperty) !== \"AdaptiveCard\") {\n context.addFailure(\n this,\n Enums.ValidationEvent.MissingCardType,\n Strings.errors.invalidCardType());\n }\n\n if (!this.bypassVersionCheck && !this.version) {\n context.addFailure(\n this,\n Enums.ValidationEvent.PropertyCantBeNull,\n Strings.errors.propertyMustBeSet(\"version\"));\n }\n else if (!this.isVersionSupported()) {\n context.addFailure(\n this,\n Enums.ValidationEvent.UnsupportedCardVersion,\n Strings.errors.unsupportedCardVersion(this.version.toString(), this.maxVersion.toString()));\n }\n }\n\n render(target?: HTMLElement): HTMLElement | undefined {\n let renderedCard: HTMLElement | undefined;\n\n if (this.shouldFallback() && this._fallbackCard) {\n this._fallbackCard.hostConfig = this.hostConfig;\n\n renderedCard = this._fallbackCard.render();\n }\n else {\n renderedCard = super.render();\n\n if (renderedCard) {\n renderedCard.classList.add(this.hostConfig.makeCssClassName(\"ac-adaptiveCard\"));\n\n // Having a tabIndex on the root container for a card can mess up accessibility in some scenarios.\n // However, we've shipped this behavior before, and so can't just turn it off in a point release. For\n // now, to unblock accessibility scenarios for our customers, we've got an option to turn it off. In a\n // future release, we should strongly consider flipping the default such that we *don't* emit a tabIndex\n // by default.\n if (GlobalSettings.setTabIndexAtCardRoot) {\n renderedCard.tabIndex = 0;\n }\n\n if (this.speak) {\n renderedCard.setAttribute(\"aria-label\", this.speak);\n }\n }\n }\n\n if (target) {\n Utils.appendChild(target, renderedCard);\n\n this.updateLayout();\n }\n\n return renderedCard;\n }\n\n updateLayout(processChildren: boolean = true) {\n super.updateLayout(processChildren);\n\n if (GlobalSettings.useAdvancedCardBottomTruncation && this.isDisplayed()) {\n let padding = this.hostConfig.getEffectiveSpacing(Enums.Spacing.Default);\n\n this['handleOverflow']((this.renderedElement).offsetHeight - padding);\n }\n }\n\n shouldFallback(): boolean {\n return super.shouldFallback() || !this.isVersionSupported();\n }\n\n get hasVisibleSeparator(): boolean {\n return false;\n }\n}\n\nclass InlineAdaptiveCard extends AdaptiveCard {\n //#region Schema\n\n protected getSchemaKey(): string {\n return \"InlineAdaptiveCard\";\n }\n\n protected populateSchema(schema: SerializableObjectSchema) {\n super.populateSchema(schema);\n\n schema.remove(\n AdaptiveCard.$schemaProperty,\n AdaptiveCard.versionProperty);\n }\n\n //#endregion\n\n protected getDefaultPadding(): PaddingDefinition {\n return new PaddingDefinition(\n this.suppressStyle ? Enums.Spacing.None : Enums.Spacing.Padding,\n Enums.Spacing.Padding,\n this.suppressStyle ? Enums.Spacing.None : Enums.Spacing.Padding,\n Enums.Spacing.Padding);\n }\n\n protected get bypassVersionCheck(): boolean {\n return true;\n }\n\n protected get defaultStyle(): string {\n if (this.suppressStyle) {\n return Enums.ContainerStyle.Default;\n }\n else {\n return this.hostConfig.actions.showCard.style ? this.hostConfig.actions.showCard.style : Enums.ContainerStyle.Emphasis;\n }\n }\n\n suppressStyle: boolean = false;\n\n render(target?: HTMLElement): HTMLElement | undefined {\n let renderedCard = super.render(target);\n\n if (renderedCard) {\n renderedCard.setAttribute(\"aria-live\", \"polite\");\n renderedCard.removeAttribute(\"tabindex\");\n }\n\n return renderedCard;\n }\n}\n\nexport class SerializationContext extends BaseSerializationContext {\n private _elementRegistry?: CardObjectRegistry;\n private _actionRegistry?: CardObjectRegistry;\n\n private internalParseCardObject(\n parent: CardElement | undefined,\n source: any,\n forbiddenTypeNames: string[],\n allowFallback: boolean,\n createInstanceCallback: (typeName: string | undefined) => T | undefined,\n logParseEvent: (typeName: string | undefined, errorType: Enums.TypeErrorType) => void): T | undefined {\n let result: T | undefined = undefined;\n\n if (source && typeof source === \"object\") {\n let typeName = Utils.parseString(source[\"type\"]);\n\n if (typeName && forbiddenTypeNames.indexOf(typeName) >= 0) {\n logParseEvent(typeName, Enums.TypeErrorType.ForbiddenType);\n }\n else {\n let tryToFallback = false;\n\n result = createInstanceCallback(typeName);\n\n if (!result) {\n tryToFallback = GlobalSettings.enableFallback && allowFallback;\n\n logParseEvent(typeName, Enums.TypeErrorType.UnknownType);\n }\n else {\n result.setParent(parent);\n result.parse(source, this);\n\n tryToFallback = GlobalSettings.enableFallback && allowFallback && result.shouldFallback();\n }\n\n if (tryToFallback) {\n let fallback = source[\"fallback\"];\n\n if (!fallback && parent) {\n parent.setShouldFallback(true);\n }\n if (typeof fallback === \"string\" && fallback.toLowerCase() === \"drop\") {\n result = undefined;\n }\n else if (typeof fallback === \"object\") {\n result = this.internalParseCardObject(\n parent,\n fallback,\n forbiddenTypeNames,\n true,\n createInstanceCallback,\n logParseEvent);\n }\n }\n }\n }\n\n return result;\n }\n\n protected cardObjectParsed(o: SerializableObject, source: any) {\n if (o instanceof Action && this.onParseAction) {\n this.onParseAction(o, source, this);\n }\n else if (o instanceof CardElement && this.onParseElement) {\n this.onParseElement(o, source, this);\n }\n }\n\n onParseAction?: (action: Action, source: any, context: SerializationContext) => void;\n onParseElement?: (element: CardElement, source: any, context: SerializationContext) => void;\n\n shouldSerialize(o: SerializableObject): boolean {\n if (o instanceof Action) {\n return this.actionRegistry.findByName(o.getJsonTypeName()) !== undefined;\n }\n else if (o instanceof CardElement) {\n return this.elementRegistry.findByName(o.getJsonTypeName()) !== undefined;\n }\n else {\n return true;\n }\n }\n\n parseCardObject(\n parent: CardElement | undefined,\n source: any,\n forbiddenTypeNames: string[],\n allowFallback: boolean,\n createInstanceCallback: (typeName: string) => T | undefined,\n logParseEvent: (typeName: string, errorType: Enums.TypeErrorType) => void): T | undefined {\n let result = this.internalParseCardObject(\n parent,\n source,\n forbiddenTypeNames,\n allowFallback,\n createInstanceCallback,\n logParseEvent);\n\n if (result !== undefined) {\n this.cardObjectParsed(result, source);\n }\n\n return result;\n }\n\n parseElement(parent: CardElement | undefined, source: any, allowFallback: boolean): CardElement | undefined {\n return this.parseCardObject(\n parent,\n source,\n [], // Forbidden types not supported for elements for now\n allowFallback,\n (typeName: string) => {\n return this.elementRegistry.createInstance(typeName, this.targetVersion);\n },\n (typeName: string, errorType: Enums.TypeErrorType) => {\n if (errorType === Enums.TypeErrorType.UnknownType) {\n this.logParseEvent(\n undefined,\n Enums.ValidationEvent.UnknownElementType,\n Strings.errors.unknownElementType(typeName));\n }\n else {\n this.logParseEvent(\n undefined,\n Enums.ValidationEvent.ElementTypeNotAllowed,\n Strings.errors.elementTypeNotAllowed(typeName));\n }\n });\n }\n\n parseAction(\n parent: CardElement,\n source: any,\n forbiddenActionTypes: string[],\n allowFallback: boolean): Action | undefined {\n return this.parseCardObject(\n parent,\n source,\n forbiddenActionTypes,\n allowFallback,\n (typeName: string) => {\n return this.actionRegistry.createInstance(typeName, this.targetVersion);\n },\n (typeName: string, errorType: Enums.TypeErrorType) => {\n if (errorType == Enums.TypeErrorType.UnknownType) {\n this.logParseEvent(\n undefined,\n Enums.ValidationEvent.UnknownActionType,\n Strings.errors.unknownActionType(typeName));\n }\n else {\n this.logParseEvent(\n undefined,\n Enums.ValidationEvent.ActionTypeNotAllowed,\n Strings.errors.actionTypeNotAllowed(typeName));\n }\n });\n }\n\n get elementRegistry(): CardObjectRegistry {\n return this._elementRegistry ? this._elementRegistry : GlobalRegistry.elements;\n }\n\n // Not using a property setter here because the setter should accept \"undefined\"\n // whereas the getter should never return undefined.\n setElementRegistry(value: CardObjectRegistry | undefined) {\n this._elementRegistry = value;\n }\n\n get actionRegistry(): CardObjectRegistry {\n return this._actionRegistry ? this._actionRegistry : GlobalRegistry.actions;\n }\n\n // Not using a property setter here because the setter should accept \"undefined\"\n // whereas the getter should never return undefined.\n setActionRegistry(value: CardObjectRegistry | undefined) {\n this._actionRegistry = value;\n }\n}\n\nGlobalRegistry.defaultElements.register(\"Container\", Container);\nGlobalRegistry.defaultElements.register(\"TextBlock\", TextBlock);\nGlobalRegistry.defaultElements.register(\"RichTextBlock\", RichTextBlock, Versions.v1_2);\nGlobalRegistry.defaultElements.register(\"TextRun\", TextRun, Versions.v1_2);\nGlobalRegistry.defaultElements.register(\"Image\", Image);\nGlobalRegistry.defaultElements.register(\"ImageSet\", ImageSet);\nGlobalRegistry.defaultElements.register(\"Media\", Media, Versions.v1_1);\nGlobalRegistry.defaultElements.register(\"FactSet\", FactSet);\nGlobalRegistry.defaultElements.register(\"ColumnSet\", ColumnSet);\nGlobalRegistry.defaultElements.register(\"ActionSet\", ActionSet, Versions.v1_2);\nGlobalRegistry.defaultElements.register(\"Input.Text\", TextInput);\nGlobalRegistry.defaultElements.register(\"Input.Date\", DateInput);\nGlobalRegistry.defaultElements.register(\"Input.Time\", TimeInput);\nGlobalRegistry.defaultElements.register(\"Input.Number\", NumberInput);\nGlobalRegistry.defaultElements.register(\"Input.ChoiceSet\", ChoiceSetInput);\nGlobalRegistry.defaultElements.register(\"Input.Toggle\", ToggleInput);\n\nGlobalRegistry.defaultActions.register(OpenUrlAction.JsonTypeName, OpenUrlAction);\nGlobalRegistry.defaultActions.register(SubmitAction.JsonTypeName, SubmitAction);\nGlobalRegistry.defaultActions.register(ShowCardAction.JsonTypeName, ShowCardAction);\nGlobalRegistry.defaultActions.register(ToggleVisibilityAction.JsonTypeName, ToggleVisibilityAction, Versions.v1_2);\nGlobalRegistry.defaultActions.register(ExecuteAction.JsonTypeName, ExecuteAction, Versions.v1_4);\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport * as Enums from \"./enums\";\nimport * as Utils from \"./utils\";\nimport { Strings} from \"./strings\";\nimport { Dictionary, GlobalSettings } from \"./shared\";\nimport { HostConfig } from \"./host-config\";\nimport { HostCapabilities } from \"./host-capabilities\";\nimport { Versions, property, SerializableObject, StringProperty, SerializableObjectProperty, IValidationEvent, PropertyDefinition } from \"./serialization\";\n\nexport class ValidationResults {\n readonly allIds: Dictionary = {};\n readonly validationEvents: IValidationEvent[] = [];\n\n addFailure(cardObject: CardObject, event: Enums.ValidationEvent, message: string) {\n this.validationEvents.push(\n {\n phase: Enums.ValidationPhase.Validation,\n source: cardObject,\n event: event,\n message: message\n }\n );\n }\n}\n\nexport type CardObjectType = { new(): CardObject };\n\nexport abstract class CardObject extends SerializableObject {\n //#region Schema\n\n static readonly typeNameProperty = new StringProperty(\n Versions.v1_0,\n \"type\",\n undefined,\n undefined,\n undefined,\n (sender: object) => {\n return (sender).getJsonTypeName()\n });\n static readonly idProperty = new StringProperty(Versions.v1_0, \"id\");\n static readonly requiresProperty = new SerializableObjectProperty(\n Versions.v1_2,\n \"requires\",\n HostCapabilities,\n false,\n new HostCapabilities());\n\n protected getSchemaKey(): string {\n return this.getJsonTypeName();\n }\n\n @property(CardObject.idProperty)\n id?: string;\n\n @property(CardObject.requiresProperty)\n get requires(): HostCapabilities {\n return this.getValue(CardObject.requiresProperty);\n }\n\n //#endregion\n\n private _shouldFallback: boolean = false;\n\n protected _parent?: CardObject;\n protected _renderedElement?: HTMLElement;\n\n /**\n * Checks if this CardObject contains the given DOM Node.\n * @param node The DOM Node to look for.\n * @returns `true` if the DOM Node was found, `false` otherwise.\n */\n protected contains(node: Node): boolean {\n if (this._renderedElement) {\n return this._renderedElement.contains(node);\n }\n\n return false;\n }\n\n onPreProcessPropertyValue?: (sender: CardObject, property: PropertyDefinition, value: any) => any;\n\n abstract getJsonTypeName(): string;\n\n abstract get hostConfig(): HostConfig;\n\n preProcessPropertyValue(property: PropertyDefinition, propertyValue?: any): any {\n let value = propertyValue === undefined ? this.getValue(property) : propertyValue;\n\n if (GlobalSettings.allowPreProcessingPropertyValues) {\n let currentObject: CardObject | undefined = this;\n\n while (currentObject && !currentObject.onPreProcessPropertyValue) {\n currentObject = currentObject.parent;\n }\n\n if (currentObject && currentObject.onPreProcessPropertyValue) {\n return currentObject.onPreProcessPropertyValue(this, property, value);\n }\n }\n\n return value;\n }\n\n setParent(value: CardObject | undefined) {\n this._parent = value;\n }\n\n setShouldFallback(value: boolean) {\n this._shouldFallback = value;\n }\n\n shouldFallback(): boolean {\n return this._shouldFallback || !this.requires.areAllMet(this.hostConfig.hostCapabilities);\n }\n\n getRootObject(): CardObject {\n let rootObject: CardObject = this;\n\n while (rootObject.parent) {\n rootObject = rootObject.parent;\n }\n\n return rootObject;\n }\n\n internalValidateProperties(context: ValidationResults) {\n if (this.id) {\n if (context.allIds.hasOwnProperty(this.id)) {\n if (context.allIds[this.id] == 1) {\n context.addFailure(\n this,\n Enums.ValidationEvent.DuplicateId,\n Strings.errors.duplicateId(this.id));\n }\n\n context.allIds[this.id] += 1;\n }\n else {\n context.allIds[this.id] = 1;\n }\n }\n }\n\n validateProperties(): ValidationResults {\n let result = new ValidationResults();\n\n this.internalValidateProperties(result);\n\n return result;\n }\n\n /**\n * Recursively searches this CardObject and any children to find the\n * innermost CardObject that owns the given DOM Node.\n *\n * @param node The DOM Node to look for.\n *\n * @returns The owner of the given DOM Node, or `undefined` if no owner was found.\n */\n findDOMNodeOwner(node: Node): CardObject | undefined {\n // default implementation for CardObjects with no associated children\n return this.contains(node) ? this : undefined;\n }\n\n get parent(): CardObject | undefined {\n return this._parent;\n }\n\n get renderedElement(): HTMLElement | undefined {\n return this._renderedElement;\n }\n}\n","import { ActivityResponse, IActivityRequest } from \"./activity-request\";\n\nexport abstract class ChannelAdapter {\n abstract sendRequestAsync(request: IActivityRequest): Promise;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nexport class Collection {\n private _items: Array = [];\n\n onItemAdded: (item: TItem) => void;\n onItemRemoved: (item: TItem) => void;\n\n get(index: number): TItem {\n return this._items[index];\n }\n\n add(item: TItem) {\n this._items.push(item);\n\n if (this.onItemAdded) {\n this.onItemAdded(item);\n }\n }\n\n remove(item: TItem) {\n var i = this._items.indexOf(item);\n\n if (i >= 0) {\n this._items = this._items.splice(i, 1);\n\n if (this.onItemRemoved) {\n this.onItemRemoved(item);\n }\n }\n }\n\n indexOf(item: TItem): number {\n return this._items.indexOf(item);\n }\n\n get length(): number {\n return this._items.length;\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nexport class Constants {\n static readonly keys = {\n tab: \"Tab\",\n enter: \"Enter\",\n escape: \"Escape\",\n space: \" \",\n up: \"ArrowUp\",\n down: \"ArrowDown\",\n delete: \"Delete\"\n } as const;\n}\n","export * from \"./menu-item\";\nexport * from \"./popup-menu\";\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport { defaultHostConfig, HostConfig } from \"../host-config\";\nimport { Constants } from \"./constants\";\n\nexport class MenuItem {\n private _hostConfig?: HostConfig;\n private _element: HTMLElement;\n private _value: string;\n private _isEnabled: boolean = true;\n\n private click() {\n if (this.isEnabled && this.onClick) {\n this.onClick(this);\n }\n }\n\n private updateCssClasses() {\n if (this._element) {\n let effectiveHostConfig = this._hostConfig ? this._hostConfig : defaultHostConfig;\n\n this._element.className = effectiveHostConfig.makeCssClassName(\"ac-ctrl\");\n this._element.classList.add(effectiveHostConfig.makeCssClassName(this.isEnabled ? \"ac-ctrl-dropdown-item\" : \"ac-ctrl-dropdown-item-disabled\"));\n\n if (!this.isEnabled) {\n this._element.classList.add(effectiveHostConfig.makeCssClassName(\"ac-disabled\"));\n }\n }\n }\n\n readonly key: string;\n\n onClick?: (item: MenuItem) => void;\n\n constructor(key: string, value: string) {\n this.key = key;\n this._value = value;\n }\n\n toString(): string {\n return this.value;\n }\n\n render(hostConfig?: HostConfig): HTMLElement {\n this._hostConfig = hostConfig;\n\n if (!this._element) {\n this._element = document.createElement(\"span\");\n this._element.innerText = this.value;\n this._element.setAttribute(\"role\", \"menuitem\");\n\n if (!this.isEnabled) {\n this._element.setAttribute(\"aria-disabled\", \"true\");\n }\n\n this._element.setAttribute(\"aria-selected\", \"false\");\n this._element.onmouseup = (e) => { this.click(); };\n this._element.onkeydown = (e) => {\n if (e.key === Constants.keys.enter) {\n e.cancelBubble = true;\n \n this.click();\n }\n };\n\n this.updateCssClasses();\n }\n\n return this._element;\n }\n\n get value(): string {\n return this._value;\n }\n\n set value(newValue: string) {\n this._value = newValue;\n\n if (this._element) {\n this._element.innerText = newValue;\n }\n }\n\n get isEnabled(): boolean {\n return this._isEnabled;\n }\n\n set isEnabled(value: boolean) {\n if (this._isEnabled !== value) {\n this._isEnabled = value;\n\n this.updateCssClasses();\n }\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport { Constants } from \"./constants\";\nimport * as Utils from \"../utils\";\nimport { defaultHostConfig, HostConfig } from \"../host-config\";\n\nexport abstract class PopupControl {\n private _isOpen: boolean = false;\n private _overlayElement: HTMLElement;\n private _popupElement: HTMLElement;\n private _hostConfig?: HostConfig;\n\n protected abstract renderContent(): HTMLElement;\n\n onClose: (popupControl: PopupControl, wasCancelled: boolean) => void;\n\n keyDown(e: KeyboardEvent) {\n switch (e.key) {\n case Constants.keys.escape:\n this.closePopup(true);\n\n break;\n }\n }\n\n render(rootElementBounds: ClientRect): HTMLElement {\n let element = document.createElement(\"div\");\n element.tabIndex = 0;\n element.className = this.hostConfig.makeCssClassName(\"ac-ctrl\", \"ac-ctrl-popup-container\");\n element.setAttribute(\"role\", \"dialog\");\n element.setAttribute(\"aria-modal\", \"true\");\n element.onkeydown = (e) => {\n this.keyDown(e);\n\n return !e.cancelBubble;\n };\n\n element.appendChild(this.renderContent());\n\n return element;\n }\n\n focus() {\n if (this._popupElement) {\n (this._popupElement.firstElementChild).focus();\n }\n }\n\n popup(rootElement: HTMLElement) {\n if (!this._isOpen) {\n this._overlayElement = document.createElement(\"div\");\n this._overlayElement.className = this.hostConfig.makeCssClassName(\"ac-ctrl-overlay\");\n this._overlayElement.tabIndex = 0;\n this._overlayElement.style.width = document.documentElement.scrollWidth + \"px\";\n this._overlayElement.style.height = document.documentElement.scrollHeight + \"px\";\n this._overlayElement.onfocus = (e) => { this.closePopup(true); };\n\n document.body.appendChild(this._overlayElement);\n\n var rootElementBounds = rootElement.getBoundingClientRect();\n\n this._popupElement = this.render(rootElementBounds);\n this._popupElement.classList.remove(\n ...this.hostConfig.makeCssClassNames(\n \"ac-ctrl-slide\",\n \"ac-ctrl-slideLeftToRight\",\n \"ac-ctrl-slideRightToLeft\",\n \"ac-ctrl-slideTopToBottom\",\n \"ac-ctrl-slideRightToLeft\"));\n\n window.addEventListener(\"resize\", (e) => { this.closePopup(true); });\n\n const rootElementLabel = rootElement.getAttribute(\"aria-label\");\n if (rootElementLabel) {\n this._popupElement.setAttribute(\"aria-label\", rootElementLabel);\n }\n\n this._overlayElement.appendChild(this._popupElement);\n\n var popupElementBounds = this._popupElement.getBoundingClientRect();\n\n var availableSpaceBelow = window.innerHeight - rootElementBounds.bottom;\n var availableSpaceAbove = rootElementBounds.top;\n var availableSpaceRight = window.innerWidth - rootElementBounds.left;\n var availableSpaceRight = window.innerWidth - rootElementBounds.right;\n var availableSpaceLeft = rootElementBounds.left;\n\n var left = rootElementBounds.left + Utils.getScrollX();\n var top;\n\n if (availableSpaceAbove < popupElementBounds.height && availableSpaceBelow < popupElementBounds.height) {\n // Not enough space above or below root element\n var actualPopupHeight = Math.min(popupElementBounds.height, window.innerHeight);\n\n this._popupElement.style.maxHeight = actualPopupHeight + \"px\";\n\n if (actualPopupHeight < popupElementBounds.height) {\n top = Utils.getScrollY();\n }\n else {\n top = Utils.getScrollY() + rootElementBounds.top + (rootElementBounds.height - actualPopupHeight) /2;\n }\n\n if (availableSpaceLeft < popupElementBounds.width && availableSpaceRight < popupElementBounds.width) {\n // Not enough space left or right of root element\n var actualPopupWidth = Math.min(popupElementBounds.width, window.innerWidth);\n\n this._popupElement.style.maxWidth = actualPopupWidth + \"px\";\n\n if (actualPopupWidth < popupElementBounds.width) {\n left = Utils.getScrollX();\n }\n else {\n left = Utils.getScrollX() + rootElementBounds.left + (rootElementBounds.width - actualPopupWidth) /2;\n }\n }\n else {\n // Enough space on the left or right of the root element\n if (availableSpaceRight >= popupElementBounds.width) {\n left = Utils.getScrollX() + rootElementBounds.right;\n\n this._popupElement.classList.add(...this.hostConfig.makeCssClassNames(\"ac-ctrl-slide\", \"ac-ctrl-slideLeftToRight\"));\n }\n else {\n left = Utils.getScrollX() + rootElementBounds.left - popupElementBounds.width;\n\n this._popupElement.classList.add(...this.hostConfig.makeCssClassNames(\"ac-ctrl-slide\", \"ac-ctrl-slideRightToLeft\"));\n }\n }\n }\n else {\n // Enough space above or below root element\n if (availableSpaceBelow >= popupElementBounds.height) {\n top = Utils.getScrollY() + rootElementBounds.bottom;\n\n this._popupElement.classList.add(...this.hostConfig.makeCssClassNames(\"ac-ctrl-slide\", \"ac-ctrl-slideTopToBottom\"));\n }\n else {\n top = Utils.getScrollY() + rootElementBounds.top - popupElementBounds.height\n\n this._popupElement.classList.add(...this.hostConfig.makeCssClassNames(\"ac-ctrl-slide\", \"ac-ctrl-slideBottomToTop\"));\n }\n\n if (availableSpaceRight < popupElementBounds.width) {\n left = Utils.getScrollX() + rootElementBounds.right - popupElementBounds.width;\n }\n }\n\n this._popupElement.style.left = left + \"px\";\n this._popupElement.style.top = top + \"px\";\n\n this._popupElement.focus();\n\n this._isOpen = true;\n }\n }\n\n closePopup(wasCancelled: boolean) {\n if (this._isOpen) {\n document.body.removeChild(this._overlayElement);\n\n this._isOpen = false;\n\n if (this.onClose) {\n this.onClose(this, wasCancelled);\n }\n }\n }\n\n get hostConfig(): HostConfig {\n return this._hostConfig ? this._hostConfig : defaultHostConfig;\n }\n\n set hostConfig(value: HostConfig) {\n this._hostConfig = value;\n }\n\n get isOpen(): boolean {\n return this._isOpen;\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport { Constants } from \"./constants\";\nimport { Collection } from \"./collection\";\nimport { PopupControl } from \"./popup-control\";\nimport { MenuItem } from \"./menu-item\";\n\nexport class PopupMenu extends PopupControl {\n private _items: Collection = new Collection();\n private _renderedItems: Array = [];\n private _selectedIndex: number = -1;\n\n constructor() {\n super();\n }\n\n protected renderContent(): HTMLElement {\n var element = document.createElement(\"div\");\n element.className = this.hostConfig.makeCssClassName(\"ac-ctrl ac-popup\");\n element.setAttribute(\"role\", \"listbox\");\n\n for (let i = 0; i < this._items.length; i++) {\n var renderedItem = this._items.get(i).render(this.hostConfig);\n renderedItem.tabIndex = 0;\n\n element.appendChild(renderedItem);\n\n if (i == this.selectedIndex) {\n renderedItem.focus();\n }\n\n this._renderedItems.push(renderedItem);\n }\n\n return element;\n }\n\n keyDown(e: KeyboardEvent) {\n super.keyDown(e);\n\n var selectedItemIndex = this._selectedIndex;\n\n switch (e.key) {\n case Constants.keys.tab:\n this.closePopup(true);\n\n break;\n /*\n case Constants.keys.enter:\n if (this.selectedIndex >= 0) {\n this.selectedIndex = this.selectedIndex;\n\n this.close();\n }\n\n break;\n */\n case Constants.keys.up:\n if (selectedItemIndex <= 0) {\n selectedItemIndex = this._renderedItems.length - 1;\n }\n else {\n selectedItemIndex--;\n\n if (selectedItemIndex < 0) {\n selectedItemIndex = this._renderedItems.length - 1;\n }\n }\n\n this.selectedIndex = selectedItemIndex;\n\n e.cancelBubble = true;\n\n break;\n case Constants.keys.down:\n if (selectedItemIndex < 0) {\n selectedItemIndex = 0;\n }\n else {\n selectedItemIndex++;\n\n if (selectedItemIndex >= this._renderedItems.length) {\n selectedItemIndex = 0;\n }\n }\n\n this.selectedIndex = selectedItemIndex;\n\n e.cancelBubble = true;\n\n break;\n }\n }\n\n get items(): Collection {\n return this._items;\n }\n\n get selectedIndex(): number {\n return this._selectedIndex;\n }\n\n set selectedIndex(index: number) {\n if (index >= 0 && index < this._renderedItems.length) {\n this._renderedItems[index].focus();\n\n this._selectedIndex = index;\n }\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\n// Note the \"weird\" way these readonly fields are declared is to work around\n// a breaking change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\n// and adopt this syntax for all other static readonly fields.\nexport class ActionStyle {\n static readonly Default: \"default\" = \"default\";\n static readonly Positive: \"positive\" = \"positive\";\n static readonly Destructive: \"destructive\" = \"destructive\";\n}\n\nexport class ActionMode {\n static readonly Primary: \"primary\" = \"primary\";\n static readonly Secondary: \"secondary\" = \"secondary\";\n}\n\nexport enum Size {\n Auto,\n Stretch,\n Small,\n Medium,\n Large\n}\n\nexport enum ImageSize {\n Small,\n Medium,\n Large\n}\n\nexport enum SizeUnit {\n Weight,\n Pixel\n}\n\nexport enum TextSize {\n Small,\n Default,\n Medium,\n Large,\n ExtraLarge\n}\n\nexport enum TextWeight {\n Lighter,\n Default,\n Bolder\n}\n\nexport enum FontType {\n Default,\n Monospace\n}\n\nexport enum Spacing {\n None,\n Small,\n Default,\n Medium,\n Large,\n ExtraLarge,\n Padding\n}\n\nexport enum TextColor {\n Default,\n Dark,\n Light,\n Accent,\n Good,\n Warning,\n Attention\n}\n\nexport enum HorizontalAlignment {\n Left,\n Center,\n Right\n}\n\nexport enum VerticalAlignment {\n Top,\n Center,\n Bottom\n}\n\nexport enum ActionAlignment {\n Left,\n Center,\n Right,\n Stretch\n}\n\nexport enum ImageStyle {\n Default,\n Person\n}\n\nexport enum ShowCardActionMode {\n Inline,\n Popup\n}\n\nexport enum Orientation {\n Horizontal,\n Vertical\n}\n\nexport enum FillMode {\n Cover,\n RepeatHorizontally,\n RepeatVertically,\n Repeat\n}\n\nexport enum ActionIconPlacement {\n LeftOfTitle,\n AboveTitle\n}\n\nexport enum InputTextStyle {\n Text,\n Tel,\n Url,\n Email,\n Password\n}\n\n/*\n This should really be a string enum, e.g.\n\n export enum ContainerStyle {\n Default = \"default\",\n Emphasis = \"emphasis\"\n }\n\n However, some hosts do not use a version of TypeScript\n recent enough to understand string enums. This is\n a compatible construct that does not require using\n a more recent version of TypeScript.\n\n Also note the \"weird\" way these readonly fields are declared is to work around\n a breaking change introduced in TS 3.1 wrt d.ts generation. DO NOT CHANGE\n and adopt this syntax for all other static readonly fields.\n*/\nexport class ContainerStyle {\n static readonly Default: \"default\" = \"default\";\n static readonly Emphasis: \"emphasis\" = \"emphasis\";\n static readonly Accent: \"accent\" = \"accent\";\n static readonly Good: \"good\" = \"good\";\n static readonly Attention: \"attention\" = \"attention\";\n static readonly Warning: \"warning\" = \"warning\";\n}\n\nexport enum ValidationPhase {\n Parse,\n ToJSON,\n Validation\n}\n\nexport enum ValidationEvent {\n Hint,\n ActionTypeNotAllowed,\n CollectionCantBeEmpty,\n Deprecated,\n ElementTypeNotAllowed,\n InteractivityNotAllowed,\n InvalidPropertyValue,\n MissingCardType,\n PropertyCantBeNull,\n TooManyActions,\n UnknownActionType,\n UnknownElementType,\n UnsupportedCardVersion,\n DuplicateId,\n UnsupportedProperty,\n RequiredInputsShouldHaveLabel,\n RequiredInputsShouldHaveErrorMessage,\n Other\n}\n\nexport enum ContainerFitStatus {\n FullyInContainer,\n Overflowing,\n FullyOutOfContainer\n}\n\nexport enum TypeErrorType {\n UnknownType,\n ForbiddenType\n}\n\nexport enum RefreshMode {\n Disabled,\n Manual,\n Automatic\n}\n\nexport enum LogLevel {\n Info,\n Warning,\n Error\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport { TargetVersion, Version, SerializableObject, BaseSerializationContext, PropertyBag } from \"./serialization\";\n\nexport class HostCapabilities extends SerializableObject {\n private _capabilities: { [key: string]: TargetVersion } = {};\n\n protected getSchemaKey(): string {\n return \"HostCapabilities\";\n }\n\n protected internalParse(source: any, context: BaseSerializationContext) {\n super.internalParse(source, context);\n\n if (source) {\n for (let name in source) {\n let jsonVersion = source[name];\n\n if (typeof jsonVersion === \"string\") {\n if (jsonVersion == \"*\") {\n this.addCapability(name, \"*\");\n }\n else {\n let version = Version.parse(jsonVersion, context);\n\n if (version && version.isValid) {\n this.addCapability(name, version);\n }\n }\n }\n }\n }\n }\n\n protected internalToJSON(target: PropertyBag, context: BaseSerializationContext) {\n super.internalToJSON(target, context);\n\n for (let key in this._capabilities) {\n target[key] = this._capabilities[key];\n }\n }\n\n addCapability(name: string, version: TargetVersion) {\n this._capabilities[name] = version;\n }\n\n removeCapability(name: string) {\n delete this._capabilities[name];\n }\n\n clear() {\n this._capabilities = {};\n }\n\n hasCapability(name: string, version: TargetVersion): boolean {\n if (this._capabilities.hasOwnProperty(name)) {\n if (version == \"*\" || this._capabilities[name] == \"*\") {\n return true;\n }\n\n return version.compareTo(this._capabilities[name]) <= 0;\n }\n\n return false;\n }\n\n areAllMet(hostCapabilities: HostCapabilities): boolean {\n for (let capabilityName in this._capabilities) {\n if (!hostCapabilities.hasCapability(capabilityName, this._capabilities[capabilityName])) {\n return false;\n }\n }\n\n return true;\n }\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport * as Enums from \"./enums\";\nimport * as Utils from \"./utils\";\nimport * as Shared from \"./shared\";\nimport { HostCapabilities } from \"./host-capabilities\";\n\nfunction parseHostConfigEnum(targetEnum: { [s: number]: string }, value: string | number, defaultValue: number): number {\n if (typeof value === \"string\") {\n let parsedValue = Utils.parseEnum(targetEnum, value, defaultValue);\n\n return parsedValue !== undefined ? parsedValue : defaultValue;\n }\n else if (typeof value === \"number\") {\n return value;\n }\n else {\n return defaultValue;\n }\n}\n\nexport class ColorDefinition {\n default: string = \"#000000\";\n subtle: string = \"#666666\";\n\n constructor(defaultColor?: string, subtleColor?: string) {\n if (defaultColor) {\n this.default = defaultColor;\n }\n\n if (subtleColor) {\n this.subtle = subtleColor;\n }\n }\n\n parse(obj?: any) {\n if (obj) {\n this.default = obj[\"default\"] || this.default;\n this.subtle = obj[\"subtle\"] || this.subtle;\n }\n }\n}\n\nexport class TextColorDefinition extends ColorDefinition {\n readonly highlightColors = new ColorDefinition(\"#22000000\", \"#11000000\");\n\n parse(obj?: any) {\n super.parse(obj);\n\n if (obj) {\n this.highlightColors.parse(obj[\"highlightColors\"]);\n }\n }\n}\n\nexport class AdaptiveCardConfig {\n allowCustomStyle: boolean = false;\n\n constructor(obj?: any) {\n if (obj) {\n this.allowCustomStyle = obj[\"allowCustomStyle\"] || this.allowCustomStyle;\n }\n }\n}\n\nexport class ImageSetConfig {\n imageSize: Enums.Size = Enums.Size.Medium;\n maxImageHeight: number = 100;\n\n constructor(obj?: any) {\n if (obj) {\n this.imageSize = obj[\"imageSize\"] != null ? obj[\"imageSize\"] : this.imageSize;\n this.maxImageHeight = Utils.parseNumber(obj[\"maxImageHeight\"], 100);\n }\n }\n\n toJSON() {\n return {\n imageSize: Enums.Size[this.imageSize],\n maxImageHeight: this.maxImageHeight\n }\n }\n}\n\nexport class MediaConfig {\n defaultPoster?: string;\n allowInlinePlayback: boolean = true;\n\n constructor(obj?: any) {\n if (obj) {\n this.defaultPoster = obj[\"defaultPoster\"];\n this.allowInlinePlayback = obj[\"allowInlinePlayback\"] || this.allowInlinePlayback;\n }\n }\n\n toJSON() {\n return {\n defaultPoster: this.defaultPoster,\n allowInlinePlayback: this.allowInlinePlayback\n }\n }\n}\n\nexport class TableConfig {\n cellSpacing: number = 8;\n\n constructor(obj?: any) {\n if (obj) {\n this.cellSpacing = obj.cellSpacing && typeof obj.cellSpacing === \"number\" ? obj.cellSpacing : this.cellSpacing;\n }\n }\n\n toJSON() {\n return {\n cellSpacing: this.cellSpacing\n }\n }\n}\n\nexport class BaseTextDefinition {\n size: Enums.TextSize = Enums.TextSize.Default;\n color: Enums.TextColor = Enums.TextColor.Default;;\n isSubtle: boolean = false;\n weight: Enums.TextWeight = Enums.TextWeight.Default;\n\n constructor(obj?: any) {\n this.parse(obj);\n }\n\n parse(obj: any) {\n if (obj) {\n this.size = parseHostConfigEnum(Enums.TextSize, obj[\"size\"], this.size);\n this.color = parseHostConfigEnum(Enums.TextColor, obj[\"color\"], this.color);\n this.isSubtle = obj.isSubtle !== undefined && typeof obj.isSubtle === \"boolean\" ? obj.isSubtle : this.isSubtle;\n this.weight = parseHostConfigEnum(Enums.TextWeight, obj[\"weight\"], this.getDefaultWeight());\n }\n }\n\n getDefaultWeight(): Enums.TextWeight {\n return Enums.TextWeight.Default;\n }\n\n toJSON(): any {\n return {\n size: Enums.TextSize[this.size],\n color: Enums.TextColor[this.color],\n isSubtle: this.isSubtle,\n weight: Enums.TextWeight[this.weight]\n }\n }\n}\n\nexport class TextStyleDefinition extends BaseTextDefinition {\n fontType: Enums.FontType = Enums.FontType.Default;\n\n parse(obj: any) {\n super.parse(obj);\n\n if (obj) {\n this.fontType = parseHostConfigEnum(Enums.FontType, obj.fontType, this.fontType);\n }\n }\n}\n\nexport class TextStyleSet {\n readonly default: TextStyleDefinition = new TextStyleDefinition();\n readonly heading: TextStyleDefinition = new TextStyleDefinition(\n {\n size: \"Large\",\n weight: \"Bolder\"\n });\n readonly columnHeader: TextStyleDefinition = new TextStyleDefinition(\n {\n weight: \"Bolder\"\n });\n \n constructor(obj?: any) {\n if (obj) {\n this.heading.parse(obj.heading);\n this.columnHeader.parse(obj.columnHeader);\n }\n }\n\n getStyleByName(name: string): TextStyleDefinition {\n switch (name.toLowerCase()) {\n case \"heading\":\n return this.heading;\n case \"columnHeader\":\n return this.columnHeader;\n default:\n return this.default;\n }\n }\n}\n\nexport class TextBlockConfig {\n headingLevel?: number;\n\n constructor(obj?: any) {\n if (obj) {\n this.headingLevel = Utils.parseNumber(obj.headingLevel);\n }\n }\n}\n\nexport class RequiredInputLabelTextDefinition extends BaseTextDefinition {\n suffix?: string = \" *\";\n suffixColor: Enums.TextColor = Enums.TextColor.Attention;\n\n parse(obj?: any) {\n super.parse(obj);\n\n if (obj) {\n this.suffix = obj[\"suffix\"] || this.suffix;\n this.suffixColor = parseHostConfigEnum(Enums.TextColor, obj[\"suffixColor\"], this.suffixColor);\n }\n }\n\n toJSON(): any {\n let result = super.toJSON();\n result[\"suffix\"] = this.suffix;\n result[\"suffixColor\"] = Enums.TextColor[this.suffixColor];\n\n return result;\n }\n}\n\nexport class InputLabelConfig {\n inputSpacing: Enums.Spacing = Enums.Spacing.Small;\n readonly requiredInputs: RequiredInputLabelTextDefinition = new RequiredInputLabelTextDefinition();\n readonly optionalInputs: BaseTextDefinition = new BaseTextDefinition();\n\n constructor(obj?: any) {\n if (obj) {\n this.inputSpacing = parseHostConfigEnum(Enums.Spacing, obj[\"inputSpacing\"], this.inputSpacing);\n this.requiredInputs = new RequiredInputLabelTextDefinition(obj[\"requiredInputs\"]);\n this.optionalInputs = new BaseTextDefinition(obj[\"optionalInputs\"]);\n }\n }\n}\n\nexport class InputConfig {\n readonly label: InputLabelConfig = new InputLabelConfig();\n readonly errorMessage: BaseTextDefinition = new BaseTextDefinition({ color: Enums.TextColor.Attention });\n\n constructor(obj?: any) {\n if (obj) {\n this.label = new InputLabelConfig(obj[\"label\"]);\n this.errorMessage = new BaseTextDefinition(obj[\"errorMessage\"]);\n }\n }\n}\n\nexport class FactTextDefinition extends BaseTextDefinition {\n wrap: boolean = true;\n\n parse(obj?: any) {\n super.parse(obj);\n\n if (obj) {\n this.wrap = obj[\"wrap\"] != null ? obj[\"wrap\"] : this.wrap;\n }\n }\n\n toJSON(): any {\n let result = super.toJSON();\n result[\"wrap\"] = this.wrap;\n\n return result;\n }\n}\n\nexport class FactTitleDefinition extends FactTextDefinition {\n maxWidth?: number = 150;\n weight: Enums.TextWeight = Enums.TextWeight.Bolder;\n\n constructor(obj?: any) {\n super(obj);\n\n if (obj) {\n this.maxWidth = obj[\"maxWidth\"] != null ? obj[\"maxWidth\"] : this.maxWidth;\n this.weight = parseHostConfigEnum(Enums.TextWeight, obj[\"weight\"], Enums.TextWeight.Bolder);\n }\n }\n\n getDefaultWeight() {\n return Enums.TextWeight.Bolder;\n }\n}\n\nexport class FactSetConfig {\n readonly title: FactTitleDefinition = new FactTitleDefinition();\n readonly value: FactTextDefinition = new FactTextDefinition();\n spacing: number = 10;\n\n constructor(obj?: any) {\n if (obj) {\n this.title = new FactTitleDefinition(obj[\"title\"]);\n this.value = new FactTextDefinition(obj[\"value\"]);\n this.spacing = obj.spacing && obj.spacing != null ? obj.spacing && obj.spacing : this.spacing;\n }\n }\n}\n\nexport class ShowCardActionConfig {\n actionMode: Enums.ShowCardActionMode = Enums.ShowCardActionMode.Inline;\n inlineTopMargin: number = 16;\n style?: string = Enums.ContainerStyle.Emphasis;\n\n constructor(obj?: any) {\n if (obj) {\n this.actionMode = parseHostConfigEnum(Enums.ShowCardActionMode, obj[\"actionMode\"], Enums.ShowCardActionMode.Inline);\n this.inlineTopMargin = obj[\"inlineTopMargin\"] != null ? obj[\"inlineTopMargin\"] : this.inlineTopMargin;\n this.style = obj[\"style\"] && typeof obj[\"style\"] === \"string\" ? obj[\"style\"] : Enums.ContainerStyle.Emphasis;\n }\n }\n\n toJSON() {\n return {\n actionMode: Enums.ShowCardActionMode[this.actionMode],\n inlineTopMargin: this.inlineTopMargin,\n style: this.style\n }\n }\n}\n\nexport class ActionsConfig {\n maxActions: number = 5;\n spacing: Enums.Spacing = Enums.Spacing.Default;\n buttonSpacing: number = 20;\n readonly showCard: ShowCardActionConfig = new ShowCardActionConfig();\n preExpandSingleShowCardAction?: boolean = false;\n actionsOrientation: Enums.Orientation = Enums.Orientation.Horizontal;\n actionAlignment: Enums.ActionAlignment = Enums.ActionAlignment.Left;\n iconPlacement: Enums.ActionIconPlacement = Enums.ActionIconPlacement.LeftOfTitle;\n allowTitleToWrap: boolean = false;\n iconSize: number = 16;\n\n constructor(obj?: any) {\n if (obj) {\n this.maxActions = obj[\"maxActions\"] != null ? obj[\"maxActions\"] : this.maxActions;\n this.spacing = parseHostConfigEnum(Enums.Spacing, obj.spacing && obj.spacing, Enums.Spacing.Default);\n this.buttonSpacing = obj[\"buttonSpacing\"] != null ? obj[\"buttonSpacing\"] : this.buttonSpacing;\n this.showCard = new ShowCardActionConfig(obj[\"showCard\"]);\n this.preExpandSingleShowCardAction = Utils.parseBool(obj[\"preExpandSingleShowCardAction\"], false);\n this.actionsOrientation = parseHostConfigEnum(Enums.Orientation, obj[\"actionsOrientation\"], Enums.Orientation.Horizontal);\n this.actionAlignment = parseHostConfigEnum(Enums.ActionAlignment, obj[\"actionAlignment\"], Enums.ActionAlignment.Left);\n this.iconPlacement = parseHostConfigEnum(Enums.ActionIconPlacement, obj[\"iconPlacement\"], Enums.ActionIconPlacement.LeftOfTitle);\n this.allowTitleToWrap = obj[\"allowTitleToWrap\"] != null ? obj[\"allowTitleToWrap\"] : this.allowTitleToWrap;\n\n try {\n let sizeAndUnit = Shared.SizeAndUnit.parse(obj[\"iconSize\"]);\n\n if (sizeAndUnit.unit == Enums.SizeUnit.Pixel) {\n this.iconSize = sizeAndUnit.physicalSize;\n }\n }\n catch (e) {\n // Swallow this, keep default icon size\n }\n }\n }\n\n toJSON() {\n return {\n maxActions: this.maxActions,\n spacing: Enums.Spacing[this.spacing],\n buttonSpacing: this.buttonSpacing,\n showCard: this.showCard,\n preExpandSingleShowCardAction: this.preExpandSingleShowCardAction,\n actionsOrientation: Enums.Orientation[this.actionsOrientation],\n actionAlignment: Enums.ActionAlignment[this.actionAlignment]\n }\n }\n}\n\nexport class ColorSetDefinition {\n private parseSingleColor(obj: any, propertyName: string) {\n if (obj) {\n ((this)[propertyName] as TextColorDefinition).parse(obj[propertyName]);\n }\n }\n\n default: TextColorDefinition = new TextColorDefinition();\n dark: TextColorDefinition = new TextColorDefinition();\n light: TextColorDefinition = new TextColorDefinition();\n accent: TextColorDefinition = new TextColorDefinition();\n good: TextColorDefinition = new TextColorDefinition();\n warning: TextColorDefinition = new TextColorDefinition();\n attention: TextColorDefinition = new TextColorDefinition();\n\n constructor(obj?: any) {\n this.parse(obj);\n }\n\n parse(obj: any) {\n if (obj) {\n this.parseSingleColor(obj, \"default\");\n this.parseSingleColor(obj, \"dark\");\n this.parseSingleColor(obj, \"light\");\n this.parseSingleColor(obj, \"accent\");\n this.parseSingleColor(obj, \"good\");\n this.parseSingleColor(obj, \"warning\");\n this.parseSingleColor(obj, \"attention\");\n }\n }\n}\n\nexport class ContainerStyleDefinition {\n backgroundColor?: string;\n\n readonly foregroundColors: ColorSetDefinition = new ColorSetDefinition(\n {\n \"default\": { default: \"#333333\", subtle: \"#EE333333\" },\n \"dark\": { default: \"#000000\", subtle: \"#66000000\" },\n \"light\": { default: \"#FFFFFF\", subtle: \"#33000000\" },\n \"accent\": { default: \"#2E89FC\", subtle: \"#882E89FC\" },\n \"good\": { default: \"#028A02\", subtle: \"#DD027502\" },\n \"warning\": { default: \"#E69500\", subtle: \"#DDE69500\" },\n \"attention\": { default: \"#CC3300\", subtle: \"#DDCC3300\" }\n }\n );\n\n highlightBackgroundColor?: string;\n highlightForegroundColor?: string;\n borderColor?: string;\n\n parse(obj: any) {\n if (obj) {\n this.backgroundColor = obj[\"backgroundColor\"];\n\n this.foregroundColors.parse(obj[\"foregroundColors\"]);\n\n this.highlightBackgroundColor = obj[\"highlightBackgroundColor\"];\n this.highlightForegroundColor = obj[\"highlightForegroundColor\"];\n\n this.borderColor = obj[\"borderColor\"];\n }\n }\n\n constructor(obj?: any) {\n this.parse(obj);\n }\n\n get isBuiltIn(): boolean {\n return false;\n }\n}\n\nclass BuiltInContainerStyleDefinition extends ContainerStyleDefinition {\n get isBuiltIn(): boolean {\n return true;\n }\n}\n\nexport interface ILineHeightDefinitions {\n small: number;\n medium: number;\n default: number;\n large: number;\n extraLarge: number;\n}\n\nexport class ContainerStyleSet {\n private _allStyles: { [key: string]: ContainerStyleDefinition } = {};\n\n constructor(obj?: any) {\n this._allStyles[Enums.ContainerStyle.Default] = new BuiltInContainerStyleDefinition();\n this._allStyles[Enums.ContainerStyle.Emphasis] = new BuiltInContainerStyleDefinition();\n this._allStyles[Enums.ContainerStyle.Accent] = new BuiltInContainerStyleDefinition();\n this._allStyles[Enums.ContainerStyle.Good] = new BuiltInContainerStyleDefinition();\n this._allStyles[Enums.ContainerStyle.Attention] = new BuiltInContainerStyleDefinition();\n this._allStyles[Enums.ContainerStyle.Warning] = new BuiltInContainerStyleDefinition();\n\n if (obj) {\n this._allStyles[Enums.ContainerStyle.Default].parse(obj[Enums.ContainerStyle.Default]);\n this._allStyles[Enums.ContainerStyle.Emphasis].parse(obj[Enums.ContainerStyle.Emphasis]);\n this._allStyles[Enums.ContainerStyle.Accent].parse(obj[Enums.ContainerStyle.Accent]);\n this._allStyles[Enums.ContainerStyle.Good].parse(obj[Enums.ContainerStyle.Good]);\n this._allStyles[Enums.ContainerStyle.Attention].parse(obj[Enums.ContainerStyle.Attention]);\n this._allStyles[Enums.ContainerStyle.Warning].parse(obj[Enums.ContainerStyle.Warning]);\n\n const customStyleArray = obj[\"customStyles\"];\n\n if (customStyleArray && Array.isArray(customStyleArray)) {\n for (let customStyle of customStyleArray) {\n if (customStyle) {\n let styleName = customStyle[\"name\"];\n\n if (styleName && typeof styleName === \"string\") {\n if (this._allStyles.hasOwnProperty(styleName)) {\n this._allStyles[styleName].parse(customStyle[\"style\"]);\n }\n else {\n this._allStyles[styleName] = new ContainerStyleDefinition(customStyle[\"style\"]);\n }\n }\n }\n }\n }\n }\n }\n\n toJSON() {\n let customStyleArray: any[] = [];\n\n Object.keys(this._allStyles).forEach(\n (key) => {\n if (!this._allStyles[key].isBuiltIn) {\n customStyleArray.push({\n name: key,\n style: this._allStyles[key]\n });\n }\n });\n\n let result: any = {\n default: this.default,\n emphasis: this.emphasis\n }\n\n if (customStyleArray.length > 0) {\n result.customStyles = customStyleArray;\n }\n\n return result;\n }\n\n getStyleByName(name: string | undefined, defaultValue?: ContainerStyleDefinition): ContainerStyleDefinition {\n if (name && this._allStyles.hasOwnProperty(name)) {\n return this._allStyles[name];\n }\n else {\n return defaultValue ? defaultValue : this._allStyles[Enums.ContainerStyle.Default];\n }\n }\n\n get default(): ContainerStyleDefinition {\n return this._allStyles[Enums.ContainerStyle.Default];\n }\n\n get emphasis(): ContainerStyleDefinition {\n return this._allStyles[Enums.ContainerStyle.Emphasis];\n }\n}\n\nexport interface IFontSizeDefinitions {\n small: number;\n default: number;\n medium: number;\n large: number;\n extraLarge: number;\n}\n\nexport interface IFontWeightDefinitions {\n lighter: number;\n default: number;\n bolder: number;\n}\n\nexport class FontTypeDefinition {\n static readonly monospace = new FontTypeDefinition(\"'Courier New', Courier, monospace\");\n\n fontFamily?: string = \"Segoe UI,Segoe,Segoe WP,Helvetica Neue,Helvetica,sans-serif\";\n\n fontSizes: IFontSizeDefinitions = {\n small: 12,\n default: 14,\n medium: 17,\n large: 21,\n extraLarge: 26\n };\n\n fontWeights: IFontWeightDefinitions = {\n lighter: 200,\n default: 400,\n bolder: 600\n };\n\n constructor(fontFamily?: string) {\n if (fontFamily) {\n this.fontFamily = fontFamily;\n }\n }\n\n parse(obj?: any) {\n this.fontFamily = obj[\"fontFamily\"] || this.fontFamily;\n this.fontSizes = {\n small: obj.fontSizes && obj.fontSizes[\"small\"] || this.fontSizes.small,\n default: obj.fontSizes && obj.fontSizes[\"default\"] || this.fontSizes.default,\n medium: obj.fontSizes && obj.fontSizes[\"medium\"] || this.fontSizes.medium,\n large: obj.fontSizes && obj.fontSizes[\"large\"] || this.fontSizes.large,\n extraLarge: obj.fontSizes && obj.fontSizes[\"extraLarge\"] || this.fontSizes.extraLarge\n };\n this.fontWeights = {\n lighter: obj.fontWeights && obj.fontWeights[\"lighter\"] || this.fontWeights.lighter,\n default: obj.fontWeights && obj.fontWeights[\"default\"] || this.fontWeights.default,\n bolder: obj.fontWeights && obj.fontWeights[\"bolder\"] || this.fontWeights.bolder\n };\n }\n}\n\nexport class FontTypeSet {\n default: FontTypeDefinition;\n monospace: FontTypeDefinition;\n\n constructor(obj?: any) {\n this.default = new FontTypeDefinition();\n this.monospace = new FontTypeDefinition(\"'Courier New', Courier, monospace\");\n\n if (obj) {\n this.default.parse(obj[\"default\"]);\n this.monospace.parse(obj[\"monospace\"]);\n }\n }\n\n getStyleDefinition(style: Enums.FontType | undefined): FontTypeDefinition {\n switch (style) {\n case Enums.FontType.Monospace:\n return this.monospace;\n case Enums.FontType.Default:\n default:\n return this.default;\n }\n }\n}\n\nexport class HostConfig {\n readonly hostCapabilities = new HostCapabilities();\n\n private _legacyFontType: FontTypeDefinition;\n\n choiceSetInputValueSeparator: string = \",\";\n supportsInteractivity: boolean = true;\n lineHeights?: ILineHeightDefinitions;\n fontTypes?: FontTypeSet;\n\n readonly spacing = {\n small: 3,\n default: 8,\n medium: 20,\n large: 30,\n extraLarge: 40,\n padding: 15\n };\n\n readonly separator = {\n lineThickness: 1,\n lineColor: \"#EEEEEE\"\n };\n\n readonly imageSizes = {\n small: 40,\n medium: 80,\n large: 160\n };\n\n readonly containerStyles: ContainerStyleSet = new ContainerStyleSet();\n readonly inputs: InputConfig = new InputConfig();\n readonly actions: ActionsConfig = new ActionsConfig();\n readonly adaptiveCard: AdaptiveCardConfig = new AdaptiveCardConfig();\n readonly imageSet: ImageSetConfig = new ImageSetConfig();\n readonly media: MediaConfig = new MediaConfig();\n readonly factSet: FactSetConfig = new FactSetConfig();\n readonly table: TableConfig = new TableConfig();\n readonly textStyles: TextStyleSet = new TextStyleSet();\n readonly textBlock: TextBlockConfig = new TextBlockConfig();\n\n cssClassNamePrefix?: string;\n alwaysAllowBleed: boolean = false;\n\n constructor(obj?: any) {\n if (obj) {\n if (typeof obj === \"string\" || obj instanceof String) {\n obj = JSON.parse(obj as string);\n }\n\n this.choiceSetInputValueSeparator = (obj && typeof obj[\"choiceSetInputValueSeparator\"] === \"string\") ? obj[\"choiceSetInputValueSeparator\"] : this.choiceSetInputValueSeparator;\n this.supportsInteractivity = (obj && typeof obj[\"supportsInteractivity\"] === \"boolean\") ? obj[\"supportsInteractivity\"] : this.supportsInteractivity;\n\n this._legacyFontType = new FontTypeDefinition();\n this._legacyFontType.parse(obj);\n\n if (obj.fontTypes) {\n this.fontTypes = new FontTypeSet(obj.fontTypes);\n }\n\n if (obj.lineHeights) {\n this.lineHeights = {\n small: obj.lineHeights[\"small\"],\n default: obj.lineHeights[\"default\"],\n medium: obj.lineHeights[\"medium\"],\n large: obj.lineHeights[\"large\"],\n extraLarge: obj.lineHeights[\"extraLarge\"]\n };\n };\n\n this.imageSizes = {\n small: obj.imageSizes && obj.imageSizes[\"small\"] || this.imageSizes.small,\n medium: obj.imageSizes && obj.imageSizes[\"medium\"] || this.imageSizes.medium,\n large: obj.imageSizes && obj.imageSizes[\"large\"] || this.imageSizes.large,\n };\n\n this.containerStyles = new ContainerStyleSet(obj[\"containerStyles\"]);\n this.spacing = {\n small: obj.spacing && obj.spacing[\"small\"] || this.spacing.small,\n default: obj.spacing && obj.spacing[\"default\"] || this.spacing.default,\n medium: obj.spacing && obj.spacing[\"medium\"] || this.spacing.medium,\n large: obj.spacing && obj.spacing[\"large\"] || this.spacing.large,\n extraLarge: obj.spacing && obj.spacing[\"extraLarge\"] || this.spacing.extraLarge,\n padding: obj.spacing && obj.spacing[\"padding\"] || this.spacing.padding\n };\n\n this.separator = {\n lineThickness: obj.separator && obj.separator[\"lineThickness\"] || this.separator.lineThickness,\n lineColor: obj.separator && obj.separator[\"lineColor\"] || this.separator.lineColor\n }\n\n this.inputs = new InputConfig(obj.inputs || this.inputs);\n this.actions = new ActionsConfig(obj.actions || this.actions);\n this.adaptiveCard = new AdaptiveCardConfig(obj.adaptiveCard || this.adaptiveCard);\n this.imageSet = new ImageSetConfig(obj[\"imageSet\"]);\n this.factSet = new FactSetConfig(obj[\"factSet\"]);\n this.textStyles = new TextStyleSet(obj[\"textStyles\"]);\n this.textBlock = new TextBlockConfig(obj[\"textBlock\"]);\n }\n }\n\n getFontTypeDefinition(style?: Enums.FontType): FontTypeDefinition {\n if (this.fontTypes) {\n return this.fontTypes.getStyleDefinition(style);\n }\n else {\n return style == Enums.FontType.Monospace ? FontTypeDefinition.monospace : this._legacyFontType;\n }\n }\n\n getEffectiveSpacing(spacing: Enums.Spacing): number {\n switch (spacing) {\n case Enums.Spacing.Small:\n return this.spacing.small;\n case Enums.Spacing.Default:\n return this.spacing.default;\n case Enums.Spacing.Medium:\n return this.spacing.medium;\n case Enums.Spacing.Large:\n return this.spacing.large;\n case Enums.Spacing.ExtraLarge:\n return this.spacing.extraLarge;\n case Enums.Spacing.Padding:\n return this.spacing.padding;\n default:\n return 0;\n }\n }\n\n paddingDefinitionToSpacingDefinition(paddingDefinition: Shared.PaddingDefinition): Shared.SpacingDefinition {\n return new Shared.SpacingDefinition(\n this.getEffectiveSpacing(paddingDefinition.top),\n this.getEffectiveSpacing(paddingDefinition.right),\n this.getEffectiveSpacing(paddingDefinition.bottom),\n this.getEffectiveSpacing(paddingDefinition.left));\n }\n\n makeCssClassNames(...classNames: string[]): string[] {\n let result: string[] = [];\n\n for (let className of classNames) {\n result.push((this.cssClassNamePrefix ? this.cssClassNamePrefix + \"-\" : \"\") + className);\n }\n\n return result;\n }\n\n makeCssClassName(...classNames: string[]): string {\n let result = this.makeCssClassNames(...classNames).join(\" \");\n\n return result ? result : \"\";\n }\n\n get fontFamily(): string | undefined {\n return this._legacyFontType.fontFamily;\n }\n\n set fontFamily(value: string | undefined) {\n this._legacyFontType.fontFamily = value;\n }\n\n get fontSizes(): IFontSizeDefinitions {\n return this._legacyFontType.fontSizes;\n }\n\n get fontWeights(): IFontWeightDefinitions {\n return this._legacyFontType.fontWeights;\n }\n}\n\nexport const defaultHostConfig: HostConfig = new HostConfig(\n {\n supportsInteractivity: true,\n spacing: {\n small: 10,\n default: 20,\n medium: 30,\n large: 40,\n extraLarge: 50,\n padding: 20\n },\n separator: {\n lineThickness: 1,\n lineColor: \"#EEEEEE\"\n },\n fontTypes: {\n default: {\n fontFamily: \"'Segoe UI', Tahoma, Geneva, Verdana, sans-serif\",\n fontSizes: {\n small: 12,\n default: 14,\n medium: 17,\n large: 21,\n extraLarge: 26\n },\n fontWeights: {\n lighter: 200,\n default: 400,\n bolder: 600\n }\n },\n monospace: {\n fontFamily: \"'Courier New', Courier, monospace\",\n fontSizes: {\n small: 12,\n default: 14,\n medium: 17,\n large: 21,\n extraLarge: 26\n },\n fontWeights: {\n lighter: 200,\n default: 400,\n bolder: 600\n }\n }\n },\n imageSizes: {\n small: 40,\n medium: 80,\n large: 160\n },\n containerStyles: {\n default: {\n backgroundColor: \"#FFFFFF\",\n foregroundColors: {\n default: {\n default: \"#333333\",\n subtle: \"#EE333333\"\n },\n dark: {\n default: \"#000000\",\n subtle: \"#66000000\"\n },\n light: {\n default: \"#FFFFFF\",\n subtle: \"#33000000\"\n },\n accent: {\n default: \"#2E89FC\",\n subtle: \"#882E89FC\"\n },\n attention: {\n default: \"#cc3300\",\n subtle: \"#DDcc3300\"\n },\n good: {\n default: \"#028A02\",\n subtle: \"#DD027502\"\n },\n warning: {\n default: \"#e69500\",\n subtle: \"#DDe69500\"\n }\n }\n },\n emphasis: {\n backgroundColor: \"#08000000\",\n foregroundColors: {\n default: {\n default: \"#333333\",\n subtle: \"#EE333333\"\n },\n dark: {\n default: \"#000000\",\n subtle: \"#66000000\"\n },\n light: {\n default: \"#FFFFFF\",\n subtle: \"#33000000\"\n },\n accent: {\n default: \"#2E89FC\",\n subtle: \"#882E89FC\"\n },\n attention: {\n default: \"#cc3300\",\n subtle: \"#DDcc3300\"\n },\n good: {\n default: \"#028A02\",\n subtle: \"#DD027502\"\n },\n warning: {\n default: \"#e69500\",\n subtle: \"#DDe69500\"\n }\n }\n },\n accent: {\n backgroundColor: \"#C7DEF9\",\n foregroundColors: {\n default: {\n default: \"#333333\",\n subtle: \"#EE333333\"\n },\n dark: {\n default: \"#000000\",\n subtle: \"#66000000\"\n },\n light: {\n default: \"#FFFFFF\",\n subtle: \"#33000000\"\n },\n accent: {\n default: \"#2E89FC\",\n subtle: \"#882E89FC\"\n },\n attention: {\n default: \"#cc3300\",\n subtle: \"#DDcc3300\"\n },\n good: {\n default: \"#028A02\",\n subtle: \"#DD027502\"\n },\n warning: {\n default: \"#e69500\",\n subtle: \"#DDe69500\"\n }\n }\n },\n good: {\n backgroundColor: \"#CCFFCC\",\n foregroundColors: {\n default: {\n default: \"#333333\",\n subtle: \"#EE333333\"\n },\n dark: {\n default: \"#000000\",\n subtle: \"#66000000\"\n },\n light: {\n default: \"#FFFFFF\",\n subtle: \"#33000000\"\n },\n accent: {\n default: \"#2E89FC\",\n subtle: \"#882E89FC\"\n },\n attention: {\n default: \"#cc3300\",\n subtle: \"#DDcc3300\"\n },\n good: {\n default: \"#028A02\",\n subtle: \"#DD027502\"\n },\n warning: {\n default: \"#e69500\",\n subtle: \"#DDe69500\"\n }\n }\n },\n attention: {\n backgroundColor: \"#FFC5B2\",\n foregroundColors: {\n default: {\n default: \"#333333\",\n subtle: \"#EE333333\"\n },\n dark: {\n default: \"#000000\",\n subtle: \"#66000000\"\n },\n light: {\n default: \"#FFFFFF\",\n subtle: \"#33000000\"\n },\n accent: {\n default: \"#2E89FC\",\n subtle: \"#882E89FC\"\n },\n attention: {\n default: \"#cc3300\",\n subtle: \"#DDcc3300\"\n },\n good: {\n default: \"#028A02\",\n subtle: \"#DD027502\"\n },\n warning: {\n default: \"#e69500\",\n subtle: \"#DDe69500\"\n }\n }\n },\n warning: {\n backgroundColor: \"#FFE2B2\",\n foregroundColors: {\n default: {\n default: \"#333333\",\n subtle: \"#EE333333\"\n },\n dark: {\n default: \"#000000\",\n subtle: \"#66000000\"\n },\n light: {\n default: \"#FFFFFF\",\n subtle: \"#33000000\"\n },\n accent: {\n default: \"#2E89FC\",\n subtle: \"#882E89FC\"\n },\n attention: {\n default: \"#cc3300\",\n subtle: \"#DDcc3300\"\n },\n good: {\n default: \"#028A02\",\n subtle: \"#DD027502\"\n },\n warning: {\n default: \"#e69500\",\n subtle: \"#DDe69500\"\n }\n }\n }\n },\n inputs: {\n label: {\n requiredInputs: {\n color: Enums.TextColor.Accent,\n size: Enums.TextSize.ExtraLarge,\n weight: Enums.TextWeight.Bolder,\n isSubtle: true,\n suffix: \" (required)\",\n suffixColor: Enums.TextColor.Good\n },\n optionalInputs: {\n color: Enums.TextColor.Warning,\n size: Enums.TextSize.Medium,\n weight: Enums.TextWeight.Lighter,\n isSubtle: false\n }\n },\n errorMessage: {\n color: Enums.TextColor.Accent,\n size: Enums.TextSize.Small,\n weight: Enums.TextWeight.Bolder\n }\n },\n actions: {\n maxActions: 5,\n spacing: Enums.Spacing.Default,\n buttonSpacing: 10,\n showCard: {\n actionMode: Enums.ShowCardActionMode.Inline,\n inlineTopMargin: 16\n },\n actionsOrientation: Enums.Orientation.Horizontal,\n actionAlignment: Enums.ActionAlignment.Left\n },\n adaptiveCard: {\n allowCustomStyle: false\n },\n imageSet: {\n imageSize: Enums.Size.Medium,\n maxImageHeight: 100\n },\n factSet: {\n title: {\n color: Enums.TextColor.Default,\n size: Enums.TextSize.Default,\n isSubtle: false,\n weight: Enums.TextWeight.Bolder,\n wrap: true,\n maxWidth: 150,\n },\n value: {\n color: Enums.TextColor.Default,\n size: Enums.TextSize.Default,\n isSubtle: false,\n weight: Enums.TextWeight.Default,\n wrap: true,\n },\n spacing: 10\n }\n });\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport { CardElement, Action } from \"./card-elements\";\nimport { SerializableObject, Version, Versions } from \"./serialization\";\n\nexport interface ITypeRegistration {\n typeName: string,\n objectType: { new(): T },\n schemaVersion: Version\n}\n\nexport class CardObjectRegistry {\n private _items: { [typeName: string]: ITypeRegistration } = {};\n\n findByName(typeName: string): ITypeRegistration | undefined {\n return this._items.hasOwnProperty(typeName) ? this._items[typeName] : undefined;\n }\n\n clear() {\n this._items = {};\n }\n\n copyTo(target: CardObjectRegistry) {\n let keys = Object.keys(this._items);\n\n for (let key of keys) {\n let typeRegistration = this._items[key];\n\n target.register(typeRegistration.typeName, typeRegistration.objectType, typeRegistration.schemaVersion);\n }\n }\n\n register(typeName: string, objectType: { new(): T }, schemaVersion: Version = Versions.v1_0) {\n let registrationInfo = this.findByName(typeName);\n\n if (registrationInfo !== undefined) {\n registrationInfo.objectType = objectType;\n }\n else {\n registrationInfo = {\n typeName: typeName,\n objectType: objectType,\n schemaVersion: schemaVersion\n }\n }\n\n this._items[typeName] = registrationInfo;\n }\n\n unregister(typeName: string) {\n delete this._items[typeName];\n }\n\n createInstance(typeName: string, targetVersion: Version): T | undefined {\n let registrationInfo = this.findByName(typeName);\n\n return (registrationInfo && registrationInfo.schemaVersion.compareTo(targetVersion) <= 0) ? new registrationInfo.objectType() : undefined;\n }\n\n getItemCount(): number {\n return Object.keys(this._items).length;\n }\n\n getItemAt(index: number): ITypeRegistration {\n return Object.keys(this._items).map(e => this._items[e])[index];\n }\n}\n\nexport class GlobalRegistry {\n private static _elements?: CardObjectRegistry;\n private static _actions?: CardObjectRegistry;\n\n static populateWithDefaultElements(registry: CardObjectRegistry) {\n registry.clear();\n\n GlobalRegistry.defaultElements.copyTo(registry);\n }\n\n static populateWithDefaultActions(registry: CardObjectRegistry) {\n registry.clear();\n\n GlobalRegistry.defaultActions.copyTo(registry);\n }\n\n static readonly defaultElements = new CardObjectRegistry();\n static readonly defaultActions = new CardObjectRegistry();\n\n static get elements(): CardObjectRegistry {\n if (!GlobalRegistry._elements) {\n GlobalRegistry._elements = new CardObjectRegistry();\n GlobalRegistry.populateWithDefaultElements(GlobalRegistry._elements);\n }\n\n return GlobalRegistry._elements;\n }\n\n static get actions(): CardObjectRegistry {\n if (!GlobalRegistry._actions) {\n GlobalRegistry._actions = new CardObjectRegistry();\n GlobalRegistry.populateWithDefaultActions(GlobalRegistry._actions);\n }\n\n return GlobalRegistry._actions;\n }\n\n static reset() {\n GlobalRegistry._elements = undefined;\n GlobalRegistry._actions = undefined;\n }\n}","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport { GlobalSettings, SizeAndUnit } from \"./shared\";\nimport * as Utils from \"./utils\";\nimport * as Enums from \"./enums\";\nimport { Strings } from \"./strings\";\n\nexport interface IValidationEvent {\n source?: SerializableObject,\n phase: Enums.ValidationPhase,\n event: Enums.ValidationEvent,\n message: string;\n}\n\nexport class Version {\n private _versionString: string;\n private _major: number;\n private _minor: number;\n private _isValid: boolean = true;\n private _label?: string;\n\n constructor(major: number = 1, minor: number = 1, label?: string) {\n this._major = major;\n this._minor = minor;\n this._label = label;\n }\n\n static parse(versionString: string, context: BaseSerializationContext): Version | undefined {\n if (!versionString) {\n return undefined;\n }\n\n let result = new Version();\n result._versionString = versionString;\n\n let regEx = /(\\d+).(\\d+)/gi;\n let matches = regEx.exec(versionString);\n\n if (matches != null && matches.length == 3) {\n result._major = parseInt(matches[1]);\n result._minor = parseInt(matches[2]);\n }\n else {\n result._isValid = false;\n }\n\n if (!result._isValid) {\n context.logParseEvent(\n undefined,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidVersionString(result._versionString));\n }\n\n return result;\n }\n\n toString(): string {\n return !this._isValid ? this._versionString : this._major + \".\" + this._minor;\n }\n\n toJSON(): any {\n return this.toString();\n }\n\n compareTo(otherVersion: Version): number {\n if (!this.isValid || !otherVersion.isValid) {\n throw new Error(\"Cannot compare invalid version.\");\n }\n\n if (this.major > otherVersion.major) {\n return 1;\n }\n else if (this.major < otherVersion.major) {\n return -1;\n }\n else if (this.minor > otherVersion.minor) {\n return 1;\n }\n else if (this.minor < otherVersion.minor) {\n return -1;\n }\n\n return 0;\n }\n\n get label(): string {\n return this._label ? this._label : this.toString();\n }\n\n get major(): number {\n return this._major;\n }\n\n get minor(): number {\n return this._minor;\n }\n\n get isValid(): boolean {\n return this._isValid;\n }\n}\n\nexport type TargetVersion = Version | \"*\";\n\nexport class Versions {\n static readonly v1_0 = new Version(1, 0);\n static readonly v1_1 = new Version(1, 1);\n static readonly v1_2 = new Version(1, 2);\n static readonly v1_3 = new Version(1, 3);\n static readonly v1_4 = new Version(1, 4);\n static readonly v1_5 = new Version(1, 5);\n static readonly latest = Versions.v1_5;\n}\n\nexport function isVersionLessOrEqual(version: TargetVersion, targetVersion: TargetVersion): boolean {\n if (version instanceof Version) {\n if (targetVersion instanceof Version) {\n return targetVersion.compareTo(version) >= 0;\n }\n else {\n // Target version is *\n return true;\n }\n }\n else {\n // Version is *\n return true;\n }\n}\n\nexport abstract class BaseSerializationContext {\n private _validationEvents: IValidationEvent[] = [];\n\n toJSONOriginalParam: any;\n\n constructor(public targetVersion: Version = Versions.latest) {}\n\n serializeValue(target: { [key: string]: any }, propertyName: string, propertyValue: any, defaultValue: any = undefined, forceDeleteIfNullOrDefault: boolean = false) {\n if (propertyValue === null || propertyValue === undefined || propertyValue === defaultValue) {\n if (!GlobalSettings.enableFullJsonRoundTrip || forceDeleteIfNullOrDefault) {\n delete target[propertyName];\n }\n }\n else if (propertyValue === defaultValue) {\n delete target[propertyName];\n }\n else {\n target[propertyName] = propertyValue;\n }\n }\n\n serializeString(target: { [key: string]: any }, propertyName: string, propertyValue?: string, defaultValue?: string) {\n if (propertyValue === null || propertyValue === undefined || propertyValue === defaultValue) {\n delete target[propertyName];\n }\n else {\n target[propertyName] = propertyValue;\n }\n }\n\n serializeBool(target: { [key: string]: any }, propertyName: string, propertyValue?: boolean, defaultValue?: boolean) {\n if (propertyValue === null || propertyValue === undefined || propertyValue === defaultValue) {\n delete target[propertyName];\n }\n else {\n target[propertyName] = propertyValue;\n }\n }\n\n serializeNumber(target: { [key: string]: any }, propertyName: string, propertyValue?: number, defaultValue?: number) {\n if (propertyValue === null || propertyValue === undefined || propertyValue === defaultValue || isNaN(propertyValue)) {\n delete target[propertyName];\n }\n else {\n target[propertyName] = propertyValue;\n }\n }\n\n serializeEnum(\n enumType: { [s: number]: string },\n target: { [key: string]: any },\n propertyName: string,\n propertyValue: number | undefined,\n defaultValue: number | undefined = undefined) {\n if (propertyValue === null || propertyValue === undefined || propertyValue === defaultValue) {\n delete target[propertyName];\n }\n else {\n target[propertyName] = enumType[propertyValue];\n }\n }\n\n serializeArray(target: { [key: string]: any }, propertyName: string, propertyValue: any[] | undefined) {\n let items = [];\n\n if (propertyValue) {\n for (let item of propertyValue) {\n let serializedItem: any = undefined;\n\n if (item instanceof SerializableObject) {\n serializedItem = item.toJSON(this);\n }\n else if (item.toJSON) {\n serializedItem = item.toJSON();\n }\n else {\n serializedItem = item;\n }\n\n if (serializedItem !== undefined) {\n items.push(serializedItem);\n }\n }\n }\n\n if (items.length == 0) {\n if (target.hasOwnProperty(propertyName) && Array.isArray(target[propertyName])) {\n delete target[propertyName];\n }\n }\n else {\n this.serializeValue(target, propertyName, items);\n }\n }\n\n clearEvents() {\n this._validationEvents = [];\n }\n\n logEvent(\n source: SerializableObject | undefined,\n phase: Enums.ValidationPhase,\n event: Enums.ValidationEvent,\n message: string) {\n this._validationEvents.push(\n {\n source: source,\n phase: phase,\n event: event,\n message: message\n }\n )\n }\n\n logParseEvent(source: SerializableObject | undefined, event: Enums.ValidationEvent, message: string) {\n this.logEvent(source, Enums.ValidationPhase.Parse, event, message);\n }\n\n getEventAt(index: number): IValidationEvent {\n return this._validationEvents[index];\n }\n\n get eventCount(): number {\n return this._validationEvents.length;\n }\n}\n\nclass SimpleSerializationContext extends BaseSerializationContext {}\n\nexport class PropertyDefinition {\n private static _sequentialNumber: number = 0;\n\n getInternalName(): string {\n return this.name;\n }\n\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): any {\n return source[this.name];\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: any, context: BaseSerializationContext): void {\n context.serializeValue(target, this.name, value, this.defaultValue);\n }\n\n readonly sequentialNumber: number;\n\n isSerializationEnabled: boolean = true;\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly defaultValue?: any,\n readonly onGetInitialValue?: (sender: SerializableObject) => any) {\n this.sequentialNumber = PropertyDefinition._sequentialNumber;\n\n PropertyDefinition._sequentialNumber++;\n }\n}\n\nexport class StringProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): string | undefined {\n let parsedValue = Utils.parseString(source[this.name], this.defaultValue);\n let isUndefined = parsedValue === undefined || (parsedValue === \"\" && this.treatEmptyAsUndefined);\n\n if (!isUndefined && this.regEx !== undefined) {\n let matches = this.regEx.exec(parsedValue);\n\n if (!matches) {\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidPropertyValue(parsedValue, this.name));\n\n return undefined;\n }\n }\n\n return parsedValue;\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: string | undefined, context: BaseSerializationContext) {\n context.serializeString(\n target,\n this.name,\n value === \"\" && this.treatEmptyAsUndefined ? undefined : value,\n this.defaultValue);\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly treatEmptyAsUndefined: boolean = true,\n readonly regEx?: RegExp,\n readonly defaultValue?: string,\n readonly onGetInitialValue?: (sender: SerializableObject) => string) {\n super(targetVersion, name, defaultValue, onGetInitialValue);\n }\n}\n\nexport class BoolProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): boolean | undefined {\n return Utils.parseBool(source[this.name], this.defaultValue);\n }\n\n toJSON(sender: SerializableObject, target: object, value: boolean | undefined, context: BaseSerializationContext) {\n context.serializeBool(\n target,\n this.name,\n value,\n this.defaultValue);\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly defaultValue?: boolean,\n readonly onGetInitialValue?: (sender: SerializableObject) => any) {\n super(targetVersion, name, defaultValue, onGetInitialValue);\n }\n}\n\nexport class NumProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): number | undefined {\n return Utils.parseNumber(source[this.name], this.defaultValue);\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: number | undefined, context: BaseSerializationContext) {\n context.serializeNumber(\n target,\n this.name,\n value,\n this.defaultValue);\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly defaultValue?: number,\n readonly onGetInitialValue?: (sender: SerializableObject) => any) {\n super(targetVersion, name, defaultValue, onGetInitialValue);\n }\n}\n\nexport class PixelSizeProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): number | undefined {\n let result: number | undefined = undefined;\n let value = source[this.name];\n\n if (typeof value === \"string\") {\n let isValid = false;\n\n try {\n let size = SizeAndUnit.parse(value, true);\n\n if (size.unit == Enums.SizeUnit.Pixel) {\n result = size.physicalSize;\n\n isValid = true;\n }\n }\n catch {\n // Do nothing. A parse error is emitted below\n }\n\n if (!isValid) {\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidPropertyValue(source[this.name], \"minHeight\"));\n }\n }\n\n return result;\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: number | undefined, context: BaseSerializationContext) {\n context.serializeValue(\n target,\n this.name,\n typeof value === \"number\" && !isNaN(value) ? value + \"px\" : undefined);\n }\n}\n\nexport interface IVersionedValue {\n value: TValue;\n targetVersion?: Version;\n}\n\nexport class StringArrayProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): string[] | undefined {\n let sourceValue = source[this.name];\n\n if (sourceValue === undefined || !Array.isArray(sourceValue)) {\n return this.defaultValue;\n }\n\n let result: string[] = [];\n\n for (let value of sourceValue) {\n if (typeof value === \"string\") {\n result.push(value);\n }\n else {\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n `Invalid array value \"${value}\" of type \"${typeof value}\" ignored for \"${this.name}\".`);\n }\n }\n\n return result;\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: string[] | undefined, context: BaseSerializationContext) {\n context.serializeArray(target, this.name, value);\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly defaultValue?: string[],\n readonly onGetInitialValue?: (sender: SerializableObject) => string[] | undefined) {\n super(targetVersion, name, defaultValue, onGetInitialValue);\n }\n}\n\nexport class ValueSetProperty extends PropertyDefinition {\n isValidValue(value: string, context: BaseSerializationContext): boolean {\n for (let versionedValue of this.values) {\n if (value.toLowerCase() === versionedValue.value.toLowerCase()) {\n let targetVersion = versionedValue.targetVersion ? versionedValue.targetVersion : this.targetVersion;\n\n return targetVersion.compareTo(context.targetVersion) <= 0;\n }\n }\n\n return false;\n }\n\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): string | undefined {\n let sourceValue = source[this.name];\n\n if (sourceValue === undefined) {\n return this.defaultValue;\n }\n\n if (typeof sourceValue === \"string\") {\n for (let versionedValue of this.values) {\n if (sourceValue.toLowerCase() === versionedValue.value.toLowerCase()) {\n let targetVersion = versionedValue.targetVersion ? versionedValue.targetVersion : this.targetVersion;\n\n if (targetVersion.compareTo(context.targetVersion) <= 0) {\n return versionedValue.value;\n }\n else {\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.propertyValueNotSupported(\n sourceValue,\n this.name,\n targetVersion.toString(),\n context.targetVersion.toString()));\n\n return this.defaultValue;\n }\n }\n }\n }\n\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidPropertyValue(sourceValue, this.name));\n\n return this.defaultValue;\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: string | undefined, context: BaseSerializationContext) {\n let invalidValue = false;\n\n if (value !== undefined) {\n invalidValue = true;\n\n for (let versionedValue of this.values) {\n if (versionedValue.value === value) {\n let targetVersion = versionedValue.targetVersion ? versionedValue.targetVersion : this.targetVersion;\n\n if (targetVersion.compareTo(context.targetVersion) <= 0) {\n invalidValue = false;\n\n break;\n }\n else {\n context.logEvent(\n sender,\n Enums.ValidationPhase.ToJSON,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.propertyValueNotSupported(\n value,\n this.name,\n targetVersion.toString(),\n context.targetVersion.toString()));\n }\n }\n }\n }\n\n if (!invalidValue) {\n context.serializeValue(\n target,\n this.name,\n value,\n this.defaultValue,\n true);\n }\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly values: IVersionedValue[],\n readonly defaultValue?: string,\n readonly onGetInitialValue?: (sender: SerializableObject) => string) {\n super(targetVersion, name, defaultValue, onGetInitialValue);\n }\n}\n\nexport class EnumProperty extends PropertyDefinition {\n private _values: IVersionedValue[] = [];\n\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): number | undefined {\n let sourceValue = source[this.name];\n\n if (typeof sourceValue !== \"string\") {\n return this.defaultValue;\n }\n\n let enumValue = Utils.getEnumValueByName(this.enumType, sourceValue);\n\n if (enumValue !== undefined) {\n for (let versionedValue of this.values) {\n if (versionedValue.value === enumValue) {\n let targetVersion = versionedValue.targetVersion ? versionedValue.targetVersion : this.targetVersion;\n\n if (targetVersion.compareTo(context.targetVersion) <= 0) {\n return enumValue;\n }\n else {\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.propertyValueNotSupported(\n sourceValue,\n this.name,\n targetVersion.toString(),\n context.targetVersion.toString()));\n\n return this.defaultValue;\n }\n }\n }\n }\n\n context.logParseEvent(\n sender,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidPropertyValue(sourceValue, this.name));\n\n return this.defaultValue;\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: number | undefined, context: BaseSerializationContext) {\n let invalidValue = false;\n\n if (value !== undefined) {\n invalidValue = true;\n\n for (let versionedValue of this.values) {\n if (versionedValue.value === value) {\n let targetVersion = versionedValue.targetVersion ? versionedValue.targetVersion : this.targetVersion;\n\n if (targetVersion.compareTo(context.targetVersion) <= 0) {\n invalidValue = false;\n\n break;\n }\n else {\n context.logEvent(\n sender,\n Enums.ValidationPhase.ToJSON,\n Enums.ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidPropertyValue(value, this.name));\n }\n }\n }\n }\n\n if (!invalidValue) {\n context.serializeEnum(\n this.enumType,\n target,\n this.name,\n value,\n this.defaultValue);\n }\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly enumType: TEnum,\n readonly defaultValue?: number,\n values?: IVersionedValue[],\n readonly onGetInitialValue?: (sender: SerializableObject) => number) {\n super(targetVersion, name, defaultValue, onGetInitialValue);\n\n if (!values) {\n for (let key in enumType) {\n let keyAsNumber = parseInt(key, 10);\n\n if (keyAsNumber >= 0) {\n this._values.push( { value: keyAsNumber });\n }\n }\n }\n else {\n this._values = values;\n }\n }\n\n get values(): IVersionedValue[] {\n return this._values;\n }\n}\n\nexport type SerializableObjectType = { new(): SerializableObject };\n\nexport class SerializableObjectProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): SerializableObject | undefined {\n let sourceValue = source[this.name];\n\n if (sourceValue === undefined) {\n return this.onGetInitialValue ? this.onGetInitialValue(sender) : this.defaultValue;\n }\n\n let result = new this.objectType();\n result.parse(sourceValue, context);\n\n return result;\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: SerializableObject | undefined, context: BaseSerializationContext) {\n let serializedValue: object | undefined = undefined;\n\n if (value !== undefined && !value.hasAllDefaultValues()) {\n serializedValue = value.toJSON(context);\n }\n\n if (typeof serializedValue === \"object\" && Object.keys(serializedValue).length === 0) {\n serializedValue = undefined;\n }\n\n context.serializeValue(target, this.name, serializedValue, this.defaultValue, true);\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly objectType: SerializableObjectType,\n readonly nullable: boolean = false,\n defaultValue?: SerializableObject) {\n super(\n targetVersion,\n name,\n defaultValue,\n (sender: SerializableObject) => { return this.nullable ? undefined : new this.objectType(); });\n }\n}\n\nexport class SerializableObjectCollectionProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): SerializableObject[] | undefined {\n let result: SerializableObject[] | undefined = [];\n\n let sourceCollection = source[this.name];\n\n if (Array.isArray(sourceCollection)) {\n for (let sourceItem of sourceCollection) {\n let item = new this.objectType();\n item.parse(sourceItem, context);\n\n result.push(item);\n\n if (this.onItemAdded) {\n this.onItemAdded(sender, item);\n }\n }\n }\n\n return result.length > 0 ? result : (this.onGetInitialValue ? this.onGetInitialValue(sender) : undefined);\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: SerializableObject[] | undefined, context: BaseSerializationContext) {\n context.serializeArray(target, this.name, value);\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly objectType: SerializableObjectType,\n readonly onItemAdded?: (sender: SerializableObject, item: SerializableObject) => void) {\n super(\n targetVersion,\n name,\n undefined,\n (sender: SerializableObject) => { return []; });\n }\n}\n\nexport class CustomProperty extends PropertyDefinition {\n parse(sender: SerializableObject, source: PropertyBag, context: BaseSerializationContext): T {\n return this.onParse(sender, this, source, context);\n }\n\n toJSON(sender: SerializableObject, target: PropertyBag, value: T, context: BaseSerializationContext) {\n this.onToJSON(sender, this, target, value, context);\n }\n\n constructor(\n readonly targetVersion: Version,\n readonly name: string,\n readonly onParse: (sender: SerializableObject, property: PropertyDefinition, source: PropertyBag, context: BaseSerializationContext) => T,\n readonly onToJSON: (sender: SerializableObject, property: PropertyDefinition, target: PropertyBag, value: T, context: BaseSerializationContext) => void,\n readonly defaultValue?: T,\n readonly onGetInitialValue?: (sender: SerializableObject) => T) {\n super(targetVersion, name, defaultValue, onGetInitialValue);\n\n if (!this.onParse) {\n throw new Error(\"CustomPropertyDefinition instances must have an onParse handler.\");\n }\n\n if (!this.onToJSON) {\n throw new Error(\"CustomPropertyDefinition instances must have an onToJSON handler.\");\n }\n }\n}\n\nexport class SerializableObjectSchema {\n private _properties: PropertyDefinition[] = [];\n\n indexOf(property: PropertyDefinition): number {\n for (let i = 0; i < this._properties.length; i++) {\n if (this._properties[i] === property) {\n return i;\n }\n }\n\n return -1;\n }\n\n add(...properties: PropertyDefinition[]) {\n for (let i = 0; i < properties.length; i++) {\n if (this.indexOf(properties[i]) === -1) {\n this._properties.push(properties[i]);\n }\n }\n }\n\n remove(...properties: PropertyDefinition[]) {\n for (let property of properties) {\n while (true) {\n let index = this.indexOf(property);\n\n if (index >= 0) {\n this._properties.splice(index, 1);\n }\n else {\n break;\n }\n }\n }\n }\n\n getItemAt(index: number): PropertyDefinition {\n return this._properties[index];\n }\n\n getCount(): number {\n return this._properties.length;\n }\n}\n\n// This is a decorator function, used to map SerializableObject descendant class members to\n// schema properties\nexport function property(property: PropertyDefinition) {\n return function(target: any, propertyKey: string) {\n let descriptor = Object.getOwnPropertyDescriptor(target, propertyKey) || {};\n\n if (!descriptor.get && !descriptor.set) {\n descriptor.get = function(this: SerializableObject) { return this.getValue(property); };\n descriptor.set = function(this: SerializableObject, value: any) { this.setValue(property, value); };\n\n Object.defineProperty(target, propertyKey, descriptor)\n }\n }\n}\n\nexport type PropertyBag = { [propertyName: string]: any };\n\nexport abstract class SerializableObject {\n static onRegisterCustomProperties?: (sender: SerializableObject, schema: SerializableObjectSchema) => void;\n static defaultMaxVersion: Version = Versions.latest;\n\n private static readonly _schemaCache: { [typeName: string]: SerializableObjectSchema } = {};\n\n private _propertyBag: PropertyBag = {};\n private _rawProperties: PropertyBag = {};\n\n protected abstract getSchemaKey(): string;\n\n protected getDefaultSerializationContext(): BaseSerializationContext {\n return new SimpleSerializationContext();\n }\n\n protected populateSchema(schema: SerializableObjectSchema) {\n let ctor = this.constructor;\n let properties: PropertyDefinition[] = [];\n\n for (let propertyName in ctor) {\n try {\n let propertyValue = ctor[propertyName];\n\n if (propertyValue instanceof PropertyDefinition) {\n properties.push(propertyValue);\n }\n }\n catch {\n // If a property happens to have a getter function and\n // it throws an exception, we need to catch it here\n }\n }\n\n if (properties.length > 0) {\n let sortedProperties = properties.sort((p1: PropertyDefinition, p2: PropertyDefinition) => {\n if (p1.sequentialNumber > p2.sequentialNumber) {\n return 1;\n }\n else if (p1.sequentialNumber < p2.sequentialNumber) {\n return -1;\n }\n\n return 0;\n });\n\n schema.add(...sortedProperties);\n }\n\n if (SerializableObject.onRegisterCustomProperties) {\n SerializableObject.onRegisterCustomProperties(this, schema);\n }\n }\n\n protected getValue(property: PropertyDefinition): any {\n return this._propertyBag.hasOwnProperty(property.getInternalName()) ? this._propertyBag[property.getInternalName()] : property.defaultValue;\n }\n\n protected setValue(property: PropertyDefinition, value: any) {\n if (value === undefined || value === null) {\n delete this._propertyBag[property.getInternalName()];\n }\n else {\n this._propertyBag[property.getInternalName()] = value;\n }\n }\n\n protected internalParse(source: PropertyBag, context: BaseSerializationContext) {\n this._propertyBag = {};\n this._rawProperties = GlobalSettings.enableFullJsonRoundTrip ? (source ? source : {}) : {};\n\n if (source) {\n let s = this.getSchema();\n\n for (let i = 0; i < s.getCount(); i++) {\n let property = s.getItemAt(i);\n\n if (property.isSerializationEnabled) {\n let propertyValue = property.onGetInitialValue ? property.onGetInitialValue(this) : undefined;\n\n if (source.hasOwnProperty(property.name)) {\n if (property.targetVersion.compareTo(context.targetVersion) <= 0) {\n propertyValue = property.parse(this, source, context);\n }\n else {\n context.logParseEvent(\n this,\n Enums.ValidationEvent.UnsupportedProperty,\n Strings.errors.propertyNotSupported(\n property.name,\n property.targetVersion.toString(),\n context.targetVersion.toString()));\n }\n }\n\n this.setValue(property, propertyValue);\n }\n }\n }\n else {\n this.resetDefaultValues();\n }\n }\n\n protected internalToJSON(target: PropertyBag, context: BaseSerializationContext) {\n let s = this.getSchema();\n let serializedProperties: string[] = [];\n\n for (let i = 0; i < s.getCount(); i++) {\n let property = s.getItemAt(i);\n\n // Avoid serializing the same property multiple times. This is necessary\n // because some property definitions map to the same underlying schema\n // property\n if (property.isSerializationEnabled && property.targetVersion.compareTo(context.targetVersion) <= 0 && serializedProperties.indexOf(property.name) === -1) {\n property.toJSON(this, target, this.getValue(property), context);\n\n serializedProperties.push(property.name);\n }\n }\n }\n\n protected shouldSerialize(context: BaseSerializationContext): boolean {\n return true;\n }\n\n maxVersion: Version = SerializableObject.defaultMaxVersion;\n\n constructor() {\n let s = this.getSchema();\n\n for (let i = 0; i < s.getCount(); i++) {\n let property = s.getItemAt(i);\n\n if (property.onGetInitialValue) {\n this.setValue(property, property.onGetInitialValue(this));\n }\n }\n }\n\n parse(source: PropertyBag, context?: BaseSerializationContext) {\n this.internalParse(source, context ? context : new SimpleSerializationContext());\n }\n\n toJSON(context?: BaseSerializationContext): PropertyBag | undefined {\n let effectiveContext: BaseSerializationContext;\n\n if (context && context instanceof BaseSerializationContext) {\n effectiveContext = context;\n }\n else {\n effectiveContext = this.getDefaultSerializationContext();\n effectiveContext.toJSONOriginalParam = context;\n }\n\n if (this.shouldSerialize(effectiveContext)) {\n let result: PropertyBag;\n\n if (GlobalSettings.enableFullJsonRoundTrip && this._rawProperties && typeof this._rawProperties === \"object\") {\n result = this._rawProperties;\n }\n else {\n result = {};\n }\n\n this.internalToJSON(result, effectiveContext);\n\n return result;\n }\n else {\n return undefined;\n }\n }\n\n hasDefaultValue(property: PropertyDefinition): boolean {\n return this.getValue(property) === property.defaultValue;\n }\n\n hasAllDefaultValues(): boolean {\n let s = this.getSchema();\n\n for (let i = 0; i < s.getCount(); i++) {\n let property = s.getItemAt(i);\n\n if (!this.hasDefaultValue(property)) {\n return false;\n }\n }\n\n return true;\n }\n\n resetDefaultValues() {\n let s = this.getSchema();\n\n for (let i = 0; i < s.getCount(); i++) {\n let property = s.getItemAt(i);\n\n this.setValue(property, property.defaultValue);\n }\n }\n\n setCustomProperty(name: string, value: any) {\n let shouldDeleteProperty = (typeof value === \"string\" && !value) || value === undefined || value === null;\n\n if (shouldDeleteProperty) {\n delete this._rawProperties[name];\n }\n else {\n this._rawProperties[name] = value;\n }\n }\n\n getCustomProperty(name: string): any {\n return this._rawProperties[name];\n }\n\n getSchema(): SerializableObjectSchema {\n let schema: SerializableObjectSchema = SerializableObject._schemaCache[this.getSchemaKey()];\n\n if (!schema) {\n schema = new SerializableObjectSchema();\n\n this.populateSchema(schema);\n\n SerializableObject._schemaCache[this.getSchemaKey()] = schema;\n }\n\n return schema;\n }\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport * as Enums from \"./enums\";\n\nexport type Refresh = {\n mode: Enums.RefreshMode;\n timeBetweenAutomaticRefreshes: number;\n maximumConsecutiveAutomaticRefreshes: number;\n allowManualRefreshesAfterAutomaticRefreshes: boolean;\n}\n\nexport type AppletsSettings = {\n logEnabled: boolean;\n logLevel: Enums.LogLevel;\n maximumRetryAttempts: number;\n defaultTimeBetweenRetryAttempts: number;\n authPromptWidth: number;\n authPromptHeight: number;\n readonly refresh: Refresh;\n onLogEvent?: (level: Enums.LogLevel, message?: any, ...optionalParams: any[]) => void;\n}\n\nexport class GlobalSettings {\n static useAdvancedTextBlockTruncation: boolean = true;\n static useAdvancedCardBottomTruncation: boolean = false;\n static useMarkdownInRadioButtonAndCheckbox: boolean = true;\n static allowMarkForTextHighlighting: boolean = false;\n static alwaysBleedSeparators: boolean = false;\n static enableFullJsonRoundTrip: boolean = false;\n static displayInputValidationErrors: boolean = true;\n static allowPreProcessingPropertyValues: boolean = false;\n static setTabIndexAtCardRoot: boolean = true;\n static enableFallback: boolean = true;\n static useWebkitLineClamp: boolean = true;\n static allowMoreThanMaxActionsInOverflowMenu: boolean = false;\n\n static readonly applets: AppletsSettings = {\n logEnabled: true,\n logLevel: Enums.LogLevel.Error,\n maximumRetryAttempts: 3,\n defaultTimeBetweenRetryAttempts: 3000, // 3 seconds\n authPromptWidth: 400,\n authPromptHeight: 600,\n refresh: {\n mode: Enums.RefreshMode.Manual,\n timeBetweenAutomaticRefreshes: 3000, // 3 seconds\n maximumConsecutiveAutomaticRefreshes: 3,\n allowManualRefreshesAfterAutomaticRefreshes: true\n }\n }\n}\n\nexport const ContentTypes = {\n applicationJson: \"application/json\",\n applicationXWwwFormUrlencoded: \"application/x-www-form-urlencoded\"\n}\n\nexport interface ISeparationDefinition {\n spacing: number,\n lineThickness?: number,\n lineColor?: string\n}\n\nexport interface IInput {\n id?: string;\n value?: string;\n validateValue(): boolean;\n}\n\nexport type Dictionary = { [key: string]: T };\n\nexport class StringWithSubstitutions {\n private _isProcessed: boolean = false;\n private _original?: string;\n private _processed?: string;\n\n getReferencedInputs(inputs: IInput[], referencedInputs: Dictionary) {\n if (!referencedInputs) {\n throw new Error(\"The referencedInputs parameter cannot be null.\")\n }\n\n for (let input of inputs) {\n let matches = new RegExp(\"\\\\{{2}(\" + input.id + \").value\\\\}{2}\", \"gi\").exec(this._original);\n\n if (matches != null && input.id) {\n referencedInputs[input.id] = input;\n }\n }\n }\n\n substituteInputValues(inputs: Dictionary, contentType: string) {\n this._processed = this._original;\n\n if (this._original) {\n let regEx = /\\{{2}([a-z0-9_$@]+).value\\}{2}/gi;\n let matches;\n\n while ((matches = regEx.exec(this._original)) !== null) {\n for (let key of Object.keys(inputs)) {\n if (key.toLowerCase() == matches[1].toLowerCase()) {\n let matchedInput = inputs[key];\n\n let valueForReplace = \"\";\n\n if (matchedInput.value) {\n valueForReplace = matchedInput.value;\n }\n\n if (contentType === ContentTypes.applicationJson) {\n valueForReplace = JSON.stringify(valueForReplace);\n valueForReplace = valueForReplace.slice(1, -1);\n }\n else if (contentType === ContentTypes.applicationXWwwFormUrlencoded) {\n valueForReplace = encodeURIComponent(valueForReplace);\n }\n\n this._processed = (this._processed).replace(matches[0], valueForReplace);\n\n break;\n }\n }\n }\n }\n\n this._isProcessed = true;\n }\n\n getOriginal(): string | undefined {\n return this._original;\n }\n\n get(): string | undefined {\n if (!this._isProcessed) {\n return this._original;\n }\n else {\n return this._processed;\n }\n }\n\n set(value: string | undefined) {\n this._original = value;\n this._isProcessed = false;\n }\n}\n\nexport class SpacingDefinition {\n left: number = 0;\n top: number = 0;\n right: number = 0;\n bottom: number = 0;\n\n constructor(top: number = 0,\n right: number = 0,\n bottom: number = 0,\n left: number = 0) {\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n}\n\nexport class PaddingDefinition {\n top: Enums.Spacing = Enums.Spacing.None;\n right: Enums.Spacing = Enums.Spacing.None;\n bottom: Enums.Spacing = Enums.Spacing.None;\n left: Enums.Spacing = Enums.Spacing.None;\n\n constructor(top: Enums.Spacing = Enums.Spacing.None,\n right: Enums.Spacing = Enums.Spacing.None,\n bottom: Enums.Spacing = Enums.Spacing.None,\n left: Enums.Spacing = Enums.Spacing.None) {\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n}\n\nexport class SizeAndUnit {\n physicalSize: number;\n unit: Enums.SizeUnit;\n\n static parse(input: string, requireUnitSpecifier: boolean = false): SizeAndUnit {\n let result = new SizeAndUnit(0, Enums.SizeUnit.Weight);\n\n if (typeof input === \"number\") {\n result.physicalSize = input;\n\n return result;\n }\n else if (typeof input === \"string\") {\n let regExp = /^([0-9]+)(px|\\*)?$/g;\n let matches = regExp.exec(input);\n let expectedMatchCount = requireUnitSpecifier ? 3 : 2;\n\n if (matches && matches.length >= expectedMatchCount) {\n result.physicalSize = parseInt(matches[1]);\n\n if (matches.length == 3) {\n if (matches[2] == \"px\") {\n result.unit = Enums.SizeUnit.Pixel;\n }\n }\n\n return result;\n }\n }\n\n throw new Error(\"Invalid size: \" + input);\n }\n\n constructor(physicalSize: number, unit: Enums.SizeUnit) {\n this.physicalSize = physicalSize;\n this.unit = unit;\n }\n}\n\nexport interface IResourceInformation {\n url: string;\n mimeType: string;\n}\n\n/**\n * Fast UUID generator, RFC4122 version 4 compliant.\n * @author Jeff Ward (jcward.com).\n * @license MIT license\n * @link http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n **/\nexport class UUID {\n private static lut: string[] = [];\n\n static generate(): string {\n let d0 = Math.random() * 0xffffffff | 0;\n let d1 = Math.random() * 0xffffffff | 0;\n let d2 = Math.random() * 0xffffffff | 0;\n let d3 = Math.random() * 0xffffffff | 0;\n\n return UUID.lut[d0 & 0xff] + UUID.lut[d0 >> 8 & 0xff] + UUID.lut[d0 >> 16 & 0xff] + UUID.lut[d0 >> 24 & 0xff] + '-' +\n UUID.lut[d1 & 0xff] + UUID.lut[d1 >> 8 & 0xff] + '-' + UUID.lut[d1 >> 16 & 0x0f | 0x40] + UUID.lut[d1 >> 24 & 0xff] + '-' +\n UUID.lut[d2 & 0x3f | 0x80] + UUID.lut[d2 >> 8 & 0xff] + '-' + UUID.lut[d2 >> 16 & 0xff] + UUID.lut[d2 >> 24 & 0xff] +\n UUID.lut[d3 & 0xff] + UUID.lut[d3 >> 8 & 0xff] + UUID.lut[d3 >> 16 & 0xff] + UUID.lut[d3 >> 24 & 0xff];\n }\n\n static initialize() {\n for (let i = 0; i < 256; i++) {\n UUID.lut[i] = (i < 16 ? '0' : '') + i.toString(16);\n }\n }\n}\n\nUUID.initialize();\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\n\nexport class Strings {\n static readonly errors = {\n unknownElementType: (typeName: string) => `Unknown element type \"${typeName}\". Fallback will be used if present.`,\n unknownActionType: (typeName: string) => `Unknown action type \"${typeName}\". Fallback will be used if present.`,\n elementTypeNotAllowed: (typeName: string) => `Element type \"${typeName}\" is not allowed in this context.`,\n actionTypeNotAllowed: (typeName: string) => `Action type \"${typeName}\" is not allowed in this context.`,\n invalidPropertyValue: (value: any, propertyName: string) => `Invalid value \"${value}\" for property \"${propertyName}\".`,\n showCardMustHaveCard: () => `\"An Action.ShowCard must have its \"card\" property set to a valid AdaptiveCard object.`,\n invalidColumnWidth: (invalidWidth: string) => `Invalid column width \"${invalidWidth}\" - defaulting to \"auto\".`,\n invalidCardVersion: (defaultingToVersion: string) => `Invalid card version. Defaulting to \"${defaultingToVersion}\".`,\n invalidVersionString: (versionString: string) => `Invalid version string \"${versionString}\".`,\n propertyValueNotSupported: (value: any, propertyName: string, supportedInVersion: string, versionUsed: string) => `Value \"${value}\" for property \"${propertyName}\" is supported in version ${supportedInVersion}, but you are using version ${versionUsed}.`,\n propertyNotSupported: (propertyName: string, supportedInVersion: string, versionUsed: string) => `Property \"${propertyName}\" is supported in version ${supportedInVersion}, but you are using version ${versionUsed}.`,\n indexOutOfRange: (index: number) => `Index out of range (${index}).`,\n elementCannotBeUsedAsInline: () => \"RichTextBlock.addInline: the specified card element cannot be used as a RichTextBlock inline.\",\n inlineAlreadyParented: () => \"RichTextBlock.addInline: the specified inline already belongs to another RichTextBlock.\",\n interactivityNotAllowed: () => \"Interactivity is not allowed.\",\n inputsMustHaveUniqueId: () => \"All inputs must have a unique Id.\",\n choiceSetMustHaveAtLeastOneChoice: () => \"An Input.ChoiceSet must have at least one choice defined.\",\n choiceSetChoicesMustHaveTitleAndValue: () => \"All choices in an Input.ChoiceSet must have their title and value properties set.\",\n propertyMustBeSet: (propertyName: string) => `Property \"${propertyName}\" must be set.`,\n actionHttpHeadersMustHaveNameAndValue: () => \"All headers of an Action.Http must have their name and value properties set.\",\n tooManyActions: (maximumActions: number) => `Maximum number of actions exceeded (${maximumActions}).`,\n columnAlreadyBelongsToAnotherSet: () => \"This column already belongs to another ColumnSet.\",\n invalidCardType: () => `Invalid or missing card type. Make sure the card's type property is set to \"AdaptiveCard\".`,\n unsupportedCardVersion: (version: string, maxSupportedVersion: string) => `The specified card version (${version}) is not supported. The maximum supported card version is ${maxSupportedVersion}.`,\n duplicateId: (id: string) => `Duplicate Id \"${id}\".`,\n markdownProcessingNotEnabled: () => \"Markdown processing isn't enabled. Please see https://www.npmjs.com/package/adaptivecards#supporting-markdown\",\n processMarkdownEventRemoved: () => \"The processMarkdown event has been removed. Please update your code and set onProcessMarkdown instead.\",\n elementAlreadyParented: () => \"The element already belongs to another container.\",\n actionAlreadyParented: () => \"The action already belongs to another element.\",\n elementTypeNotStandalone: (typeName: string) => `Elements of type ${typeName} cannot be used as standalone elements.`\n };\n static readonly magicCodeInputCard = {\n tryAgain: () => \"That didn't work... let's try again.\",\n pleaseLogin: () => \"Please login in the popup. You will obtain a magic code. Paste that code below and select \\\"Submit\\\"\",\n enterMagicCode: () => \"Enter magic code\",\n pleaseEnterMagicCodeYouReceived: () => \"Please enter the magic code you received.\",\n submit: () => \"Submit\",\n cancel: () => \"Cancel\",\n somethingWentWrong: () => \"Something went wrong. This action can't be handled.\",\n authenticationFailed: () => \"Authentication failed.\"\n };\n static readonly runtime = {\n automaticRefreshPaused: () => \"Automatic refresh paused.\",\n clckToRestartAutomaticRefresh: () => \"Click to restart.\",\n refreshThisCard: () => \"Refresh this card\"\n };\n static readonly hints = {\n dontUseWeightedAndStrecthedColumnsInSameSet: () => \"It is not recommended to use weighted and stretched columns in the same ColumnSet, because in such a situation stretched columns will always get the minimum amount of space.\"\n };\n static readonly defaults = {\n inlineActionTitle: () => \"Inline Action\",\n overflowButtonText: () => \"...\",\n mediaPlayerAriaLabel: () => \"Media content\",\n mediaPlayerPlayMedia: () => \"Play media\"\n };\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport { CardElement, StylableCardElementContainer, SerializationContext, Container, ContainerStyleProperty } from \"./card-elements\";\nimport { HorizontalAlignment, VerticalAlignment, SizeUnit, ValidationEvent, TypeErrorType, Spacing } from \"./enums\";\nimport { TextStyleDefinition } from \"./host-config\";\nimport { GlobalRegistry } from \"./registry\";\nimport { BaseSerializationContext, BoolProperty, CustomProperty, EnumProperty, property, PropertyBag,\n PropertyDefinition, SerializableObject, SerializableObjectCollectionProperty, Versions } from \"./serialization\";\nimport { SizeAndUnit, PaddingDefinition } from \"./shared\";\nimport { Strings } from \"./strings\";\nimport { stringToCssColor } from \"./utils\";\n\nexport class TableColumnDefinition extends SerializableObject {\n //#region Schema\n\n static readonly horizontalCellContentAlignmentProperty = new EnumProperty(Versions.v1_5, \"horizontalCellContentAlignment\", HorizontalAlignment);\n static readonly verticalCellContentAlignmentProperty = new EnumProperty(Versions.v1_5, \"verticalCellContentAlignment\", VerticalAlignment);\n\n static readonly widthProperty = new CustomProperty(\n Versions.v1_5,\n \"width\",\n (sender: SerializableObject, property: PropertyDefinition, source: PropertyBag, context: BaseSerializationContext) => {\n let result: SizeAndUnit = property.defaultValue;\n let value = source[property.name];\n let invalidWidth = false;\n\n if (typeof value === \"number\" && !isNaN(value)) {\n result = new SizeAndUnit(value, SizeUnit.Weight);\n }\n else if (typeof value === \"string\") {\n try {\n result = SizeAndUnit.parse(value);\n }\n catch (e) {\n invalidWidth = true;\n }\n }\n else {\n invalidWidth = true;\n }\n\n if (invalidWidth) {\n context.logParseEvent(\n sender,\n ValidationEvent.InvalidPropertyValue,\n Strings.errors.invalidColumnWidth(value));\n }\n\n return result;\n },\n (sender: SerializableObject, property: PropertyDefinition, target: PropertyBag, value: SizeAndUnit, context: BaseSerializationContext) => {\n if (value.unit === SizeUnit.Pixel) {\n context.serializeValue(target, \"width\", value.physicalSize + \"px\");\n }\n else {\n context.serializeNumber(target, \"width\", value.physicalSize);\n }\n },\n new SizeAndUnit(1, SizeUnit.Weight));\n\n @property(TableColumnDefinition.horizontalCellContentAlignmentProperty)\n horizontalCellContentAlignment?: HorizontalAlignment;\n\n @property(TableColumnDefinition.verticalCellContentAlignmentProperty)\n verticalCellContentAlignment?: VerticalAlignment;\n\n @property(TableColumnDefinition.widthProperty)\n width: SizeAndUnit = new SizeAndUnit(1, SizeUnit.Weight);\n\n getSchemaKey(): string {\n return \"ColumnDefinition\";\n }\n\n //#endregion\n\n computedWidth: SizeAndUnit;\n}\n\nexport abstract class StylableContainer extends StylableCardElementContainer {\n private _items: T[] = [];\n\n private parseItem(source: any, context: SerializationContext): T | undefined {\n return context.parseCardObject(\n this,\n source,\n [], // Forbidden types not supported for elements for now\n !this.isDesignMode(),\n (typeName: string) => {\n return this.createItemInstance(typeName);\n },\n (typeName: string, errorType: TypeErrorType) => {\n context.logParseEvent(\n undefined,\n ValidationEvent.ElementTypeNotAllowed,\n Strings.errors.elementTypeNotAllowed(typeName));\n });\n }\n\n protected abstract getCollectionPropertyName(): string;\n protected abstract createItemInstance(typeName: string): T | undefined;\n\n protected internalAddItem(item: T) {\n if (!item.parent) {\n this._items.push(item);\n\n item.setParent(this);\n }\n else {\n throw new Error(Strings.errors.elementAlreadyParented());\n }\n }\n\n protected internalRemoveItem(item: T): boolean {\n let itemIndex = this._items.indexOf(item);\n\n if (itemIndex >= 0) {\n this._items.splice(itemIndex, 1);\n\n item.setParent(undefined);\n\n this.updateLayout();\n\n return true;\n }\n\n return false;\n }\n\n protected internalParse(source: any, context: SerializationContext) {\n super.internalParse(source, context);\n\n this._items = [];\n\n let items = source[this.getCollectionPropertyName()];\n\n if (Array.isArray(items)) {\n for (let item of items) {\n let instance = this.parseItem(item, context);\n\n if (instance) {\n this._items.push(instance);\n }\n }\n }\n }\n\n protected internalToJSON(target: PropertyBag, context: SerializationContext) {\n super.internalToJSON(target, context);\n\n context.serializeArray(target, this.getCollectionPropertyName(), this._items);\n }\n\n removeItem(item: T): boolean {\n return this.internalRemoveItem(item);\n }\n\n getItemCount(): number {\n return this._items.length;\n }\n\n getItemAt(index: number): T {\n return this._items[index];\n }\n\n getFirstVisibleRenderedItem(): T | undefined {\n return this.getItemCount() > 0 ? this.getItemAt(0) : undefined;\n }\n\n getLastVisibleRenderedItem(): T | undefined {\n return this.getItemCount() > 0 ? this.getItemAt(this.getItemCount() - 1) : undefined;\n }\n}\n\nexport type CellType = \"data\" | \"header\";\n\nexport class TableCell extends Container {\n private _columnIndex: number = -1;\n private _cellType: CellType = \"data\";\n\n protected getHasBorder(): boolean {\n return this.parentRow.parentTable.showGridLines;\n }\n\n protected applyBorder() {\n if (this.renderedElement && this.getHasBorder()) {\n let styleDefinition = this.hostConfig.containerStyles.getStyleByName(this.parentRow.parentTable.gridStyle);\n\n if (styleDefinition.borderColor) {\n const borderColor = stringToCssColor(styleDefinition.borderColor);\n\n if (borderColor) {\n this.renderedElement.style.borderRight = \"1px solid \" + borderColor;\n this.renderedElement.style.borderBottom = \"1px solid \" + borderColor;\n }\n }\n }\n }\n\n protected getDefaultPadding(): PaddingDefinition {\n return this.getHasBackground() || this.getHasBorder() ?\n new PaddingDefinition(\n Spacing.Small,\n Spacing.Small,\n Spacing.Small,\n Spacing.Small) : super.getDefaultPadding();\n }\n\n protected internalRender(): HTMLElement | undefined {\n let cellElement = super.internalRender();\n\n if (cellElement) {\n cellElement.setAttribute(\"role\", this.cellType === \"data\" ? \"cell\" : \"columnheader\");\n cellElement.style.minWidth = \"0\";\n\n if (this.cellType === \"header\") {\n cellElement.setAttribute(\"scope\", \"col\");\n }\n }\n\n return cellElement;\n }\n\n protected shouldSerialize(context: SerializationContext): boolean {\n return true;\n }\n\n getJsonTypeName(): string {\n return \"TableCell\";\n }\n\n getEffectiveTextStyleDefinition(): TextStyleDefinition {\n if (this.cellType === \"header\") {\n return this.hostConfig.textStyles.columnHeader;\n }\n\n return super.getEffectiveTextStyleDefinition();\n }\n\n getEffectiveHorizontalAlignment(): HorizontalAlignment {\n if (this.horizontalAlignment !== undefined) {\n return this.horizontalAlignment;\n }\n\n if (this.parentRow.horizontalCellContentAlignment !== undefined) {\n return this.parentRow.horizontalCellContentAlignment;\n }\n\n if (this.columnIndex >= 0) {\n let horizontalAlignment = this.parentRow.parentTable.getColumnAt(this.columnIndex).horizontalCellContentAlignment;\n\n if (horizontalAlignment !== undefined) {\n return horizontalAlignment;\n }\n }\n\n if (this.parentRow.parentTable.horizontalCellContentAlignment !== undefined) {\n return this.parentRow.parentTable.horizontalCellContentAlignment;\n }\n\n return super.getEffectiveHorizontalAlignment();\n }\n\n getEffectiveVerticalContentAlignment(): VerticalAlignment {\n if (this.verticalContentAlignment !== undefined) {\n return this.verticalContentAlignment;\n }\n\n if (this.parentRow.verticalCellContentAlignment !== undefined) {\n return this.parentRow.verticalCellContentAlignment;\n }\n\n if (this.columnIndex >= 0) {\n let verticalAlignment = this.parentRow.parentTable.getColumnAt(this.columnIndex).verticalCellContentAlignment;\n\n if (verticalAlignment !== undefined) {\n return verticalAlignment;\n }\n }\n\n if (this.parentRow.parentTable.verticalCellContentAlignment !== undefined) {\n return this.parentRow.parentTable.verticalCellContentAlignment;\n }\n\n return super.getEffectiveVerticalContentAlignment();\n }\n\n get columnIndex(): number {\n return this._columnIndex;\n }\n\n get cellType(): CellType {\n return this._cellType;\n }\n\n get parentRow(): TableRow {\n return this.parent as TableRow;\n }\n\n get isStandalone(): boolean {\n return false;\n }\n}\n\nexport class TableRow extends StylableContainer {\n //#region Schema\n\n static readonly styleProperty = new ContainerStyleProperty(Versions.v1_5, \"style\");\n static readonly horizontalCellContentAlignmentProperty = new EnumProperty(Versions.v1_5, \"horizontalCellContentAlignment\", HorizontalAlignment);\n static readonly verticalCellContentAlignmentProperty = new EnumProperty(Versions.v1_5, \"verticalCellContentAlignment\", VerticalAlignment);\n\n @property(TableRow.horizontalCellContentAlignmentProperty)\n horizontalCellContentAlignment?: HorizontalAlignment;\n\n @property(TableRow.verticalCellContentAlignmentProperty)\n verticalCellContentAlignment?: VerticalAlignment;\n\n //#endregion\n\n protected getDefaultPadding(): PaddingDefinition {\n return new PaddingDefinition(\n Spacing.None,\n Spacing.None,\n Spacing.None,\n Spacing.None);\n }\n\n protected applyBackground() {\n if (this.renderedElement) {\n let styleDefinition = this.hostConfig.containerStyles.getStyleByName(this.style, this.hostConfig.containerStyles.getStyleByName(this.defaultStyle));\n\n if (styleDefinition.backgroundColor) {\n const bgColor = stringToCssColor(styleDefinition.backgroundColor);\n this.renderedElement.style.backgroundColor = bgColor;\n }\n }\n }\n\n protected getCollectionPropertyName(): string {\n return \"cells\";\n }\n\n protected createItemInstance(typeName: string): TableCell | undefined {\n return !typeName || typeName === \"TableCell\" ? new TableCell() : undefined;\n }\n \n protected internalRender(): HTMLElement | undefined {\n let isFirstRow = this.getIsFirstRow();\n let cellSpacing = this.hostConfig.table.cellSpacing;\n\n let rowElement = document.createElement(\"div\");\n rowElement.setAttribute(\"role\", \"row\");\n rowElement.style.display = \"flex\";\n rowElement.style.flexDirection = \"row\";\n\n for (let i = 0; i < Math.min(this.getItemCount(), this.parentTable.getColumnCount()); i++) {\n let cell = this.getItemAt(i);\n\n // Cheating a bit in order to keep cellType read-only\n cell[\"_columnIndex\"] = i;\n cell[\"_cellType\"] = (this.parentTable.firstRowAsHeaders && isFirstRow) ? \"header\" : \"data\";\n\n let renderedCell = cell.render();\n\n if (renderedCell) {\n let column = this.parentTable.getColumnAt(i);\n\n if (column.computedWidth.unit === SizeUnit.Pixel) {\n renderedCell.style.flex = \"0 0 \" + column.computedWidth.physicalSize + \"px\";\n }\n else {\n renderedCell.style.flex = \"1 1 \" + column.computedWidth.physicalSize + \"%\";\n }\n\n if (i > 0 && !this.parentTable.showGridLines && cellSpacing > 0) {\n renderedCell.style.marginLeft = cellSpacing + \"px\";\n }\n\n rowElement.appendChild(renderedCell);\n }\n }\n\n return rowElement.children.length > 0 ? rowElement : undefined;\n }\n\n protected shouldSerialize(context: SerializationContext): boolean {\n return true;\n }\n\n addCell(cell: TableCell) {\n this.internalAddItem(cell);\n }\n\n removeCellAt(columnIndex: number): boolean {\n if (columnIndex >= 0 && columnIndex < this.getItemCount()) {\n return this.removeItem(this.getItemAt(columnIndex));\n }\n\n return false;\n }\n\n ensureHasEnoughCells(cellCount: number) {\n while (this.getItemCount() < cellCount) {\n this.addCell(new TableCell());\n }\n }\n\n getJsonTypeName(): string {\n return \"TableRow\";\n }\n\n getIsFirstRow(): boolean {\n return this.parentTable.getItemAt(0) === this;\n }\n\n get parentTable(): Table {\n return this.parent as Table;\n }\n\n get isStandalone(): boolean {\n return false;\n }\n}\n\nexport class Table extends StylableContainer {\n //#region Schema\n\n private static readonly columnsProperty = new SerializableObjectCollectionProperty(Versions.v1_5, \"columns\", TableColumnDefinition);\n\n static readonly firstRowAsHeadersProperty = new BoolProperty(Versions.v1_5, \"firstRowAsHeaders\", true);\n static readonly showGridLinesProperty = new BoolProperty(Versions.v1_5, \"showGridLines\", true);\n static readonly gridStyleProperty = new ContainerStyleProperty(Versions.v1_5, \"gridStyle\");\n static readonly horizontalCellContentAlignmentProperty = new EnumProperty(Versions.v1_5, \"horizontalCellContentAlignment\", HorizontalAlignment);\n static readonly verticalCellContentAlignmentProperty = new EnumProperty(Versions.v1_5, \"verticalCellContentAlignment\", VerticalAlignment);\n\n @property(Table.columnsProperty)\n private _columns: TableColumnDefinition[] = [];\n\n @property(Table.firstRowAsHeadersProperty)\n firstRowAsHeaders: boolean = true;\n\n @property(Table.showGridLinesProperty)\n showGridLines: boolean = true;\n\n @property(Table.gridStyleProperty)\n get gridStyle(): string | undefined {\n let style = this.getValue(Table.gridStyleProperty);\n\n if (style && this.hostConfig.containerStyles.getStyleByName(style)) {\n return style;\n }\n\n return undefined;\n }\n\n set gridStyle(value: string | undefined) {\n this.setValue(Table.gridStyleProperty, value);\n }\n\n @property(Table.horizontalCellContentAlignmentProperty)\n horizontalCellContentAlignment?: HorizontalAlignment;\n\n @property(Table.verticalCellContentAlignmentProperty)\n verticalCellContentAlignment?: VerticalAlignment;\n\n //#endregion\n\n private ensureRowsHaveEnoughCells() {\n for (let i = 0; i < this.getItemCount(); i++) {\n this.getItemAt(i).ensureHasEnoughCells(this.getColumnCount());\n }\n }\n\n private removeCellsFromColumn(columnIndex: number) {\n for (let i = 0; i < this.getItemCount(); i++) {\n this.getItemAt(i).removeCellAt(columnIndex);\n }\n }\n\n protected getCollectionPropertyName(): string {\n return \"rows\";\n }\n\n protected createItemInstance(typeName: string): TableRow | undefined {\n return !typeName || typeName === \"TableRow\" ? new TableRow() : undefined;\n }\n\n protected internalParse(source: PropertyBag, context: SerializationContext) {\n super.internalParse(source, context);\n\n this.ensureRowsHaveEnoughCells();\n }\n\n protected internalRender(): HTMLElement | undefined {\n if (this.getItemCount() > 0) {\n let totalWeights: number = 0;\n\n for (let column of this._columns) {\n if (column.width.unit === SizeUnit.Weight) {\n totalWeights += column.width.physicalSize;\n }\n }\n\n for (let column of this._columns) {\n if (column.width.unit === SizeUnit.Pixel) {\n column.computedWidth = new SizeAndUnit(column.width.physicalSize, SizeUnit.Pixel);\n }\n else {\n column.computedWidth = new SizeAndUnit(100 / totalWeights * column.width.physicalSize, SizeUnit.Weight);\n }\n }\n\n let tableElement = document.createElement(\"div\");\n tableElement.setAttribute(\"role\", \"table\");\n tableElement.style.display = \"flex\";\n tableElement.style.flexDirection = \"column\";\n\n if (this.showGridLines) {\n let styleDefinition = this.hostConfig.containerStyles.getStyleByName(this.gridStyle);\n\n if (styleDefinition.borderColor) {\n const borderColor = stringToCssColor(styleDefinition.borderColor);\n \n if (borderColor) {\n tableElement.style.borderTop = \"1px solid \" + borderColor;\n tableElement.style.borderLeft = \"1px solid \" + borderColor;\n }\n }\n }\n\n let cellSpacing = this.hostConfig.table.cellSpacing;\n\n for (let i = 0; i < this.getItemCount(); i++) {\n let renderedRow = this.getItemAt(i).render();\n\n if (renderedRow) {\n if (i > 0 && !this.showGridLines && cellSpacing > 0) {\n let separatorRow = document.createElement(\"div\");\n separatorRow.setAttribute(\"aria-hidden\", \"true\");\n separatorRow.style.height = cellSpacing + \"px\";\n\n tableElement.appendChild(separatorRow);\n }\n\n tableElement.appendChild(renderedRow);\n }\n }\n\n return tableElement;\n }\n\n return undefined;\n }\n\n addColumn(column: TableColumnDefinition) {\n this._columns.push(column);\n\n this.ensureRowsHaveEnoughCells();\n }\n\n removeColumn(column: TableColumnDefinition) {\n let index = this._columns.indexOf(column);\n\n if (index >= 0) {\n this.removeCellsFromColumn(index);\n\n this._columns.splice(index, 1);\n }\n }\n\n getColumnCount(): number {\n return this._columns.length;\n }\n\n getColumnAt(index: number): TableColumnDefinition {\n return this._columns[index];\n }\n\n addRow(row: TableRow) {\n this.internalAddItem(row);\n\n row.ensureHasEnoughCells(this.getColumnCount());\n }\n\n getJsonTypeName(): string {\n return \"Table\";\n }\n}\n\nGlobalRegistry.defaultElements.register(\"Table\", Table, Versions.v1_5);\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nabstract class AbstractTextFormatter {\n private _regularExpression: RegExp;\n\n protected abstract internalFormat(lang: string | undefined, matches: RegExpExecArray): string;\n\n constructor(regularExpression: RegExp) {\n this._regularExpression = regularExpression;\n }\n\n format(lang: string | undefined, input: string | undefined): string | undefined {\n let matches;\n\n if (input) {\n let result = input;\n\n while ((matches = this._regularExpression.exec(input)) != null) {\n result = result.replace(matches[0], this.internalFormat(lang, matches));\n };\n\n return result;\n }\n else {\n return input;\n }\n }\n}\n\nclass DateFormatter extends AbstractTextFormatter {\n protected internalFormat(lang: string | undefined, matches: RegExpExecArray): string {\n let date = new Date(Date.parse(matches[1]));\n let format = matches[2] != undefined ? matches[2].toLowerCase() : \"compact\";\n\n if (format != \"compact\") {\n return date.toLocaleDateString(lang, { day: \"numeric\", weekday: format, month: format, year: \"numeric\" } as Intl.DateTimeFormatOptions);\n }\n else {\n return date.toLocaleDateString();\n }\n }\n}\n\nclass TimeFormatter extends AbstractTextFormatter {\n protected internalFormat(lang: string | undefined, matches: RegExpExecArray): string {\n let date = new Date(Date.parse(matches[1]));\n\n return date.toLocaleTimeString(lang, { hour: 'numeric', minute: '2-digit' });\n }\n}\n\nexport function formatText(lang: string | undefined, text: string | undefined): string | undefined {\n const formatters: AbstractTextFormatter[] = [\n new DateFormatter(/\\{{2}DATE\\((\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:Z|(?:(?:-|\\+)\\d{2}:\\d{2})))(?:, ?(COMPACT|LONG|SHORT))?\\)\\}{2}/g),\n new TimeFormatter(/\\{{2}TIME\\((\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:Z|(?:(?:-|\\+)\\d{2}:\\d{2})))\\)\\}{2}/g)\n ];\n\n let result = text;\n\n for (let formatter of formatters) {\n result = formatter.format(lang, result);\n }\n\n return result;\n}\n","// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License.\nimport * as Enums from \"./enums\";\nimport * as Shared from \"./shared\";\n\n// To work around TypeScript complaining about documentMode not being declared\n// on type Document\ndeclare global {\n interface Document {\n documentMode?: any;\n }\n}\n\nexport function isInternetExplorer(): boolean {\n // The documentMode property only exists in IE\n return window.document.documentMode !== undefined;\n}\n\nexport function isMobileOS(): boolean {\n let userAgent = window.navigator.userAgent;\n\n return !!userAgent.match(/Android/i) || !!userAgent.match(/iPad/i) || !!userAgent.match(/iPhone/i);\n}\n\n/**\n * Generate a UUID prepended with \"__ac-\"\n */\nexport function generateUniqueId(): string {\n return \"__ac-\" + Shared.UUID.generate();\n}\n\nexport function appendChild(node: Node, child: Node | undefined) {\n if (child) {\n node.appendChild(child);\n }\n}\n\nexport function parseString(obj: any, defaultValue?: string): string | undefined {\n return typeof obj === \"string\" ? obj : defaultValue;\n}\n\nexport function parseNumber(obj: any, defaultValue?: number): number | undefined {\n return typeof obj === \"number\" ? obj : defaultValue;\n}\n\nexport function parseBool(value: any, defaultValue?: boolean): boolean | undefined {\n if (typeof value === \"boolean\") {\n return value;\n }\n else if (typeof value === \"string\") {\n switch (value.toLowerCase()) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n default:\n return defaultValue;\n }\n }\n\n return defaultValue;\n}\n\nexport function getEnumValueByName(enumType: { [s: number]: string }, name: string) : number | undefined {\n for (let key in enumType) {\n let keyAsNumber = parseInt(key, 10);\n\n if (keyAsNumber >= 0) {\n let value = enumType[key];\n\n if (value && typeof value === \"string\" && value.toLowerCase() === name.toLowerCase()) {\n return keyAsNumber;\n }\n }\n }\n\n return undefined;\n}\n\nexport function parseEnum(enumType: { [s: number]: string }, name: string, defaultValue?: number): number | undefined {\n if (!name) {\n return defaultValue;\n }\n\n let enumValue = getEnumValueByName(enumType, name);\n\n return enumValue !== undefined ? enumValue : defaultValue;\n}\n\nexport function stringToCssColor(color: string | undefined): string | undefined {\n if (color) {\n let regEx = /#([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})?/gi;\n let matches = regEx.exec(color);\n\n if (matches && matches[4]) {\n let a = parseInt(matches[1], 16) / 255;\n let r = parseInt(matches[2], 16);\n let g = parseInt(matches[3], 16);\n let b = parseInt(matches[4], 16);\n\n return \"rgba(\" + r + \",\" + g + \",\" + b + \",\" + a + \")\";\n }\n }\n\n return color;\n}\n\nexport function truncate(element: HTMLElement,\n maxHeight: number,\n lineHeight?: number) {\n let fits = () => {\n // Allow a one pixel overflow to account for rounding differences\n // between browsers\n return maxHeight - element.scrollHeight >= -1.0;\n };\n\n if (fits()) return;\n\n let fullText = element.innerHTML;\n let truncateAt = (idx: any) => {\n element.innerHTML = fullText.substring(0, idx) + '...';\n }\n\n let breakableIndices = findBreakableIndices(fullText);\n let lo = 0;\n let hi = breakableIndices.length;\n let bestBreakIdx = 0;\n\n // Do a binary search for the longest string that fits\n while (lo < hi) {\n let mid = Math.floor((lo + hi) / 2);\n truncateAt(breakableIndices[mid]);\n\n if (fits()) {\n bestBreakIdx = breakableIndices[mid];\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n\n truncateAt(bestBreakIdx);\n\n // If we have extra room, try to expand the string letter by letter\n // (covers the case where we have to break in the middle of a long word)\n if (lineHeight && maxHeight - element.scrollHeight >= lineHeight - 1.0) {\n let idx = findNextCharacter(fullText, bestBreakIdx);\n\n while (idx < fullText.length) {\n truncateAt(idx);\n\n if (fits()) {\n bestBreakIdx = idx;\n idx = findNextCharacter(fullText, idx);\n }\n else {\n break;\n }\n }\n\n truncateAt(bestBreakIdx);\n }\n}\n\nfunction findBreakableIndices(html: string): number[] {\n let results: number[] = [];\n let idx = findNextCharacter(html, -1);\n\n while (idx < html.length) {\n if (html[idx] == ' ') {\n results.push(idx);\n }\n\n idx = findNextCharacter(html, idx);\n }\n\n return results;\n}\n\nfunction findNextCharacter(html: string, currIdx: number): number {\n currIdx += 1;\n\n // If we found the start of an HTML tag, keep advancing until we get\n // past it, so we don't end up truncating in the middle of the tag\n while (currIdx < html.length && html[currIdx] == '<') {\n while (currIdx < html.length && html[currIdx++] != '>');\n }\n\n return currIdx;\n}\n\nexport function getFitStatus(element: HTMLElement, containerEnd: number): Enums.ContainerFitStatus {\n let start = element.offsetTop;\n let end = start + element.clientHeight;\n\n if (end <= containerEnd) {\n return Enums.ContainerFitStatus.FullyInContainer;\n }\n else if (start < containerEnd) {\n return Enums.ContainerFitStatus.Overflowing;\n }\n else {\n return Enums.ContainerFitStatus.FullyOutOfContainer;\n }\n}\n\nexport function getScrollX(): number {\n return window.pageXOffset;\n}\n\nexport function getScrollY(): number {\n return window.pageYOffset;\n}\n\nexport function clearElementChildren(element: HTMLElement) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(402);\n"],"names":["root","factory","exports","module","define","amd","this","ActivityRequestTrigger","ActivityRequestError","code","message","request","ActivityResponse","rawContent","SuccessResponse","error","ErrorResponse","_auth","buttons","button","type","undefined","value","URL","signinButton","e","tokenExchangeResource","LoginRequestResponse","logEvent","level","GlobalSettings","applets","logEnabled","onLogEvent","optionalParams","Enums","LogLevel","Warning","console","warn","Error","log","action","trigger","consecutiveRefreshes","attemptNumber","retryAsync","onSend","_allowAutomaticCardUpdate","renderedElement","document","createElement","className","style","position","display","flexDirection","_cardHostElement","_refreshButtonHostElement","appendChild","displayCard","card","Utils","clearElementChildren","showManualRefreshButton","refreshAction","onShowManualRefreshButton","renderedRefreshButton","onRenderManualRefreshButton","Strings","runtime","refreshThisCard","refresh","mode","RefreshMode","Automatic","autoRefreshPausedMessage","automaticRefreshPaused","length","clckToRestartAutomaticRefresh","cardPayload","version","body","horizontalAlignment","inlines","text","selectAction","id","AdaptiveCard","parse","SerializationContext","Versions","v1_2","onExecuteAction","internalExecuteAction","render","removeProperty","createActivityRequest","ActivityRequest","sender","internalSendActivityRequestAsync","onPrepareActivityRequest","createMagicCodeInputCard","payload","color","wrap","placeholder","actions","AdaptiveApplet","submitMagicCodeActionId","title","cancelMagicCodeAuthActionId","cancelAutomaticRefresh","createSerializationContext","onCreateSerializationContext","internalSetCard","_cardPayload","hostConfig","serializationContext","onCardChanging","_card","authentication","onPrefetchSSOToken","Manual","onInputValueChanged","input","onCardChanged","maximumConsecutiveAutomaticRefreshes","timeBetweenAutomaticRefreshes","Info","window","setTimeout","Disabled","allowManualRefreshesAfterAutomaticRefreshes","ExecuteAction","channelAdapter","onAction","createProgressOverlay","_progressOverlay","onCreateProgressOverlay","spinner","width","height","removeProgressOverlay","onRemoveProgressOverlay","removeChild","activityRequestSucceeded","response","parsedContent","onActivityRequestSucceeded","activityRequestFailed","onActivityRequestFailed","defaultTimeBetweenRetryAttempts","showAuthCodeInputDialog","onShowAuthCodeInputDialog","authCodeInputCard","submitMagicCodeAction","SubmitAction","authCode","data","alert","magicCodeInputCard","somethingWentWrong","overlay","done","sendRequestAsync","JSON","maximumRetryAttempts","Promise","resolve","reject","attemptOAuth","onSSOTokenNeeded","onShowSigninPrompt","left","screenX","outerWidth","authPromptWidth","screenY","outerHeight","authPromptHeight","open","authenticationFailed","toString","refreshCard","setCard","renderSeparation","separationDefinition","orientation","spacing","lineThickness","separator","makeCssClassName","Orientation","Horizontal","setAttribute","lineColor","stringToCssColor","paddingTop","marginBottom","borderBottom","paddingLeft","marginRight","borderRight","overflow","flex","_truncatedDueToOverflow","getValue","CardElement","langProperty","parent","lang","setValue","isVisibleProperty","useAdvancedCardBottomTruncation","undoOverflowTruncation","isVisible","updateRenderedElementVisibility","_renderedElement","raiseElementVisibilityChangedEvent","internalRenderSeparator","renderedSeparator","getEffectiveSpacing","separatorOrientation","alwaysBleedSeparators","parentContainer","getParentContainer","getEffectivePadding","parentPhysicalPadding","paddingDefinitionToSpacingDefinition","marginLeft","right","displayMode","isDesignMode","_defaultRenderedElementDisplayMode","_separatorElement","isFirstElement","hideElementDueToOverflow","visibility","showElementHiddenDueToOverflow","handleOverflow","maxHeight","isHiddenDueToOverflow","handled","truncateOverflow","resetOverflow","sizeChanged","getDefaultSerializationContext","createPlaceholderElement","styleDefinition","getEffectiveStyleDefinition","foregroundCssColor","foregroundColors","default","subtle","element","border","padding","minHeight","fontSize","innerText","getJsonTypeName","adjustRenderedElementSize","isDisplayed","offsetHeight","overrideInternalRender","internalRender","applyPadding","separatorElement","isBleeding","PaddingDefinition","getImmediateSurroundingPadding","physicalPadding","getDefaultPadding","getHasBackground","getHasBorder","getPadding","_padding","setPadding","shouldSerialize","context","elementRegistry","findByName","ContainerStyle","Default","source","asString","getEffectiveStyle","defaultStyle","containerStyles","getStyleByName","getEffectiveTextStyleDefinition","textStyles","getForbiddenActionTypes","result","processTop","processRight","processBottom","processLeft","doProcessTop","isTopElement","doProcessRight","isRightMostElement","doProcessBottom","isBottomElement","doProcessLeft","isLeftMostElement","effectivePadding","top","Spacing","None","bottom","getActionCount","getActionAt","index","errors","indexOutOfRange","indexOfAction","i","remove","CardElementContainer","removeItem","customCssSelector","classList","add","boxSizing","updateLayout","processChildren","indexOf","cardElement","rootElement","getRootElement","designMode","isLastElement","isAtTheVeryLeft","isAtTheVeryRight","isAtTheVeryTop","isAtTheVeryBottom","isBleedingAtTop","isBleedingAtBottom","getRootObject","currentElement","Container","getAllInputs","processActions","getResourceInformation","getElementById","getActionById","getEffectiveHorizontalAlignment","HorizontalAlignment","Left","_hostConfig","defaultHostConfig","_parent","StringProperty","v1_1","BoolProperty","separatorProperty","v1_0","heightProperty","ValueSetProperty","horizontalAlignmentProperty","EnumProperty","spacingProperty","property","CardObject","targetVersion","name","forbiddenActionTypes","parseAction","toJSON","target","serializeValue","PropertyDefinition","ActionProperty","ariaHidden","populateSchema","schema","BaseTextBlock","selectActionProperty","textProperty","setText","getFontSize","fontType","effectiveSize","TextSize","Small","fontSizes","small","Medium","medium","Large","large","ExtraLarge","extraLarge","getColorDefinition","colorSet","TextColor","Accent","accent","Dark","dark","Light","light","Good","good","warning","Attention","attention","init","textDefinition","size","weight","isSubtle","applyStylesTo","targetElement","getFontTypeDefinition","effectiveFontType","fontFamily","fontWeight","colorDefinition","effectiveColor","effectiveIsSubtle","effectiveWeight","TextWeight","Lighter","fontWeights","lighter","Bolder","bolder","sizeProperty","weightProperty","colorProperty","isSubtleProperty","fontTypeProperty","FontType","_treatAsPlainText","useMarkdown","restoreOriginalContent","maxLines","_computedLineHeight","innerHTML","_originalInnerHtml","truncateIfSupported","children","isTextOnly","tagName","toLowerCase","truncate","_processedText","preProcessedText","preProcessPropertyValue","forElementId","labelElement","htmlFor","headingLevel","textBlock","supportsInteractivity","onclick","isEnabled","preventDefault","cancelBubble","execute","setupElementForAccessibility","formattedText","TextFormatters","formatText","allowMarkForTextHighlighting","replace","markdownProcessingResult","applyMarkdown","didProcess","outputHtml","markStyle","effectiveStyle","highlightBackgroundColor","highlightForegroundColor","firstElementChild","HTMLElement","marginTop","textOverflow","lastElementChild","anchors","getElementsByTagName","anchor","raiseAnchorClickedEvent","oncontextmenu","wordWrap","isInternetExplorer","useWebkitLineClamp","webkitBoxOrient","webkitLineClamp","whiteSpace","useAdvancedTextBlockTruncation","Center","textAlign","Right","lineHeights","lineHeight","wrapProperty","maxLinesProperty","NumProperty","styleProperty","v1_5","TextBlock","italic","strikethrough","highlight","underline","href","getHref","fontStyle","textDecoration","backgroundColor","highlightColors","italicProperty","strikethroughProperty","highlightProperty","underlineProperty","v1_3","TextRun","_inlines","internalAddInline","inline","forceAdd","isInline","elementCannotBeUsedAsInline","inlineAlreadyParented","setParent","push","internalParse","Array","isArray","jsonInline","textRun","parseElement","internalToJSON","jsonInlines","renderedInlines","renderedInline","getInlineCount","getInlineAt","addInline","removeInline","splice","RichTextBlock","getSchemaKey","titleProperty","valueProperty","Fact","SerializableObject","facts","borderWidth","borderSpacing","borderStyle","borderCollapse","trElement","factSet","tdElement","maxWidth","verticalAlign","factsProperty","SerializableObjectCollectionProperty","FactSet","internalName","fallbackProperty","getInternalName","sourceValue","defaultValue","isValid","SizeAndUnit","unit","SizeUnit","Pixel","physicalSize","isValidValue","logParseEvent","ValidationEvent","InvalidPropertyValue","invalidPropertyValue","isNaN","Size","Auto","ImageStyle","applySize","pixelWidth","pixelHeight","imageSizes","Stretch","url","alignItems","justifyContent","imageElement","onload","raiseImageLoadedEvent","onerror","errorElement","minWidth","onkeypress","Person","borderRadius","backgroundPosition","backgroundRepeat","src","Image","urlProperty","altTextProperty","alt","mimeType","backgroundColorProperty","pixelWidthProperty","ImageDimensionProperty","pixelHeightProperty","allowVerticalOverflow","isSelectable","isElementAllowed","isInteractive","SpacingDefinition","paddingRight","paddingBottom","internalValidateProperties","getItemCount","item","getItemAt","addFailure","InteractivityNotAllowed","interactivityNotAllowed","elementTypeNotAllowed","_selectAction","overflowX","overflowY","concat","findDOMNodeOwner","node","_images","imageSize","ImageSize","flexWrap","image","imageSet","maxImageHeight","renderedImage","margin","getFirstVisibleRenderedItem","getLastVisibleRenderedItem","itemIndex","addImage","imagesProperty","imageSizeProperty","ImageSet","mimeTypeProperty","MediaSource","sources","getPosterUrl","poster","media","defaultPoster","processSources","_selectedSources","_selectedMediaType","mimeComponents","split","Media","supportedMediaTypes","handlePlayButtonInvoke","event","allowInlinePlayback","mediaPlayerElement","renderMediaPlayer","play","focus","onPlay","renderPoster","posterRootElement","altText","defaults","mediaPlayerAriaLabel","posterUrl","parentNode","playButtonOuterElement","tabIndex","mediaPlayerPlayMedia","playButtonInnerElement","playButtonArrowWidth","playButtonArrowHeight","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopColor","borderRightColor","borderBottomColor","transform","playButtonContainer","mediaElement","videoPlayer","autoplay","controls","isMobileOS","muted","preload","renderedSource","mediaSource","sourcesProperty","posterProperty","getAllLabelIds","labelIds","labelledBy","_renderedLabelElement","_renderedErrorMessageElement","updateInputControlAriaLabelledBy","_renderedInputControlElement","join","removeAttribute","_inputControlContainerElement","_outerContainerElement","renderedInputControlId","generateUniqueId","label","labelRichTextBlock","labelInline","isRequired","inputs","requiredInputs","isRequiredCueInline","suffix","suffixColor","optionalInputs","inputSpacing","isNullable","valueChanged","onInputValueChangedHandler","resetValidationFailureCue","onValueChanged","renderedInputControlElement","showValidationErrorMessage","errorMessage","displayInputValidationErrors","errorMessageTextBlock","PropertyCantBeNull","inputsMustHaveUniqueId","RequiredInputsShouldHaveLabel","RequiredInputsShouldHaveErrorMessage","validateValue","isSet","labelProperty","isRequiredProperty","errorMessageProperty","Input","isMultiline","InputTextStyle","Text","setupInput","maxLength","oninput","ctrlKey","inlineAction","Password","renderedInputControl","iconUrl","textContent","inlineActionTitle","inputControlContainerElement","regex","RegExp","test","maxLengthProperty","isMultilineProperty","placeholderProperty","Tel","Url","Email","inlineActionProperty","regexProperty","TextInput","valueOn","valueOff","_checkboxInputElement","joinedLabelIds","_checkboxInputLabelElement","checked","onchange","useMarkdownInRadioButtonAndCheckbox","spacerElement","valueOnProperty","valueOffProperty","ToggleInput","Choice","isMultiSelect","choices","getUniqueCategoryName","uniqueCategoryName","ChoiceSetInput","uniqueCategoryCounter","internalApplyAriaCurrent","_selectElement","options","selected","renderCompoundInput","cssClassName","defaultValues","_toggleInputs","_labels","choice","_uniqueCategoryName","compoundInput","choiceSetInputValueSeparator","inputContainer","_textInput","dataList","option","append","disabled","hidden","CollectionCantBeEmpty","choiceSetMustHaveAtLeastOneChoice","choiceSetChoicesMustHaveTitleAndValue","toggleInput","selectedIndex","choicesProperty","isMultiSelectProperty","_numberInputElement","min","max","valueAsNumber","minProperty","maxProperty","NumberInput","_dateInputElement","valueAsDate","Date","minDate","maxDate","DateInput","CustomProperty","TimeProperty","convertTimeStringToDate","timeString","_timeInputElement","TimeInput","ActionStyle","ActionMode","Primary","_state","_isFocusable","renderButtonContent","titleElement","iconPlacement","ActionIconPlacement","AboveTitle","allowTitleToWrap","iconElement","iconSize","updateCssClasses","parentContainerStyle","isFocusable","Positive","makeCssClassNames","internalGetReferencedInputs","internalPrepareForExecution","internalValidateInputs","referencedInputs","Object","keys","actionRegistry","raiseExecuteActionEvent","onExecuteActionHandler","onExecute","prepareForExecution","getAriaRole","promoteTooltipToLabel","HTMLButtonElement","tooltip","targetAriaAttribute","buttonElement","_actionCollection","actionExecuted","getReferencedInputs","invalidInputs","removeAction","validateInputs","iconUrlProperty","Destructive","modeProperty","Secondary","tooltipProperty","isEnabledProperty","Action","_isPrepared","associatedInputs","current","_originalData","_processedData","stringify","dataProperty","associatedInputsProperty","SubmitActionBase","JsonTypeName","verbProperty","v1_4","OpenUrlAction","propertyMustBeSet","targetElements","updateAriaControlsAttribute","elementIds","ToggleVisibilityAction","elementId","addTargetElement","removeTargetElement","targetElementsProperty","parseBool","serializeArray","StringWithSubstitutions","set","parseString","getOriginal","_value","substituteInputValues","ContentTypes","applicationXWwwFormUrlencoded","get","newValue","nameProperty","StringWithSubstitutionProperty","HttpHeader","_ignoreInputValidation","allInputs","_url","headers","_body","contentType","applicationJson","header","HttpAction","actionHttpHeadersMustHaveNameAndValue","bodyProperty","methodProperty","headersProperty","ignoreInputValidationProperty","InlineAdaptiveCard","effectiveHostConfig","state","jsonCard","showCardMustHaveCard","showCard","actionMode","ShowCardActionMode","Popup","ShowCardAction","overflowButtonText","getActions","onDisplayOverflowActionMenuHandler","onDisplayOverflowActionMenu","PopupMenu","menuItem","MenuItem","onClick","actionToExecute","closePopup","items","popup","owner","_items","_renderedActions","_owner","isActionAllowed","forbiddenTypes","forbiddenType","constructor","refreshContainer","_actionCardContainer","_actionCard","renderedActionCount","inlineTopMargin","layoutChanged","showActionCard","suppressStyle","raiseEvent","renderedCard","_expandedAction","raiseInlineCardExpandedEvent","collapseExpandedAction","previouslyExpandedAction","expandShowCardAction","afterSelectedAction","renderedAction","onblur","Inline","clear","jsonAction","addAction","propertyName","validateProperties","maxActions","TooManyActions","tooManyActions","ActionTypeNotAllowed","actionTypeNotAllowed","Math","preExpandSingleShowCardAction","buttonStrip","actionAlignment","ActionAlignment","allowedActions","filter","bind","forEach","overflowPrimaryActions","allowMoreThanMaxActionsInOverflowMenu","shouldRenderOverflowActionButton","_overflowAction","OverflowAction","isRootAction","isAtRootLevelActions","onRenderOverflowActionsHandler","onRenderOverflowActions","raiseRenderOverflowActionsEvent","actionsOrientation","buttonSpacing","spacer","buttonStripContainer","actionAlreadyParented","expandedAction","actionIndex","ActionCollection","orientationProperty","ActionSet","onGetInitialValue","Emphasis","ContainerStyleProperty","allowCustomStyle","StylableCardElementContainer","applyBorder","applyBackground","bgColor","surroundingPadding","currentElementHasBackgroundImage","backgroundImage","hasExplicitStyle","Padding","explicitStyle","_bleed","minPixelHeight","getHasExpandedAction","getBleed","setBleed","alwaysAllowBleed","bleedProperty","minHeightProperty","PixelSizeProperty","ContainerBase","resetDefaultValues","apply","BackgroundImage","fillMode","FillMode","Repeat","RepeatHorizontally","RepeatVertically","Cover","backgroundSize","backgroundPositionX","verticalAlignment","VerticalAlignment","backgroundPositionY","Bottom","fillModeProperty","verticalAlignmentProperty","Top","_renderedItems","backgroundImageProperty","insertItemAt","forceInsert","elementAlreadyParented","isStandalone","elementTypeNotStandalone","getItemsCollectionPropertyName","rtl","dir","getEffectiveVerticalContentAlignment","renderedItem","placeholderElement","offsetTop","elt","getFitStatus","ContainerFitStatus","FullyInContainer","Overflowing","FullyOutOfContainer","setShouldFallback","jsonItems","verticalContentAlignment","isRtl","firstRenderedItem","lastRenderedItem","addItem","insertItemBefore","insertBefore","insertItemAfter","insertAfter","SerializableObjectProperty","verticalContentAlignmentProperty","rtlProperty","_computedWeight","Vertical","ColumnSet","widthProperty","invalidWidth","compareTo","Weight","invalidColumnWidth","serializeNumber","Column","_columns","createColumnInstance","parseCardObject","typeName","errorType","ElementTypeNotAllowed","_renderedColumns","totalWeight","column","computedWeight","renderedColumn","jsonColumns","getColumnAt","weightedColumns","stretchedColumns","Hint","hints","dontUseWeightedAndStrecthedColumnsInSameSet","addColumn","columnAlreadyBelongsToAnotherSet","onImageLoadedHandler","onImageLoaded","ev","onAnchorClickedHandler","onAnchorClicked","isExpanded","onInlineCardExpandedHandler","onInlineCardExpanded","shouldUpdateLayout","onElementVisibilityChangedHandler","onElementVisibilityChanged","renderedActions","renderIfEmpty","ContainerWithActions","RefreshActionProperty","RefreshDefinition","actionProperty","userIdsProperty","StringArrayProperty","typeProperty","imageProperty","AuthCardButton","idProperty","uriProperty","providerIdProperty","TokenExchangeResource","connectionNameProperty","buttonsProperty","tokenExchangeResourceProperty","Authentication","refreshProperty","processMarkdownEventRemoved","onProcessMarkdown","markdownit","markdownIt","markdownProcessingNotEnabled","isVersionSupported","bypassVersionCheck","maxVersion","major","minor","_fallbackCard","fallbackElement","versionProperty","adaptiveCard","typeNameProperty","MissingCardType","invalidCardType","UnsupportedCardVersion","unsupportedCardVersion","shouldFallback","setTabIndexAtCardRoot","speak","schemaUrl","$schemaProperty","Version","latest","invalidCardVersion","fallbackTextProperty","speakProperty","authenticationProperty","internalParseCardObject","forbiddenTypeNames","allowFallback","createInstanceCallback","TypeErrorType","ForbiddenType","tryToFallback","enableFallback","UnknownType","fallback","cardObjectParsed","o","onParseAction","onParseElement","createInstance","UnknownElementType","unknownElementType","UnknownActionType","unknownActionType","_elementRegistry","GlobalRegistry","elements","setElementRegistry","_actionRegistry","setActionRegistry","BaseSerializationContext","defaultElements","register","defaultActions","allIds","validationEvents","cardObject","phase","ValidationPhase","Validation","ValidationResults","_shouldFallback","requiresProperty","contains","propertyValue","allowPreProcessingPropertyValues","currentObject","onPreProcessPropertyValue","requires","areAllMet","hostCapabilities","rootObject","hasOwnProperty","DuplicateId","duplicateId","HostCapabilities","ChannelAdapter","onItemAdded","onItemRemoved","Collection","tab","enter","escape","space","up","down","delete","Constants","key","_isEnabled","click","_element","onmouseup","onkeydown","_isOpen","keyDown","rootElementBounds","renderContent","_popupElement","_overlayElement","documentElement","scrollWidth","scrollHeight","onfocus","getBoundingClientRect","addEventListener","rootElementLabel","getAttribute","popupElementBounds","availableSpaceBelow","innerHeight","availableSpaceAbove","availableSpaceRight","innerWidth","availableSpaceLeft","getScrollX","actualPopupHeight","getScrollY","actualPopupWidth","wasCancelled","onClose","PopupControl","_selectedIndex","selectedItemIndex","_capabilities","jsonVersion","addCapability","removeCapability","hasCapability","capabilityName","parseHostConfigEnum","targetEnum","parsedValue","parseEnum","defaultColor","subtleColor","obj","ColorDefinition","TextColorDefinition","AdaptiveCardConfig","parseNumber","ImageSetConfig","MediaConfig","cellSpacing","TableConfig","getDefaultWeight","BaseTextDefinition","TextStyleDefinition","heading","columnHeader","TextStyleSet","TextBlockConfig","RequiredInputLabelTextDefinition","InputLabelConfig","InputConfig","FactTextDefinition","FactTitleDefinition","FactSetConfig","ShowCardActionConfig","LeftOfTitle","sizeAndUnit","Shared","ActionsConfig","parseSingleColor","ColorSetDefinition","borderColor","ContainerStyleDefinition","_allStyles","BuiltInContainerStyleDefinition","customStyleArray","customStyle","styleName","isBuiltIn","emphasis","customStyles","ContainerStyleSet","monospace","FontTypeDefinition","getStyleDefinition","Monospace","FontTypeSet","table","String","_legacyFontType","fontTypes","paddingDefinition","classNames","cssClassNamePrefix","HostConfig","copyTo","typeRegistration","objectType","schemaVersion","registrationInfo","unregister","map","CardObjectRegistry","populateWithDefaultElements","registry","populateWithDefaultActions","_elements","_actions","reset","_isValid","_major","_minor","_label","versionString","_versionString","matches","exec","parseInt","invalidVersionString","otherVersion","_validationEvents","forceDeleteIfNullOrDefault","enableFullJsonRoundTrip","serializeString","serializeBool","serializeEnum","enumType","serializedItem","clearEvents","Parse","getEventAt","isSerializationEnabled","sequentialNumber","_sequentialNumber","treatEmptyAsUndefined","regEx","values","versionedValue","propertyValueNotSupported","invalidValue","ToJSON","_values","keyAsNumber","enumValue","getEnumValueByName","nullable","serializedValue","hasAllDefaultValues","sourceCollection","sourceItem","onParse","onToJSON","_properties","properties","getCount","SerializableObjectSchema","propertyKey","descriptor","getOwnPropertyDescriptor","defineProperty","_propertyBag","_rawProperties","defaultMaxVersion","s","getSchema","SimpleSerializationContext","ctor","sortedProperties","sort","p1","p2","onRegisterCustomProperties","UnsupportedProperty","propertyNotSupported","serializedProperties","effectiveContext","toJSONOriginalParam","hasDefaultValue","setCustomProperty","getCustomProperty","_schemaCache","logLevel","_isProcessed","_original","_processed","matchedInput","valueForReplace","slice","encodeURIComponent","requireUnitSpecifier","expectedMatchCount","generate","d0","random","d1","d2","d3","UUID","lut","initialize","defaultingToVersion","supportedInVersion","versionUsed","maximumActions","maxSupportedVersion","tryAgain","pleaseLogin","enterMagicCode","pleaseEnterMagicCodeYouReceived","submit","cancel","horizontalCellContentAlignmentProperty","verticalCellContentAlignmentProperty","TableColumnDefinition","parseItem","createItemInstance","internalAddItem","internalRemoveItem","getCollectionPropertyName","instance","StylableContainer","_columnIndex","_cellType","parentRow","parentTable","showGridLines","gridStyle","cellElement","cellType","horizontalCellContentAlignment","columnIndex","verticalCellContentAlignment","TableCell","isFirstRow","getIsFirstRow","rowElement","getColumnCount","cell","firstRowAsHeaders","renderedCell","computedWidth","addCell","removeCellAt","ensureHasEnoughCells","cellCount","TableRow","Table","gridStyleProperty","ensureRowsHaveEnoughCells","removeCellsFromColumn","totalWeights","tableElement","borderTop","borderLeft","renderedRow","separatorRow","removeColumn","addRow","row","columnsProperty","firstRowAsHeadersProperty","showGridLinesProperty","regularExpression","_regularExpression","format","internalFormat","date","toLocaleDateString","day","weekday","month","year","AbstractTextFormatter","toLocaleTimeString","hour","minute","DateFormatter","TimeFormatter","findNextCharacter","html","currIdx","documentMode","userAgent","navigator","match","child","a","fits","fullText","truncateAt","idx","substring","breakableIndices","results","findBreakableIndices","lo","hi","bestBreakIdx","mid","floor","containerEnd","start","clientHeight","pageXOffset","pageYOffset","firstChild","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call"],"sourceRoot":""}